mirror of
https://github.com/vim/vim.git
synced 2025-09-23 03:43:49 -04:00
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 #5301)
This commit is contained in:
@@ -174,3 +174,20 @@ func Test_mark_error()
|
|||||||
call assert_fails('mark xx', 'E488:')
|
call assert_fails('mark xx', 'E488:')
|
||||||
call assert_fails('mark _', 'E191:')
|
call assert_fails('mark _', 'E191:')
|
||||||
endfunc
|
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
|
||||||
|
@@ -2,6 +2,8 @@
|
|||||||
" Tests for register operations
|
" Tests for register operations
|
||||||
"
|
"
|
||||||
|
|
||||||
|
source check.vim
|
||||||
|
|
||||||
" This test must be executed first to check for empty and unset registers.
|
" This test must be executed first to check for empty and unset registers.
|
||||||
func Test_aaa_empty_reg_test()
|
func Test_aaa_empty_reg_test()
|
||||||
call assert_fails('normal @@', 'E748:')
|
call assert_fails('normal @@', 'E748:')
|
||||||
@@ -236,15 +238,6 @@ func Test_get_register()
|
|||||||
|
|
||||||
call assert_equal('', getregtype('!'))
|
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
|
" Test for inserting an invalid register content
|
||||||
call assert_beeps('exe "normal i\<C-R>!"')
|
call assert_beeps('exe "normal i\<C-R>!"')
|
||||||
|
|
||||||
@@ -300,7 +293,97 @@ func Test_set_register()
|
|||||||
call feedkeys('qRhhq', 'xt')
|
call feedkeys('qRhhq', 'xt')
|
||||||
call assert_equal('llhh', getreg('r'))
|
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\<CR>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!
|
enew!
|
||||||
endfunc
|
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 \<Esc>"
|
||||||
|
call feedkeys("i\<C-O>@r\<C-R>=mode()\<CR>", 'xt')
|
||||||
|
call assert_equal('vimi editor', getline(1))
|
||||||
|
|
||||||
|
call setline(1, 'editor')
|
||||||
|
normal gg
|
||||||
|
call feedkeys("gR\<C-O>@r\<C-R>=mode()\<CR>", 'xt')
|
||||||
|
call assert_equal('vimReditor', getline(1))
|
||||||
|
|
||||||
|
bwipe!
|
||||||
|
endfunc
|
||||||
|
|
||||||
" vim: shiftwidth=2 sts=2 expandtab
|
" vim: shiftwidth=2 sts=2 expandtab
|
||||||
|
@@ -84,43 +84,130 @@ func Test_edit_change()
|
|||||||
set virtualedit=
|
set virtualedit=
|
||||||
endfunc
|
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()
|
func Test_paste_in_tab()
|
||||||
new
|
new
|
||||||
let @" = 'xyz'
|
call append(0, '')
|
||||||
set virtualedit=all
|
set virtualedit=all
|
||||||
call append(0, "a\tb")
|
|
||||||
call cursor(1, 2, 6)
|
" Tests for pasting a register with characterwise mode type
|
||||||
normal p
|
call setreg('"', 'xyz', 'c')
|
||||||
call assert_equal("a\txyzb", getline(1))
|
|
||||||
|
" paste (p) unnamed register at the beginning of a tab
|
||||||
call setline(1, "a\tb")
|
call setline(1, "a\tb")
|
||||||
call cursor(1, 2)
|
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
|
normal P
|
||||||
call assert_equal("axyz\tb", getline(1))
|
call assert_equal("axyz\tb", getline(1))
|
||||||
|
|
||||||
" Test for virtual block paste
|
" paste (p) unnamed register at the end of a tab
|
||||||
call setreg('"', 'xyz', 'b')
|
|
||||||
call setline(1, "a\tb")
|
call setline(1, "a\tb")
|
||||||
call cursor(1, 2, 6)
|
call cursor(1, 2, 6)
|
||||||
normal p
|
normal p
|
||||||
call assert_equal("a\txyzb", getline(1))
|
call assert_equal("a\txyzb", getline(1))
|
||||||
|
|
||||||
|
" paste (P) unnamed register at the end of a tab
|
||||||
call setline(1, "a\tb")
|
call setline(1, "a\tb")
|
||||||
call cursor(1, 2, 6)
|
call cursor(1, 2, 6)
|
||||||
normal P
|
normal P
|
||||||
call assert_equal("a xyz b", getline(1))
|
call assert_equal('a xyz b', getline(1))
|
||||||
|
|
||||||
" Test for virtual block paste with gp and gP
|
" 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 setline(1, "a\tb")
|
||||||
call cursor(1, 2, 6)
|
call cursor(1, 2, 6)
|
||||||
normal gp
|
normal gp
|
||||||
call assert_equal("a\txyzb", getline(1))
|
call assert_equal("a\txyzb", getline(1))
|
||||||
call assert_equal([0, 1, 6, 0, 12], getcurpos())
|
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 setline(1, "a\tb")
|
||||||
call cursor(1, 2, 6)
|
call cursor(1, 2, 6)
|
||||||
normal gP
|
normal gP
|
||||||
call assert_equal("a xyz b", getline(1))
|
call assert_equal('a xyz b', getline(1))
|
||||||
call assert_equal([0, 1, 12, 0 ,12], getcurpos())
|
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!
|
bwipe!
|
||||||
set virtualedit=
|
set virtualedit=
|
||||||
endfunc
|
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
|
||||||
|
@@ -742,6 +742,8 @@ static char *(features[]) =
|
|||||||
|
|
||||||
static int included_patches[] =
|
static int included_patches[] =
|
||||||
{ /* Add new patch number below this line */
|
{ /* Add new patch number below this line */
|
||||||
|
/**/
|
||||||
|
2381,
|
||||||
/**/
|
/**/
|
||||||
2380,
|
2380,
|
||||||
/**/
|
/**/
|
||||||
|
Reference in New Issue
Block a user