using System; using Upsilon.BaseTypes.UserData; using Upsilon.Evaluator; using Xunit; // ReSharper disable UnusedMember.Local // ReSharper disable ClassNeverInstantiated.Global namespace UpsilonTests { public class UserDataOperatorTests : IClassFixture { public class UserDataOperatorTestsFixture : IDisposable { public UserDataOperatorTestsFixture() { UserDataTypeHandler.LoadType(); } public void Dispose() { } } #pragma warning disable 414, 649 private class UserDataHelper { public UserDataHelper(double value) { Value = value; } public double Value { get; } public static UserDataHelper operator +(UserDataHelper a, UserDataHelper b) { return new UserDataHelper(a.Value + b.Value); } public static UserDataHelper operator +(UserDataHelper a, double b) { return new UserDataHelper(a.Value + b); } } #pragma warning restore 414, 649 [Fact] public void TestAddition() { const string input = @" function add(o1, o2) return o1 + o2 end "; var script = new Script(input); Assert.Empty(script.Diagnostics.Messages); var o1 = new UserDataHelper(100); var o2 = new UserDataHelper(215); var result = script.EvaluateFunction("add", new[] {o1, o2}); } } }