Adding tests about the lexer
This commit is contained in:
@@ -0,0 +1,42 @@
|
|||||||
|
package lexer
|
||||||
|
|
||||||
|
import (
|
||||||
|
"testing"
|
||||||
|
|
||||||
|
"github.com/edipretoro/waiig_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.Fatal("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)
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user