091_context_variables_spec.lua (5046B)
1 -- Tests for getbufvar(), getwinvar(), gettabvar() and gettabwinvar(). 2 3 local n = require('test.functional.testnvim')() 4 5 local insert, source = n.insert, n.source 6 local clear, expect = n.clear, n.expect 7 8 describe('context variables', function() 9 setup(clear) 10 11 it('is working', function() 12 insert('start:') 13 14 -- Test for getbufvar(). 15 -- Use strings to test for memory leaks. 16 source([[ 17 function Getbufscope(buf, ...) 18 let ret = call('getbufvar', [a:buf, ''] + a:000) 19 if type(ret) == type({}) 20 return filter(copy(ret), 'v:key isnot# "changedtick"') 21 else 22 return ret 23 endif 24 endfunction 25 let t:testvar='abcd' 26 $put =string(gettabvar(1, 'testvar')) 27 $put =string(gettabvar(1, 'testvar')) 28 let b:var_num = '1234' 29 let def_num = '5678' 30 $put =string(getbufvar(1, 'var_num')) 31 $put =string(getbufvar(1, 'var_num', def_num)) 32 $put =string(Getbufscope(1)) 33 $put =string(Getbufscope(1, def_num)) 34 unlet b:var_num 35 $put =string(getbufvar(1, 'var_num', def_num)) 36 $put =string(Getbufscope(1)) 37 $put =string(Getbufscope(1, def_num)) 38 $put =string(Getbufscope(9)) 39 $put =string(Getbufscope(9, def_num)) 40 unlet def_num 41 $put =string(getbufvar(1, '&autoindent')) 42 $put =string(getbufvar(1, '&autoindent', 1)) 43 ]]) 44 45 -- Open new window with forced option values. 46 source([[ 47 set fileformats=unix,dos 48 new ++ff=dos ++bin ++enc=iso-8859-2 49 let otherff = getbufvar(bufnr('%'), '&fileformat') 50 let otherbin = getbufvar(bufnr('%'), '&bin') 51 let otherfenc = getbufvar(bufnr('%'), '&fenc') 52 close 53 $put =otherff 54 $put =string(otherbin) 55 $put =otherfenc 56 unlet otherff otherbin otherfenc 57 ]]) 58 59 -- Test for getwinvar(). 60 source([[ 61 let w:var_str = "Dance" 62 let def_str = "Chance" 63 $put =string(getwinvar(1, 'var_str')) 64 $put =string(getwinvar(1, 'var_str', def_str)) 65 $put =string(getwinvar(1, '')) 66 $put =string(getwinvar(1, '', def_str)) 67 unlet w:var_str 68 $put =string(getwinvar(1, 'var_str', def_str)) 69 $put =string(getwinvar(1, '')) 70 $put =string(getwinvar(1, '', def_str)) 71 $put =string(getwinvar(9, '')) 72 $put =string(getwinvar(9, '', def_str)) 73 $put =string(getwinvar(1, '&nu')) 74 $put =string(getwinvar(1, '&nu', 1)) 75 unlet def_str 76 ]]) 77 78 -- Test for gettabvar(). 79 source([[ 80 tabnew 81 tabnew 82 let t:var_list = [1, 2, 3] 83 let t:other = 777 84 let def_list = [4, 5, 6, 7] 85 tabrewind 86 $put =string(gettabvar(3, 'var_list')) 87 $put =string(gettabvar(3, 'var_list', def_list)) 88 $put =string(gettabvar(3, '')) 89 $put =string(gettabvar(3, '', def_list)) 90 tablast 91 unlet t:var_list 92 tabrewind 93 $put =string(gettabvar(3, 'var_list', def_list)) 94 $put =string(gettabvar(9, '')) 95 $put =string(gettabvar(9, '', def_list)) 96 $put =string(gettabvar(3, '&nu')) 97 $put =string(gettabvar(3, '&nu', def_list)) 98 unlet def_list 99 tabonly 100 ]]) 101 102 -- Test for gettabwinvar(). 103 source([[ 104 tabnew 105 tabnew 106 tabprev 107 split 108 split 109 wincmd w 110 vert split 111 wincmd w 112 let w:var_dict = {'dict': 'tabwin'} 113 let def_dict = {'dict2': 'newval'} 114 wincmd b 115 tabrewind 116 $put =string(gettabwinvar(2, 3, 'var_dict')) 117 $put =string(gettabwinvar(2, 3, 'var_dict', def_dict)) 118 $put =string(gettabwinvar(2, 3, '')) 119 $put =string(gettabwinvar(2, 3, '', def_dict)) 120 tabnext 121 3wincmd w 122 unlet w:var_dict 123 tabrewind 124 $put =string(gettabwinvar(2, 3, 'var_dict', def_dict)) 125 $put =string(gettabwinvar(2, 3, '')) 126 $put =string(gettabwinvar(2, 3, '', def_dict)) 127 $put =string(gettabwinvar(2, 9, '')) 128 $put =string(gettabwinvar(2, 9, '', def_dict)) 129 $put =string(gettabwinvar(9, 3, '')) 130 $put =string(gettabwinvar(9, 3, '', def_dict)) 131 unlet def_dict 132 $put =string(gettabwinvar(2, 3, '&nux')) 133 $put =string(gettabwinvar(2, 3, '&nux', 1)) 134 tabonly 135 ]]) 136 137 -- Assert buffer contents. 138 expect([[ 139 start: 140 'abcd' 141 'abcd' 142 '1234' 143 '1234' 144 {'var_num': '1234'} 145 {'var_num': '1234'} 146 '5678' 147 {} 148 {} 149 '' 150 '5678' 151 0 152 0 153 dos 154 1 155 iso-8859-2 156 'Dance' 157 'Dance' 158 {'var_str': 'Dance'} 159 {'var_str': 'Dance'} 160 'Chance' 161 {} 162 {} 163 '' 164 'Chance' 165 0 166 0 167 [1, 2, 3] 168 [1, 2, 3] 169 {'var_list': [1, 2, 3], 'other': 777} 170 {'var_list': [1, 2, 3], 'other': 777} 171 [4, 5, 6, 7] 172 '' 173 [4, 5, 6, 7] 174 '' 175 [4, 5, 6, 7] 176 {'dict': 'tabwin'} 177 {'dict': 'tabwin'} 178 {'var_dict': {'dict': 'tabwin'}} 179 {'var_dict': {'dict': 'tabwin'}} 180 {'dict2': 'newval'} 181 {} 182 {} 183 '' 184 {'dict2': 'newval'} 185 '' 186 {'dict2': 'newval'} 187 '' 188 1]]) 189 end) 190 end)