neovim

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

test_changedtick.vim (2568B)


      1 " Tests for b:changedtick
      2 
      3 func Test_changedtick_increments()
      4  new
      5  " New buffer has an empty line, tick starts at 2.
      6  let expected = 2
      7  call assert_equal(expected, b:changedtick)
      8  call assert_equal(expected, b:['changedtick'])
      9  call setline(1, 'hello')
     10  let expected += 1
     11  call assert_equal(expected, b:changedtick)
     12  call assert_equal(expected, b:['changedtick'])
     13  undo
     14  " Somehow undo counts as two changes.
     15  let expected += 2
     16  call assert_equal(expected, b:changedtick)
     17  call assert_equal(expected, b:['changedtick'])
     18  bwipe!
     19 endfunc
     20 
     21 func Test_changedtick_dict_entry()
     22  let d = b:
     23  call assert_equal(b:changedtick, d['changedtick'])
     24 endfunc
     25 
     26 func Test_changedtick_bdel()
     27  new
     28  let bnr = bufnr('%')
     29  let v = b:changedtick
     30  bdel
     31  " Delete counts as a change too.
     32  call assert_equal(v + 1, getbufvar(bnr, 'changedtick'))
     33 endfunc
     34 
     35 func Test_changedtick_islocked()
     36  call assert_equal(0, islocked('b:changedtick'))
     37  let d = b:
     38  call assert_equal(0, islocked('d.changedtick'))
     39 endfunc
     40 
     41 func Test_changedtick_fixed()
     42  call assert_fails('let b:changedtick = 4', 'E46:')
     43  call assert_fails('let b:["changedtick"] = 4', 'E46:')
     44 
     45  call assert_fails('lockvar b:changedtick', 'E940:')
     46  call assert_fails('lockvar b:["changedtick"]', 'E46:')
     47  call assert_fails('unlockvar b:changedtick', 'E940:')
     48  call assert_fails('unlockvar b:["changedtick"]', 'E46:')
     49  call assert_fails('unlet b:changedtick', 'E795:')
     50  call assert_fails('unlet b:["changedtick"]', 'E46:')
     51 
     52  let d = b:
     53  call assert_fails('lockvar d["changedtick"]', 'E46:')
     54  call assert_fails('unlockvar d["changedtick"]', 'E46:')
     55  call assert_fails('unlet d["changedtick"]', 'E46:')
     56 
     57 endfunc
     58 
     59 func Test_changedtick_not_incremented_with_write()
     60  new
     61  let fname = "XChangeTick"
     62  exe 'w ' .. fname
     63 
     64  " :write when the buffer is not changed does not increment changedtick
     65  let expected = b:changedtick
     66  w
     67  call assert_equal(expected, b:changedtick)
     68 
     69  " :write when the buffer IS changed DOES increment changedtick
     70  let expected = b:changedtick + 1
     71  setlocal modified
     72  w
     73  call assert_equal(expected, b:changedtick)
     74 
     75  " Two ticks: change + write
     76  let expected = b:changedtick + 2
     77  call setline(1, 'hello')
     78  w
     79  call assert_equal(expected, b:changedtick)
     80 
     81  " Two ticks: start insert + write
     82  let expected = b:changedtick + 2
     83  normal! o
     84  w
     85  call assert_equal(expected, b:changedtick)
     86 
     87  " Three ticks: start insert + change + write
     88  let expected = b:changedtick + 3
     89  normal! ochanged
     90  w
     91  call assert_equal(expected, b:changedtick)
     92 
     93  bwipe
     94  call delete(fname)
     95 endfunc