Added UserData support

This commit is contained in:
2018-11-19 17:22:25 +01:00
parent 7d551b6313
commit d1b1675bba
11 changed files with 193 additions and 13 deletions

View File

@@ -1,3 +1,5 @@
using System;
using System.Diagnostics;
using Upsilon.Evaluator;
using Xunit;

View File

@@ -0,0 +1,64 @@
using System;
using Upsilon.BaseTypes.UserData;
using Upsilon.Evaluator;
using Xunit;
namespace UpsilonTests
{
public class UserDataTests : IClassFixture<UserDataTests.UserDataTestsFixture>
{
public class UserDataTestsFixture : IDisposable
{
public UserDataTestsFixture()
{
UserDataTypeHandler.LoadType<UserDataHelper>();
}
public void Dispose()
{
}
}
#pragma warning disable 414, 649
private class UserDataHelper
{
public string FieldString = "TestField";
public string FieldStringSet;
}
#pragma warning restore 414, 649
[Fact]
public void AccessFieldsGet()
{
var obj = new UserDataHelper();
const string input = @"
function test(o)
return o[""FieldString""]
end
";
var script = new Script(input);
Assert.Empty(script.Diagnostics.Messages);
var result = script.EvaluateFunction<string>("test", new[] {obj});
Assert.Empty(script.Diagnostics.Messages);
Assert.Equal("TestField", result);
}
[Fact]
public void AccessFieldsSet()
{
var obj = new UserDataHelper();
const string input = @"
function test(o)
o[""FieldStringSet""] = ""Test""
end
";
var script = new Script(input);
Assert.Empty(script.Diagnostics.Messages);
script.EvaluateFunction("test", new[] {obj});
Assert.Empty(script.Diagnostics.Messages);
Assert.Equal("Test", obj.FieldStringSet);
}
}
}