Upsilon/UpsilonTests/GeneralTests/IfTests.cs

66 lines
1.7 KiB
C#
Raw Normal View History

2018-11-13 11:48:50 +00:00
using Upsilon.Evaluator;
using Xunit;
2018-11-23 13:38:45 +00:00
namespace UpsilonTests.GeneralTests
2018-11-13 11:48:50 +00:00
{
2018-11-23 11:55:28 +00:00
public class IfTests : TestClass
2018-11-13 11:48:50 +00:00
{
2018-11-23 11:55:28 +00:00
public IfTests(StaticScriptFixture fix) : base(fix)
{
}
2018-11-13 11:48:50 +00:00
[Fact]
public void BasicIfTest()
{
2018-11-23 11:55:28 +00:00
const string input = @"
if true then
return true
end
return false";
var script = new Script(input, BoundScope, StaticScope);
2018-11-13 11:48:50 +00:00
Assert.Empty(script.Diagnostics.Messages);
var actual = script.Evaluate<bool>();
2018-11-13 11:48:50 +00:00
Assert.True(actual);
}
2018-11-13 12:54:51 +00:00
[Theory]
[InlineData("true", 3, 8, 3)]
[InlineData("false", 3, 8, 8)]
[InlineData("5 == 5", 500, 349, 500)]
public void BasicIfElseTests(string condition, int in1, int in2, long expected)
{
var input =
$@"
if {condition} then
val = {in1}
else
val = {in2}
end";
2018-11-23 11:55:28 +00:00
var script = new Script(input, BoundScope, StaticScope);
2018-11-13 12:54:51 +00:00
Assert.Empty(script.Diagnostics.Messages);
var actual = script.Evaluate<long>();
2018-11-13 12:54:51 +00:00
Assert.Equal(expected, actual);
}
2018-11-13 14:15:44 +00:00
[Theory]
[InlineData("true", "false", 3, 8, 5, 3)]
[InlineData("false", "true", 3, 8, 5, 8)]
public void BasicIfElseIfElseTests(string condition1, string condition2, int in1, int in2, int in3, long expected)
{
var input =
$@"
if {condition1} then
val = {in1}
elseif {condition2} then
val = {in2}
else
val = {in3}
end";
2018-11-23 11:55:28 +00:00
var script = new Script(input, BoundScope, StaticScope);
2018-11-13 14:15:44 +00:00
Assert.Empty(script.Diagnostics.Messages);
var actual = script.Evaluate<long>();
2018-11-13 14:15:44 +00:00
Assert.Equal(expected, actual);
}
2018-11-13 11:48:50 +00:00
}
}