neovim

Neovim text editor
git clone https://git.dasho.dev/neovim.git
Log | Files | Refs | README

test_changelist.vim (2942B)


      1 " Tests for the changelist functionality
      2 
      3 " When splitting a window the changelist position is wrong.
      4 " Test the changelist position after splitting a window.
      5 " Test for the bug fixed by 7.4.386
      6 func Test_changelist()
      7  let save_ul = &ul
      8  enew!
      9  call append('$', ['1', '2'])
     10  exe "normal i\<C-G>u"
     11  exe "normal Gkylpa\<C-G>u"
     12  set ul=100
     13  exe "normal Gylpa\<C-G>u"
     14  set ul=100
     15  normal gg
     16  vsplit
     17  normal g;
     18  call assert_equal([3, 2], [line('.'), col('.')])
     19  normal g;
     20  call assert_equal([2, 2], [line('.'), col('.')])
     21  call assert_fails('normal g;', 'E662:')
     22  new
     23  call assert_fails('normal g;', 'E664:')
     24  %bwipe!
     25  let &ul = save_ul
     26 endfunc
     27 
     28 " Moving a split should not change its changelist index.
     29 func Test_changelist_index_move_split()
     30  exe "norm! iabc\<C-G>u\ndef\<C-G>u\nghi"
     31  vsplit
     32  normal 99g;
     33  call assert_equal(0, getchangelist('%')[1])
     34  wincmd L
     35  call assert_equal(0, getchangelist('%')[1])
     36 endfunc
     37 
     38 " Tests for the getchangelist() function
     39 func Test_changelist_index()
     40  edit Xgclfile1.txt
     41  exe "normal iabc\<C-G>u\ndef\<C-G>u\nghi"
     42  call assert_equal(3, getchangelist('%')[1])
     43  " Move one step back in the changelist.
     44  normal 2g;
     45 
     46  hide edit Xgclfile2.txt
     47  exe "normal iabcd\<C-G>u\ndefg\<C-G>u\nghij"
     48  call assert_equal(3, getchangelist('%')[1])
     49  " Move to the beginning of the changelist.
     50  normal 99g;
     51 
     52  " Check the changelist indices.
     53  call assert_equal(0, getchangelist('%')[1])
     54  call assert_equal(1, getchangelist('#')[1])
     55 
     56  bwipe!
     57  call delete('Xgclfile1.txt')
     58  call delete('Xgclfile2.txt')
     59 endfunc
     60 
     61 func Test_getchangelist()
     62  bwipe!
     63  enew
     64  call assert_equal([], 10->getchangelist())
     65  call assert_equal([[], 0], getchangelist())
     66 
     67  call writefile(['line1', 'line2', 'line3'], 'Xclistfile1.txt')
     68  call writefile(['line1', 'line2', 'line3'], 'Xclistfile2.txt')
     69 
     70  edit Xclistfile1.txt
     71  let buf_1 = bufnr()
     72  exe "normal 1Goline\<C-G>u1.1"
     73  exe "normal 3Goline\<C-G>u2.1"
     74  exe "normal 5Goline\<C-G>u3.1"
     75  normal g;
     76  call assert_equal([[
     77       \ {'lnum' : 2, 'col' : 4, 'coladd' : 0},
     78       \ {'lnum' : 4, 'col' : 4, 'coladd' : 0},
     79       \ {'lnum' : 6, 'col' : 4, 'coladd' : 0}], 2],
     80       \ getchangelist('%'))
     81 
     82  hide edit Xclistfile2.txt
     83  let buf_2 = bufnr()
     84  exe "normal 1GOline\<C-G>u1.0"
     85  exe "normal 2Goline\<C-G>u2.0"
     86  call assert_equal([[
     87       \ {'lnum' : 1, 'col' : 6, 'coladd' : 0},
     88       \ {'lnum' : 3, 'col' : 6, 'coladd' : 0}], 2],
     89       \ getchangelist('%'))
     90  hide enew
     91 
     92  call assert_equal([[
     93       \ {'lnum' : 2, 'col' : 4, 'coladd' : 0},
     94       \ {'lnum' : 4, 'col' : 4, 'coladd' : 0},
     95       \ {'lnum' : 6, 'col' : 4, 'coladd' : 0}], 2],
     96       \ getchangelist(buf_1))
     97  call assert_equal([[
     98       \ {'lnum' : 1, 'col' : 6, 'coladd' : 0},
     99       \ {'lnum' : 3, 'col' : 6, 'coladd' : 0}], 2],
    100       \ getchangelist(buf_2))
    101 
    102  bwipe!
    103  call delete('Xclistfile1.txt')
    104  call delete('Xclistfile2.txt')
    105 endfunc
    106 
    107 " vim: shiftwidth=2 sts=2 expandtab