44 lines
1004 B
C#
44 lines
1004 B
C#
|
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
|
||
|
b = a
|
||
|
";
|
||
|
var script = new Script(input);
|
||
|
Assert.Empty(script.Diagnostics.Messages);
|
||
|
var evaluate = script.Evaluate<NumberLong>();
|
||
|
Assert.Empty(script.Diagnostics.Messages);
|
||
|
Assert.Equal((long)10, evaluate);
|
||
|
}
|
||
|
|
||
|
[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);
|
||
|
var evaluate = script.Evaluate<NumberLong>();
|
||
|
Assert.Empty(script.Diagnostics.Messages);
|
||
|
Assert.Equal((long)100, evaluate);
|
||
|
}
|
||
|
|
||
|
}
|
||
|
}
|