示例#1
0
        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");
            }
        }
示例#2
0
        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");
            }
        }
示例#3
0
 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);
 }