xref: /vim-8.2.3635/src/testdir/test_getvar.vim (revision 6d91bcb4)
1f91aac5eSBram Moolenaar" Tests for getwinvar(), gettabvar(), gettabwinvar() and get().
2f91aac5eSBram Moolenaar
375373f38SBram Moolenaarfunc Test_var()
475373f38SBram Moolenaar  " Use strings to test for memory leaks.  First, check that in an empty
575373f38SBram Moolenaar  " window, gettabvar() returns the correct value
675373f38SBram Moolenaar  let t:testvar='abcd'
775373f38SBram Moolenaar  call assert_equal('abcd', gettabvar(1, 'testvar'))
875373f38SBram Moolenaar  call assert_equal('abcd', gettabvar(1, 'testvar'))
975373f38SBram Moolenaar
1075373f38SBram Moolenaar  " test for getwinvar()
1175373f38SBram Moolenaar  let w:var_str = "Dance"
1275373f38SBram Moolenaar  let def_str = "Chance"
1375373f38SBram Moolenaar  call assert_equal('Dance', getwinvar(1, 'var_str'))
1475373f38SBram Moolenaar  call assert_equal('Dance', getwinvar(1, 'var_str', def_str))
155d69fdb7SBram Moolenaar  call assert_equal({'var_str': 'Dance'}, 1->getwinvar(''))
165d69fdb7SBram Moolenaar  call assert_equal({'var_str': 'Dance'}, 1->getwinvar('', def_str))
1775373f38SBram Moolenaar  unlet w:var_str
1875373f38SBram Moolenaar  call assert_equal('Chance', getwinvar(1, 'var_str', def_str))
1975373f38SBram Moolenaar  call assert_equal({}, getwinvar(1, ''))
2075373f38SBram Moolenaar  call assert_equal({}, getwinvar(1, '', def_str))
2175373f38SBram Moolenaar  call assert_equal('', getwinvar(9, ''))
2275373f38SBram Moolenaar  call assert_equal('Chance', getwinvar(9, '', def_str))
2375373f38SBram Moolenaar  call assert_equal(0, getwinvar(1, '&nu'))
2475373f38SBram Moolenaar  call assert_equal(0, getwinvar(1, '&nu', 1))
2575373f38SBram Moolenaar  unlet def_str
2675373f38SBram Moolenaar
2775373f38SBram Moolenaar  " test for gettabvar()
2875373f38SBram Moolenaar  tabnew
2975373f38SBram Moolenaar  tabnew
3075373f38SBram Moolenaar  let t:var_list = [1, 2, 3]
3175373f38SBram Moolenaar  let t:other = 777
3275373f38SBram Moolenaar  let def_list = [4, 5, 6, 7]
3375373f38SBram Moolenaar  tabrewind
344c313b13SBram Moolenaar  call assert_equal([1, 2, 3], 3->gettabvar('var_list'))
3575373f38SBram Moolenaar  call assert_equal([1, 2, 3], gettabvar(3, 'var_list', def_list))
3675373f38SBram Moolenaar  call assert_equal({'var_list': [1, 2, 3], 'other': 777}, gettabvar(3, ''))
3775373f38SBram Moolenaar  call assert_equal({'var_list': [1, 2, 3], 'other': 777},
3875373f38SBram Moolenaar					\ gettabvar(3, '', def_list))
3975373f38SBram Moolenaar
4075373f38SBram Moolenaar  tablast
4175373f38SBram Moolenaar  unlet t:var_list
4275373f38SBram Moolenaar  tabrewind
4375373f38SBram Moolenaar  call assert_equal([4, 5, 6, 7], gettabvar(3, 'var_list', def_list))
4475373f38SBram Moolenaar  call assert_equal('', gettabvar(9, ''))
4575373f38SBram Moolenaar  call assert_equal([4, 5, 6, 7], gettabvar(9, '', def_list))
4675373f38SBram Moolenaar  call assert_equal('', gettabvar(3, '&nu'))
4775373f38SBram Moolenaar  call assert_equal([4, 5, 6, 7], gettabvar(3, '&nu', def_list))
4875373f38SBram Moolenaar  unlet def_list
4975373f38SBram Moolenaar  tabonly
5075373f38SBram Moolenaar
5175373f38SBram Moolenaar  " test for gettabwinvar()
5275373f38SBram Moolenaar  tabnew
5375373f38SBram Moolenaar  tabnew
5475373f38SBram Moolenaar  tabprev
5575373f38SBram Moolenaar  split
5675373f38SBram Moolenaar  split
5775373f38SBram Moolenaar  wincmd w
5875373f38SBram Moolenaar  vert split
5975373f38SBram Moolenaar  wincmd w
6075373f38SBram Moolenaar  let w:var_dict = {'dict': 'tabwin'}
6175373f38SBram Moolenaar  let def_dict = {'dict2': 'newval'}
6275373f38SBram Moolenaar  wincmd b
6375373f38SBram Moolenaar  tabrewind
644c313b13SBram Moolenaar  call assert_equal({'dict': 'tabwin'}, 2->gettabwinvar(3, 'var_dict'))
6575373f38SBram Moolenaar  call assert_equal({'dict': 'tabwin'},
6675373f38SBram Moolenaar				\ gettabwinvar(2, 3, 'var_dict', def_dict))
6775373f38SBram Moolenaar  call assert_equal({'var_dict': {'dict': 'tabwin'}}, gettabwinvar(2, 3, ''))
6875373f38SBram Moolenaar  call assert_equal({'var_dict': {'dict': 'tabwin'}},
6975373f38SBram Moolenaar				\ gettabwinvar(2, 3, '', def_dict))
7075373f38SBram Moolenaar
7175373f38SBram Moolenaar  tabnext
7275373f38SBram Moolenaar  3wincmd w
7375373f38SBram Moolenaar  unlet w:var_dict
7475373f38SBram Moolenaar  tabrewind
7575373f38SBram Moolenaar  call assert_equal({'dict2': 'newval'},
7675373f38SBram Moolenaar				\ gettabwinvar(2, 3, 'var_dict', def_dict))
7775373f38SBram Moolenaar  call assert_equal({}, gettabwinvar(2, 3, ''))
7875373f38SBram Moolenaar  call assert_equal({}, gettabwinvar(2, 3, '', def_dict))
7975373f38SBram Moolenaar  call assert_equal("", gettabwinvar(2, 9, ''))
8075373f38SBram Moolenaar  call assert_equal({'dict2': 'newval'}, gettabwinvar(2, 9, '', def_dict))
8175373f38SBram Moolenaar  call assert_equal('', gettabwinvar(9, 3, ''))
8275373f38SBram Moolenaar  call assert_equal({'dict2': 'newval'}, gettabwinvar(9, 3, '', def_dict))
8375373f38SBram Moolenaar
8475373f38SBram Moolenaar  unlet def_dict
8575373f38SBram Moolenaar
86ee93b737SBram Moolenaar  call assert_equal("", gettabwinvar(9, 2020, ''))
8775373f38SBram Moolenaar  call assert_equal('', gettabwinvar(2, 3, '&nux'))
8875373f38SBram Moolenaar  call assert_equal(1, gettabwinvar(2, 3, '&nux', 1))
8975373f38SBram Moolenaar  tabonly
9075373f38SBram Moolenaarendfunc
91816968deSBram Moolenaar
92816968deSBram Moolenaar" It was discovered that "gettabvar()" would fail if called from within the
93816968deSBram Moolenaar" tabline when the user closed a window.  This test confirms the fix.
94816968deSBram Moolenaarfunc Test_gettabvar_in_tabline()
95816968deSBram Moolenaar  let t:var_str = 'value'
96816968deSBram Moolenaar
97816968deSBram Moolenaar  set tabline=%{assert_equal('value',gettabvar(1,'var_str'))}
98816968deSBram Moolenaar  set showtabline=2
99816968deSBram Moolenaar
100816968deSBram Moolenaar  " Simulate the user opening a split (which becomes window #1) and then
101816968deSBram Moolenaar  " closing the split, which triggers the redrawing of the tabline.
102816968deSBram Moolenaar  leftabove split
103816968deSBram Moolenaar  redrawstatus!
104816968deSBram Moolenaar  close
105816968deSBram Moolenaar  redrawstatus!
106816968deSBram Moolenaarendfunc
107f91aac5eSBram Moolenaar
108f91aac5eSBram Moolenaar" Test get() function using default value.
109f91aac5eSBram Moolenaar
110f91aac5eSBram Moolenaar" get({dict}, {key} [, {default}])
111f91aac5eSBram Moolenaarfunc Test_get_dict()
112f91aac5eSBram Moolenaar  let d = {'foo': 42}
113f91aac5eSBram Moolenaar  call assert_equal(42, get(d, 'foo', 99))
114f91aac5eSBram Moolenaar  call assert_equal(999, get(d, 'bar', 999))
115f91aac5eSBram Moolenaarendfunc
116f91aac5eSBram Moolenaar
117f91aac5eSBram Moolenaar" get({list}, {idx} [, {default}])
118f91aac5eSBram Moolenaarfunc Test_get_list()
119f91aac5eSBram Moolenaar  let l = [1,2,3]
120f91aac5eSBram Moolenaar  call assert_equal(1, get(l, 0, 999))
121f91aac5eSBram Moolenaar  call assert_equal(3, get(l, -1, 999))
122f91aac5eSBram Moolenaar  call assert_equal(999, get(l, 3, 999))
123f91aac5eSBram Moolenaarendfunc
124f91aac5eSBram Moolenaar
125f91aac5eSBram Moolenaar" get({blob}, {idx} [, {default}]) - in test_blob.vim
126f91aac5eSBram Moolenaar
127f91aac5eSBram Moolenaar" get({lambda}, {what} [, {default}])
128f91aac5eSBram Moolenaarfunc Test_get_lambda()
129f91aac5eSBram Moolenaar  let l:L = {-> 42}
130f91aac5eSBram Moolenaar  call assert_match('^<lambda>', get(l:L, 'name'))
131f91aac5eSBram Moolenaar  call assert_equal(l:L, get(l:L, 'func'))
132f91aac5eSBram Moolenaar  call assert_equal({'lambda has': 'no dict'}, get(l:L, 'dict', {'lambda has': 'no dict'}))
133f91aac5eSBram Moolenaar  call assert_equal(0, get(l:L, 'dict'))
134f91aac5eSBram Moolenaar  call assert_equal([], get(l:L, 'args'))
135f91aac5eSBram Moolenaarendfunc
136f91aac5eSBram Moolenaar
137f91aac5eSBram Moolenaar" get({func}, {what} [, {default}])
138f91aac5eSBram Moolenaarfunc Test_get_func()
139f91aac5eSBram Moolenaar  let l:F = function('tr')
140f91aac5eSBram Moolenaar  call assert_equal('tr', get(l:F, 'name'))
141f91aac5eSBram Moolenaar  call assert_equal(l:F, get(l:F, 'func'))
142f91aac5eSBram Moolenaar  call assert_equal({'func has': 'no dict'}, get(l:F, 'dict', {'func has': 'no dict'}))
143f91aac5eSBram Moolenaar  call assert_equal(0, get(l:F, 'dict'))
144f91aac5eSBram Moolenaar  call assert_equal([], get(l:F, 'args'))
14592b83ccfSBram Moolenaar  let NF = test_null_function()
14692b83ccfSBram Moolenaar  call assert_equal('', get(NF, 'name'))
14792b83ccfSBram Moolenaar  call assert_equal(NF, get(NF, 'func'))
14892b83ccfSBram Moolenaar  call assert_equal(0, get(NF, 'dict'))
14992b83ccfSBram Moolenaar  call assert_equal([], get(NF, 'args'))
150f91aac5eSBram Moolenaarendfunc
151f91aac5eSBram Moolenaar
152f91aac5eSBram Moolenaar" get({partial}, {what} [, {default}]) - in test_partial.vim
153*6d91bcb4SBram Moolenaar
154*6d91bcb4SBram Moolenaar" vim: shiftwidth=2 sts=2 expandtab
155