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
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
|
#!/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
function test_style_define() -- luacheck: ignore 111
-- Modern vis: vis.ui.style_define present
vis.API = 0
vis.ui = {
style_define = function(self, id, style)
return id == 1 and style == 'fore:red'
end,
}
lunatest.assert_true(util.style_define(1, 'fore:red'))
-- Modern vis: vis.API > 3215
vis.API = 3216
lunatest.assert_true(util.style_define(1, 'fore:red'))
-- Older vis: fallback with explicit win
vis.API = nil
vis.ui = nil
local win = {
style_define = function(self, id, style)
return id == 2 and style == 'fore:blue'
end,
}
lunatest.assert_true(util.style_define(2, 'fore:blue', win))
-- Older vis: fallback with vis.win
vis.win = win
lunatest.assert_true(util.style_define(2, 'fore:blue'))
vis.win = nil
end
lunatest.run()
|