142093c0eSBram Moolenaar" Tests for diff mode
242093c0eSBram Moolenaar
342093c0eSBram Moolenaarfunc Test_diff_fold_sync()
442093c0eSBram Moolenaar  enew!
542093c0eSBram Moolenaar  let l = range(50)
642093c0eSBram Moolenaar  call setline(1, l)
742093c0eSBram Moolenaar  diffthis
842093c0eSBram Moolenaar  let winone = win_getid()
942093c0eSBram Moolenaar  new
1042093c0eSBram Moolenaar  let l[25] = 'diff'
1142093c0eSBram Moolenaar  call setline(1, l)
1242093c0eSBram Moolenaar  diffthis
1342093c0eSBram Moolenaar  let wintwo = win_getid()
1442093c0eSBram Moolenaar  " line 15 is inside the closed fold
1542093c0eSBram Moolenaar  call assert_equal(19, foldclosedend(10))
1642093c0eSBram Moolenaar  call win_gotoid(winone)
1742093c0eSBram Moolenaar  call assert_equal(19, foldclosedend(10))
1842093c0eSBram Moolenaar  " open the fold
1942093c0eSBram Moolenaar  normal zv
2042093c0eSBram Moolenaar  call assert_equal(-1, foldclosedend(10))
2142093c0eSBram Moolenaar  " fold in other window must have opened too
2242093c0eSBram Moolenaar  call win_gotoid(wintwo)
2342093c0eSBram Moolenaar  call assert_equal(-1, foldclosedend(10))
2442093c0eSBram Moolenaar
2542093c0eSBram Moolenaar  " cursor position is in sync
2642093c0eSBram Moolenaar  normal 23G
2742093c0eSBram Moolenaar  call win_gotoid(winone)
2842093c0eSBram Moolenaar  call assert_equal(23, getcurpos()[1])
2942093c0eSBram Moolenaar
3042093c0eSBram Moolenaar  windo diffoff
3142093c0eSBram Moolenaar  close!
3242093c0eSBram Moolenaar  set nomodified
3342093c0eSBram Moolenaarendfunc
3442093c0eSBram Moolenaar
3542093c0eSBram Moolenaarfunc Test_vert_split()
3642093c0eSBram Moolenaar  " Disable the title to avoid xterm keeping the wrong one.
3742093c0eSBram Moolenaar  set notitle noicon
3842093c0eSBram Moolenaar  new
3942093c0eSBram Moolenaar  let l = ['1 aa', '2 bb', '3 cc', '4 dd', '5 ee']
4042093c0eSBram Moolenaar  call setline(1, l)
4142093c0eSBram Moolenaar  w! Xtest
4242093c0eSBram Moolenaar  normal dd
4342093c0eSBram Moolenaar  $
4442093c0eSBram Moolenaar  put
4542093c0eSBram Moolenaar  normal kkrXoxxx
4642093c0eSBram Moolenaar  w! Xtest2
4742093c0eSBram Moolenaar  file Nop
4842093c0eSBram Moolenaar  normal ggoyyyjjjozzzz
4942093c0eSBram Moolenaar  set foldmethod=marker foldcolumn=4
5042093c0eSBram Moolenaar  call assert_equal(0, &diff)
5142093c0eSBram Moolenaar  call assert_equal('marker', &foldmethod)
5242093c0eSBram Moolenaar  call assert_equal(4, &foldcolumn)
5342093c0eSBram Moolenaar  call assert_equal(0, &scrollbind)
5442093c0eSBram Moolenaar  call assert_equal(0, &cursorbind)
5542093c0eSBram Moolenaar  call assert_equal(1, &wrap)
5642093c0eSBram Moolenaar
5742093c0eSBram Moolenaar  vert diffsplit Xtest
5842093c0eSBram Moolenaar  vert diffsplit Xtest2
5942093c0eSBram Moolenaar  call assert_equal(1, &diff)
6042093c0eSBram Moolenaar  call assert_equal('diff', &foldmethod)
6142093c0eSBram Moolenaar  call assert_equal(2, &foldcolumn)
6242093c0eSBram Moolenaar  call assert_equal(1, &scrollbind)
6342093c0eSBram Moolenaar  call assert_equal(1, &cursorbind)
6442093c0eSBram Moolenaar  call assert_equal(0, &wrap)
6542093c0eSBram Moolenaar
6642093c0eSBram Moolenaar  let diff_fdm = &fdm
6742093c0eSBram Moolenaar  let diff_fdc = &fdc
6842093c0eSBram Moolenaar  " repeat entering diff mode here to see if this saves the wrong settings
6942093c0eSBram Moolenaar  diffthis
7042093c0eSBram Moolenaar  " jump to second window for a moment to have filler line appear at start of
7142093c0eSBram Moolenaar  " first window
7242093c0eSBram Moolenaar  wincmd w
7342093c0eSBram Moolenaar  normal gg
7442093c0eSBram Moolenaar  wincmd p
7542093c0eSBram Moolenaar  normal gg
7642093c0eSBram Moolenaar  call assert_equal(2, winline())
7742093c0eSBram Moolenaar  normal j
7842093c0eSBram Moolenaar  call assert_equal(4, winline())
7942093c0eSBram Moolenaar  normal j
8042093c0eSBram Moolenaar  call assert_equal(5, winline())
8142093c0eSBram Moolenaar  normal j
8242093c0eSBram Moolenaar  call assert_equal(6, winline())
8342093c0eSBram Moolenaar  normal j
8442093c0eSBram Moolenaar  call assert_equal(8, winline())
8542093c0eSBram Moolenaar  normal j
8642093c0eSBram Moolenaar  call assert_equal(9, winline())
8742093c0eSBram Moolenaar
8842093c0eSBram Moolenaar  wincmd w
8942093c0eSBram Moolenaar  normal gg
9042093c0eSBram Moolenaar  call assert_equal(1, winline())
9142093c0eSBram Moolenaar  normal j
9242093c0eSBram Moolenaar  call assert_equal(2, winline())
9342093c0eSBram Moolenaar  normal j
9442093c0eSBram Moolenaar  call assert_equal(4, winline())
9542093c0eSBram Moolenaar  normal j
9642093c0eSBram Moolenaar  call assert_equal(5, winline())
9742093c0eSBram Moolenaar  normal j
9842093c0eSBram Moolenaar  call assert_equal(8, winline())
9942093c0eSBram Moolenaar
10042093c0eSBram Moolenaar  wincmd w
10142093c0eSBram Moolenaar  normal gg
10242093c0eSBram Moolenaar  call assert_equal(2, winline())
10342093c0eSBram Moolenaar  normal j
10442093c0eSBram Moolenaar  call assert_equal(3, winline())
10542093c0eSBram Moolenaar  normal j
10642093c0eSBram Moolenaar  call assert_equal(4, winline())
10742093c0eSBram Moolenaar  normal j
10842093c0eSBram Moolenaar  call assert_equal(5, winline())
10942093c0eSBram Moolenaar  normal j
11042093c0eSBram Moolenaar  call assert_equal(6, winline())
11142093c0eSBram Moolenaar  normal j
11242093c0eSBram Moolenaar  call assert_equal(7, winline())
11342093c0eSBram Moolenaar  normal j
11442093c0eSBram Moolenaar  call assert_equal(8, winline())
11542093c0eSBram Moolenaar
11642093c0eSBram Moolenaar  " Test diffoff
11742093c0eSBram Moolenaar  diffoff!
11842093c0eSBram Moolenaar  1wincmd 2
11942093c0eSBram Moolenaar  let &diff = 1
12042093c0eSBram Moolenaar  let &fdm = diff_fdm
12142093c0eSBram Moolenaar  let &fdc = diff_fdc
12242093c0eSBram Moolenaar  4wincmd w
12342093c0eSBram Moolenaar  diffoff!
12442093c0eSBram Moolenaar  1wincmd w
12542093c0eSBram Moolenaar  call assert_equal(0, &diff)
12642093c0eSBram Moolenaar  call assert_equal('marker', &foldmethod)
12742093c0eSBram Moolenaar  call assert_equal(4, &foldcolumn)
12842093c0eSBram Moolenaar  call assert_equal(0, &scrollbind)
12942093c0eSBram Moolenaar  call assert_equal(0, &cursorbind)
13042093c0eSBram Moolenaar  call assert_equal(1, &wrap)
13142093c0eSBram Moolenaar
13242093c0eSBram Moolenaar  wincmd w
13342093c0eSBram Moolenaar  call assert_equal(0, &diff)
13442093c0eSBram Moolenaar  call assert_equal('marker', &foldmethod)
13542093c0eSBram Moolenaar  call assert_equal(4, &foldcolumn)
13642093c0eSBram Moolenaar  call assert_equal(0, &scrollbind)
13742093c0eSBram Moolenaar  call assert_equal(0, &cursorbind)
13842093c0eSBram Moolenaar  call assert_equal(1, &wrap)
13942093c0eSBram Moolenaar
14042093c0eSBram Moolenaar  wincmd w
14142093c0eSBram Moolenaar  call assert_equal(0, &diff)
14242093c0eSBram Moolenaar  call assert_equal('marker', &foldmethod)
14342093c0eSBram Moolenaar  call assert_equal(4, &foldcolumn)
14442093c0eSBram Moolenaar  call assert_equal(0, &scrollbind)
14542093c0eSBram Moolenaar  call assert_equal(0, &cursorbind)
14642093c0eSBram Moolenaar  call assert_equal(1, &wrap)
14742093c0eSBram Moolenaar
148623cf88fSBram Moolenaar  call delete('Xtest')
149623cf88fSBram Moolenaar  call delete('Xtest2')
15042093c0eSBram Moolenaar  windo bw!
15142093c0eSBram Moolenaarendfunc
15242093c0eSBram Moolenaar
15342093c0eSBram Moolenaarfunc Test_filler_lines()
15442093c0eSBram Moolenaar  " Test that diffing shows correct filler lines
15542093c0eSBram Moolenaar  enew!
15642093c0eSBram Moolenaar  put =range(4,10)
15742093c0eSBram Moolenaar  1d _
15842093c0eSBram Moolenaar  vnew
15942093c0eSBram Moolenaar  put =range(1,10)
16042093c0eSBram Moolenaar  1d _
16142093c0eSBram Moolenaar  windo diffthis
16242093c0eSBram Moolenaar  wincmd h
16342093c0eSBram Moolenaar  call assert_equal(1, line('w0'))
16442093c0eSBram Moolenaar  unlet! diff_fdm diff_fdc
165*90d121faSBram Moolenaar  windo diffoff
166*90d121faSBram Moolenaar  bwipe!
167*90d121faSBram Moolenaar  enew!
168*90d121faSBram Moolenaarendfunc
16942093c0eSBram Moolenaar
170*90d121faSBram Moolenaarfunc Test_diffget_diffput()
171*90d121faSBram Moolenaar  enew!
172*90d121faSBram Moolenaar  let l = range(50)
173*90d121faSBram Moolenaar  call setline(1, l)
174*90d121faSBram Moolenaar  call assert_fails('diffget', 'E99:')
175*90d121faSBram Moolenaar  diffthis
176*90d121faSBram Moolenaar  call assert_fails('diffget', 'E100:')
177*90d121faSBram Moolenaar  new
178*90d121faSBram Moolenaar  let l[10] = 'one'
179*90d121faSBram Moolenaar  let l[20] = 'two'
180*90d121faSBram Moolenaar  let l[30] = 'three'
181*90d121faSBram Moolenaar  let l[40] = 'four'
182*90d121faSBram Moolenaar  call setline(1, l)
183*90d121faSBram Moolenaar  diffthis
184*90d121faSBram Moolenaar  call assert_equal('one', getline(11))
185*90d121faSBram Moolenaar  11diffget
186*90d121faSBram Moolenaar  call assert_equal('10', getline(11))
187*90d121faSBram Moolenaar  21diffput
188*90d121faSBram Moolenaar  wincmd w
189*90d121faSBram Moolenaar  call assert_equal('two', getline(21))
190*90d121faSBram Moolenaar  normal 31Gdo
191*90d121faSBram Moolenaar  call assert_equal('three', getline(31))
192*90d121faSBram Moolenaar  call assert_equal('40', getline(41))
193*90d121faSBram Moolenaar  normal 41Gdp
194*90d121faSBram Moolenaar  wincmd w
195*90d121faSBram Moolenaar  call assert_equal('40', getline(41))
196*90d121faSBram Moolenaar  new
197*90d121faSBram Moolenaar  diffthis
198*90d121faSBram Moolenaar  call assert_fails('diffget', 'E101:')
199*90d121faSBram Moolenaar
200*90d121faSBram Moolenaar  windo diffoff
201*90d121faSBram Moolenaar  bwipe!
202*90d121faSBram Moolenaar  bwipe!
203*90d121faSBram Moolenaar  enew!
20442093c0eSBram Moolenaarendfunc
205