aboutsummaryrefslogtreecommitdiff
path: root/.config/vis/plugins/vis-lspc/util_test.lua
blob: 63393b156e01ba2d16f490a517703c055e7d77e8 (plain)
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()