Handle Unary operator overloading for UserData

This commit is contained in:
2018-11-21 13:54:41 +01:00
parent c627100e9c
commit 605b98284d
5 changed files with 59 additions and 2 deletions

View File

@@ -46,6 +46,11 @@ namespace UpsilonTests
return new UserDataHelper(a.Value - b.Value);
}
public static UserDataHelper operator -(UserDataHelper a)
{
return new UserDataHelper(-a.Value);
}
public static UserDataHelper operator *(UserDataHelper a, UserDataHelper b)
{
return new UserDataHelper(a.Value * b.Value);
@@ -145,5 +150,21 @@ end
Assert.Equal(10, result.Value);
}
[Fact]
public void TestNegation()
{
const string input = @"
function negate(o1)
return -o1
end
";
var script = new Script(input);
Assert.Empty(script.Diagnostics.Messages);
var o1 = new UserDataHelper(100);
var result = script.EvaluateFunction<UserDataHelper>("negate", new object[] {o1});
Assert.Empty(script.Diagnostics.Messages);
Assert.Equal(-100, result.Value);
}
}
}