public void WordRewriter_TokenStream_Needs_To_Be_In_Infix_Notation() { TokenStream stream = new TokenStream(Enumerable.Empty<Token>(), TokenNotation.Postfix); WordRewriter rewriter = new WordRewriter(); var exception = Assert.Throws<MathExpressionException>(() => rewriter.Rewrite(stream)); Assert.AreEqual("Token stream is not in infix notation.", exception.Message); }
public void WordRewriter_Will_Detect_And_Rewrite_Functions() { MathExpressionTokenizer tokenizer = new MathExpressionTokenizer(); var tokens = tokenizer.Tokenize("sqrt(1)"); WordRewriter rewriter = new WordRewriter(); var result = rewriter.Rewrite(tokens); Assert.AreEqual(TokenType.Function, result[0].Type); Assert.AreEqual("sqrt", result[0].Value); }
public void WordRewriter_Will_Detect_Constant_Pi() { List<Token> tokens = new List<Token>(); tokens.Add(new Token(TokenType.Word, "pi")); TokenStream stream = new TokenStream(tokens, TokenNotation.Infix); TokenStream result = new WordRewriter().Rewrite(stream); Assert.AreEqual(TokenType.Constant, result[0].Type); Assert.AreEqual("pi", ((Tuple<string, double>)result[0].Value).Item1); Assert.AreEqual(Math.PI, ((Tuple<string, double>)result[0].Value).Item2); }