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); } }
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; } }
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"); }
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); } }