142093c0eSBram Moolenaar" Tests for diff mode 2e828b762SBram Moolenaarsource shared.vim 3e828b762SBram Moolenaarsource screendump.vim 442093c0eSBram Moolenaar 542093c0eSBram Moolenaarfunc Test_diff_fold_sync() 642093c0eSBram Moolenaar enew! 742093c0eSBram Moolenaar let l = range(50) 842093c0eSBram Moolenaar call setline(1, l) 942093c0eSBram Moolenaar diffthis 1042093c0eSBram Moolenaar let winone = win_getid() 1142093c0eSBram Moolenaar new 1242093c0eSBram Moolenaar let l[25] = 'diff' 1342093c0eSBram Moolenaar call setline(1, l) 1442093c0eSBram Moolenaar diffthis 1542093c0eSBram Moolenaar let wintwo = win_getid() 1642093c0eSBram Moolenaar " line 15 is inside the closed fold 1742093c0eSBram Moolenaar call assert_equal(19, foldclosedend(10)) 1842093c0eSBram Moolenaar call win_gotoid(winone) 1942093c0eSBram Moolenaar call assert_equal(19, foldclosedend(10)) 2042093c0eSBram Moolenaar " open the fold 2142093c0eSBram Moolenaar normal zv 2242093c0eSBram Moolenaar call assert_equal(-1, foldclosedend(10)) 2342093c0eSBram Moolenaar " fold in other window must have opened too 2442093c0eSBram Moolenaar call win_gotoid(wintwo) 2542093c0eSBram Moolenaar call assert_equal(-1, foldclosedend(10)) 2642093c0eSBram Moolenaar 2742093c0eSBram Moolenaar " cursor position is in sync 2842093c0eSBram Moolenaar normal 23G 2942093c0eSBram Moolenaar call win_gotoid(winone) 3042093c0eSBram Moolenaar call assert_equal(23, getcurpos()[1]) 3142093c0eSBram Moolenaar 3242093c0eSBram Moolenaar windo diffoff 3342093c0eSBram Moolenaar close! 3442093c0eSBram Moolenaar set nomodified 3542093c0eSBram Moolenaarendfunc 3642093c0eSBram Moolenaar 3742093c0eSBram Moolenaarfunc Test_vert_split() 38e828b762SBram Moolenaar set diffopt=filler 39e828b762SBram Moolenaar call Common_vert_split() 40e828b762SBram Moolenaar set diffopt& 41e828b762SBram Moolenaarendfunc 42e828b762SBram Moolenaar 43e828b762SBram Moolenaarfunc Test_vert_split_internal() 44e828b762SBram Moolenaar set diffopt=internal,filler 45e828b762SBram Moolenaar call Common_vert_split() 46e828b762SBram Moolenaar set diffopt& 47e828b762SBram Moolenaarendfunc 48e828b762SBram Moolenaar 49e828b762SBram Moolenaarfunc Common_vert_split() 5042093c0eSBram Moolenaar " Disable the title to avoid xterm keeping the wrong one. 5142093c0eSBram Moolenaar set notitle noicon 5242093c0eSBram Moolenaar new 5342093c0eSBram Moolenaar let l = ['1 aa', '2 bb', '3 cc', '4 dd', '5 ee'] 5442093c0eSBram Moolenaar call setline(1, l) 5542093c0eSBram Moolenaar w! Xtest 5642093c0eSBram Moolenaar normal dd 5742093c0eSBram Moolenaar $ 5842093c0eSBram Moolenaar put 5942093c0eSBram Moolenaar normal kkrXoxxx 6042093c0eSBram Moolenaar w! Xtest2 6142093c0eSBram Moolenaar file Nop 6242093c0eSBram Moolenaar normal ggoyyyjjjozzzz 6342093c0eSBram Moolenaar set foldmethod=marker foldcolumn=4 6442093c0eSBram Moolenaar call assert_equal(0, &diff) 6542093c0eSBram Moolenaar call assert_equal('marker', &foldmethod) 6642093c0eSBram Moolenaar call assert_equal(4, &foldcolumn) 6742093c0eSBram Moolenaar call assert_equal(0, &scrollbind) 6842093c0eSBram Moolenaar call assert_equal(0, &cursorbind) 6942093c0eSBram Moolenaar call assert_equal(1, &wrap) 7042093c0eSBram Moolenaar 7142093c0eSBram Moolenaar vert diffsplit Xtest 7242093c0eSBram Moolenaar vert diffsplit Xtest2 7342093c0eSBram Moolenaar call assert_equal(1, &diff) 7442093c0eSBram Moolenaar call assert_equal('diff', &foldmethod) 7542093c0eSBram Moolenaar call assert_equal(2, &foldcolumn) 7642093c0eSBram Moolenaar call assert_equal(1, &scrollbind) 7742093c0eSBram Moolenaar call assert_equal(1, &cursorbind) 7842093c0eSBram Moolenaar call assert_equal(0, &wrap) 7942093c0eSBram Moolenaar 8042093c0eSBram Moolenaar let diff_fdm = &fdm 8142093c0eSBram Moolenaar let diff_fdc = &fdc 8242093c0eSBram Moolenaar " repeat entering diff mode here to see if this saves the wrong settings 8342093c0eSBram Moolenaar diffthis 8442093c0eSBram Moolenaar " jump to second window for a moment to have filler line appear at start of 8542093c0eSBram Moolenaar " first window 8642093c0eSBram Moolenaar wincmd w 8742093c0eSBram Moolenaar normal gg 8842093c0eSBram Moolenaar wincmd p 8942093c0eSBram Moolenaar normal gg 9042093c0eSBram Moolenaar call assert_equal(2, winline()) 9142093c0eSBram Moolenaar normal j 9242093c0eSBram Moolenaar call assert_equal(4, winline()) 9342093c0eSBram Moolenaar normal j 9442093c0eSBram Moolenaar call assert_equal(5, winline()) 9542093c0eSBram Moolenaar normal j 9642093c0eSBram Moolenaar call assert_equal(6, winline()) 9742093c0eSBram Moolenaar normal j 9842093c0eSBram Moolenaar call assert_equal(8, winline()) 9942093c0eSBram Moolenaar normal j 10042093c0eSBram Moolenaar call assert_equal(9, winline()) 10142093c0eSBram Moolenaar 10242093c0eSBram Moolenaar wincmd w 10342093c0eSBram Moolenaar normal gg 10442093c0eSBram Moolenaar call assert_equal(1, winline()) 10542093c0eSBram Moolenaar normal j 10642093c0eSBram Moolenaar call assert_equal(2, winline()) 10742093c0eSBram Moolenaar normal j 10842093c0eSBram Moolenaar call assert_equal(4, winline()) 10942093c0eSBram Moolenaar normal j 11042093c0eSBram Moolenaar call assert_equal(5, winline()) 11142093c0eSBram Moolenaar normal j 11242093c0eSBram Moolenaar call assert_equal(8, winline()) 11342093c0eSBram Moolenaar 11442093c0eSBram Moolenaar wincmd w 11542093c0eSBram Moolenaar normal gg 11642093c0eSBram Moolenaar call assert_equal(2, winline()) 11742093c0eSBram Moolenaar normal j 11842093c0eSBram Moolenaar call assert_equal(3, winline()) 11942093c0eSBram Moolenaar normal j 12042093c0eSBram Moolenaar call assert_equal(4, winline()) 12142093c0eSBram Moolenaar normal j 12242093c0eSBram Moolenaar call assert_equal(5, winline()) 12342093c0eSBram Moolenaar normal j 12442093c0eSBram Moolenaar call assert_equal(6, winline()) 12542093c0eSBram Moolenaar normal j 12642093c0eSBram Moolenaar call assert_equal(7, winline()) 12742093c0eSBram Moolenaar normal j 12842093c0eSBram Moolenaar call assert_equal(8, winline()) 12942093c0eSBram Moolenaar 13042093c0eSBram Moolenaar " Test diffoff 13142093c0eSBram Moolenaar diffoff! 13242093c0eSBram Moolenaar 1wincmd 2 13342093c0eSBram Moolenaar let &diff = 1 13442093c0eSBram Moolenaar let &fdm = diff_fdm 13542093c0eSBram Moolenaar let &fdc = diff_fdc 13642093c0eSBram Moolenaar 4wincmd w 13742093c0eSBram Moolenaar diffoff! 13842093c0eSBram Moolenaar 1wincmd w 13942093c0eSBram Moolenaar call assert_equal(0, &diff) 14042093c0eSBram Moolenaar call assert_equal('marker', &foldmethod) 14142093c0eSBram Moolenaar call assert_equal(4, &foldcolumn) 14242093c0eSBram Moolenaar call assert_equal(0, &scrollbind) 14342093c0eSBram Moolenaar call assert_equal(0, &cursorbind) 14442093c0eSBram Moolenaar call assert_equal(1, &wrap) 14542093c0eSBram Moolenaar 14642093c0eSBram Moolenaar wincmd w 14742093c0eSBram Moolenaar call assert_equal(0, &diff) 14842093c0eSBram Moolenaar call assert_equal('marker', &foldmethod) 14942093c0eSBram Moolenaar call assert_equal(4, &foldcolumn) 15042093c0eSBram Moolenaar call assert_equal(0, &scrollbind) 15142093c0eSBram Moolenaar call assert_equal(0, &cursorbind) 15242093c0eSBram Moolenaar call assert_equal(1, &wrap) 15342093c0eSBram Moolenaar 15442093c0eSBram Moolenaar wincmd w 15542093c0eSBram Moolenaar call assert_equal(0, &diff) 15642093c0eSBram Moolenaar call assert_equal('marker', &foldmethod) 15742093c0eSBram Moolenaar call assert_equal(4, &foldcolumn) 15842093c0eSBram Moolenaar call assert_equal(0, &scrollbind) 15942093c0eSBram Moolenaar call assert_equal(0, &cursorbind) 16042093c0eSBram Moolenaar call assert_equal(1, &wrap) 16142093c0eSBram Moolenaar 162623cf88fSBram Moolenaar call delete('Xtest') 163623cf88fSBram Moolenaar call delete('Xtest2') 16442093c0eSBram Moolenaar windo bw! 16542093c0eSBram Moolenaarendfunc 16642093c0eSBram Moolenaar 16742093c0eSBram Moolenaarfunc Test_filler_lines() 16842093c0eSBram Moolenaar " Test that diffing shows correct filler lines 16942093c0eSBram Moolenaar enew! 17042093c0eSBram Moolenaar put =range(4,10) 17142093c0eSBram Moolenaar 1d _ 17242093c0eSBram Moolenaar vnew 17342093c0eSBram Moolenaar put =range(1,10) 17442093c0eSBram Moolenaar 1d _ 17542093c0eSBram Moolenaar windo diffthis 17642093c0eSBram Moolenaar wincmd h 17742093c0eSBram Moolenaar call assert_equal(1, line('w0')) 17842093c0eSBram Moolenaar unlet! diff_fdm diff_fdc 17990d121faSBram Moolenaar windo diffoff 18090d121faSBram Moolenaar bwipe! 18190d121faSBram Moolenaar enew! 18290d121faSBram Moolenaarendfunc 18342093c0eSBram Moolenaar 18490d121faSBram Moolenaarfunc Test_diffget_diffput() 18590d121faSBram Moolenaar enew! 18690d121faSBram Moolenaar let l = range(50) 18790d121faSBram Moolenaar call setline(1, l) 18890d121faSBram Moolenaar call assert_fails('diffget', 'E99:') 18990d121faSBram Moolenaar diffthis 19090d121faSBram Moolenaar call assert_fails('diffget', 'E100:') 19190d121faSBram Moolenaar new 19290d121faSBram Moolenaar let l[10] = 'one' 19390d121faSBram Moolenaar let l[20] = 'two' 19490d121faSBram Moolenaar let l[30] = 'three' 19590d121faSBram Moolenaar let l[40] = 'four' 19690d121faSBram Moolenaar call setline(1, l) 19790d121faSBram Moolenaar diffthis 19890d121faSBram Moolenaar call assert_equal('one', getline(11)) 19990d121faSBram Moolenaar 11diffget 20090d121faSBram Moolenaar call assert_equal('10', getline(11)) 20190d121faSBram Moolenaar 21diffput 20290d121faSBram Moolenaar wincmd w 20390d121faSBram Moolenaar call assert_equal('two', getline(21)) 20490d121faSBram Moolenaar normal 31Gdo 20590d121faSBram Moolenaar call assert_equal('three', getline(31)) 20690d121faSBram Moolenaar call assert_equal('40', getline(41)) 20790d121faSBram Moolenaar normal 41Gdp 20890d121faSBram Moolenaar wincmd w 20990d121faSBram Moolenaar call assert_equal('40', getline(41)) 21090d121faSBram Moolenaar new 21190d121faSBram Moolenaar diffthis 21290d121faSBram Moolenaar call assert_fails('diffget', 'E101:') 21390d121faSBram Moolenaar 21490d121faSBram Moolenaar windo diffoff 21579a213d6SBram Moolenaar %bwipe! 21679a213d6SBram Moolenaarendfunc 21779a213d6SBram Moolenaar 21879a213d6SBram Moolenaarfunc Test_dp_do_buffer() 21979a213d6SBram Moolenaar e! one 22079a213d6SBram Moolenaar let bn1=bufnr('%') 22179a213d6SBram Moolenaar let l = range(60) 22279a213d6SBram Moolenaar call setline(1, l) 22379a213d6SBram Moolenaar diffthis 22479a213d6SBram Moolenaar 22579a213d6SBram Moolenaar new two 22679a213d6SBram Moolenaar let l[10] = 'one' 22779a213d6SBram Moolenaar let l[20] = 'two' 22879a213d6SBram Moolenaar let l[30] = 'three' 22979a213d6SBram Moolenaar let l[40] = 'four' 23079a213d6SBram Moolenaar let l[50] = 'five' 23179a213d6SBram Moolenaar call setline(1, l) 23279a213d6SBram Moolenaar diffthis 23379a213d6SBram Moolenaar 23479a213d6SBram Moolenaar " dp and do with invalid buffer number. 23579a213d6SBram Moolenaar 11 23679a213d6SBram Moolenaar call assert_fails('norm 99999dp', 'E102:') 23779a213d6SBram Moolenaar call assert_fails('norm 99999do', 'E102:') 23879a213d6SBram Moolenaar call assert_fails('diffput non_existing_buffer', 'E94:') 23979a213d6SBram Moolenaar call assert_fails('diffget non_existing_buffer', 'E94:') 24079a213d6SBram Moolenaar 24179a213d6SBram Moolenaar " dp and do with valid buffer number. 24279a213d6SBram Moolenaar call assert_equal('one', getline('.')) 24379a213d6SBram Moolenaar exe 'norm ' . bn1 . 'do' 24479a213d6SBram Moolenaar call assert_equal('10', getline('.')) 24579a213d6SBram Moolenaar 21 24679a213d6SBram Moolenaar call assert_equal('two', getline('.')) 24779a213d6SBram Moolenaar diffget one 24879a213d6SBram Moolenaar call assert_equal('20', getline('.')) 24979a213d6SBram Moolenaar 25079a213d6SBram Moolenaar 31 25179a213d6SBram Moolenaar exe 'norm ' . bn1 . 'dp' 25279a213d6SBram Moolenaar 41 25379a213d6SBram Moolenaar diffput one 25479a213d6SBram Moolenaar wincmd w 25579a213d6SBram Moolenaar 31 25679a213d6SBram Moolenaar call assert_equal('three', getline('.')) 25779a213d6SBram Moolenaar 41 25879a213d6SBram Moolenaar call assert_equal('four', getline('.')) 25979a213d6SBram Moolenaar 26079a213d6SBram Moolenaar " dp and do with buffer number which is not in diff mode. 26179a213d6SBram Moolenaar new not_in_diff_mode 26279a213d6SBram Moolenaar let bn3=bufnr('%') 26379a213d6SBram Moolenaar wincmd w 26479a213d6SBram Moolenaar 51 26579a213d6SBram Moolenaar call assert_fails('exe "norm" . bn3 . "dp"', 'E103:') 26679a213d6SBram Moolenaar call assert_fails('exe "norm" . bn3 . "do"', 'E103:') 26779a213d6SBram Moolenaar call assert_fails('diffput not_in_diff_mode', 'E94:') 26879a213d6SBram Moolenaar call assert_fails('diffget not_in_diff_mode', 'E94:') 26979a213d6SBram Moolenaar 27079a213d6SBram Moolenaar windo diffoff 27179a213d6SBram Moolenaar %bwipe! 27242093c0eSBram Moolenaarendfunc 273e67d546fSBram Moolenaar 274e67d546fSBram Moolenaarfunc Test_diffoff() 275e67d546fSBram Moolenaar enew! 276e67d546fSBram Moolenaar call setline(1, ['Two', 'Three']) 27779a213d6SBram Moolenaar redraw 278e67d546fSBram Moolenaar let normattr = screenattr(1, 1) 279e67d546fSBram Moolenaar diffthis 280e67d546fSBram Moolenaar botright vert new 281e67d546fSBram Moolenaar call setline(1, ['One', '', 'Two', 'Three']) 282e67d546fSBram Moolenaar diffthis 283e67d546fSBram Moolenaar redraw 28425ea0544SBram Moolenaar call assert_notequal(normattr, screenattr(1, 1)) 285e67d546fSBram Moolenaar diffoff! 286e67d546fSBram Moolenaar redraw 287e67d546fSBram Moolenaar call assert_equal(normattr, screenattr(1, 1)) 288e67d546fSBram Moolenaar bwipe! 289e67d546fSBram Moolenaar bwipe! 290e67d546fSBram Moolenaarendfunc 291025e3e0bSBram Moolenaar 292e828b762SBram Moolenaarfunc Common_icase_test() 293e828b762SBram Moolenaar edit one 294da22b8ccSBram Moolenaar call setline(1, ['One', 'Two', 'Three', 'Four', 'Fi#ve']) 29579a213d6SBram Moolenaar redraw 29679a213d6SBram Moolenaar let normattr = screenattr(1, 1) 29779a213d6SBram Moolenaar diffthis 29879a213d6SBram Moolenaar 29979a213d6SBram Moolenaar botright vert new two 300da22b8ccSBram Moolenaar call setline(1, ['one', 'TWO', 'Three ', 'Four', 'fI=VE']) 30179a213d6SBram Moolenaar diffthis 30279a213d6SBram Moolenaar 30379a213d6SBram Moolenaar redraw 30479a213d6SBram Moolenaar call assert_equal(normattr, screenattr(1, 1)) 30579a213d6SBram Moolenaar call assert_equal(normattr, screenattr(2, 1)) 30679a213d6SBram Moolenaar call assert_notequal(normattr, screenattr(3, 1)) 30779a213d6SBram Moolenaar call assert_equal(normattr, screenattr(4, 1)) 30879a213d6SBram Moolenaar 309da22b8ccSBram Moolenaar let dtextattr = screenattr(5, 3) 310da22b8ccSBram Moolenaar call assert_notequal(dtextattr, screenattr(5, 1)) 311da22b8ccSBram Moolenaar call assert_notequal(dtextattr, screenattr(5, 5)) 312da22b8ccSBram Moolenaar 31379a213d6SBram Moolenaar diffoff! 31479a213d6SBram Moolenaar %bwipe! 315e828b762SBram Moolenaarendfunc 316e828b762SBram Moolenaar 317e828b762SBram Moolenaarfunc Test_diffopt_icase() 318e828b762SBram Moolenaar set diffopt=icase,foldcolumn:0 319e828b762SBram Moolenaar call Common_icase_test() 32079a213d6SBram Moolenaar set diffopt& 32179a213d6SBram Moolenaarendfunc 32279a213d6SBram Moolenaar 323e828b762SBram Moolenaarfunc Test_diffopt_icase_internal() 324e828b762SBram Moolenaar set diffopt=icase,foldcolumn:0,internal 325e828b762SBram Moolenaar call Common_icase_test() 326e828b762SBram Moolenaar set diffopt& 327e828b762SBram Moolenaarendfunc 32879a213d6SBram Moolenaar 329e828b762SBram Moolenaarfunc Common_iwhite_test() 330e828b762SBram Moolenaar edit one 331e828b762SBram Moolenaar " Difference in trailing spaces and amount of spaces should be ignored, 33279a213d6SBram Moolenaar " but not other space differences. 333e828b762SBram Moolenaar call setline(1, ["One \t", 'Two', 'Three', 'one two', 'one two', 'Four']) 33479a213d6SBram Moolenaar redraw 33579a213d6SBram Moolenaar let normattr = screenattr(1, 1) 33679a213d6SBram Moolenaar diffthis 33779a213d6SBram Moolenaar 33879a213d6SBram Moolenaar botright vert new two 339e828b762SBram Moolenaar call setline(1, ["One\t ", "Two\t ", 'Three', 'one two', 'onetwo', ' Four']) 34079a213d6SBram Moolenaar diffthis 34179a213d6SBram Moolenaar 34279a213d6SBram Moolenaar redraw 34379a213d6SBram Moolenaar call assert_equal(normattr, screenattr(1, 1)) 34479a213d6SBram Moolenaar call assert_equal(normattr, screenattr(2, 1)) 34579a213d6SBram Moolenaar call assert_equal(normattr, screenattr(3, 1)) 346e828b762SBram Moolenaar call assert_equal(normattr, screenattr(4, 1)) 347e828b762SBram Moolenaar call assert_notequal(normattr, screenattr(5, 1)) 348e828b762SBram Moolenaar call assert_notequal(normattr, screenattr(6, 1)) 34979a213d6SBram Moolenaar 35079a213d6SBram Moolenaar diffoff! 35179a213d6SBram Moolenaar %bwipe! 352e828b762SBram Moolenaarendfunc 353e828b762SBram Moolenaar 354e828b762SBram Moolenaarfunc Test_diffopt_iwhite() 355e828b762SBram Moolenaar set diffopt=iwhite,foldcolumn:0 356e828b762SBram Moolenaar call Common_iwhite_test() 357e828b762SBram Moolenaar set diffopt& 358e828b762SBram Moolenaarendfunc 359e828b762SBram Moolenaar 360e828b762SBram Moolenaarfunc Test_diffopt_iwhite_internal() 361e828b762SBram Moolenaar set diffopt=internal,iwhite,foldcolumn:0 362e828b762SBram Moolenaar call Common_iwhite_test() 36379a213d6SBram Moolenaar set diffopt& 36479a213d6SBram Moolenaarendfunc 36579a213d6SBram Moolenaar 36679a213d6SBram Moolenaarfunc Test_diffopt_context() 36779a213d6SBram Moolenaar enew! 36879a213d6SBram Moolenaar call setline(1, ['1', '2', '3', '4', '5', '6', '7']) 36979a213d6SBram Moolenaar diffthis 37079a213d6SBram Moolenaar new 37179a213d6SBram Moolenaar call setline(1, ['1', '2', '3', '4', '5x', '6', '7']) 37279a213d6SBram Moolenaar diffthis 37379a213d6SBram Moolenaar 37479a213d6SBram Moolenaar set diffopt=context:2 37579a213d6SBram Moolenaar call assert_equal('+-- 2 lines: 1', foldtextresult(1)) 376e828b762SBram Moolenaar set diffopt=internal,context:2 377e828b762SBram Moolenaar call assert_equal('+-- 2 lines: 1', foldtextresult(1)) 378e828b762SBram Moolenaar 37979a213d6SBram Moolenaar set diffopt=context:1 38079a213d6SBram Moolenaar call assert_equal('+-- 3 lines: 1', foldtextresult(1)) 381e828b762SBram Moolenaar set diffopt=internal,context:1 382e828b762SBram Moolenaar call assert_equal('+-- 3 lines: 1', foldtextresult(1)) 38379a213d6SBram Moolenaar 38479a213d6SBram Moolenaar diffoff! 38579a213d6SBram Moolenaar %bwipe! 38679a213d6SBram Moolenaar set diffopt& 38779a213d6SBram Moolenaarendfunc 38879a213d6SBram Moolenaar 38979a213d6SBram Moolenaarfunc Test_diffopt_horizontal() 390e828b762SBram Moolenaar set diffopt=internal,horizontal 39179a213d6SBram Moolenaar diffsplit 39279a213d6SBram Moolenaar 39379a213d6SBram Moolenaar call assert_equal(&columns, winwidth(1)) 39479a213d6SBram Moolenaar call assert_equal(&columns, winwidth(2)) 39579a213d6SBram Moolenaar call assert_equal(&lines, winheight(1) + winheight(2) + 3) 39679a213d6SBram Moolenaar call assert_inrange(0, 1, winheight(1) - winheight(2)) 39779a213d6SBram Moolenaar 39879a213d6SBram Moolenaar set diffopt& 39979a213d6SBram Moolenaar diffoff! 40079a213d6SBram Moolenaar %bwipe 40179a213d6SBram Moolenaarendfunc 40279a213d6SBram Moolenaar 40379a213d6SBram Moolenaarfunc Test_diffopt_vertical() 404e828b762SBram Moolenaar set diffopt=internal,vertical 40579a213d6SBram Moolenaar diffsplit 40679a213d6SBram Moolenaar 40779a213d6SBram Moolenaar call assert_equal(&lines - 2, winheight(1)) 40879a213d6SBram Moolenaar call assert_equal(&lines - 2, winheight(2)) 40979a213d6SBram Moolenaar call assert_equal(&columns, winwidth(1) + winwidth(2) + 1) 41079a213d6SBram Moolenaar call assert_inrange(0, 1, winwidth(1) - winwidth(2)) 41179a213d6SBram Moolenaar 41279a213d6SBram Moolenaar set diffopt& 41379a213d6SBram Moolenaar diffoff! 41479a213d6SBram Moolenaar %bwipe 41579a213d6SBram Moolenaarendfunc 41679a213d6SBram Moolenaar 41797ce4192SBram Moolenaarfunc Test_diffopt_hiddenoff() 418e828b762SBram Moolenaar set diffopt=internal,filler,foldcolumn:0,hiddenoff 41997ce4192SBram Moolenaar e! one 42097ce4192SBram Moolenaar call setline(1, ['Two', 'Three']) 42197ce4192SBram Moolenaar redraw 42297ce4192SBram Moolenaar let normattr = screenattr(1, 1) 42397ce4192SBram Moolenaar diffthis 42497ce4192SBram Moolenaar botright vert new two 42597ce4192SBram Moolenaar call setline(1, ['One', 'Four']) 42697ce4192SBram Moolenaar diffthis 42797ce4192SBram Moolenaar redraw 42897ce4192SBram Moolenaar call assert_notequal(normattr, screenattr(1, 1)) 42997ce4192SBram Moolenaar set hidden 43097ce4192SBram Moolenaar close 43197ce4192SBram Moolenaar redraw 43297ce4192SBram Moolenaar " should not diffing with hidden buffer two while 'hiddenoff' is enabled 43397ce4192SBram Moolenaar call assert_equal(normattr, screenattr(1, 1)) 43497ce4192SBram Moolenaar 43597ce4192SBram Moolenaar bwipe! 43697ce4192SBram Moolenaar bwipe! 43797ce4192SBram Moolenaar set hidden& diffopt& 43897ce4192SBram Moolenaarendfunc 43997ce4192SBram Moolenaar 44025ea0544SBram Moolenaarfunc Test_diffoff_hidden() 441e828b762SBram Moolenaar set diffopt=internal,filler,foldcolumn:0 44225ea0544SBram Moolenaar e! one 44325ea0544SBram Moolenaar call setline(1, ['Two', 'Three']) 44479a213d6SBram Moolenaar redraw 44525ea0544SBram Moolenaar let normattr = screenattr(1, 1) 44625ea0544SBram Moolenaar diffthis 44725ea0544SBram Moolenaar botright vert new two 44825ea0544SBram Moolenaar call setline(1, ['One', 'Four']) 44925ea0544SBram Moolenaar diffthis 45025ea0544SBram Moolenaar redraw 45125ea0544SBram Moolenaar call assert_notequal(normattr, screenattr(1, 1)) 45225ea0544SBram Moolenaar set hidden 45325ea0544SBram Moolenaar close 45425ea0544SBram Moolenaar redraw 45525ea0544SBram Moolenaar " diffing with hidden buffer two 45625ea0544SBram Moolenaar call assert_notequal(normattr, screenattr(1, 1)) 45725ea0544SBram Moolenaar diffoff 45825ea0544SBram Moolenaar redraw 45925ea0544SBram Moolenaar call assert_equal(normattr, screenattr(1, 1)) 46025ea0544SBram Moolenaar diffthis 46125ea0544SBram Moolenaar redraw 46225ea0544SBram Moolenaar " still diffing with hidden buffer two 46325ea0544SBram Moolenaar call assert_notequal(normattr, screenattr(1, 1)) 46425ea0544SBram Moolenaar diffoff! 46525ea0544SBram Moolenaar redraw 46625ea0544SBram Moolenaar call assert_equal(normattr, screenattr(1, 1)) 46725ea0544SBram Moolenaar diffthis 46825ea0544SBram Moolenaar redraw 46925ea0544SBram Moolenaar " no longer diffing with hidden buffer two 47025ea0544SBram Moolenaar call assert_equal(normattr, screenattr(1, 1)) 47125ea0544SBram Moolenaar 47225ea0544SBram Moolenaar bwipe! 47325ea0544SBram Moolenaar bwipe! 47425ea0544SBram Moolenaar set hidden& diffopt& 47525ea0544SBram Moolenaarendfunc 47625ea0544SBram Moolenaar 477025e3e0bSBram Moolenaarfunc Test_setting_cursor() 478025e3e0bSBram Moolenaar new Xtest1 479025e3e0bSBram Moolenaar put =range(1,90) 480025e3e0bSBram Moolenaar wq 481025e3e0bSBram Moolenaar new Xtest2 482025e3e0bSBram Moolenaar put =range(1,100) 483025e3e0bSBram Moolenaar wq 484025e3e0bSBram Moolenaar 485025e3e0bSBram Moolenaar tabe Xtest2 486025e3e0bSBram Moolenaar $ 487025e3e0bSBram Moolenaar diffsp Xtest1 488025e3e0bSBram Moolenaar tabclose 489025e3e0bSBram Moolenaar 490025e3e0bSBram Moolenaar call delete('Xtest1') 491025e3e0bSBram Moolenaar call delete('Xtest2') 492025e3e0bSBram Moolenaarendfunc 493aeb661e1SBram Moolenaar 494aeb661e1SBram Moolenaarfunc Test_diff_move_to() 495aeb661e1SBram Moolenaar new 496aeb661e1SBram Moolenaar call setline(1, [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]) 497aeb661e1SBram Moolenaar diffthis 498aeb661e1SBram Moolenaar vnew 499aeb661e1SBram Moolenaar call setline(1, [1, '2x', 3, 4, 4, 5, '6x', 7, '8x', 9, '10x']) 500aeb661e1SBram Moolenaar diffthis 501aeb661e1SBram Moolenaar norm ]c 502aeb661e1SBram Moolenaar call assert_equal(2, line('.')) 503aeb661e1SBram Moolenaar norm 3]c 504aeb661e1SBram Moolenaar call assert_equal(9, line('.')) 505aeb661e1SBram Moolenaar norm 10]c 506aeb661e1SBram Moolenaar call assert_equal(11, line('.')) 507aeb661e1SBram Moolenaar norm [c 508aeb661e1SBram Moolenaar call assert_equal(9, line('.')) 509aeb661e1SBram Moolenaar norm 2[c 510aeb661e1SBram Moolenaar call assert_equal(5, line('.')) 511aeb661e1SBram Moolenaar norm 10[c 512aeb661e1SBram Moolenaar call assert_equal(2, line('.')) 513aeb661e1SBram Moolenaar %bwipe! 514aeb661e1SBram Moolenaarendfunc 515aeb661e1SBram Moolenaar 51679a213d6SBram Moolenaarfunc Test_diffexpr() 51779a213d6SBram Moolenaar if !executable('diff') 51879a213d6SBram Moolenaar return 51979a213d6SBram Moolenaar endif 52079a213d6SBram Moolenaar 52179a213d6SBram Moolenaar func DiffExpr() 5223b8defd0SBram Moolenaar " Prepent some text to check diff type detection 5233b8defd0SBram Moolenaar call writefile(['warning', ' message'], v:fname_out) 5243b8defd0SBram Moolenaar silent exe '!diff ' . v:fname_in . ' ' . v:fname_new . '>>' . v:fname_out 52579a213d6SBram Moolenaar endfunc 52679a213d6SBram Moolenaar set diffexpr=DiffExpr() 52779a213d6SBram Moolenaar set diffopt=foldcolumn:0 52879a213d6SBram Moolenaar 52979a213d6SBram Moolenaar enew! 53079a213d6SBram Moolenaar call setline(1, ['one', 'two', 'three']) 53179a213d6SBram Moolenaar redraw 53279a213d6SBram Moolenaar let normattr = screenattr(1, 1) 53379a213d6SBram Moolenaar diffthis 53479a213d6SBram Moolenaar 53579a213d6SBram Moolenaar botright vert new 53679a213d6SBram Moolenaar call setline(1, ['one', 'two', 'three.']) 53779a213d6SBram Moolenaar diffthis 53879a213d6SBram Moolenaar 53979a213d6SBram Moolenaar redraw 54079a213d6SBram Moolenaar call assert_equal(normattr, screenattr(1, 1)) 54179a213d6SBram Moolenaar call assert_equal(normattr, screenattr(2, 1)) 54279a213d6SBram Moolenaar call assert_notequal(normattr, screenattr(3, 1)) 54379a213d6SBram Moolenaar 54479a213d6SBram Moolenaar diffoff! 54579a213d6SBram Moolenaar %bwipe! 54679a213d6SBram Moolenaar set diffexpr& diffopt& 54779a213d6SBram Moolenaarendfunc 54879a213d6SBram Moolenaar 549aeb661e1SBram Moolenaarfunc Test_diffpatch() 550aeb661e1SBram Moolenaar " The patch program on MS-Windows may fail or hang. 551aeb661e1SBram Moolenaar if !executable('patch') || !has('unix') 552aeb661e1SBram Moolenaar return 553aeb661e1SBram Moolenaar endif 554aeb661e1SBram Moolenaar new 555aeb661e1SBram Moolenaar insert 556aeb661e1SBram Moolenaar*************** 557aeb661e1SBram Moolenaar*** 1,3 **** 558aeb661e1SBram Moolenaar 1 559aeb661e1SBram Moolenaar! 2 560aeb661e1SBram Moolenaar 3 561aeb661e1SBram Moolenaar--- 1,4 ---- 562aeb661e1SBram Moolenaar 1 563aeb661e1SBram Moolenaar! 2x 564aeb661e1SBram Moolenaar 3 565aeb661e1SBram Moolenaar+ 4 566aeb661e1SBram Moolenaar. 56797fbc404SBram Moolenaar saveas! Xpatch 568aeb661e1SBram Moolenaar bwipe! 569aeb661e1SBram Moolenaar new 570aeb661e1SBram Moolenaar call assert_fails('diffpatch Xpatch', 'E816:') 5711ef73e33SBram Moolenaar 572a95ab321SBram Moolenaar for name in ['Xpatch', 'Xpatch$HOME', 'Xpa''tch'] 573aeb661e1SBram Moolenaar call setline(1, ['1', '2', '3']) 5741ef73e33SBram Moolenaar if name != 'Xpatch' 5751ef73e33SBram Moolenaar call rename('Xpatch', name) 5761ef73e33SBram Moolenaar endif 5771ef73e33SBram Moolenaar exe 'diffpatch ' . escape(name, '$') 578aeb661e1SBram Moolenaar call assert_equal(['1', '2x', '3', '4'], getline(1, '$')) 5791ef73e33SBram Moolenaar if name != 'Xpatch' 5801ef73e33SBram Moolenaar call rename(name, 'Xpatch') 5811ef73e33SBram Moolenaar endif 5821ef73e33SBram Moolenaar bwipe! 5831ef73e33SBram Moolenaar endfor 5841ef73e33SBram Moolenaar 585aeb661e1SBram Moolenaar call delete('Xpatch') 586aeb661e1SBram Moolenaar bwipe! 587aeb661e1SBram Moolenaarendfunc 588aeb661e1SBram Moolenaar 589aeb661e1SBram Moolenaarfunc Test_diff_too_many_buffers() 590aeb661e1SBram Moolenaar for i in range(1, 8) 591aeb661e1SBram Moolenaar exe "new Xtest" . i 592aeb661e1SBram Moolenaar diffthis 593aeb661e1SBram Moolenaar endfor 594aeb661e1SBram Moolenaar new Xtest9 595aeb661e1SBram Moolenaar call assert_fails('diffthis', 'E96:') 596aeb661e1SBram Moolenaar %bwipe! 597aeb661e1SBram Moolenaarendfunc 598aeb661e1SBram Moolenaar 599aeb661e1SBram Moolenaarfunc Test_diff_nomodifiable() 600aeb661e1SBram Moolenaar new 601aeb661e1SBram Moolenaar call setline(1, [1, 2, 3, 4]) 602aeb661e1SBram Moolenaar setl nomodifiable 603aeb661e1SBram Moolenaar diffthis 604aeb661e1SBram Moolenaar vnew 605aeb661e1SBram Moolenaar call setline(1, ['1x', 2, 3, 3, 4]) 606aeb661e1SBram Moolenaar diffthis 607aeb661e1SBram Moolenaar call assert_fails('norm dp', 'E793:') 608aeb661e1SBram Moolenaar setl nomodifiable 609aeb661e1SBram Moolenaar call assert_fails('norm do', 'E21:') 610aeb661e1SBram Moolenaar %bwipe! 611aeb661e1SBram Moolenaarendfunc 612f58a8475SBram Moolenaar 61397fbc404SBram Moolenaarfunc Test_diff_hlID() 61497fbc404SBram Moolenaar new 61597fbc404SBram Moolenaar call setline(1, [1, 2, 3]) 61697fbc404SBram Moolenaar diffthis 61797fbc404SBram Moolenaar vnew 61897fbc404SBram Moolenaar call setline(1, ['1x', 2, 'x', 3]) 61997fbc404SBram Moolenaar diffthis 62097fbc404SBram Moolenaar redraw 62197fbc404SBram Moolenaar 62297fbc404SBram Moolenaar call assert_equal(synIDattr(diff_hlID(-1, 1), "name"), "") 62397fbc404SBram Moolenaar 62497fbc404SBram Moolenaar call assert_equal(synIDattr(diff_hlID(1, 1), "name"), "DiffChange") 62597fbc404SBram Moolenaar call assert_equal(synIDattr(diff_hlID(1, 2), "name"), "DiffText") 62697fbc404SBram Moolenaar call assert_equal(synIDattr(diff_hlID(2, 1), "name"), "") 62797fbc404SBram Moolenaar call assert_equal(synIDattr(diff_hlID(3, 1), "name"), "DiffAdd") 62897fbc404SBram Moolenaar call assert_equal(synIDattr(diff_hlID(4, 1), "name"), "") 62997fbc404SBram Moolenaar 63097fbc404SBram Moolenaar wincmd w 63197fbc404SBram Moolenaar call assert_equal(synIDattr(diff_hlID(1, 1), "name"), "DiffChange") 63297fbc404SBram Moolenaar call assert_equal(synIDattr(diff_hlID(2, 1), "name"), "") 63397fbc404SBram Moolenaar call assert_equal(synIDattr(diff_hlID(3, 1), "name"), "") 63497fbc404SBram Moolenaar 63597fbc404SBram Moolenaar %bwipe! 63697fbc404SBram Moolenaarendfunc 63797fbc404SBram Moolenaar 63897fbc404SBram Moolenaarfunc Test_diff_filler() 63997fbc404SBram Moolenaar new 64097fbc404SBram Moolenaar call setline(1, [1, 2, 3, 'x', 4]) 64197fbc404SBram Moolenaar diffthis 64297fbc404SBram Moolenaar vnew 64397fbc404SBram Moolenaar call setline(1, [1, 2, 'y', 'y', 3, 4]) 64497fbc404SBram Moolenaar diffthis 64597fbc404SBram Moolenaar redraw 64697fbc404SBram Moolenaar 64797fbc404SBram Moolenaar call assert_equal([0, 0, 0, 0, 0, 0, 0, 1, 0], map(range(-1, 7), 'diff_filler(v:val)')) 64897fbc404SBram Moolenaar wincmd w 64997fbc404SBram Moolenaar call assert_equal([0, 0, 0, 0, 2, 0, 0, 0], map(range(-1, 6), 'diff_filler(v:val)')) 65097fbc404SBram Moolenaar 65197fbc404SBram Moolenaar %bwipe! 65297fbc404SBram Moolenaarendfunc 65397fbc404SBram Moolenaar 654f58a8475SBram Moolenaarfunc Test_diff_lastline() 655f58a8475SBram Moolenaar enew! 656f58a8475SBram Moolenaar only! 657f58a8475SBram Moolenaar call setline(1, ['This is a ', 'line with five ', 'rows']) 658f58a8475SBram Moolenaar diffthis 659f58a8475SBram Moolenaar botright vert new 660f58a8475SBram Moolenaar call setline(1, ['This is', 'a line with ', 'four rows']) 661f58a8475SBram Moolenaar diffthis 662f58a8475SBram Moolenaar 1 663f58a8475SBram Moolenaar call feedkeys("Je a\<CR>", 'tx') 664f58a8475SBram Moolenaar call feedkeys("Je a\<CR>", 'tx') 665f58a8475SBram Moolenaar let w1lines = winline() 666f58a8475SBram Moolenaar wincmd w 667f58a8475SBram Moolenaar $ 668f58a8475SBram Moolenaar let w2lines = winline() 669f58a8475SBram Moolenaar call assert_equal(w2lines, w1lines) 670f58a8475SBram Moolenaar bwipe! 671f58a8475SBram Moolenaar bwipe! 672f58a8475SBram Moolenaarendfunc 673e828b762SBram Moolenaar 674*785fc656SBram Moolenaarfunc WriteDiffFiles(buf, list1, list2) 675e828b762SBram Moolenaar call writefile(a:list1, 'Xfile1') 676e828b762SBram Moolenaar call writefile(a:list2, 'Xfile2') 677*785fc656SBram Moolenaar if a:buf 678*785fc656SBram Moolenaar call term_sendkeys(a:buf, ":checktime\<CR>") 679*785fc656SBram Moolenaar endif 680e828b762SBram Moolenaarendfunc 681e828b762SBram Moolenaar 682*785fc656SBram Moolenaar" Verify a screendump with both the internal and external diff. 683e828b762SBram Moolenaarfunc VerifyBoth(buf, dumpfile, extra) 684e828b762SBram Moolenaar " trailing : for leaving the cursor on the command line 685*785fc656SBram Moolenaar for cmd in [":set diffopt=filler" . a:extra . "\<CR>:", ":set diffopt+=internal\<CR>:"] 686e828b762SBram Moolenaar call term_sendkeys(a:buf, cmd) 687e828b762SBram Moolenaar if VerifyScreenDump(a:buf, a:dumpfile, {}, cmd =~ 'internal' ? 'internal' : 'external') 688e828b762SBram Moolenaar break " don't let the next iteration overwrite the "failed" file. 689e828b762SBram Moolenaar endif 690e828b762SBram Moolenaar endfor 691e828b762SBram Moolenaarendfunc 692e828b762SBram Moolenaar 693*785fc656SBram Moolenaar" Verify a screendump with the internal diff only. 694*785fc656SBram Moolenaarfunc VerifyInternal(buf, dumpfile, extra) 695*785fc656SBram Moolenaar call term_sendkeys(a:buf, ":diffupdate!\<CR>") 696*785fc656SBram Moolenaar " trailing : for leaving the cursor on the command line 697*785fc656SBram Moolenaar call term_sendkeys(a:buf, ":set diffopt=internal,filler" . a:extra . "\<CR>:") 698*785fc656SBram Moolenaar call VerifyScreenDump(a:buf, a:dumpfile, {}) 699*785fc656SBram Moolenaarendfunc 700*785fc656SBram Moolenaar 701e828b762SBram Moolenaarfunc Test_diff_screen() 702e828b762SBram Moolenaar if !CanRunVimInTerminal() || !has('menu') 703e828b762SBram Moolenaar return 704e828b762SBram Moolenaar endif 705e828b762SBram Moolenaar " clean up already existing swap files, just in case 706e828b762SBram Moolenaar call delete('.Xfile1.swp') 707e828b762SBram Moolenaar call delete('.Xfile2.swp') 708e828b762SBram Moolenaar 709e828b762SBram Moolenaar " Test 1: Add a line in beginning of file 2 710*785fc656SBram Moolenaar call WriteDiffFiles(0, [1, 2, 3, 4, 5, 6, 7, 8, 9, 10], [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10]) 711e828b762SBram Moolenaar let buf = RunVimInTerminal('-d Xfile1 Xfile2', {}) 712e828b762SBram Moolenaar " Set autoread mode, ,so that Vim won't complain once we re-write the test 713e828b762SBram Moolenaar " files 714*785fc656SBram Moolenaar call term_sendkeys(buf, ":set autoread\<CR>\<c-w>w:set autoread\<CR>\<c-w>w") 715e828b762SBram Moolenaar 716e828b762SBram Moolenaar call VerifyBoth(buf, 'Test_diff_01', '') 717e828b762SBram Moolenaar 718e828b762SBram Moolenaar " Test 2: Add a line in beginning of file 1 719*785fc656SBram Moolenaar call WriteDiffFiles(buf, [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10], [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]) 720e828b762SBram Moolenaar call VerifyBoth(buf, 'Test_diff_02', '') 721e828b762SBram Moolenaar 722e828b762SBram Moolenaar " Test 3: Add a line at the end of file 2 723*785fc656SBram Moolenaar call WriteDiffFiles(buf, [1, 2, 3, 4, 5, 6, 7, 8, 9, 10], [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11]) 724e828b762SBram Moolenaar call VerifyBoth(buf, 'Test_diff_03', '') 725e828b762SBram Moolenaar 726e828b762SBram Moolenaar " Test 4: Add a line at the end of file 1 727*785fc656SBram Moolenaar call WriteDiffFiles(buf, [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11], [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]) 728e828b762SBram Moolenaar call VerifyBoth(buf, 'Test_diff_04', '') 729e828b762SBram Moolenaar 730e828b762SBram Moolenaar " Test 5: Add a line in the middle of file 2, remove on at the end of file 1 731*785fc656SBram Moolenaar call WriteDiffFiles(buf, [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11], [1, 2, 3, 4, 4, 5, 6, 7, 8, 9, 10]) 732e828b762SBram Moolenaar call VerifyBoth(buf, 'Test_diff_05', '') 733e828b762SBram Moolenaar 734e828b762SBram Moolenaar " Test 6: Add a line in the middle of file 1, remove on at the end of file 2 735*785fc656SBram Moolenaar call WriteDiffFiles(buf, [1, 2, 3, 4, 4, 5, 6, 7, 8, 9, 10], [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11]) 736e828b762SBram Moolenaar call VerifyBoth(buf, 'Test_diff_06', '') 737e828b762SBram Moolenaar 738e828b762SBram Moolenaar " Test 7 - 9: Test normal/patience/histogram diff algorithm 739*785fc656SBram Moolenaar call WriteDiffFiles(buf, ['#include <stdio.h>', '', '// Frobs foo heartily', 'int frobnitz(int foo)', '{', 740e828b762SBram Moolenaar \ ' int i;', ' for(i = 0; i < 10; i++)', ' {', ' printf("Your answer is: ");', 741e828b762SBram Moolenaar \ ' printf("%d\n", foo);', ' }', '}', '', 'int fact(int n)', '{', ' if(n > 1)', ' {', 742e828b762SBram Moolenaar \ ' return fact(n-1) * n;', ' }', ' return 1;', '}', '', 'int main(int argc, char **argv)', 743e828b762SBram Moolenaar \ '{', ' frobnitz(fact(10));', '}'], 744e828b762SBram Moolenaar \ ['#include <stdio.h>', '', 'int fib(int n)', '{', ' if(n > 2)', ' {', 745e828b762SBram Moolenaar \ ' return fib(n-1) + fib(n-2);', ' }', ' return 1;', '}', '', '// Frobs foo heartily', 746e828b762SBram Moolenaar \ 'int frobnitz(int foo)', '{', ' int i;', ' for(i = 0; i < 10; i++)', ' {', 747e828b762SBram Moolenaar \ ' printf("%d\n", foo);', ' }', '}', '', 748e828b762SBram Moolenaar \ 'int main(int argc, char **argv)', '{', ' frobnitz(fib(10));', '}']) 749e828b762SBram Moolenaar call term_sendkeys(buf, ":diffupdate!\<cr>") 750e828b762SBram Moolenaar call term_sendkeys(buf, ":set diffopt+=internal\<cr>") 751e828b762SBram Moolenaar call VerifyScreenDump(buf, 'Test_diff_07', {}) 752e828b762SBram Moolenaar 753e828b762SBram Moolenaar call term_sendkeys(buf, ":set diffopt+=algorithm:patience\<cr>") 754e828b762SBram Moolenaar call VerifyScreenDump(buf, 'Test_diff_08', {}) 755e828b762SBram Moolenaar 756e828b762SBram Moolenaar call term_sendkeys(buf, ":set diffopt+=algorithm:histogram\<cr>") 757e828b762SBram Moolenaar call VerifyScreenDump(buf, 'Test_diff_09', {}) 758e828b762SBram Moolenaar 759e828b762SBram Moolenaar " Test 10-11: normal/indent-heuristic 760e828b762SBram Moolenaar call term_sendkeys(buf, ":set diffopt&vim\<cr>") 761*785fc656SBram Moolenaar call WriteDiffFiles(buf, ['', ' def finalize(values)', '', ' values.each do |v|', ' v.finalize', ' end'], 762e828b762SBram Moolenaar \ ['', ' def finalize(values)', '', ' values.each do |v|', ' v.prepare', ' end', '', 763e828b762SBram Moolenaar \ ' values.each do |v|', ' v.finalize', ' end']) 764e828b762SBram Moolenaar call term_sendkeys(buf, ":diffupdate!\<cr>") 765e828b762SBram Moolenaar call term_sendkeys(buf, ":set diffopt+=internal\<cr>") 766e828b762SBram Moolenaar call VerifyScreenDump(buf, 'Test_diff_10', {}) 767e828b762SBram Moolenaar 768e828b762SBram Moolenaar call term_sendkeys(buf, ":set diffopt+=indent-heuristic\<cr>") 769e828b762SBram Moolenaar call VerifyScreenDump(buf, 'Test_diff_11', {}) 770e828b762SBram Moolenaar 771e828b762SBram Moolenaar " Test 12: diff the same file 772*785fc656SBram Moolenaar call WriteDiffFiles(buf, [1, 2, 3, 4, 5, 6, 7, 8, 9, 10], [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]) 773e828b762SBram Moolenaar call VerifyBoth(buf, 'Test_diff_12', '') 774e828b762SBram Moolenaar 775e828b762SBram Moolenaar " Test 13: diff an empty file 776*785fc656SBram Moolenaar call WriteDiffFiles(buf, [], []) 777e828b762SBram Moolenaar call VerifyBoth(buf, 'Test_diff_13', '') 778e828b762SBram Moolenaar 779e828b762SBram Moolenaar " Test 14: test diffopt+=icase 780*785fc656SBram Moolenaar call WriteDiffFiles(buf, ['a', 'b', 'cd'], ['A', 'b', 'cDe']) 781e828b762SBram Moolenaar call VerifyBoth(buf, 'Test_diff_14', " diffopt+=filler diffopt+=icase") 782e828b762SBram Moolenaar 783e828b762SBram Moolenaar " Test 15-16: test diffopt+=iwhite 784*785fc656SBram Moolenaar call WriteDiffFiles(buf, ['int main()', '{', ' printf("Hello, World!");', ' return 0;', '}'], 785e828b762SBram Moolenaar \ ['int main()', '{', ' if (0)', ' {', ' printf("Hello, World!");', ' return 0;', ' }', '}']) 786e828b762SBram Moolenaar call term_sendkeys(buf, ":diffupdate!\<cr>") 787e828b762SBram Moolenaar call term_sendkeys(buf, ":set diffopt&vim diffopt+=filler diffopt+=iwhite\<cr>") 788e828b762SBram Moolenaar call VerifyScreenDump(buf, 'Test_diff_15', {}) 789e828b762SBram Moolenaar call term_sendkeys(buf, ":set diffopt+=internal\<cr>") 790e828b762SBram Moolenaar call VerifyScreenDump(buf, 'Test_diff_16', {}) 791e828b762SBram Moolenaar 792*785fc656SBram Moolenaar " Test 17: test diffopt+=iblank 793*785fc656SBram Moolenaar call WriteDiffFiles(buf, ['a', ' ', 'cd', 'ef', 'xxx'], ['a', 'cd', '', 'ef', 'yyy']) 794*785fc656SBram Moolenaar call VerifyInternal(buf, 'Test_diff_17', " diffopt+=iblank") 795*785fc656SBram Moolenaar 796*785fc656SBram Moolenaar " Test 18: test diffopt+=iblank,iwhite / iwhiteall / iwhiteeol 797*785fc656SBram Moolenaar call VerifyInternal(buf, 'Test_diff_18', " diffopt+=iblank,iwhite") 798*785fc656SBram Moolenaar call VerifyInternal(buf, 'Test_diff_18', " diffopt+=iblank,iwhiteall") 799*785fc656SBram Moolenaar call VerifyInternal(buf, 'Test_diff_18', " diffopt+=iblank,iwhiteeol") 800*785fc656SBram Moolenaar 801*785fc656SBram Moolenaar " Test 19: test diffopt+=iwhiteeol 802*785fc656SBram Moolenaar call WriteDiffFiles(buf, ['a ', 'x', 'cd', 'ef', 'xx xx', 'foo', 'bar'], ['a', 'x', 'c d', ' ef', 'xx xx', 'foo', '', 'bar']) 803*785fc656SBram Moolenaar call VerifyInternal(buf, 'Test_diff_19', " diffopt+=iwhiteeol") 804*785fc656SBram Moolenaar 805*785fc656SBram Moolenaar " Test 19: test diffopt+=iwhiteall 806*785fc656SBram Moolenaar call VerifyInternal(buf, 'Test_diff_20', " diffopt+=iwhiteall") 807*785fc656SBram Moolenaar 808e828b762SBram Moolenaar " clean up 809e828b762SBram Moolenaar call StopVimInTerminal(buf) 810e828b762SBram Moolenaar call delete('Xfile1') 811e828b762SBram Moolenaar call delete('Xfile2') 812e828b762SBram Moolenaarendfunc 813e828b762SBram Moolenaar 814