diff src/testdir/test_virtualedit.vim @ 18784:7b57a80f70f6 v8.1.2381

patch 8.1.2381: not all register related code is covered by tests Commit: https://github.com/vim/vim/commit/54c8d229f54e36e89fcd5d84e523fd894d018024 Author: Bram Moolenaar <Bram@vim.org> Date: Mon Dec 2 20:41:39 2019 +0100 patch 8.1.2381: not all register related code is covered by tests Problem: Not all register related code is covered by tests. Solution: Add more test cases. (Yegappan Lakshmanan, closes https://github.com/vim/vim/issues/5301)
author Bram Moolenaar <Bram@vim.org>
date Mon, 02 Dec 2019 20:45:03 +0100
parents 50fde4e20790
children f966b20bb74d
line wrap: on
line diff
--- a/src/testdir/test_virtualedit.vim
+++ b/src/testdir/test_virtualedit.vim
@@ -84,43 +84,130 @@ func Test_edit_change()
   set virtualedit=
 endfunc
 
-" Test for pasting before and after a tab character
+" Tests for pasting at the beginning, end and middle of a tab character
+" in virtual edit mode.
 func Test_paste_in_tab()
   new
-  let @" = 'xyz'
+  call append(0, '')
   set virtualedit=all
-  call append(0, "a\tb")
-  call cursor(1, 2, 6)
+
+  " 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\txyzb", getline(1))
+  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)
+  call cursor(1, 2, 0)
   normal P
   call assert_equal("axyz\tb", getline(1))
 
-  " Test for virtual block paste
-  call setreg('"', 'xyz', 'b')
+  " 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))
+  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))
 
-  " Test for virtual block paste with gp and gP
+  " 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())
+  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