view src/testdir/test_changedtick.vim @ 25147:10b269321459 v8.2.3110

patch 8.2.3110: a pattern that matches the cursor position is complicated Commit: https://github.com/vim/vim/commit/04db26b36000a4677b95403ec94bd11f6cc73975 Author: Bram Moolenaar <Bram@vim.org> Date: Mon Jul 5 20:15:23 2021 +0200 patch 8.2.3110: a pattern that matches the cursor position is complicated Problem: A pattern that matches the cursor position is bit complicated. Solution: Use a dot to indicate the cursor line and column. (Christian Brabandt, closes #8497, closes #8179)
author Bram Moolenaar <Bram@vim.org>
date Mon, 05 Jul 2021 20:30:03 +0200
parents 08940efa6b4e
children
line wrap: on
line source

" 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