179518e2aSBram Moolenaar" Tests for b:changedtick
279518e2aSBram Moolenaar
379518e2aSBram Moolenaarfunc Test_changedtick_increments()
479518e2aSBram Moolenaar  new
579518e2aSBram Moolenaar  " New buffer has an empty line, tick starts at 2.
679518e2aSBram Moolenaar  let expected = 2
779518e2aSBram Moolenaar  call assert_equal(expected, b:changedtick)
879518e2aSBram Moolenaar  call assert_equal(expected, b:['changedtick'])
979518e2aSBram Moolenaar  call setline(1, 'hello')
1079518e2aSBram Moolenaar  let expected += 1
1179518e2aSBram Moolenaar  call assert_equal(expected, b:changedtick)
1279518e2aSBram Moolenaar  call assert_equal(expected, b:['changedtick'])
1379518e2aSBram Moolenaar  undo
1479518e2aSBram Moolenaar  " Somehow undo counts as two changes.
1579518e2aSBram Moolenaar  let expected += 2
1679518e2aSBram Moolenaar  call assert_equal(expected, b:changedtick)
1779518e2aSBram Moolenaar  call assert_equal(expected, b:['changedtick'])
1879518e2aSBram Moolenaar  bwipe!
1979518e2aSBram Moolenaarendfunc
2079518e2aSBram Moolenaar
2179518e2aSBram Moolenaarfunc Test_changedtick_dict_entry()
2279518e2aSBram Moolenaar  let d = b:
2379518e2aSBram Moolenaar  call assert_equal(b:changedtick, d['changedtick'])
2479518e2aSBram Moolenaarendfunc
2579518e2aSBram Moolenaar
2679518e2aSBram Moolenaarfunc Test_changedtick_bdel()
2779518e2aSBram Moolenaar  new
2879518e2aSBram Moolenaar  let bnr = bufnr('%')
2979518e2aSBram Moolenaar  let v = b:changedtick
3079518e2aSBram Moolenaar  bdel
3179518e2aSBram Moolenaar  " Delete counts as a change too.
3279518e2aSBram Moolenaar  call assert_equal(v + 1, getbufvar(bnr, 'changedtick'))
3379518e2aSBram Moolenaarendfunc
3479518e2aSBram Moolenaar
353a257737SBram Moolenaarfunc Test_changedtick_islocked()
363a257737SBram Moolenaar  call assert_equal(0, islocked('b:changedtick'))
373a257737SBram Moolenaar  let d = b:
383a257737SBram Moolenaar  call assert_equal(0, islocked('d.changedtick'))
393a257737SBram Moolenaarendfunc
403a257737SBram Moolenaar
4179518e2aSBram Moolenaarfunc Test_changedtick_fixed()
42e7877fe0SBram Moolenaar  call assert_fails('let b:changedtick = 4', 'E46:')
43e7877fe0SBram Moolenaar  call assert_fails('let b:["changedtick"] = 4', 'E46:')
4479518e2aSBram Moolenaar
45e7877fe0SBram Moolenaar  call assert_fails('lockvar b:changedtick', 'E940:')
46e7877fe0SBram Moolenaar  call assert_fails('lockvar b:["changedtick"]', 'E46:')
47e7877fe0SBram Moolenaar  call assert_fails('unlockvar b:changedtick', 'E940:')
48e7877fe0SBram Moolenaar  call assert_fails('unlockvar b:["changedtick"]', 'E46:')
49e7877fe0SBram Moolenaar  call assert_fails('unlet b:changedtick', 'E795:')
50e7877fe0SBram Moolenaar  call assert_fails('unlet b:["changedtick"]', 'E46:')
5179518e2aSBram Moolenaar
5279518e2aSBram Moolenaar  let d = b:
53e7877fe0SBram Moolenaar  call assert_fails('lockvar d["changedtick"]', 'E46:')
54e7877fe0SBram Moolenaar  call assert_fails('unlockvar d["changedtick"]', 'E46:')
55e7877fe0SBram Moolenaar  call assert_fails('unlet d["changedtick"]', 'E46:')
5679518e2aSBram Moolenaar
5779518e2aSBram Moolenaarendfunc
58260addf7SBram Moolenaar
59260addf7SBram Moolenaarfunc Test_changedtick_not_incremented_with_write()
60260addf7SBram Moolenaar  new
61260addf7SBram Moolenaar  let fname = "XChangeTick"
62260addf7SBram Moolenaar  exe 'w ' .. fname
63260addf7SBram Moolenaar
64260addf7SBram Moolenaar  " :write when the buffer is not changed does not increment changedtick
65260addf7SBram Moolenaar  let expected = b:changedtick
66260addf7SBram Moolenaar  w
67260addf7SBram Moolenaar  call assert_equal(expected, b:changedtick)
68260addf7SBram Moolenaar
69260addf7SBram Moolenaar  " :write when the buffer IS changed DOES increment changedtick
70260addf7SBram Moolenaar  let expected = b:changedtick + 1
71260addf7SBram Moolenaar  setlocal modified
72260addf7SBram Moolenaar  w
73260addf7SBram Moolenaar  call assert_equal(expected, b:changedtick)
74260addf7SBram Moolenaar
75260addf7SBram Moolenaar  " Two ticks: change + write
76260addf7SBram Moolenaar  let expected = b:changedtick + 2
77260addf7SBram Moolenaar  call setline(1, 'hello')
78260addf7SBram Moolenaar  w
79260addf7SBram Moolenaar  call assert_equal(expected, b:changedtick)
80260addf7SBram Moolenaar
81260addf7SBram Moolenaar  " Two ticks: start insert + write
82260addf7SBram Moolenaar  let expected = b:changedtick + 2
83260addf7SBram Moolenaar  normal! o
84260addf7SBram Moolenaar  w
85260addf7SBram Moolenaar  call assert_equal(expected, b:changedtick)
86260addf7SBram Moolenaar
87260addf7SBram Moolenaar  " Three ticks: start insert + change + write
88260addf7SBram Moolenaar  let expected = b:changedtick + 3
89260addf7SBram Moolenaar  normal! ochanged
90260addf7SBram Moolenaar  w
91260addf7SBram Moolenaar  call assert_equal(expected, b:changedtick)
92260addf7SBram Moolenaar
93260addf7SBram Moolenaar  bwipe
94260addf7SBram Moolenaar  call delete(fname)
95260addf7SBram Moolenaarendfunc
96*6d91bcb4SBram Moolenaar
97*6d91bcb4SBram Moolenaar" vim: shiftwidth=2 sts=2 expandtab
98