| " Tests for b:changedtick |
| |
| func Test_changedtick_increments() |
| new |
| " New buffer has an empty line, tick starts at 2. |
| let expected = 2 |
| call assert_equal(expected, b:changedtick) |
| call assert_equal(expected, b:['changedtick']) |
| call setline(1, 'hello') |
| let expected += 1 |
| call assert_equal(expected, b:changedtick) |
| call assert_equal(expected, b:['changedtick']) |
| undo |
| " Somehow undo counts as two changes. |
| let expected += 2 |
| call assert_equal(expected, b:changedtick) |
| call assert_equal(expected, b:['changedtick']) |
| bwipe! |
| endfunc |
| |
| func Test_changedtick_dict_entry() |
| let d = b: |
| call assert_equal(b:changedtick, d['changedtick']) |
| endfunc |
| |
| func Test_changedtick_bdel() |
| new |
| let bnr = bufnr('%') |
| let v = b:changedtick |
| bdel |
| " Delete counts as a change too. |
| call assert_equal(v + 1, getbufvar(bnr, 'changedtick')) |
| endfunc |
| |
| func Test_changedtick_islocked() |
| call assert_equal(0, islocked('b:changedtick')) |
| let d = b: |
| call assert_equal(0, islocked('d.changedtick')) |
| endfunc |
| |
| func Test_changedtick_fixed() |
| call assert_fails('let b:changedtick = 4', 'E46:') |
| call assert_fails('let b:["changedtick"] = 4', 'E46:') |
| |
| call assert_fails('lockvar b:changedtick', 'E940:') |
| call assert_fails('lockvar b:["changedtick"]', 'E46:') |
| call assert_fails('unlockvar b:changedtick', 'E940:') |
| call assert_fails('unlockvar b:["changedtick"]', 'E46:') |
| call assert_fails('unlet b:changedtick', 'E795:') |
| call assert_fails('unlet b:["changedtick"]', 'E46:') |
| |
| let d = b: |
| call assert_fails('lockvar d["changedtick"]', 'E46:') |
| call assert_fails('unlockvar d["changedtick"]', 'E46:') |
| call assert_fails('unlet d["changedtick"]', 'E46:') |
| |
| endfunc |
| |
| func Test_changedtick_not_incremented_with_write() |
| new |
| let fname = "XChangeTick" |
| exe 'w ' .. fname |
| |
| " :write when the buffer is not changed does not increment changedtick |
| let expected = b:changedtick |
| w |
| call assert_equal(expected, b:changedtick) |
| |
| " :write when the buffer IS changed DOES increment changedtick |
| let expected = b:changedtick + 1 |
| setlocal modified |
| w |
| call assert_equal(expected, b:changedtick) |
| |
| " Two ticks: change + write |
| let expected = b:changedtick + 2 |
| call setline(1, 'hello') |
| w |
| call assert_equal(expected, b:changedtick) |
| |
| " Two ticks: start insert + write |
| let expected = b:changedtick + 2 |
| normal! o |
| w |
| call assert_equal(expected, b:changedtick) |
| |
| " Three ticks: start insert + change + write |
| let expected = b:changedtick + 3 |
| normal! ochanged |
| w |
| call assert_equal(expected, b:changedtick) |
| |
| bwipe |
| call delete(fname) |
| endfunc |
| |
| " vim: shiftwidth=2 sts=2 expandtab |