Fixes support for newer version, added support for userdata collections
This commit is contained in:
@@ -16,6 +16,8 @@ namespace PorygonSharpTests
|
||||
public int GetOnly { get; } = 865;
|
||||
public readonly int ReadOnly = 684;
|
||||
|
||||
public int[] IntArray = {55, 60, 846, 346846};
|
||||
|
||||
public int TestFunc()
|
||||
{
|
||||
return 345435;
|
||||
@@ -210,5 +212,104 @@ end
|
||||
}
|
||||
}
|
||||
|
||||
[Test]
|
||||
public void CanGetFromArray()
|
||||
{
|
||||
UserDataHandler.RegisterType("testObject", typeof(UserDataTestObject));
|
||||
using (var script = new Script(@"
|
||||
function test(testObject v)
|
||||
return v.IntArray[3]
|
||||
end
|
||||
"))
|
||||
{
|
||||
var diags = script.Diagnostics.GetDiagnostics();
|
||||
foreach (var diag in diags)
|
||||
{
|
||||
throw new Exception(script.Diagnostics.GetFullDiagnosticMessage(diag));
|
||||
}
|
||||
|
||||
script.Evaluate();
|
||||
var parameter = new UserDataTestObject();
|
||||
var result = script.CallFunction("test", parameter);
|
||||
Assert.AreEqual(846, result.EvaluateInteger());
|
||||
}
|
||||
}
|
||||
|
||||
[Test]
|
||||
public void CanSetToArray()
|
||||
{
|
||||
UserDataHandler.RegisterType("testObject", typeof(UserDataTestObject));
|
||||
using (var script = new Script(@"
|
||||
function test(testObject v)
|
||||
v.IntArray[2] = 256
|
||||
end
|
||||
"))
|
||||
{
|
||||
var diags = script.Diagnostics.GetDiagnostics();
|
||||
foreach (var diag in diags)
|
||||
{
|
||||
throw new Exception(script.Diagnostics.GetFullDiagnosticMessage(diag));
|
||||
}
|
||||
|
||||
script.Evaluate();
|
||||
var parameter = new UserDataTestObject();
|
||||
script.CallFunction("test", parameter);
|
||||
Assert.AreEqual(256, parameter.IntArray[1]);
|
||||
}
|
||||
}
|
||||
|
||||
[Test]
|
||||
public void CanIterateOverArrayKeys()
|
||||
{
|
||||
UserDataHandler.RegisterType("testObject", typeof(UserDataTestObject));
|
||||
using (var script = new Script(@"
|
||||
function test(testObject v)
|
||||
value = 0
|
||||
for i in v.IntArray do
|
||||
value = value + i
|
||||
end
|
||||
return value
|
||||
end
|
||||
"))
|
||||
{
|
||||
var diags = script.Diagnostics.GetDiagnostics();
|
||||
foreach (var diag in diags)
|
||||
{
|
||||
throw new Exception(script.Diagnostics.GetFullDiagnosticMessage(diag));
|
||||
}
|
||||
|
||||
script.Evaluate();
|
||||
var parameter = new UserDataTestObject();
|
||||
var result = script.CallFunction("test", parameter);
|
||||
Assert.AreEqual(10, result.EvaluateInteger());
|
||||
}
|
||||
}
|
||||
|
||||
[Test]
|
||||
public void CanIterateOverArrayValues()
|
||||
{
|
||||
UserDataHandler.RegisterType("testObject", typeof(UserDataTestObject));
|
||||
using (var script = new Script(@"
|
||||
function test(testObject v)
|
||||
value = 0
|
||||
for i, j in v.IntArray do
|
||||
value = value + j
|
||||
end
|
||||
return value
|
||||
end
|
||||
"))
|
||||
{
|
||||
var diags = script.Diagnostics.GetDiagnostics();
|
||||
foreach (var diag in diags)
|
||||
{
|
||||
throw new Exception(script.Diagnostics.GetFullDiagnosticMessage(diag));
|
||||
}
|
||||
|
||||
script.Evaluate();
|
||||
var parameter = new UserDataTestObject();
|
||||
var result = script.CallFunction("test", parameter);
|
||||
Assert.AreEqual(347807, result.EvaluateInteger());
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user