Allows for overloaded functions in CSharp to be used, initial work on handling CSHarp operators
This commit is contained in:
@@ -1,4 +1,3 @@
|
||||
using System;
|
||||
using Upsilon.Evaluator;
|
||||
using Xunit;
|
||||
|
||||
|
||||
63
UpsilonTests/UserDataOperatorTests.cs
Normal file
63
UpsilonTests/UserDataOperatorTests.cs
Normal file
@@ -0,0 +1,63 @@
|
||||
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<UserDataOperatorTests.UserDataOperatorTestsFixture>
|
||||
{
|
||||
public class UserDataOperatorTestsFixture : IDisposable
|
||||
{
|
||||
public UserDataOperatorTestsFixture()
|
||||
{
|
||||
UserDataTypeHandler.LoadType<UserDataHelper>();
|
||||
}
|
||||
|
||||
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});
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user