To: vim_dev@googlegroups.com Subject: Patch 8.1.2381 Fcc: outbox From: Bram Moolenaar Mime-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit ------------ Patch 8.1.2381 Problem: Not all register related code is covered by tests. Solution: Add more test cases. (Yegappan Lakshmanan, closes #5301) Files: src/testdir/test_marks.vim, src/testdir/test_registers.vim, src/testdir/test_virtualedit.vim *** ../vim-8.1.2380/src/testdir/test_marks.vim 2019-02-04 21:14:41.901108644 +0100 --- src/testdir/test_marks.vim 2019-12-02 20:37:22.303827471 +0100 *************** *** 174,176 **** --- 174,193 ---- call assert_fails('mark xx', 'E488:') call assert_fails('mark _', 'E191:') endfunc + + " Test for :lockmarks when pasting content + func Test_lockmarks_with_put() + new + call append(0, repeat(['sky is blue'], 4)) + normal gg + 1,2yank r + put r + normal G + lockmarks put r + call assert_equal(2, line("'[")) + call assert_equal(3, line("']")) + + bwipe! + endfunc + + " vim: shiftwidth=2 sts=2 expandtab *** ../vim-8.1.2380/src/testdir/test_registers.vim 2019-12-01 18:16:14.553582042 +0100 --- src/testdir/test_registers.vim 2019-12-02 20:40:25.983154598 +0100 *************** *** 2,7 **** --- 2,9 ---- " Tests for register operations " + source check.vim + " This test must be executed first to check for empty and unset registers. func Test_aaa_empty_reg_test() call assert_fails('normal @@', 'E748:') *************** *** 236,250 **** call assert_equal('', getregtype('!')) - " Test for clipboard registers (* and +) - if has("clipboard_working") - call append(0, "text for clipboard test") - normal gg"*yiw - call assert_equal('text', getreg('*')) - normal gg2w"+yiw - call assert_equal('clipboard', getreg('+')) - endif - " Test for inserting an invalid register content call assert_beeps('exe "normal i\!"') --- 238,243 ---- *************** *** 300,306 **** --- 293,389 ---- call feedkeys('qRhhq', 'xt') call assert_equal('llhh', getreg('r')) + " Appending a list of characters to a register from different lines + let @r = '' + call append(0, ['abcdef', '123456']) + normal gg"ry3l + call cursor(2, 4) + normal "Ry3l + call assert_equal('abc456', @r) + + " Test for gP with multiple lines selected using characterwise motion + %delete + call append(0, ['vim editor', 'vim editor']) + let @r = '' + exe "normal ggwy/vim /e\gP" + call assert_equal(['vim editor', 'vim editor', 'vim editor'], getline(1, 3)) + + " Test for gP with . register + %delete + normal iabc + normal ".gp + call assert_equal('abcabc', getline(1)) + normal 0".gP + call assert_equal('abcabcabc', getline(1)) + enew! endfunc + " Test for clipboard registers (* and +) + func Test_clipboard_regs() + CheckNotGui + CheckFeature clipboard_working + + new + call append(0, "text for clipboard test") + normal gg"*yiw + call assert_equal('text', getreg('*')) + normal gg2w"+yiw + call assert_equal('clipboard', getreg('+')) + + " Test for replacing the clipboard register contents + set clipboard=unnamed + let @* = 'food' + normal ggviw"*p + call assert_equal('text', getreg('*')) + call assert_equal('food for clipboard test', getline(1)) + normal ggviw"*p + call assert_equal('food', getreg('*')) + call assert_equal('text for clipboard test', getline(1)) + + " Test for replacing the selection register contents + set clipboard=unnamedplus + let @+ = 'food' + normal ggviw"+p + call assert_equal('text', getreg('+')) + call assert_equal('food for clipboard test', getline(1)) + normal ggviw"+p + call assert_equal('food', getreg('+')) + call assert_equal('text for clipboard test', getline(1)) + + " Test for auto copying visually selected text to clipboard register + call setline(1, "text for clipboard test") + let @* = '' + set clipboard=autoselect + normal ggwwviwy + call assert_equal('clipboard', @*) + + " Test for auto copying visually selected text to selection register + let @+ = '' + set clipboard=autoselectplus + normal ggwviwy + call assert_equal('for', @+) + + set clipboard&vim + bwipe! + endfunc + + " Test for restarting the current mode (insert or virtual replace) after + " executing the contents of a register + func Test_put_reg_restart_mode() + new + call append(0, 'editor') + normal gg + let @r = "ivim \" + call feedkeys("i\@r\=mode()\", 'xt') + call assert_equal('vimi editor', getline(1)) + + call setline(1, 'editor') + normal gg + call feedkeys("gR\@r\=mode()\", 'xt') + call assert_equal('vimReditor', getline(1)) + + bwipe! + endfunc + " vim: shiftwidth=2 sts=2 expandtab *** ../vim-8.1.2380/src/testdir/test_virtualedit.vim 2019-12-01 18:16:14.553582042 +0100 --- src/testdir/test_virtualedit.vim 2019-12-02 20:37:22.303827471 +0100 *************** *** 84,126 **** set virtualedit= endfunc ! " Test for pasting before and after a tab character func Test_paste_in_tab() new ! let @" = 'xyz' set virtualedit=all ! call append(0, "a\tb") call cursor(1, 2, 6) normal p call assert_equal("a\txyzb", getline(1)) call setline(1, "a\tb") ! call cursor(1, 2) normal P ! call assert_equal("axyz\tb", getline(1)) ! " Test for virtual block paste call setreg('"', 'xyz', 'b') call setline(1, "a\tb") call cursor(1, 2, 6) normal p call assert_equal("a\txyzb", getline(1)) call setline(1, "a\tb") call cursor(1, 2, 6) normal P ! call assert_equal("a xyz b", getline(1)) ! " Test for virtual block paste with gp and gP call setline(1, "a\tb") call cursor(1, 2, 6) normal gp call assert_equal("a\txyzb", getline(1)) call assert_equal([0, 1, 6, 0, 12], getcurpos()) call setline(1, "a\tb") call cursor(1, 2, 6) normal gP ! call assert_equal("a xyz b", getline(1)) ! call assert_equal([0, 1, 12, 0 ,12], getcurpos()) bwipe! set virtualedit= endfunc --- 84,213 ---- set virtualedit= endfunc ! " Tests for pasting at the beginning, end and middle of a tab character ! " in virtual edit mode. func Test_paste_in_tab() new ! call append(0, '') set virtualedit=all ! ! " Tests for pasting a register with characterwise mode type ! call setreg('"', 'xyz', 'c') ! ! " paste (p) unnamed register at the beginning of a tab ! call setline(1, "a\tb") ! call cursor(1, 2, 0) ! normal p ! call assert_equal('a xyz b', getline(1)) ! ! " paste (P) unnamed register at the beginning of a tab ! call setline(1, "a\tb") ! call cursor(1, 2, 0) ! normal P ! call assert_equal("axyz\tb", getline(1)) ! ! " paste (p) unnamed register at the end of a tab ! call setline(1, "a\tb") call cursor(1, 2, 6) normal p call assert_equal("a\txyzb", getline(1)) + + " paste (P) unnamed register at the end of a tab call setline(1, "a\tb") ! call cursor(1, 2, 6) normal P ! call assert_equal('a xyz b', getline(1)) ! " Tests for pasting a register with blockwise mode type call setreg('"', 'xyz', 'b') + + " paste (p) unnamed register at the beginning of a tab + call setline(1, "a\tb") + call cursor(1, 2, 0) + normal p + call assert_equal('a xyz b', getline(1)) + + " paste (P) unnamed register at the beginning of a tab + call setline(1, "a\tb") + call cursor(1, 2, 0) + normal P + call assert_equal("axyz\tb", getline(1)) + + " paste (p) unnamed register at the end of a tab call setline(1, "a\tb") call cursor(1, 2, 6) normal p call assert_equal("a\txyzb", getline(1)) + + " paste (P) unnamed register at the end of a tab call setline(1, "a\tb") call cursor(1, 2, 6) normal P ! call assert_equal('a xyz b', getline(1)) ! ! " Tests for pasting with gp and gP in virtual edit mode ! " paste (gp) unnamed register at the beginning of a tab ! call setline(1, "a\tb") ! call cursor(1, 2, 0) ! normal gp ! call assert_equal('a xyz b', getline(1)) ! call assert_equal([0, 1, 12, 0, 12], getcurpos()) ! ! " paste (gP) unnamed register at the beginning of a tab ! call setline(1, "a\tb") ! call cursor(1, 2, 0) ! normal gP ! call assert_equal("axyz\tb", getline(1)) ! call assert_equal([0, 1, 5, 0, 5], getcurpos()) ! ! " paste (gp) unnamed register at the end of a tab call setline(1, "a\tb") call cursor(1, 2, 6) normal gp call assert_equal("a\txyzb", getline(1)) call assert_equal([0, 1, 6, 0, 12], getcurpos()) + + " paste (gP) unnamed register at the end of a tab call setline(1, "a\tb") call cursor(1, 2, 6) normal gP ! call assert_equal('a xyz b', getline(1)) ! call assert_equal([0, 1, 12, 0, 12], getcurpos()) ! ! " Tests for pasting a named register ! let @r = 'xyz' ! ! " paste (gp) named register in the middle of a tab ! call setline(1, "a\tb") ! call cursor(1, 2, 2) ! normal "rgp ! call assert_equal('a xyz b', getline(1)) ! call assert_equal([0, 1, 8, 0, 8], getcurpos()) ! ! " paste (gP) named register in the middle of a tab ! call setline(1, "a\tb") ! call cursor(1, 2, 2) ! normal "rgP ! call assert_equal('a xyz b', getline(1)) ! call assert_equal([0, 1, 7, 0, 7], getcurpos()) bwipe! set virtualedit= endfunc + + " Test for yanking a few spaces within a tab to a register + func Test_yank_in_tab() + new + let @r = '' + call setline(1, "a\tb") + set virtualedit=all + call cursor(1, 2, 2) + normal "ry5l + call assert_equal(' ', @r) + + bwipe! + set virtualedit= + endfunc + + " vim: shiftwidth=2 sts=2 expandtab *** ../vim-8.1.2380/src/version.c 2019-12-01 22:11:14.556778762 +0100 --- src/version.c 2019-12-02 20:40:54.343046602 +0100 *************** *** 744,745 **** --- 744,747 ---- { /* Add new patch number below this line */ + /**/ + 2381, /**/ -- hundred-and-one symptoms of being an internet addict: 175. You send yourself e-mail before you go to bed to remind you what to do when you wake up. /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ /// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ \\\ an exciting new programming language -- http://www.Zimbu.org /// \\\ help me help AIDS victims -- http://ICCF-Holland.org ///