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
|
#!/usr/bin/env lua5.4
-- mock vis global
vis = {} -- luacheck: ignore 111
local util = require('util')
local lunatest = require('lunatest')
function test_dirname() -- luacheck: ignore 111
lunatest.assert_equal('/usr', util.dirname('/usr/lib'))
lunatest.assert_equal('/', util.dirname('/usr/'))
lunatest.assert_equal('.', util.dirname('usr'))
lunatest.assert_equal('.', util.dirname('.'))
lunatest.assert_equal('..', util.dirname('..'))
lunatest.assert_equal('/', util.dirname('/'))
end
function test_visual_chars_in_line() -- luacheck: ignore 111
local win = {options = {tabwidth = 4}} -- win mock
local s = '\tfo' -- visual chars == 6
lunatest.assert_equal(util.visual_chars_in_line(win, s, #s), 6)
s = 'f\tfo' -- visual chars == 6
lunatest.assert_equal(util.visual_chars_in_line(win, s, #s), 6)
s = 'fo\tfo' -- visual chars == 6
lunatest.assert_equal(util.visual_chars_in_line(win, s, #s), 6)
s = 'foo\tfo' -- visual chars == 6
lunatest.assert_equal(util.visual_chars_in_line(win, s, #s), 6)
end
function test_table_deep_copy() -- luacheck: ignore 111
local t = {1, 2, 3, foo = {4, 5, bar = 'bar'}}
local cpy = util.table.deep_copy(t)
lunatest.assert_table(cpy)
lunatest.assert_len(3, cpy)
lunatest.assert_table(cpy.foo)
lunatest.assert_len(2, cpy.foo)
for i, v in ipairs(t) do
lunatest.assert_equal(v, cpy[i])
end
t[2] = 12
lunatest.assert_not_equal(t[2], cpy[2])
t.foo[2] = 13
lunatest.assert_not_equal(t.foo[2], cpy.foo[2])
end
function test_table_merge() -- luacheck: ignore 111
local t = {1, 2, foo = {bar = {nose = 'nose'}}}
local t2 = {3, foo = {4, 5, bar = {bar = 'bar'}}}
lunatest.assert_table(t)
lunatest.assert_table(t2)
util.table.merge(t, t2)
lunatest.assert_table(t)
lunatest.assert_len(3, t)
lunatest.assert_equal(1, t[1])
lunatest.assert_equal(2, t[2])
lunatest.assert_equal(3, t[3])
lunatest.assert_table(t.foo)
lunatest.assert_len(2, t.foo)
lunatest.assert_equal(t[3], t2[1])
lunatest.assert_equal(t[2], 2)
lunatest.assert_equal(t.foo.bar.bar, 'bar')
lunatest.assert_equal(t.foo.bar.nose, 'nose')
end
lunatest.run()
|