64 lines
1.6 KiB
C#
64 lines
1.6 KiB
C#
|
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);
|
||
|
}
|
||
|
|
||
|
}
|
||
|
}
|