blob: b7e7cd681e7a9eff7ff9464ba8b43c3914ef5f58 [file] [log] [blame]
Bram Moolenaar79518e22017-02-17 16:31:35 +01001" Tests for b:changedtick
2
3func 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!
19endfunc
20
21func Test_changedtick_dict_entry()
22 let d = b:
23 call assert_equal(b:changedtick, d['changedtick'])
24endfunc
25
26func 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'))
33endfunc
34
Bram Moolenaar3a257732017-02-21 20:47:13 +010035func Test_changedtick_islocked()
36 call assert_equal(0, islocked('b:changedtick'))
37 let d = b:
38 call assert_equal(0, islocked('d.changedtick'))
39endfunc
40
Bram Moolenaar79518e22017-02-17 16:31:35 +010041func Test_changedtick_fixed()
Bram Moolenaare7877fe2017-02-20 22:35:33 +010042 call assert_fails('let b:changedtick = 4', 'E46:')
43 call assert_fails('let b:["changedtick"] = 4', 'E46:')
Bram Moolenaar79518e22017-02-17 16:31:35 +010044
Bram Moolenaare7877fe2017-02-20 22:35:33 +010045 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:')
Bram Moolenaar79518e22017-02-17 16:31:35 +010051
52 let d = b:
Bram Moolenaare7877fe2017-02-20 22:35:33 +010053 call assert_fails('lockvar d["changedtick"]', 'E46:')
54 call assert_fails('unlockvar d["changedtick"]', 'E46:')
55 call assert_fails('unlet d["changedtick"]', 'E46:')
Bram Moolenaar79518e22017-02-17 16:31:35 +010056
57endfunc
Bram Moolenaar260addf2019-06-08 20:48:36 +020058
59func 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)
95endfunc
Bram Moolenaar6d91bcb2020-08-12 18:50:36 +020096
97" vim: shiftwidth=2 sts=2 expandtab