123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184 |
- " Tests for getwinvar(), gettabvar(), gettabwinvar() and get().
- func Test_var()
- " Use strings to test for memory leaks. First, check that in an empty
- " window, gettabvar() returns the correct value
- let t:testvar='abcd'
- call assert_equal('abcd', gettabvar(1, 'testvar'))
- call assert_equal('abcd', gettabvar(1, 'testvar'))
- " test for getwinvar()
- let w:var_str = "Dance"
- let def_str = "Chance"
- call assert_equal('Dance', getwinvar(1, 'var_str'))
- call assert_equal('Dance', getwinvar(1, 'var_str', def_str))
- call assert_equal({'var_str': 'Dance'}, 1->getwinvar(''))
- call assert_equal({'var_str': 'Dance'}, 1->getwinvar('', def_str))
- unlet w:var_str
- call assert_equal('Chance', getwinvar(1, 'var_str', def_str))
- call assert_equal({}, getwinvar(1, ''))
- call assert_equal({}, getwinvar(1, '', def_str))
- call assert_equal('', getwinvar(9, ''))
- call assert_equal('Chance', getwinvar(9, '', def_str))
- call assert_equal(0, getwinvar(1, '&nu'))
- call assert_equal(0, getwinvar(1, '&nu', 1))
- call assert_match(v:t_dict, type(getwinvar(1, '&')))
- call assert_match(v:t_dict, type(getwinvar(1, '&', def_str)))
- call assert_equal('', getwinvar(9, '&'))
- call assert_equal('Chance', getwinvar(9, '&', def_str))
- call assert_equal('', getwinvar(1, '&nux'))
- call assert_equal('Chance', getwinvar(1, '&nux', def_str))
- unlet def_str
- " test for gettabvar()
- tabnew
- tabnew
- let t:var_list = [1, 2, 3]
- let t:other = 777
- let def_list = [4, 5, 6, 7]
- tabrewind
- call assert_equal([1, 2, 3], 3->gettabvar('var_list'))
- call assert_equal([1, 2, 3], gettabvar(3, 'var_list', def_list))
- call assert_equal({'var_list': [1, 2, 3], 'other': 777}, gettabvar(3, ''))
- call assert_equal({'var_list': [1, 2, 3], 'other': 777},
- \ gettabvar(3, '', def_list))
- tablast
- unlet t:var_list
- tabrewind
- call assert_equal([4, 5, 6, 7], gettabvar(3, 'var_list', def_list))
- call assert_equal('', gettabvar(9, ''))
- call assert_equal([4, 5, 6, 7], gettabvar(9, '', def_list))
- call assert_equal('', gettabvar(3, '&nu'))
- call assert_equal([4, 5, 6, 7], gettabvar(3, '&nu', def_list))
- unlet def_list
- tabonly
- " test for gettabwinvar()
- tabnew
- tabnew
- tabprev
- split
- split
- wincmd w
- vert split
- wincmd w
- let w:var_dict = {'dict': 'tabwin'}
- let def_dict = {'dict2': 'newval'}
- wincmd b
- tabrewind
- call assert_equal({'dict': 'tabwin'}, 2->gettabwinvar(3, 'var_dict'))
- call assert_equal({'dict': 'tabwin'},
- \ gettabwinvar(2, 3, 'var_dict', def_dict))
- call assert_equal({'var_dict': {'dict': 'tabwin'}}, gettabwinvar(2, 3, ''))
- call assert_equal({'var_dict': {'dict': 'tabwin'}},
- \ gettabwinvar(2, 3, '', def_dict))
- tabnext
- 3wincmd w
- unlet w:var_dict
- tabrewind
- call assert_equal({'dict2': 'newval'},
- \ gettabwinvar(2, 3, 'var_dict', def_dict))
- call assert_equal({}, gettabwinvar(2, 3, ''))
- call assert_equal({}, gettabwinvar(2, 3, '', def_dict))
- call assert_equal("", gettabwinvar(2, 9, ''))
- call assert_equal({'dict2': 'newval'}, gettabwinvar(2, 9, '', def_dict))
- call assert_equal('', gettabwinvar(9, 3, ''))
- call assert_equal({'dict2': 'newval'}, gettabwinvar(9, 3, '', def_dict))
- unlet def_dict
- call assert_match(v:t_dict, type(gettabwinvar(2, 3, '&')))
- call assert_match(v:t_dict, type(gettabwinvar(2, 3, '&', 1)))
- call assert_equal("", gettabwinvar(9, 2020, ''))
- call assert_equal(1, gettabwinvar(9, 2020, '', 1))
- call assert_equal('', gettabwinvar(9, 2020, '&'))
- call assert_equal(1, gettabwinvar(9, 2020, '&', 1))
- call assert_equal('', gettabwinvar(2, 3, '&nux'))
- call assert_equal(1, gettabwinvar(2, 3, '&nux', 1))
- tabonly
- endfunc
- " It was discovered that "gettabvar()" would fail if called from within the
- " tabline when the user closed a window. This test confirms the fix.
- func Test_gettabvar_in_tabline()
- let t:var_str = 'value'
- set tabline=%{assert_equal('value',gettabvar(1,'var_str'))}
- set showtabline=2
- " Simulate the user opening a split (which becomes window #1) and then
- " closing the split, which triggers the redrawing of the tabline.
- leftabove split
- redrawstatus!
- close
- redrawstatus!
- endfunc
- " Test get() function using default value.
- " get({dict}, {key} [, {default}])
- func Test_get_dict()
- let d = {'foo': 42}
- call assert_equal(42, get(d, 'foo', 99))
- call assert_equal(999, get(d, 'bar', 999))
- endfunc
- " get({list}, {idx} [, {default}])
- func Test_get_list()
- let l = [1,2,3]
- call assert_equal(1, get(l, 0, 999))
- call assert_equal(3, get(l, -1, 999))
- call assert_equal(999, get(l, 3, 999))
- endfunc
- " get({blob}, {idx} [, {default}]) - in test_blob.vim
- " get({lambda}, {what} [, {default}])
- func Test_get_lambda()
- let l:L = {-> 42}
- call assert_match('^<lambda>', get(l:L, 'name'))
- call assert_equal(l:L, get(l:L, 'func'))
- call assert_equal({'lambda has': 'no dict'}, get(l:L, 'dict', {'lambda has': 'no dict'}))
- call assert_equal(0, get(l:L, 'dict'))
- call assert_equal([], get(l:L, 'args'))
- endfunc
- func s:FooBar()
- endfunc
- " get({func}, {what} [, {default}])
- func Test_get_func()
- let l:F = function('tr')
- call assert_equal('tr', get(l:F, 'name'))
- call assert_equal(l:F, get(l:F, 'func'))
- call assert_equal({'required': 3, 'optional': 0, 'varargs': v:false},
- \ get(l:F, 'arity'))
- let Fb_func = function('s:FooBar')
- call assert_match('<SNR>\d\+_FooBar', get(Fb_func, 'name'))
- call assert_equal({'required': 0, 'optional': 0, 'varargs': v:false},
- \ get(Fb_func, 'arity'))
- let Fb_ref = funcref('s:FooBar')
- call assert_match('<SNR>\d\+_FooBar', get(Fb_ref, 'name'))
- call assert_equal({'required': 0, 'optional': 0, 'varargs': v:false},
- \ get(Fb_ref, 'arity'))
- call assert_equal({'func has': 'no dict'}, get(l:F, 'dict', {'func has': 'no dict'}))
- call assert_equal(0, get(l:F, 'dict'))
- call assert_equal([], get(l:F, 'args'))
- " Nvim doesn't have null functions
- " let NF = test_null_function()
- " call assert_equal('', get(NF, 'name'))
- " call assert_equal(NF, get(NF, 'func'))
- " call assert_equal(0, get(NF, 'dict'))
- " call assert_equal([], get(NF, 'args'))
- " call assert_equal({'required': 0, 'optional': 0, 'varargs': v:false}, get(NF, 'arity'))
- endfunc
- " get({partial}, {what} [, {default}]) - in test_partial.vim
- " vim: shiftwidth=2 sts=2 expandtab
|