1" 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 35func 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 41func 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 57endfunc 58 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 96