vim-patch:8.2.1799: some Normal mode commands not fully tested

Problem:    Some Normal mode commands not fully tested.
Solution:   Add a few more tests. (Yegappan Lakshmanan, closes vim/vim#7073)
d1ad99b654

Cherry-pick test_registers.vim change from patch 8.2.0644.
This commit is contained in:
zeertzjq 2022-07-20 08:16:02 +08:00
parent 37586eac42
commit 76b4b1977b
7 changed files with 136 additions and 22 deletions

View File

@ -191,6 +191,22 @@ func Test_gf_error()
au! InsertCharPre
bwipe!
" gf is not allowed when buffer is locked
new
augroup Test_gf
au!
au OptionSet diff norm! gf
augroup END
call setline(1, ['Xfile1', 'line2', 'line3', 'line4'])
" Nvim does not support test_override()
" call test_override('starting', 1)
" call assert_fails('diffthis', 'E788:')
" call test_override('starting', 0)
augroup Test_gf
au!
augroup END
bw!
endfunc
" If a file is not found by 'gf', then 'includeexpr' should be used to locate

View File

@ -122,6 +122,24 @@ func Test_gd()
call XTest_goto_decl('gd', lines, 3, 14)
endfunc
" Using gd to jump to a declaration in a fold
func Test_gd_with_fold()
new
let lines =<< trim END
#define ONE 1
#define TWO 2
#define THREE 3
TWO
END
call setline(1, lines)
1,3fold
call feedkeys('Ggd', 'xt')
call assert_equal(2, line('.'))
call assert_equal(-1, foldclosedend(2))
bw!
endfunc
func Test_gd_not_local()
let lines =<< trim [CODE]
int func1(void)

View File

@ -492,6 +492,18 @@ func Test_normal11_showcmd()
call assert_equal(3, line('$'))
exe "norm! 0d3\<del>2l"
call assert_equal('obar2foobar3', getline('.'))
" test for the visual block size displayed in the status line
call setline(1, ['aaaaa', 'bbbbb', 'ccccc'])
call feedkeys("ggl\<C-V>lljj", 'xt')
redraw!
call assert_match('3x3$', Screenline(&lines))
call feedkeys("\<C-V>", 'xt')
" test for visually selecting a multi-byte character
call setline(1, ["\U2206"])
call feedkeys("ggv", 'xt')
redraw!
call assert_match('1-3$', Screenline(&lines))
call feedkeys("v", 'xt')
bw!
endfunc
@ -897,6 +909,18 @@ func Test_vert_scroll_cmds()
exe "normal \<C-Y>\<C-Y>"
call assert_equal(h + 1, line('w$'))
" Test for CTRL-Y from the first line and CTRL-E from the last line
%d
set scrolloff=2
call setline(1, range(1, 4))
exe "normal gg\<C-Y>"
call assert_equal(1, line('w0'))
call assert_equal(1, line('.'))
exe "normal G4\<C-E>\<C-E>"
call assert_equal(4, line('w$'))
call assert_equal(4, line('.'))
set scrolloff&
" Using <PageUp> and <PageDown> in an empty buffer should beep
%d
call assert_beeps('exe "normal \<PageUp>"')
@ -945,6 +969,18 @@ func Test_vert_scroll_cmds()
exe "normal \<C-D>"
call assert_equal(50, line('w0'))
" Test for <S-CR>. Page down.
%d
call setline(1, range(1, 100))
call feedkeys("\<S-CR>", 'xt')
call assert_equal(14, line('w0'))
call assert_equal(28, line('w$'))
" Test for <S-->. Page up.
call feedkeys("\<S-->", 'xt')
call assert_equal(1, line('w0'))
call assert_equal(15, line('w$'))
set foldenable&
close!
endfunc
@ -1953,7 +1989,7 @@ func Test_normal_section()
close!
endfunc
" Test for ~ command
" Test for changing case using u, U, gu, gU and ~ (tilde) commands
func Test_normal30_changecase()
new
call append(0, 'This is a simple test: äüöß')
@ -1973,6 +2009,9 @@ func Test_normal30_changecase()
call assert_equal('this is a SIMPLE TEST: ÄÜÖSS', getline('.'))
norm! V~
call assert_equal('THIS IS A simple test: äüöss', getline('.'))
call assert_beeps('norm! c~')
%d
call assert_beeps('norm! ~')
" Test for changing case across lines using 'whichwrap'
call setline(1, ['aaaaaa', 'aaaaaa'])

View File

@ -279,7 +279,12 @@ func Test_get_register()
call feedkeys(":\<C-R>r\<Esc>", 'xt')
call assert_equal("a\rb", histget(':', -1)) " Modified because of #6137
call assert_fails('let r = getreg("=", [])', 'E745:')
call assert_fails('let r = getreg("=", 1, [])', 'E745:')
enew!
" Using a register in operator-pending mode should fail
call assert_beeps('norm! c"')
endfunc
func Test_set_register()

View File

@ -670,15 +670,19 @@ func Test_tabline_tabmenu()
call assert_equal(3, tabpagenr('$'))
" go to tab page 2 in operator-pending mode (should beep)
call assert_beeps('call feedkeys("f" .. TabLineSelectPageCode(2), "Lx!")')
call assert_beeps('call feedkeys("c" .. TabLineSelectPageCode(2), "Lx!")')
call assert_equal(2, tabpagenr())
call assert_equal(3, tabpagenr('$'))
" open new tab page before tab page 1 in operator-pending mode (should beep)
call assert_beeps('call feedkeys("f" .. TabMenuNewItemCode(1), "Lx!")')
call assert_beeps('call feedkeys("c" .. TabMenuNewItemCode(1), "Lx!")')
call assert_equal(1, tabpagenr())
call assert_equal(4, tabpagenr('$'))
" open new tab page after tab page 3 in normal mode
call feedkeys(TabMenuNewItemCode(4), "Lx!")
call assert_equal(4, tabpagenr())
call assert_equal(4, tabpagenr('$'))
call assert_equal(5, tabpagenr('$'))
" go to tab page 2 in insert mode
call feedkeys("i" .. TabLineSelectPageCode(2) .. "\<C-C>", "Lx!")
@ -686,17 +690,17 @@ func Test_tabline_tabmenu()
" close tab page 2 in insert mode
call feedkeys("i" .. TabMenuCloseItemCode(2) .. "\<C-C>", "Lx!")
call assert_equal(3, tabpagenr('$'))
call assert_equal(4, tabpagenr('$'))
" open new tab page before tab page 3 in insert mode
call feedkeys("i" .. TabMenuNewItemCode(3) .. "\<C-C>", "Lx!")
call assert_equal(3, tabpagenr())
call assert_equal(4, tabpagenr('$'))
call assert_equal(5, tabpagenr('$'))
" open new tab page after tab page 4 in insert mode
call feedkeys("i" .. TabMenuNewItemCode(5) .. "\<C-C>", "Lx!")
call assert_equal(5, tabpagenr())
call assert_equal(5, tabpagenr('$'))
call assert_equal(6, tabpagenr('$'))
%bw!
endfunc

View File

@ -642,12 +642,6 @@ func Test_characterwise_visual_mode()
normal Gkvj$d
call assert_equal(['', 'a', ''], getline(1, '$'))
" characterwise visual mode: use a count with the visual mode
%d _
call setline(1, 'one two three')
norm! vy5vy
call assert_equal('one t', @")
" characterwise visual mode: use a count with the visual mode from the last
" line in the buffer
%d _
@ -1195,15 +1189,38 @@ func Test_exclusive_selection()
close!
endfunc
" Test for starting visual mode with a count.
" This test should be run without any previous visual modes. So this should be
" run as a first test.
func Test_AAA_start_visual_mode_with_count()
new
call setline(1, ['aaaaaaa', 'aaaaaaa', 'aaaaaaa', 'aaaaaaa'])
normal! gg2Vy
call assert_equal("aaaaaaa\naaaaaaa\n", @")
close!
" Test for starting linewise visual with a count.
" This test needs to be run without any previous visual mode. Otherwise the
" count will use the count from the previous visual mode.
func Test_linewise_visual_with_count()
let after =<< trim [CODE]
call setline(1, ['one', 'two', 'three', 'four'])
norm! 3Vy
call assert_equal("one\ntwo\nthree\n", @")
call writefile(v:errors, 'Xtestout')
qall!
[CODE]
if RunVim([], after, '')
call assert_equal([], readfile('Xtestout'))
call delete('Xtestout')
endif
endfunc
" Test for starting characterwise visual with a count.
" This test needs to be run without any previous visual mode. Otherwise the
" count will use the count from the previous visual mode.
func Test_characterwise_visual_with_count()
let after =<< trim [CODE]
call setline(1, ['one two', 'three'])
norm! l5vy
call assert_equal("ne tw", @")
call writefile(v:errors, 'Xtestout')
qall!
[CODE]
if RunVim([], after, '')
call assert_equal([], readfile('Xtestout'))
call delete('Xtestout')
endif
endfunc
" Test for visually selecting an inner block (iB)

View File

@ -0,0 +1,15 @@
local helpers = require('test.functional.helpers')(after_each)
local clear = helpers.clear
local command = helpers.command
local eq = helpers.eq
local pcall_err = helpers.pcall_err
describe('gf', function()
before_each(clear)
it('is not allowed when buffer is locked', function()
command('au OptionSet diff norm! gf')
command([[call setline(1, ['Xfile1', 'line2', 'line3', 'line4'])]])
eq('Vim(normal):E788: Not allowed to edit another buffer now', pcall_err(command, 'diffthis'))
end)
end)