63 lines
1.5 KiB
C#
63 lines
1.5 KiB
C#
|
using Upsilon.Evaluator;
|
||
|
using Xunit;
|
||
|
|
||
|
namespace UpsilonTests.GeneralTests
|
||
|
{
|
||
|
public class ForLoopTests : TestClass
|
||
|
{
|
||
|
public ForLoopTests(StaticScriptFixture fix) : base(fix)
|
||
|
{
|
||
|
}
|
||
|
|
||
|
[Fact]
|
||
|
public void BasicNumericForLoopTest()
|
||
|
{
|
||
|
const string input = @"
|
||
|
a = 0
|
||
|
for i=0,5 do
|
||
|
a = a + i
|
||
|
end
|
||
|
return a
|
||
|
";
|
||
|
var script = new Script(input, BoundScope, StaticScope);
|
||
|
Assert.Empty(script.Diagnostics.Messages);
|
||
|
var result = script.Evaluate<long>();
|
||
|
Assert.Empty(script.Diagnostics.Messages);
|
||
|
Assert.Equal(15, result);
|
||
|
}
|
||
|
|
||
|
[Fact]
|
||
|
public void NumericForLoopWithDifferentStepTest()
|
||
|
{
|
||
|
const string input = @"
|
||
|
a = 0
|
||
|
for i=0,10,2 do
|
||
|
a = a + i
|
||
|
end
|
||
|
return a
|
||
|
";
|
||
|
var script = new Script(input, BoundScope, StaticScope);
|
||
|
Assert.Empty(script.Diagnostics.Messages);
|
||
|
var result = script.Evaluate<long>();
|
||
|
Assert.Empty(script.Diagnostics.Messages);
|
||
|
Assert.Equal(30, result);
|
||
|
}
|
||
|
|
||
|
[Fact]
|
||
|
public void NumericForLoopWithNegativeStepTest()
|
||
|
{
|
||
|
const string input = @"
|
||
|
a = 0
|
||
|
for i=5,0,-1 do
|
||
|
a = a + i
|
||
|
end
|
||
|
return a";
|
||
|
var script = new Script(input, BoundScope, StaticScope);
|
||
|
Assert.Empty(script.Diagnostics.Messages);
|
||
|
var result = script.Evaluate<long>();
|
||
|
Assert.Empty(script.Diagnostics.Messages);
|
||
|
Assert.Equal(15, result);
|
||
|
}
|
||
|
|
||
|
}
|
||
|
}
|