0
0
mirror of https://github.com/vim/vim.git synced 2025-07-26 11:04:33 -04:00

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 #7073)
This commit is contained in:
Bram Moolenaar 2020-10-04 16:16:54 +02:00
parent 1310660557
commit d1ad99b654
8 changed files with 122 additions and 24 deletions

View File

@ -183,6 +183,21 @@ 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'])
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

@ -434,6 +434,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
@ -838,6 +850,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>"')
@ -886,6 +910,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
@ -1856,7 +1892,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: äüöß')
@ -1876,6 +1912,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

@ -274,6 +274,9 @@ func Test_get_register()
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

@ -913,7 +913,6 @@ func Test_n_arg()
call assert_equal([], readfile('Xtestout'))
call delete('Xtestout')
endif
call delete('Xafter')
endfunc
" Test for the "-h" (help) argument
@ -945,7 +944,6 @@ func Test_E_arg()
call assert_equal([], readfile('Xtestout'))
call delete('Xtestout')
endif
call delete('Xafter')
endfunc
" Test for too many edit argument errors

View File

@ -683,15 +683,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!")
@ -699,17 +703,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

@ -1,5 +1,7 @@
" Tests for various Visual modes.
source shared.vim
func Test_block_shift_multibyte()
" Uses double-wide character.
split
@ -636,12 +638,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 _
@ -905,15 +901,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

@ -750,6 +750,8 @@ static char *(features[]) =
static int included_patches[] =
{ /* Add new patch number below this line */
/**/
1799,
/**/
1798,
/**/