mirror of
https://github.com/neovim/neovim.git
synced 2025-02-25 18:55:25 -06:00
test(oldtest): partially port v8.1.2381
Problem: Not all register related code is covered by tests.
Solution: Add more test cases. (Yegappan Lakshmanan, closes vim/vim#5301)
54c8d229f5
Can't be fully ported until "set clipboard=autoselect,autoselectplus" is
re-implemented for Test_clipboard_regs (and last visual selection to PRIMARY
selection works).
This commit is contained in:
parent
5864edac7b
commit
e8af051f1b
@ -207,6 +207,21 @@ func Test_mark_error()
|
||||
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
|
||||
|
||||
" Test for the getmarklist() function
|
||||
func Test_getmarklist()
|
||||
new
|
||||
@ -231,3 +246,5 @@ func Test_getmarklist()
|
||||
call assert_equal([], {}->getmarklist())
|
||||
close!
|
||||
endfunc
|
||||
|
||||
" vim: shiftwidth=2 sts=2 expandtab
|
||||
|
@ -174,15 +174,6 @@ func Test_get_register()
|
||||
|
||||
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\<C-R>!"')
|
||||
|
||||
@ -238,9 +229,101 @@ func Test_set_register()
|
||||
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\<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!
|
||||
endfunc
|
||||
|
||||
" Test for clipboard registers (* and +)
|
||||
func Test_clipboard_regs()
|
||||
throw 'skipped: needs clipboard=autoselect,autoselectplus'
|
||||
|
||||
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
|
||||
|
||||
func Test_v_register()
|
||||
enew
|
||||
call setline(1, 'nothing')
|
||||
|
@ -84,42 +84,127 @@ 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)
|
||||
normal p
|
||||
call assert_equal("a\txyzb", getline(1))
|
||||
|
||||
" 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)
|
||||
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))
|
||||
|
||||
" 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))
|
||||
|
||||
" 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 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=
|
||||
|
Loading…
Reference in New Issue
Block a user