Work on calling CSharp functions from Lua
This commit is contained in:
@@ -2,6 +2,7 @@ using System;
|
||||
using Upsilon.BaseTypes.UserData;
|
||||
using Upsilon.Evaluator;
|
||||
using Xunit;
|
||||
// ReSharper disable UnusedMember.Local
|
||||
|
||||
namespace UpsilonTests
|
||||
{
|
||||
@@ -24,6 +25,18 @@ namespace UpsilonTests
|
||||
{
|
||||
public string FieldString = "TestField";
|
||||
public string FieldStringSet;
|
||||
|
||||
public bool TestMethodHasRun { get; private set; }
|
||||
public void TestMethod()
|
||||
{
|
||||
TestMethodHasRun = true;
|
||||
}
|
||||
|
||||
public long Add(long a, long b)
|
||||
{
|
||||
return a + b;
|
||||
}
|
||||
|
||||
}
|
||||
#pragma warning restore 414, 649
|
||||
|
||||
@@ -60,5 +73,36 @@ end
|
||||
Assert.Equal("Test", obj.FieldStringSet);
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void RunVoidMethod()
|
||||
{
|
||||
var obj = new UserDataHelper();
|
||||
const string input = @"
|
||||
function test(o)
|
||||
o[""TestMethod""]()
|
||||
end
|
||||
";
|
||||
var script = new Script(input);
|
||||
Assert.Empty(script.Diagnostics.Messages);
|
||||
script.EvaluateFunction("test", new[] {obj});
|
||||
Assert.Empty(script.Diagnostics.Messages);
|
||||
Assert.True(obj.TestMethodHasRun);
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void ReturnMethodWithParameters()
|
||||
{
|
||||
var obj = new UserDataHelper();
|
||||
const string input = @"
|
||||
function test(o)
|
||||
return o[""Add""](100, 20)
|
||||
end
|
||||
";
|
||||
var script = new Script(input);
|
||||
Assert.Empty(script.Diagnostics.Messages);
|
||||
var result = script.EvaluateFunction<long>("test", new[] {obj});
|
||||
Assert.Empty(script.Diagnostics.Messages);
|
||||
Assert.Equal(result, 120);
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user