091_context_variables_spec.lua 4.9 KB

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