Files
2026-07-13 12:32:14 +08:00

88 lines
2.3 KiB
Go

package tokenizer
import "testing"
func TestToken_TokenTypeString(t *testing.T) {
type Case struct {
tt TokenType
expected string
}
cases := []Case{
{tt: Identifier, expected: "identifier"},
{tt: Subquery, expected: "subquery"},
{tt: Select, expected: "select"},
{tt: From, expected: "from"},
{tt: As, expected: "as"},
{tt: Where, expected: "where"},
{tt: Or, expected: "or"},
{tt: And, expected: "and"},
{tt: Not, expected: "not"},
{tt: In, expected: "in"},
{tt: Is, expected: "is"},
{tt: Like, expected: "like"},
{tt: RLike, expected: "RLike"},
{tt: Equals, expected: "equal"},
{tt: NotEquals, expected: "not-equal"},
{tt: GreaterThanEquals, expected: "greater-than-or-equal"},
{tt: GreaterThan, expected: "greater-than"},
{tt: LessThanEquals, expected: "less-than-or-equal"},
{tt: LessThan, expected: "less-than"},
{tt: Comma, expected: "comma"},
{tt: Hyphen, expected: "hyphen"},
{tt: ExclamationMark, expected: "exclamation-mark"},
{tt: OpenParen, expected: "open-parentheses"},
{tt: CloseParen, expected: "close-parentheses"},
{tt: OpenBracket, expected: "open-bracket"},
{tt: CloseBracket, expected: "close-bracket"},
{tt: Unknown, expected: "unknown"},
}
for _, c := range cases {
actual := c.tt.String()
if c.expected != actual {
t.Fatalf("\nExpected %v\n Got %v", c.expected, actual)
}
}
}
func TestToken_String(t *testing.T) {
type Case struct {
token Token
expected string
}
cases := []Case{
{
token: Token{Type: Identifier, Raw: "name"},
expected: "{type: identifier, raw: \"name\"}",
},
{
token: Token{Type: Comma, Raw: ","},
expected: "{type: comma, raw: \",\"}",
},
}
for _, c := range cases {
actual := c.token.String()
if c.expected != actual {
t.Fatalf("\nExpected %v\n Got %v", c.expected, actual)
}
}
}
func TestToken_NewTokenizer(t *testing.T) {
input := "SELECT all FROM ."
inputLength, tokenLength := len([]rune(input)), 0
tokenizer := NewTokenizer(input)
if len(tokenizer.input) != inputLength {
t.Fatalf("len(tokenizer.input)\nExpected %v\n Got %v", inputLength,
len(tokenizer.input))
}
if len(tokenizer.tokens) != tokenLength {
t.Fatalf("len(tokenizer.tokens)\nExpected %v\n Got %v", tokenLength,
len(tokenizer.tokens))
}
}