array reflection
This commit is contained in:
@@ -0,0 +1,36 @@
|
||||
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"))
|
||||
}
|
||||
Reference in New Issue
Block a user