mirror of
https://github.com/neovim/neovim.git
synced 2025-02-25 18:55:25 -06:00
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:
parent
37586eac42
commit
76b4b1977b
@ -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
|
||||
|
@ -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)
|
||||
|
@ -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'])
|
||||
|
@ -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()
|
||||
|
@ -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
|
||||
|
@ -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)
|
||||
|
15
test/functional/legacy/gf_spec.lua
Normal file
15
test/functional/legacy/gf_spec.lua
Normal 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)
|
Loading…
Reference in New Issue
Block a user