blob: d6b6b69aa8143d06d0f9ba3e4b19179246ddf567 [file] [log] [blame]
Bram Moolenaar75373f32017-08-07 22:02:30 +02001" Tests for getwinvar(), gettabvar() and gettabwinvar().
2func Test_var()
3 " Use strings to test for memory leaks. First, check that in an empty
4 " window, gettabvar() returns the correct value
5 let t:testvar='abcd'
6 call assert_equal('abcd', gettabvar(1, 'testvar'))
7 call assert_equal('abcd', gettabvar(1, 'testvar'))
8
9 " test for getwinvar()
10 let w:var_str = "Dance"
11 let def_str = "Chance"
12 call assert_equal('Dance', getwinvar(1, 'var_str'))
13 call assert_equal('Dance', getwinvar(1, 'var_str', def_str))
14 call assert_equal({'var_str': 'Dance'}, getwinvar(1, ''))
15 call assert_equal({'var_str': 'Dance'}, getwinvar(1, '', def_str))
16 unlet w:var_str
17 call assert_equal('Chance', getwinvar(1, 'var_str', def_str))
18 call assert_equal({}, getwinvar(1, ''))
19 call assert_equal({}, getwinvar(1, '', def_str))
20 call assert_equal('', getwinvar(9, ''))
21 call assert_equal('Chance', getwinvar(9, '', def_str))
22 call assert_equal(0, getwinvar(1, '&nu'))
23 call assert_equal(0, getwinvar(1, '&nu', 1))
24 unlet def_str
25
26 " test for gettabvar()
27 tabnew
28 tabnew
29 let t:var_list = [1, 2, 3]
30 let t:other = 777
31 let def_list = [4, 5, 6, 7]
32 tabrewind
33 call assert_equal([1, 2, 3], gettabvar(3, 'var_list'))
34 call assert_equal([1, 2, 3], gettabvar(3, 'var_list', def_list))
35 call assert_equal({'var_list': [1, 2, 3], 'other': 777}, gettabvar(3, ''))
36 call assert_equal({'var_list': [1, 2, 3], 'other': 777},
37 \ gettabvar(3, '', def_list))
38
39 tablast
40 unlet t:var_list
41 tabrewind
42 call assert_equal([4, 5, 6, 7], gettabvar(3, 'var_list', def_list))
43 call assert_equal('', gettabvar(9, ''))
44 call assert_equal([4, 5, 6, 7], gettabvar(9, '', def_list))
45 call assert_equal('', gettabvar(3, '&nu'))
46 call assert_equal([4, 5, 6, 7], gettabvar(3, '&nu', def_list))
47 unlet def_list
48 tabonly
49
50 " test for gettabwinvar()
51 tabnew
52 tabnew
53 tabprev
54 split
55 split
56 wincmd w
57 vert split
58 wincmd w
59 let w:var_dict = {'dict': 'tabwin'}
60 let def_dict = {'dict2': 'newval'}
61 wincmd b
62 tabrewind
63 call assert_equal({'dict': 'tabwin'}, gettabwinvar(2, 3, 'var_dict'))
64 call assert_equal({'dict': 'tabwin'},
65 \ gettabwinvar(2, 3, 'var_dict', def_dict))
66 call assert_equal({'var_dict': {'dict': 'tabwin'}}, gettabwinvar(2, 3, ''))
67 call assert_equal({'var_dict': {'dict': 'tabwin'}},
68 \ gettabwinvar(2, 3, '', def_dict))
69
70 tabnext
71 3wincmd w
72 unlet w:var_dict
73 tabrewind
74 call assert_equal({'dict2': 'newval'},
75 \ gettabwinvar(2, 3, 'var_dict', def_dict))
76 call assert_equal({}, gettabwinvar(2, 3, ''))
77 call assert_equal({}, gettabwinvar(2, 3, '', def_dict))
78 call assert_equal("", gettabwinvar(2, 9, ''))
79 call assert_equal({'dict2': 'newval'}, gettabwinvar(2, 9, '', def_dict))
80 call assert_equal('', gettabwinvar(9, 3, ''))
81 call assert_equal({'dict2': 'newval'}, gettabwinvar(9, 3, '', def_dict))
82
83 unlet def_dict
84
85 call assert_equal('', gettabwinvar(2, 3, '&nux'))
86 call assert_equal(1, gettabwinvar(2, 3, '&nux', 1))
87 tabonly
88endfunc
Bram Moolenaar816968d2017-09-29 21:29:18 +020089
90" It was discovered that "gettabvar()" would fail if called from within the
91" tabline when the user closed a window. This test confirms the fix.
92func Test_gettabvar_in_tabline()
93 let t:var_str = 'value'
94
95 set tabline=%{assert_equal('value',gettabvar(1,'var_str'))}
96 set showtabline=2
97
98 " Simulate the user opening a split (which becomes window #1) and then
99 " closing the split, which triggers the redrawing of the tabline.
100 leftabove split
101 redrawstatus!
102 close
103 redrawstatus!
104endfunc