public void Test_can_tokenize_query_with_two_parenthesized_expressions() { CmsqlLexer lexer = CreateLexerForQuery( "select foo from start where (foo = 'bar' and bar = 'foo') or (bla = 'test' and test = 'bla')"); IEnumerable <int> tokens = GetTokensAsList(lexer); tokens.ShouldAllBeEquivalentTo( GetTokensAsList( CmsqlLexer.SELECT, CmsqlLexer.IDENTIFIER, CmsqlLexer.FROM, CmsqlLexer.START, CmsqlLexer.WHERE, CmsqlLexer.LPAREN, CmsqlLexer.IDENTIFIER, CmsqlLexer.EQUALS, CmsqlLexer.LITERAL, CmsqlLexer.AND, CmsqlLexer.IDENTIFIER, CmsqlLexer.EQUALS, CmsqlLexer.LITERAL, CmsqlLexer.RPAREN, CmsqlLexer.OR, CmsqlLexer.LPAREN, CmsqlLexer.IDENTIFIER, CmsqlLexer.EQUALS, CmsqlLexer.LITERAL, CmsqlLexer.AND, CmsqlLexer.IDENTIFIER, CmsqlLexer.EQUALS, CmsqlLexer.LITERAL, CmsqlLexer.RPAREN)); }
public void Test_can_tokenize_start_query() { CmsqlLexer lexer = CreateLexerForQuery("select foo from start"); IEnumerable <int> tokens = GetTokensAsList(lexer); tokens.ShouldAllBeEquivalentTo( GetTokensAsList( CmsqlLexer.SELECT, CmsqlLexer.IDENTIFIER, CmsqlLexer.FROM, CmsqlLexer.START)); }
private IEnumerable <int> GetTokensAsList(CmsqlLexer lexer) { LinkedList <int> tokens = new LinkedList <int>(); IToken token = lexer.NextToken(); while (token.Type != -1) { tokens.AddLast(token.Type); token = lexer.NextToken(); } return(tokens); }
public void Test_can_tokenize_query_with_invalid_type_identifier() { CmsqlLexer lexer = CreateLexerForQuery( "select foo-bar from start"); IEnumerable <int> tokens = GetTokensAsList(lexer); tokens.ShouldAllBeEquivalentTo( GetTokensAsList( CmsqlLexer.SELECT, CmsqlLexer.IDENTIFIER, CmsqlLexer.ERRORCHAR, CmsqlLexer.IDENTIFIER, CmsqlLexer.FROM, CmsqlLexer.START)); }
public void Test_can_tokenize_query_with_single_not_equals_condition() { CmsqlLexer lexer = CreateLexerForQuery("select foo from start where foo != 'bar'"); IEnumerable <int> tokens = GetTokensAsList(lexer); tokens.ShouldAllBeEquivalentTo( GetTokensAsList( CmsqlLexer.SELECT, CmsqlLexer.IDENTIFIER, CmsqlLexer.FROM, CmsqlLexer.START, CmsqlLexer.WHERE, CmsqlLexer.IDENTIFIER, CmsqlLexer.NOTEQUALS, CmsqlLexer.LITERAL)); }
public void Test_can_tokenize_two_queries_separated_by_terminator() { CmsqlLexer lexer = CreateLexerForQuery("select foo from start; select bar from root"); IEnumerable <int> tokens = GetTokensAsList(lexer); tokens.ShouldAllBeEquivalentTo( GetTokensAsList( CmsqlLexer.SELECT, CmsqlLexer.IDENTIFIER, CmsqlLexer.FROM, CmsqlLexer.START, CmsqlLexer.TERMINATOR, CmsqlLexer.SELECT, CmsqlLexer.IDENTIFIER, CmsqlLexer.FROM, CmsqlLexer.ROOT)); }