using System; using Upsilon.BaseTypes.UserData; using Upsilon.Evaluator; using Xunit; namespace UpsilonTests { public class UserDataTests : IClassFixture { public class UserDataTestsFixture : IDisposable { public UserDataTestsFixture() { UserDataTypeHandler.LoadType(); } 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("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); } } }