public void GenArithmetic() { var comparison = new Token.TokenType[12] { Token.TokenType.TOKEN_SYMBOL, Token.TokenType.TOKEN_EQU, Token.TokenType.TOKEN_INT, Token.TokenType.TOKEN_ADD, Token.TokenType.TOKEN_INT, Token.TokenType.TOKEN_SUB, Token.TokenType.TOKEN_INT, Token.TokenType.TOKEN_DIV, Token.TokenType.TOKEN_INT, Token.TokenType.TOKEN_MUL, Token.TokenType.TOKEN_INT, Token.TokenType.TOKEN_END }; _lexer.AddStatement("variable= 1 + 1 - 1 / 1 * 1"); for (int i = 0; i < 12; i++) { var compare = comparison[i]; var token = _lexer.GetTokens().ElementAt(i); Assert.AreEqual(token.Type, compare); Console.WriteLine(i + "| " + token.Type + " == " + compare); } }
public void GenOpNode() { _lexer.AddStatement("1+1"); _parser.LoadTokens(_lexer); var ast = _parser.GetAst(); if (ast[0] is IntOpNode node) { if (node.Left is IntNode left) { Assert.AreEqual(left.Value, 1); } if (node.Left is IntNode right) { Assert.AreEqual(right.Value, 1); } Assert.AreEqual(node.OpType, IntOpNode.Type.Add); } else { Assert.Fail(); } }