github.com/mithrandie/csvq@v1.18.1/lib/parser/lexer_test.go (about)

     1  package parser
     2  
     3  import "testing"
     4  
     5  func TestToken_IsEmpty(t *testing.T) {
     6  	token := Token{}
     7  	if !token.IsEmpty() {
     8  		t.Error("Token.Empty() is false, want true for empty token")
     9  	}
    10  }
    11  
    12  func TestLexer_Error(t *testing.T) {
    13  	lexer := Lexer{
    14  		token: Token{
    15  			Token:   SELECT,
    16  			Literal: "select",
    17  		},
    18  	}
    19  	message := "syntax error"
    20  
    21  	expect := "syntax error: unexpected token \"select\""
    22  	lexer.Error(message)
    23  	if lexer.err.Error() != expect {
    24  		t.Errorf("error message = %s, want %s for token %v", lexer.err.Error(), expect, lexer.token)
    25  	}
    26  
    27  	lexer = Lexer{
    28  		token: Token{
    29  			Token:   AGGREGATE_FUNCTION,
    30  			Literal: "min",
    31  		},
    32  	}
    33  	expect = "syntax error: unexpected token \"min\""
    34  	lexer.Error(message)
    35  	if lexer.err.Error() != expect {
    36  		t.Errorf("error message = %s, want %s for token %v", lexer.err.Error(), expect, lexer.token)
    37  	}
    38  
    39  	lexer = Lexer{
    40  		token: Token{
    41  			Token:   SUBSTITUTION_OP,
    42  			Literal: ":=",
    43  		},
    44  	}
    45  	expect = "syntax error: unexpected token \":=\""
    46  	lexer.Error(message)
    47  	if lexer.err.Error() != expect {
    48  		t.Errorf("error message = %s, want %s for token %v", lexer.err.Error(), expect, lexer.token)
    49  	}
    50  
    51  	lexer = Lexer{
    52  		token: Token{
    53  			Token: -1,
    54  		},
    55  	}
    56  	expect = "syntax error: unexpected termination"
    57  	lexer.Error(message)
    58  	if lexer.err.Error() != expect {
    59  		t.Errorf("error message = %s, want %s for token %v", lexer.err.Error(), expect, lexer.token)
    60  	}
    61  }