Parser: Multiplication, division and parenthesis.

This commit is contained in:
2019-12-01 16:50:29 +01:00
parent 49941a7861
commit 0fe4e54bcb
8 changed files with 146 additions and 9 deletions

View File

@@ -5,6 +5,8 @@ namespace VAR.ExpressionEvaluator.Tests
[TestClass()]
public class ParserTests
{
#region Plus and Minus
[TestMethod()]
public void ParseString__Ten_EqualsTen()
{
@@ -37,6 +39,10 @@ namespace VAR.ExpressionEvaluator.Tests
Assert.AreEqual(900000m, result);
}
#endregion Plus and minus
#region Number signs
[TestMethod()]
public void ParseString__MinusTen()
{
@@ -77,5 +83,67 @@ namespace VAR.ExpressionEvaluator.Tests
Assert.AreEqual(-40m, result);
}
#endregion Number signs
#region Multiplication and division
[TestMethod()]
public void ParseString__10MutiplyBy2()
{
string expression = "10 * 2";
object result = Parser.EvaluateString(expression);
Assert.AreEqual(20m, result);
}
[TestMethod()]
public void ParseString__10DividedBy2()
{
string expression = "10 / 2";
object result = Parser.EvaluateString(expression);
Assert.AreEqual(5m, result);
}
[TestMethod()]
public void ParseString__5DividedBy2()
{
string expression = "5 / 2";
object result = Parser.EvaluateString(expression);
Assert.AreEqual(2.5m, result);
}
[TestMethod()]
public void ParseString__5DividedBy2Plus1()
{
string expression = "5 / 2 + 1";
object result = Parser.EvaluateString(expression);
Assert.AreEqual(3.5m, result);
}
[TestMethod()]
public void ParseString__1Plus5DividedBy2()
{
string expression = "1 + 5 / 2";
object result = Parser.EvaluateString(expression);
Assert.AreEqual(3.5m, result);
}
[TestMethod()]
public void ParseString__5DividedByParen1Plus1()
{
string expression = "5 / (1 + 1)";
object result = Parser.EvaluateString(expression);
Assert.AreEqual(2.5m, result);
}
[TestMethod()]
public void ParseString__Paren2Plus2DividedByParen1Plus1()
{
string expression = "(2 + 2) / (1 + 1)";
object result = Parser.EvaluateString(expression);
Assert.AreEqual(2m, result);
}
#endregion Multiplication and division
}
}

View File

@@ -120,7 +120,7 @@ namespace VAR.ExpressionEvaluator.Tests
var t = new Tokenizer(new StringReader(testString));
// "("
Assert.AreEqual(t.Token, Token.ParentesisStart);
Assert.AreEqual(t.Token, Token.ParenthesisStart);
t.NextToken();
// "10"
@@ -138,7 +138,7 @@ namespace VAR.ExpressionEvaluator.Tests
t.NextToken();
// ")"
Assert.AreEqual(t.Token, Token.ParentesisEnd);
Assert.AreEqual(t.Token, Token.ParenthesisEnd);
t.NextToken();
// "*"