using Upsilon.BaseTypes.Number; using Upsilon.Evaluator; using Xunit; namespace UpsilonTests { public class ScopeTests { [Fact] public void LocalInnerScopeDoesNotOverrideGlobal() { const string input = @" a = 10 if true then local a = 100 end "; var script = new Script(input); Assert.Empty(script.Diagnostics.Messages); script.Evaluate(); Assert.Empty(script.Diagnostics.Messages); Assert.True(script.Scope.TryGet("a", out var obj)); Assert.Equal((long)10, (NumberLong)obj); } [Fact] public void InnerScopeDoesOverrideGlobal() { const string input = @" a = 10 if true then a = 100 end b = a "; var script = new Script(input); Assert.Empty(script.Diagnostics.Messages); script.Evaluate(); Assert.Empty(script.Diagnostics.Messages); Assert.True(script.Scope.TryGet("a", out var obj)); Assert.Equal((long)100, (NumberLong)obj); } } }