Bram Moolenaar | 79518e2 | 2017-02-17 16:31:35 +0100 | [diff] [blame] | 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 | |
Bram Moolenaar | 3a25773 | 2017-02-21 20:47:13 +0100 | [diff] [blame] | 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 | |
Bram Moolenaar | 79518e2 | 2017-02-17 16:31:35 +0100 | [diff] [blame] | 41 | func Test_changedtick_fixed() |
Bram Moolenaar | e7877fe | 2017-02-20 22:35:33 +0100 | [diff] [blame] | 42 | call assert_fails('let b:changedtick = 4', 'E46:') |
| 43 | call assert_fails('let b:["changedtick"] = 4', 'E46:') |
Bram Moolenaar | 79518e2 | 2017-02-17 16:31:35 +0100 | [diff] [blame] | 44 | |
Bram Moolenaar | e7877fe | 2017-02-20 22:35:33 +0100 | [diff] [blame] | 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:') |
Bram Moolenaar | 79518e2 | 2017-02-17 16:31:35 +0100 | [diff] [blame] | 51 | |
| 52 | let d = b: |
Bram Moolenaar | e7877fe | 2017-02-20 22:35:33 +0100 | [diff] [blame] | 53 | call assert_fails('lockvar d["changedtick"]', 'E46:') |
| 54 | call assert_fails('unlockvar d["changedtick"]', 'E46:') |
| 55 | call assert_fails('unlet d["changedtick"]', 'E46:') |
Bram Moolenaar | 79518e2 | 2017-02-17 16:31:35 +0100 | [diff] [blame] | 56 | |
| 57 | endfunc |
Bram Moolenaar | 260addf | 2019-06-08 20:48:36 +0200 | [diff] [blame] | 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 |
Bram Moolenaar | 6d91bcb | 2020-08-12 18:50:36 +0200 | [diff] [blame] | 96 | |
| 97 | " vim: shiftwidth=2 sts=2 expandtab |