monkey/lexer/lexer_test.go
2021-11-30 14:02:01 -05:00

39 lines
813 B
Go

package lexer
import (
"testing"
"monkey/token"
)
func TestNextToken(t *testing.T) {
input := `=+(){},;`
tests := []struct{
expectedType token.TokenType
expectedLiteral string
}{
{token.ASSIGN, "="},
{token.PLUS, "+"},
{token.LPAREN, "("},
{token.RPAREN, ")"},
{token.LBRACE, "{"},
{token.RBRACE, "}"},
{token.COMMA, ","},
{token.SEMICOLON, ";"},
{token.EOF, ""},
}
l := New(input)
for i, tt := range tests {
tok := l.NextToken()
if tok.Type != tt.expectedType {
t.Fatalf("tests[%d] - tokentype wrong. expected=%q, got %q",
i, tt.expectedType, tok.Type)
}
if tok.Literal != tt.expectedLiteral {
t.Fatalf("tests[%d] - literal wrong. expected=%q, got %q",
i, tt.expectedLiteral, tok.Literal)
}
}
}