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 16590d121faSBram Moolenaar windo diffoff 16690d121faSBram Moolenaar bwipe! 16790d121faSBram Moolenaar enew! 16890d121faSBram Moolenaarendfunc 16942093c0eSBram Moolenaar 17090d121faSBram Moolenaarfunc Test_diffget_diffput() 17190d121faSBram Moolenaar enew! 17290d121faSBram Moolenaar let l = range(50) 17390d121faSBram Moolenaar call setline(1, l) 17490d121faSBram Moolenaar call assert_fails('diffget', 'E99:') 17590d121faSBram Moolenaar diffthis 17690d121faSBram Moolenaar call assert_fails('diffget', 'E100:') 17790d121faSBram Moolenaar new 17890d121faSBram Moolenaar let l[10] = 'one' 17990d121faSBram Moolenaar let l[20] = 'two' 18090d121faSBram Moolenaar let l[30] = 'three' 18190d121faSBram Moolenaar let l[40] = 'four' 18290d121faSBram Moolenaar call setline(1, l) 18390d121faSBram Moolenaar diffthis 18490d121faSBram Moolenaar call assert_equal('one', getline(11)) 18590d121faSBram Moolenaar 11diffget 18690d121faSBram Moolenaar call assert_equal('10', getline(11)) 18790d121faSBram Moolenaar 21diffput 18890d121faSBram Moolenaar wincmd w 18990d121faSBram Moolenaar call assert_equal('two', getline(21)) 19090d121faSBram Moolenaar normal 31Gdo 19190d121faSBram Moolenaar call assert_equal('three', getline(31)) 19290d121faSBram Moolenaar call assert_equal('40', getline(41)) 19390d121faSBram Moolenaar normal 41Gdp 19490d121faSBram Moolenaar wincmd w 19590d121faSBram Moolenaar call assert_equal('40', getline(41)) 19690d121faSBram Moolenaar new 19790d121faSBram Moolenaar diffthis 19890d121faSBram Moolenaar call assert_fails('diffget', 'E101:') 19990d121faSBram Moolenaar 20090d121faSBram Moolenaar windo diffoff 20190d121faSBram Moolenaar bwipe! 20290d121faSBram Moolenaar bwipe! 20390d121faSBram Moolenaar enew! 20442093c0eSBram Moolenaarendfunc 205e67d546fSBram Moolenaar 206e67d546fSBram Moolenaarfunc Test_diffoff() 207e67d546fSBram Moolenaar enew! 208e67d546fSBram Moolenaar call setline(1, ['Two', 'Three']) 209e67d546fSBram Moolenaar let normattr = screenattr(1, 1) 210e67d546fSBram Moolenaar diffthis 211e67d546fSBram Moolenaar botright vert new 212e67d546fSBram Moolenaar call setline(1, ['One', '', 'Two', 'Three']) 213e67d546fSBram Moolenaar diffthis 214e67d546fSBram Moolenaar redraw 215*25ea0544SBram Moolenaar call assert_notequal(normattr, screenattr(1, 1)) 216e67d546fSBram Moolenaar diffoff! 217e67d546fSBram Moolenaar redraw 218e67d546fSBram Moolenaar call assert_equal(normattr, screenattr(1, 1)) 219e67d546fSBram Moolenaar bwipe! 220e67d546fSBram Moolenaar bwipe! 221e67d546fSBram Moolenaarendfunc 222025e3e0bSBram Moolenaar 223*25ea0544SBram Moolenaarfunc Test_diffoff_hidden() 224*25ea0544SBram Moolenaar set diffopt=filler,foldcolumn:0 225*25ea0544SBram Moolenaar e! one 226*25ea0544SBram Moolenaar call setline(1, ['Two', 'Three']) 227*25ea0544SBram Moolenaar let normattr = screenattr(1, 1) 228*25ea0544SBram Moolenaar diffthis 229*25ea0544SBram Moolenaar botright vert new two 230*25ea0544SBram Moolenaar call setline(1, ['One', 'Four']) 231*25ea0544SBram Moolenaar diffthis 232*25ea0544SBram Moolenaar redraw 233*25ea0544SBram Moolenaar call assert_notequal(normattr, screenattr(1, 1)) 234*25ea0544SBram Moolenaar set hidden 235*25ea0544SBram Moolenaar close 236*25ea0544SBram Moolenaar redraw 237*25ea0544SBram Moolenaar " diffing with hidden buffer two 238*25ea0544SBram Moolenaar call assert_notequal(normattr, screenattr(1, 1)) 239*25ea0544SBram Moolenaar diffoff 240*25ea0544SBram Moolenaar redraw 241*25ea0544SBram Moolenaar call assert_equal(normattr, screenattr(1, 1)) 242*25ea0544SBram Moolenaar diffthis 243*25ea0544SBram Moolenaar redraw 244*25ea0544SBram Moolenaar " still diffing with hidden buffer two 245*25ea0544SBram Moolenaar call assert_notequal(normattr, screenattr(1, 1)) 246*25ea0544SBram Moolenaar diffoff! 247*25ea0544SBram Moolenaar redraw 248*25ea0544SBram Moolenaar call assert_equal(normattr, screenattr(1, 1)) 249*25ea0544SBram Moolenaar diffthis 250*25ea0544SBram Moolenaar redraw 251*25ea0544SBram Moolenaar " no longer diffing with hidden buffer two 252*25ea0544SBram Moolenaar call assert_equal(normattr, screenattr(1, 1)) 253*25ea0544SBram Moolenaar 254*25ea0544SBram Moolenaar bwipe! 255*25ea0544SBram Moolenaar bwipe! 256*25ea0544SBram Moolenaar set hidden& diffopt& 257*25ea0544SBram Moolenaarendfunc 258*25ea0544SBram Moolenaar 259025e3e0bSBram Moolenaarfunc Test_setting_cursor() 260025e3e0bSBram Moolenaar new Xtest1 261025e3e0bSBram Moolenaar put =range(1,90) 262025e3e0bSBram Moolenaar wq 263025e3e0bSBram Moolenaar new Xtest2 264025e3e0bSBram Moolenaar put =range(1,100) 265025e3e0bSBram Moolenaar wq 266025e3e0bSBram Moolenaar 267025e3e0bSBram Moolenaar tabe Xtest2 268025e3e0bSBram Moolenaar $ 269025e3e0bSBram Moolenaar diffsp Xtest1 270025e3e0bSBram Moolenaar tabclose 271025e3e0bSBram Moolenaar 272025e3e0bSBram Moolenaar call delete('Xtest1') 273025e3e0bSBram Moolenaar call delete('Xtest2') 274025e3e0bSBram Moolenaarendfunc 275