Esempio n. 1
0
        public void ConvertToPostFixedTest()
        {
            ShuntingYard target = new ShuntingYard();
            Tokens tokens = new Tokens("3*4 - 5*(4-3*3)");
            ReturnMessage actual = target.ConvertToPostFixed(tokens.AsList());

            ReturnMessage expected = new ReturnMessage(true,
                    new List<Token>() {
                    new Token("3", TokenType.numberLiteral),
                    new Token("4", TokenType.numberLiteral),
                    new Token("*", TokenType.operatorOrPunctuation),
                    new Token("-5", TokenType.numberLiteral),
                    new Token("4", TokenType.numberLiteral),
                    new Token("-3", TokenType.numberLiteral),
                    new Token("3", TokenType.numberLiteral),
                    new Token("*", TokenType.operatorOrPunctuation),
                    new Token("+", TokenType.operatorOrPunctuation),
                    new Token("*", TokenType.operatorOrPunctuation),
                    new Token("+", TokenType.operatorOrPunctuation),
                    });
            List<Token> returnedTokens = (List<Token>)actual.ReturnValue;
            List<Token> expectedTokens = (List<Token>)expected.ReturnValue;
            for(int i=0;i < returnedTokens.Count;i++){
                Assert.AreEqual<string>(returnedTokens[i].TokenString, expectedTokens[i].TokenString);
                Assert.AreEqual(returnedTokens[i].TokenType, expectedTokens[i].TokenType);
            }
        }
Esempio n. 2
0
 public Expression(string textOfCurrentLine)
 {
     this.input = textOfCurrentLine;
     Tokens = new Tokens(input);
     ReturnMessage = new ShuntingYard().ConvertToPostFixed(Tokens.AsList());
     if (ReturnMessage.Success == false) {
         failureMessage = ReturnMessage.Message;
     } else {
         PostFixedTokens = (List<Token>)ReturnMessage.ReturnValue;
         //Put postfixed Tokens into the tree
         foreach (Token t in PostFixedTokens) {
             ReturnMessage = ParseTree.AddToken(t);
             if (ReturnMessage.Success == false) {
                 failureMessage = ReturnMessage.Message;
             }
         }
     }
     //Set the outputString
     if (ReturnMessage.Success) {
         NumericalEvaluation = ParseTree.SetRoot().Evaluate();
         SystemLog.Add(NumericalEvaluation, LogObjectType.value);
         OutputString = NumericalEvaluation.ToString();
     } else {
         NumericalEvaluation = null;
         SystemLog.Add(failureMessage, LogObjectType.failureMessage);
         OutputString = failureMessage;
     }
 }
Esempio n. 3
0
        public void AddListOfTokensTest()
        {
            ShuntingYard sy = new ShuntingYard();
            Tokens tokens = new Tokens("Tan(3*4 - 5*(4-3*3))");
            List<Token> postFixed = (List<Token>)sy.ConvertToPostFixed(tokens.AsList()).ReturnValue;

            ParseTree actual = (ParseTree)new ParseTree().AddListOfTokens(
                                postFixed).ReturnValue;

            Debug.Print(actual.Visualize());
            //Assert.Inconclusive("Check the output window and see if the result is correct");
        }
Esempio n. 4
0
 public void ExpressionConstructorTest()
 {
     Expression target = new Expression("3+4*334 - te 33z 34.3.4,() || ,");
     Tokens tokens = new Tokens(new System.Collections.Generic.List<Token>(){
         new Token("3", TokenType.numberLiteral),
         new Token("+", TokenType.operatorOrPunctuation),
         new Token("+4", TokenType.numberLiteral),
         new Token("*", TokenType.operatorOrPunctuation),
         new Token("334", TokenType.numberLiteral),
         new Token("-", TokenType.atomicOperatorOrPunctuation),
         new Token("te", TokenType.identifier),
         new Token("33z", TokenType.identifier),
         new Token("34.3.4", TokenType.numberLiteral),
         new Token(",", TokenType.operatorOrPunctuation),
         new Token("(", TokenType.atomicOperatorOrPunctuation),
         new Token(")", TokenType.atomicOperatorOrPunctuation),
         new Token("||", TokenType.operatorOrPunctuation),
         new Token(",", TokenType.operatorOrPunctuation)
     });
     for(int i=0; i < tokens.AsList().Count; i++){
         Assert.AreEqual<string>(tokens.AsList()[i].TokenString, target.Tokens.AsList()[i].TokenString);
         Assert.AreEqual<TokenType>(tokens.AsList()[i].TokenType, target.Tokens.AsList()[i].TokenType);
     }
 }