public void Verify_infix_lexer_logic() { const string expression = "( true && (true) ) || false"; var lexer = new InfixLexer(); var tokens = lexer.Analyze(expression, false); Assert.AreEqual(tokens.Length, 15); Assert.AreEqual(tokens[0], "("); Assert.AreEqual(tokens[1], " "); Assert.AreEqual(tokens[2], "true"); Assert.AreEqual(tokens[3], " "); Assert.AreEqual(tokens[4], "&&"); Assert.AreEqual(tokens[5], " "); Assert.AreEqual(tokens[6], "("); Assert.AreEqual(tokens[7], "true"); Assert.AreEqual(tokens[8], ")"); Assert.AreEqual(tokens[9], " "); Assert.AreEqual(tokens[10], ")"); Assert.AreEqual(tokens[11], " "); Assert.AreEqual(tokens[12], "||"); Assert.AreEqual(tokens[13], " "); Assert.AreEqual(tokens[14], "false"); tokens = lexer.Analyze(expression, true); Assert.AreEqual(tokens.Length, 9); Assert.AreEqual(tokens[0], "("); Assert.AreEqual(tokens[1], "true"); Assert.AreEqual(tokens[2], "&&"); Assert.AreEqual(tokens[3], "("); Assert.AreEqual(tokens[4], "true"); Assert.AreEqual(tokens[5], ")"); Assert.AreEqual(tokens[6], ")"); Assert.AreEqual(tokens[7], "||"); Assert.AreEqual(tokens[8], "false"); try { lexer.Analyze("true + false", false); Assert.Fail(); } catch (Exception e) { Assert.IsTrue(e is ArgumentException); } try { lexer.Analyze("true && 7", false); Assert.Fail(); } catch (Exception e) { Assert.IsTrue(e is ArgumentException); } }
public InfixToPostfixConverter() { _infixLexer = new InfixLexer(); }