-
-
Notifications
You must be signed in to change notification settings - Fork 2
Expand file tree
/
Copy pathkeyword.test.lua
More file actions
82 lines (78 loc) · 2.88 KB
/
Copy pathkeyword.test.lua
File metadata and controls
82 lines (78 loc) · 2.88 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
local mods = require "mods"
local kw = mods.keyword
local ver = mods.runtime.version
local List = mods.list
-- stylua: ignore
local keywords = List({
"and" , "break" , "do" , "else" , "elseif",
"end" , "false" , "for" , "function", "if" ,
"in" , "local" , "nil" , "not" , "or" ,
"repeat", "return", "then", "true" , "until" , "while"
})
keywords[#keywords + 1] = ver > 501 and "goto" or nil
keywords[#keywords + 1] = ver > 504 and "global" or nil
keywords:sort()
-- stylua: ignore
each("mods.keyword", kw, {
kwlist = {
{
assert = function()
assert.Same(keywords, kw.kwlist())
assert.List(kw.kwlist())
assert.False(rawequal(kw.kwlist(), kw.kwlist()))
end,
},
},
kwset = {
{
assert = function()
assert.Same(keywords:toset(), kw.kwset())
assert.Set(kw.kwset())
assert.False(rawequal(kw.kwset(), kw.kwset()))
end,
},
},
iskeyword= {
{
function()
for _, input in ipairs(keywords) do
assert.True(kw.iskeyword(input))
end
end,
{ args = { "_" }, expected = false },
{ args = { "" }, expected = false },
{ args = { "Function" }, expected = false },
{ args = { "global1" }, expected = false },
{ args = { "goto1" }, expected = false },
{ args = { "hello" }, expected = false },
{ args = { "local_var" }, expected = false },
{ args = { "nil?" }, expected = false },
{ args = { "while_" }, expected = false },
{ args = { {} }, expected = false },
{ args = { 123 }, expected = false },
{ args = { false }, expected = false },
},
},
isidentifier = {
{ args = { "hello" }, expected = true },
{ args = { "hello_world" }, expected = true },
{ args = { "_name2" }, expected = true },
{ args = { "global" }, expected = ver < 505 },
{ args = { "goto" }, expected = ver < 502 },
{ args = { "(var" }, expected = false },
{ args = { "[var" }, expected = false },
{ args = { "local" }, expected = false },
{ args = { "function" }, expected = false },
{ args = { "2bad" }, expected = false },
{ args = { "bad-name" }, expected = false },
{ args = { false }, expected = false },
{ args = { nil }, expected = false },
},
normalize_identifier = {
{ args = { " 2 bad-name " }, expected = "_2_bad_name" },
{ args = { "global" }, expected = ver >= 505 and "global_" or "global" },
{ args = { "local" }, expected = "local_" },
{ args = { "" }, expected = "_" },
{ args = { " " }, expected = "_" },
},
})