Properly handle scopes

This commit is contained in:
2018-11-14 16:39:52 +01:00
parent 82e13a85e2
commit 7e1edbe3f1
8 changed files with 138 additions and 26 deletions

View File

@@ -0,0 +1,44 @@
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);
}
}
}

View File

@@ -1,4 +1,4 @@
<Project Sdk="Microsoft.NET.Sdk">
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<TargetFramework>netcoreapp2.1</TargetFramework>