2018-11-10 12:11:36 +00:00
|
|
|
using Upsilon.Evaluator;
|
|
|
|
using Xunit;
|
|
|
|
|
2018-11-23 13:38:45 +00:00
|
|
|
namespace UpsilonTests.GeneralTests
|
2018-11-10 12:11:36 +00:00
|
|
|
{
|
2018-11-23 11:55:28 +00:00
|
|
|
public class MathPrecedence : TestClass
|
2018-11-10 12:11:36 +00:00
|
|
|
{
|
2018-11-23 11:55:28 +00:00
|
|
|
public MathPrecedence(StaticScriptFixture fix) : base(fix)
|
|
|
|
{
|
|
|
|
}
|
|
|
|
|
2018-11-10 12:11:36 +00:00
|
|
|
[Theory]
|
|
|
|
[InlineData("5 * (10 + 5)", 75)]
|
|
|
|
[InlineData("(10 + 5) * 5", 75)]
|
|
|
|
public void Parenthesis(string input, double expectedOutput)
|
|
|
|
{
|
2018-11-23 11:55:28 +00:00
|
|
|
var actual = new Script(input, BoundScope, StaticScope).Evaluate<long>();
|
2018-11-10 12:11:36 +00:00
|
|
|
Assert.Equal(expectedOutput, actual, 8);
|
|
|
|
}
|
|
|
|
|
|
|
|
[Theory]
|
|
|
|
[InlineData("5 * 10 + 5", 55)]
|
|
|
|
[InlineData("5 + 10 * 5", 55)]
|
|
|
|
public void MultiplicationBeforeAddition(string input, double expectedOutput)
|
|
|
|
{
|
2018-11-23 11:55:28 +00:00
|
|
|
var actual = new Script(input, BoundScope, StaticScope).Evaluate<long>();
|
2018-11-10 12:11:36 +00:00
|
|
|
Assert.Equal(expectedOutput, actual, 8);
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|
|
|
|
}
|