Better error handling for setting userdata values
This commit is contained in:
@@ -26,6 +26,8 @@ namespace UpsilonTests
|
||||
public string FieldString = "TestField";
|
||||
public string FieldStringSet;
|
||||
private string _privateTestField = "hidden";
|
||||
public bool GetOnly { get; } = false;
|
||||
public bool PrivateSet { get; private set; } = false;
|
||||
|
||||
public bool TestMethodHasRun { get; private set; }
|
||||
public void TestMethod()
|
||||
@@ -121,5 +123,37 @@ end
|
||||
Assert.Single(script.Diagnostics.Messages);
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void CantSetToFieldsWithNoSetter()
|
||||
{
|
||||
var obj = new UserDataHelper();
|
||||
const string input = @"
|
||||
function test(o)
|
||||
o.GetOnly = true
|
||||
end
|
||||
";
|
||||
var script = new Script(input);
|
||||
Assert.Empty(script.Diagnostics.Messages);
|
||||
script.EvaluateFunction("test", new[] {obj});
|
||||
Assert.Single(script.Diagnostics.Messages);
|
||||
Assert.False(obj.GetOnly);
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void CantSetToFieldsWithPrivateSetter()
|
||||
{
|
||||
var obj = new UserDataHelper();
|
||||
const string input = @"
|
||||
function test(o)
|
||||
o.PrivateSet = true
|
||||
end
|
||||
";
|
||||
var script = new Script(input);
|
||||
Assert.Empty(script.Diagnostics.Messages);
|
||||
script.EvaluateFunction("test", new[] {obj});
|
||||
Assert.Single(script.Diagnostics.Messages);
|
||||
Assert.False(obj.PrivateSet);
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user