37 lines
1.2 KiB
Plaintext
37 lines
1.2 KiB
Plaintext
import "@std/testing"
|
|
|
|
TokenKind :: enum {
|
|
keyword_if
|
|
keyword_else
|
|
keyword_for
|
|
keyword_return
|
|
}
|
|
|
|
keywords StaticStringMap(TokenKind) = init([
|
|
{"return", .keyword_return},
|
|
{"if", .keyword_if},
|
|
{"for", .keyword_for},
|
|
{"else", .keyword_else},
|
|
])
|
|
|
|
handles_length_bucket_lookups test {
|
|
try testing.expect(keywords.keys.len == 4)
|
|
try testing.expect(keywords.values.len == keywords.keys.len)
|
|
try testing.expect(keywords.len_indexes.len == 7)
|
|
try testing.expect_equal(some!(TokenKind.keyword_if), get(&keywords, "if"))
|
|
try testing.expect_equal(some!(TokenKind.keyword_else), get(&keywords, "else"))
|
|
try testing.expect_equal(some!(TokenKind.keyword_for), get(&keywords, "for"))
|
|
try testing.expect_equal(some!(TokenKind.keyword_return), get(&keywords, "return"))
|
|
try testing.expect_equal(null, get(&keywords, "no"))
|
|
try testing.expect_equal(null, get(&keywords, "four"))
|
|
try testing.expect_equal(null, get(&keywords, "longer-than-any-key"))
|
|
}
|
|
|
|
handles_empty_maps test {
|
|
empty StaticStringMap(TokenKind) = init([])
|
|
try testing.expect(empty.keys.len == 0)
|
|
try testing.expect(empty.values.len == 0)
|
|
try testing.expect(empty.len_indexes.len == 0)
|
|
try testing.expect_equal(null, get(&empty, "if"))
|
|
}
|