public void ProcessClassVariableName() { Lexer lexer = new Lexer("@@name"); Token token; token = lexer.NextToken(); Assert.IsNotNull(token); Assert.AreEqual(TokenType.Name, token.TokenType); Assert.AreEqual("@@name", token.Value); token = lexer.NextToken(); Assert.IsNull(token); }
public void ProcessBoolean() { Lexer lexer = new Lexer("true false"); Token token; token = lexer.NextToken(); Assert.IsNotNull(token); Assert.AreEqual(TokenType.Boolean, token.TokenType); Assert.AreEqual("true", token.Value); token = lexer.NextToken(); Assert.IsNotNull(token); Assert.AreEqual(TokenType.Boolean, token.TokenType); Assert.AreEqual("false", token.Value); token = lexer.NextToken(); Assert.IsNull(token); }
public void ProcessEndOfLine() { Lexer lexer = new Lexer("\r\n"); Token token; token = lexer.NextToken(); Assert.IsNotNull(token); Assert.AreEqual(TokenType.EndOfLine, token.TokenType); token = lexer.NextToken(); Assert.IsNull(token); }
public void RaiseIfUnclosedString() { Lexer lexer = new Lexer("\"foo"); Token token; token = lexer.NextToken(); }
public void RaiseIfUnclosedQuotedString() { Lexer lexer = new Lexer("'bar"); Token token; token = lexer.NextToken(); }
public void RaiseIfOnlyAts() { Lexer lexer = new Lexer("@@"); Token token; token = lexer.NextToken(); }
public void ProcessStringWithBackslashes() { Lexer lexer = new Lexer("\"\\\\\\r\\n\\t\\f\\s\\v\\\\\""); Token token; token = lexer.NextToken(); Assert.IsNotNull(token); Assert.AreEqual(TokenType.String, token.TokenType); Assert.AreEqual("\\\r\n\t\f \v\\", token.Value); token = lexer.NextToken(); Assert.IsNull(token); }
public void ProcessString() { Lexer lexer = new Lexer("\"foo\""); Token token; token = lexer.NextToken(); Assert.IsNotNull(token); Assert.AreEqual(TokenType.String, token.TokenType); Assert.AreEqual("foo", token.Value); token = lexer.NextToken(); Assert.IsNull(token); }
public void ProcessSeparators() { string separators = "()[]{},:;"; Lexer lexer = new Lexer(separators); Token token; foreach (char ch in separators) { token = lexer.NextToken(); Assert.IsNotNull(token); Assert.AreEqual(TokenType.Separator, token.TokenType); Assert.AreEqual(ch.ToString(), token.Value); } token = lexer.NextToken(); Assert.IsNull(token); }
public void ProcessMultiCharOperators() { string operators = "** >> << <= >= == === != =~ !~ <=> && || .. ... **= *= /= %= += -= <<= >>= &&= &= ||= |= ^="; string[] otherOperators = new string[] { "**", ">>", "<<", "<=", ">=", "==", "===", "!=", "=~", "!~", "<=>", "&&", "||", "..", "...", "**=", "*=", "/=", "%=", "+=", "-=", "<<=", ">>=", "&&=", "&=", "||=", "|=", "^=" }; Lexer lexer = new Lexer(operators); Token token; foreach (string op in otherOperators) { token = lexer.NextToken(); Assert.IsNotNull(token); Assert.AreEqual(TokenType.Operator, token.TokenType); Assert.AreEqual(op, token.Value); } token = lexer.NextToken(); Assert.IsNull(token); }
public void ProcessQuotedStringWithSuperfluosBackslash() { Lexer lexer = new Lexer("'bar\\foo'"); Token token; token = lexer.NextToken(); Assert.IsNotNull(token); Assert.AreEqual(TokenType.String, token.TokenType); Assert.AreEqual("bar\\foo", token.Value); token = lexer.NextToken(); Assert.IsNull(token); }
public void ProcessQuotedString() { Lexer lexer = new Lexer("'bar'"); Token token; token = lexer.NextToken(); Assert.IsNotNull(token); Assert.AreEqual(TokenType.String, token.TokenType); Assert.AreEqual("bar", token.Value); token = lexer.NextToken(); Assert.IsNull(token); }
public void ProcessOneCharOperators() { string operators = "!+~-*/%&<^>|.=\\"; Lexer lexer = new Lexer(operators); Token token; foreach (char ch in operators) { token = lexer.NextToken(); Assert.IsNotNull(token); Assert.AreEqual(TokenType.Operator, token.TokenType); Assert.AreEqual(ch.ToString(), token.Value); } token = lexer.NextToken(); Assert.IsNull(token); }
public void ProcessNameWithUnderscore() { Lexer lexer = new Lexer("my_name"); Token token; token = lexer.NextToken(); Assert.IsNotNull(token); Assert.AreEqual(TokenType.Name, token.TokenType); Assert.AreEqual("my_name", token.Value); token = lexer.NextToken(); Assert.IsNull(token); }
public void ProcessNameEndOfLineName() { Lexer lexer = new Lexer("foo\r\nbar"); Token token; token = lexer.NextToken(); Assert.IsNotNull(token); Assert.AreEqual(TokenType.Name, token.TokenType); Assert.AreEqual("foo", token.Value); token = lexer.NextToken(); Assert.IsNotNull(token); Assert.AreEqual(TokenType.EndOfLine, token.TokenType); token = lexer.NextToken(); Assert.IsNotNull(token); Assert.AreEqual(TokenType.Name, token.TokenType); Assert.AreEqual("bar", token.Value); token = lexer.NextToken(); Assert.IsNull(token); }
public void ProcessReal() { Lexer lexer = new Lexer("12.34"); Token token; token = lexer.NextToken(); Assert.IsNotNull(token); Assert.AreEqual(TokenType.Real, token.TokenType); Assert.AreEqual("12.34", token.Value); token = lexer.NextToken(); Assert.IsNull(token); }
public void ProcessIntegerWithSpaces() { Lexer lexer = new Lexer(" 123 "); Token token; token = lexer.NextToken(); Assert.IsNotNull(token); Assert.AreEqual(TokenType.Integer, token.TokenType); Assert.AreEqual("123", token.Value); token = lexer.NextToken(); Assert.IsNull(token); }