using MathEngine.Parser.Tokeniser; using MathEngine.Parser.Parser; namespace EngineTests { /// /// Class for testing the ExpressionTree Class /// [TestClass] public class ExpressionTreeTests { /// /// Test to see if a simple expression is constructed correctly /// [TestMethod] public void TestExpressionTreeSimpleExpression() { string testExp = "3+4"; TreeNode exptectedTree = new(Token.Plus); Token tokfour = new("4", Token.Type.Numeric, Token.NumericType.Decimal, 0); Token tokthree = new("3", Token.Type.Numeric, Token.NumericType.Decimal, 0); TreeNode four = new(tokfour); TreeNode three = new(tokthree); exptectedTree.AddChildNode(four); exptectedTree.AddChildNode(three); ExpressionTree returnedTree = new ExpressionTree(testExp); Assert.IsTrue(returnedTree.Equals(exptectedTree)); } /// /// Test to see if a simple expression is evaluated correctly /// [TestMethod] public void TestExpressionTreeSimpleExpressionEvaluation() { string testExp = "3+4*7"; Token tok31 = new("31", Token.Type.Numeric, Token.NumericType.Decimal, 0); TreeNode exptectedTree = new(tok31); ExpressionTree returnedTree = new ExpressionTree(testExp); ExpressionTree evaluatedTree = returnedTree.Evaluate(); Assert.IsTrue(evaluatedTree.Equals(exptectedTree)); } /// /// Test to see if a simple expression using all base operators (+,-,*,/) is evaluated correctly /// [TestMethod] public void TestExpressionTreeSimpleExpressionAllBaseOperatorsEvaluation() { string testExp = "3+4*7-8/7"; decimal testValue = decimal.Divide(209 , 7); Token tok31 = new(testValue.ToString(), Token.Type.Numeric, Token.NumericType.Decimal, 0); TreeNode exptectedTree = new(tok31); ExpressionTree returnedTree = new ExpressionTree(testExp); ExpressionTree evaluatedTree = returnedTree.Evaluate(); Assert.IsTrue(evaluatedTree.Equals(exptectedTree)); } } }