public void ShuntingYardTest() { SpreadsheetEngine.ExpressionTree expressionTree = new SpreadsheetEngine.ExpressionTree("5+5"); var methodInfo = expressionTree.GetType().GetMethod("ConvertToPostfix", BindingFlags.NonPublic | BindingFlags.Static | BindingFlags.Instance); if (methodInfo != null) { List <string> expectedResult = new List <string> { "5", "5", "+" }; object actualResult = methodInfo.Invoke(expressionTree, new object[] { "5+5" }); Assert.AreEqual(expectedResult, actualResult); expectedResult = new List <string> { "A", "B", "C", "*", "D", "/", "+", "E", "-" }; actualResult = methodInfo.Invoke(expressionTree, new object[] { "A + B * C / D - E" }); Assert.AreEqual(expectedResult, actualResult); expectedResult = new List <string> { "A", "B", "C", "D", "-", "*", "+", "E", "/" }; actualResult = methodInfo.Invoke(expressionTree, new object[] { "( A + B * ( C - D ) ) / E" }); Assert.AreEqual(expectedResult, actualResult); expectedResult = new List <string> { "A", "B", "C", "D", "*", "+", "*", "E", "+" }; actualResult = methodInfo.Invoke(expressionTree, new object[] { "A * (B + C * D) + E" }); Assert.AreEqual(expectedResult, actualResult); Assert.Pass("Sucessfully converted all infix strings to postfix list of substrings"); } }
public void ConstructPostfixTreeTest() { SpreadsheetEngine.ExpressionTree expressionTree = new SpreadsheetEngine.ExpressionTree("5+5"); var methodInfo = expressionTree.GetType().GetMethod("ConstructPostfixTree", BindingFlags.NonPublic | BindingFlags.Static | BindingFlags.Instance); if (methodInfo != null) { SpreadsheetEngine.AdditionExpressionTreeNode expectedResult = new SpreadsheetEngine.AdditionExpressionTreeNode(); SpreadsheetEngine.ExpressionTreeNode actualResult = (SpreadsheetEngine.ExpressionTreeNode)methodInfo.Invoke(expressionTree, new object[] { new List <string> { "5", "5", "+" } }); Assert.AreEqual(expectedResult.GetType(), actualResult.GetType()); Assert.Pass("Root of constructed tree matches expected type"); } }
public void TestSetVariable() { SpreadsheetEngine.ExpressionTree expressionTree = new SpreadsheetEngine.ExpressionTree("5+4"); expressionTree.SetVariable("A1", 42); var fieldInfo = expressionTree.GetType().GetField("root", BindingFlags.NonPublic | BindingFlags.Static | BindingFlags.Instance); }