68 lines
1.8 KiB
C#
68 lines
1.8 KiB
C#
using Upsilon.BaseTypes;
|
|
using Upsilon.BaseTypes.Number;
|
|
using Upsilon.Evaluator;
|
|
using Xunit;
|
|
|
|
namespace UpsilonTests
|
|
{
|
|
public class FunctionTests
|
|
{
|
|
[Fact]
|
|
public void BasicFunctionTest()
|
|
{
|
|
const string input = @"
|
|
function testFunc ()
|
|
a = 100
|
|
end
|
|
a = 50
|
|
testFunc()
|
|
";
|
|
var script = new Script(input);
|
|
Assert.Empty(script.Diagnostics.Messages);
|
|
script.Evaluate();
|
|
Assert.Empty(script.Diagnostics.Messages);
|
|
Assert.True(script.Scope.TryGet("testFunc", out var func));
|
|
Assert.IsType<LuaFunction>(func);
|
|
Assert.True(script.Scope.TryGet("a", out var a));
|
|
Assert.Equal(100, (long)(NumberLong)a);
|
|
}
|
|
|
|
[Fact]
|
|
public void ParameterTest()
|
|
{
|
|
const string input = @"
|
|
function testFunc (var1)
|
|
a = var1
|
|
end
|
|
a = 50
|
|
testFunc(100)
|
|
";
|
|
var script = new Script(input);
|
|
Assert.Empty(script.Diagnostics.Messages);
|
|
script.Evaluate();
|
|
Assert.Empty(script.Diagnostics.Messages);
|
|
Assert.True(script.Scope.TryGet("testFunc", out var func));
|
|
Assert.IsType<LuaFunction>(func);
|
|
Assert.True(script.Scope.TryGet("a", out var a));
|
|
Assert.Equal(100, (long)(NumberLong)a);
|
|
}
|
|
|
|
[Fact]
|
|
public void ParameterBindTest()
|
|
{
|
|
const string input = @"
|
|
function testFunc (var1)
|
|
b = var1 == true
|
|
end
|
|
testFunc(100)
|
|
";
|
|
var script = new Script(input);
|
|
Assert.Empty(script.Diagnostics.Messages);
|
|
script.Evaluate();
|
|
Assert.Empty(script.Diagnostics.Messages);
|
|
Assert.True(script.Scope.TryGet("testFunc", out var func));
|
|
Assert.IsType<LuaFunction>(func);
|
|
}
|
|
|
|
}
|
|
} |