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