public void EvaluateTest2() { var expression = "(10 + (-5 * 2))"; var tokens = Tokenizer.Default.GetTokens(expression); var rpn = MathEvaluator.InfixToRPN(tokens); Assert.AreEqual(0, MathEvaluator.Evaluate(rpn)); Assert.AreEqual(0, MathEvaluator.Evaluate(expression)); }
public void EvaluateTest3() { var expression = "max(10 - 4, 2 + 6)"; var tokens = Tokenizer.Default.GetTokens(expression); var rpn = MathEvaluator.InfixToRPN(tokens); Assert.AreEqual(8, MathEvaluator.Evaluate(rpn)); Assert.AreEqual(8, MathEvaluator.Evaluate(expression)); }
public void InfixToRPNTest4() { var tokens = Tokenizer.Default.GetTokens("e^2 + 1"); var rpn = MathEvaluator.InfixToRPN(tokens); // e 2 ^ 1 + var expected = new string[] { "e", "2", "^", "1", "+" }; Assert.AreEqual(expected, rpn.ToStringExpression(), "{0}\n{1}", rpn.CollectionToString(s => s.Value), rpn.CollectionToString()); }
public void InfixToRPNTest3() { var tokens = Tokenizer.Default.GetTokens("max(10 - 4, 2 + 6)"); var rpn = MathEvaluator.InfixToRPN(tokens); // 10 4 - 2 6 + max var expected = new string[] { "10", "4", "-", "2", "6", "+", "max" }; Assert.AreEqual(expected, TokenExtensions.ToStringArray(rpn), "{0}\n{1}", rpn.CollectionToString(s => s.Value), rpn.CollectionToString()); }
public void InfixToRPNTest2() { var tokens = Tokenizer.Default.GetTokens("(10 + (-5 * 2))"); var rpn = MathEvaluator.InfixToRPN(tokens); //10 5 - 2 * + var expected = new string[] { "10", "5", "-", "2", "*", "+" }; Assert.AreEqual(expected, TokenExtensions.ToStringArray(rpn), "{0}\n{1}", rpn.CollectionToString(s => s.Value), rpn.CollectionToString()); }
public void InfixToRPNTest1() { var expression = "10 + 5 * 2"; var tokens = Tokenizer.Default.GetTokens(expression); var rpn = MathEvaluator.InfixToRPN(tokens); // 10 5 2 * + var expected = new string[] { "10", "5", "2", "*", "+" }; CollectionAssert.AreEqual(expected, rpn.ToStringExpression(), rpn.Select(s => s.ToString()).AsString()); }
public void EvaluateTest4() { var expression = "e^2 + 1"; var tokens = Tokenizer.Default.GetTokens(expression); var rpn = MathEvaluator.InfixToRPN(tokens); var result = Math.Exp(2) + 1; var delta = 0.00001; Assert.AreEqual(result, MathEvaluator.Evaluate(rpn), delta); Assert.AreEqual(result, MathEvaluator.Evaluate(expression), delta); }
public void EvaluateTest5() { var expression = "(5 * 2) + 1"; var tokens = Tokenizer.Default.GetTokens(expression); var rpn = MathEvaluator.InfixToRPN(tokens); var expectedRPN = new string[] { "5", "2", "*", "1", "+" }; CollectionAssert.AreEqual(expectedRPN, rpn.ToStringExpression(), rpn.ToStringExpression().AsString()); Assert.AreEqual(11, MathEvaluator.Evaluate(expression)); Assert.AreEqual(11, MathEvaluator.Evaluate(rpn)); }