neovim

Neovim text editor
git clone https://git.dasho.dev/neovim.git
Log | Files | Refs | README

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)