vim-patch:8.1.2390: test94 is old style, fix 7.4.441 not tested

Problem:    Test94 is old style, fix 7.4.441 not tested.
Solution:   Turn test94 into a new style test.  Add tests for the fix in patch
            7.4.441. (Yegappan Lakshmanan, closes vim/vim#5316)
309976ec1f
This commit is contained in:
Jan Edmund Lazo 2020-11-25 01:26:52 -05:00
parent b0d3f47e90
commit a9186501f6
No known key found for this signature in database
GPG Key ID: 64915E6E9F735B15
2 changed files with 319 additions and 0 deletions

View File

@ -796,6 +796,27 @@ func Test_cmdwin_feedkeys()
call feedkeys("q:\<CR>", 'x') call feedkeys("q:\<CR>", 'x')
endfunc endfunc
" Tests for the issues fixed in 7.4.441.
" When 'cedit' is set to Ctrl-C, opening the command window hangs Vim
func Test_cmdwin_cedit()
exe "set cedit=\<C-c>"
normal! :
call assert_equal(1, winnr('$'))
let g:cmd_wintype = ''
func CmdWinType()
let g:cmd_wintype = getcmdwintype()
return ''
endfunc
call feedkeys("\<C-c>a\<C-R>=CmdWinType()\<CR>\<CR>")
echo input('')
call assert_equal('@', g:cmd_wintype)
set cedit&vim
delfunc CmdWinType
endfunc
func Test_buffers_lastused() func Test_buffers_lastused()
" check that buffers are sorted by time when wildmode has lastused " check that buffers are sorted by time when wildmode has lastused
edit bufc " oldest edit bufc " oldest

View File

@ -442,4 +442,302 @@ func Test_visual_put_in_block()
bwipe! bwipe!
endfunc endfunc
" Visual modes (v V CTRL-V) followed by an operator; count; repeating
func Test_visual_mode_op()
new
call append(0, '')
call setline(1, 'apple banana cherry')
call cursor(1, 1)
normal lvld.l3vd.
call assert_equal('a y', getline(1))
call setline(1, ['line 1 line 1', 'line 2 line 2', 'line 3 line 3',
\ 'line 4 line 4', 'line 5 line 5', 'line 6 line 6'])
call cursor(1, 1)
exe "normal Vcnewline\<Esc>j.j2Vd."
call assert_equal(['newline', 'newline'], getline(1, '$'))
call deletebufline('', 1, '$')
call setline(1, ['xxxxxxxxxxxxx', 'xxxxxxxxxxxxx', 'xxxxxxxxxxxxx',
\ 'xxxxxxxxxxxxx'])
exe "normal \<C-V>jlc \<Esc>l.l2\<C-V>c----\<Esc>l."
call assert_equal([' --------x',
\ ' --------x',
\ 'xxxx--------x',
\ 'xxxx--------x'], getline(1, '$'))
bwipe!
endfunc
" Visual mode maps (movement and text object)
" Visual mode maps; count; repeating
" - Simple
" - With an Ex command (custom text object)
func Test_visual_mode_maps()
new
call append(0, '')
func SelectInCaps()
let [line1, col1] = searchpos('\u', 'bcnW')
let [line2, col2] = searchpos('.\u', 'nW')
call setpos("'<", [0, line1, col1, 0])
call setpos("'>", [0, line2, col2, 0])
normal! gv
endfunction
vnoremap W /\u/s-1<CR>
vnoremap iW :<C-U>call SelectInCaps()<CR>
call setline(1, 'KiwiRaspberryDateWatermelonPeach')
call cursor(1, 1)
exe "normal vWcNo\<Esc>l.fD2vd."
call assert_equal('NoNoberryach', getline(1))
call setline(1, 'JambuRambutanBananaTangerineMango')
call cursor(1, 1)
exe "normal llviWc-\<Esc>l.l2vdl."
call assert_equal('--ago', getline(1))
vunmap W
vunmap iW
bwipe!
delfunc SelectInCaps
endfunc
" Operator-pending mode maps (movement and text object)
" - Simple
" - With Ex command moving the cursor
" - With Ex command and Visual selection (custom text object)
func Test_visual_oper_pending_mode_maps()
new
call append(0, '')
func MoveToCap()
call search('\u', 'W')
endfunction
func SelectInCaps()
let [line1, col1] = searchpos('\u', 'bcnW')
let [line2, col2] = searchpos('.\u', 'nW')
call setpos("'<", [0, line1, col1, 0])
call setpos("'>", [0, line2, col2, 0])
normal! gv
endfunction
onoremap W /\u/<CR>
onoremap <Leader>W :<C-U>call MoveToCap()<CR>
onoremap iW :<C-U>call SelectInCaps()<CR>
call setline(1, 'PineappleQuinceLoganberryOrangeGrapefruitKiwiZ')
call cursor(1, 1)
exe "normal cW-\<Esc>l.l2.l."
call assert_equal('----Z', getline(1))
call setline(1, 'JuniperDurianZ')
call cursor(1, 1)
exe "normal g?\WfD."
call assert_equal('WhavcreQhevnaZ', getline(1))
call setline(1, 'LemonNectarineZ')
call cursor(1, 1)
exe "normal yiWPlciWNew\<Esc>fr."
call assert_equal('LemonNewNewZ', getline(1))
ounmap W
ounmap <Leader>W
ounmap iW
bwipe!
delfunc MoveToCap
delfunc SelectInCaps
endfunc
" Patch 7.3.879: Properly abort Operator-pending mode for "dv:<Esc>" etc.
func Test_op_pend_mode_abort()
new
call append(0, '')
call setline(1, ['zzzz', 'zzzz'])
call cursor(1, 1)
exe "normal dV:\<CR>dv:\<CR>"
call assert_equal(['zzz'], getline(1, 2))
set nomodifiable
call assert_fails('exe "normal d:\<CR>"', 'E21:')
set modifiable
call feedkeys("dv:\<Esc>dV:\<Esc>", 'xt')
call assert_equal(['zzz'], getline(1, 2))
set nomodifiable
let v:errmsg = ''
call feedkeys("d:\<Esc>", 'xt')
call assert_true(v:errmsg !~# '^E21:')
set modifiable
bwipe!
endfunc
func Test_characterwise_visual_mode()
new
" characterwise visual mode: replace last line
$put ='a'
let @" = 'x'
normal v$p
call assert_equal('x', getline('$'))
" characterwise visual mode: delete middle line
call deletebufline('', 1, '$')
call append('$', ['a', 'b', 'c'])
normal G
normal kkv$d
call assert_equal(['', 'b', 'c'], getline(1, '$'))
" characterwise visual mode: delete middle two lines
call deletebufline('', 1, '$')
call append('$', ['a', 'b', 'c'])
normal Gkkvj$d
call assert_equal(['', 'c'], getline(1, '$'))
" characterwise visual mode: delete last line
call deletebufline('', 1, '$')
call append('$', ['a', 'b', 'c'])
normal Gv$d
call assert_equal(['', 'a', 'b', ''], getline(1, '$'))
" characterwise visual mode: delete last two lines
call deletebufline('', 1, '$')
call append('$', ['a', 'b', 'c'])
normal Gkvj$d
call assert_equal(['', 'a', ''], getline(1, '$'))
bwipe!
endfunc
func Test_characterwise_select_mode()
new
" Select mode maps
snoremap <lt>End> <End>
snoremap <lt>Down> <Down>
snoremap <lt>Del> <Del>
" characterwise select mode: delete middle line
call deletebufline('', 1, '$')
call append('$', ['a', 'b', 'c'])
exe "normal Gkkgh\<End>\<Del>"
call assert_equal(['', 'b', 'c'], getline(1, '$'))
" characterwise select mode: delete middle two lines
call deletebufline('', 1, '$')
call append('$', ['a', 'b', 'c'])
exe "normal Gkkgh\<Down>\<End>\<Del>"
call assert_equal(['', 'c'], getline(1, '$'))
" characterwise select mode: delete last line
call deletebufline('', 1, '$')
call append('$', ['a', 'b', 'c'])
exe "normal Ggh\<End>\<Del>"
call assert_equal(['', 'a', 'b', ''], getline(1, '$'))
" characterwise select mode: delete last two lines
call deletebufline('', 1, '$')
call append('$', ['a', 'b', 'c'])
exe "normal Gkgh\<Down>\<End>\<Del>"
call assert_equal(['', 'a', ''], getline(1, '$'))
sunmap <lt>End>
sunmap <lt>Down>
sunmap <lt>Del>
bwipe!
endfunc
func Test_linewise_select_mode()
new
" linewise select mode: delete middle line
call append('$', ['a', 'b', 'c'])
exe "normal GkkgH\<Del>"
call assert_equal(['', 'b', 'c'], getline(1, '$'))
" linewise select mode: delete middle two lines
call deletebufline('', 1, '$')
call append('$', ['a', 'b', 'c'])
exe "normal GkkgH\<Down>\<Del>"
call assert_equal(['', 'c'], getline(1, '$'))
" linewise select mode: delete last line
call deletebufline('', 1, '$')
call append('$', ['a', 'b', 'c'])
exe "normal GgH\<Del>"
call assert_equal(['', 'a', 'b'], getline(1, '$'))
" linewise select mode: delete last two lines
call deletebufline('', 1, '$')
call append('$', ['a', 'b', 'c'])
exe "normal GkgH\<Down>\<Del>"
call assert_equal(['', 'a'], getline(1, '$'))
bwipe!
endfunc
func Test_visual_mode_put()
new
" v_p: replace last character with line register at middle line
call append('$', ['aaa', 'bbb', 'ccc'])
normal G
-2yank
normal k$vp
call assert_equal(['', 'aaa', 'bb', 'aaa', '', 'ccc'], getline(1, '$'))
" v_p: replace last character with line register at middle line selecting
" newline
call deletebufline('', 1, '$')
call append('$', ['aaa', 'bbb', 'ccc'])
normal G
-2yank
normal k$v$p
call assert_equal(['', 'aaa', 'bb', 'aaa', 'ccc'], getline(1, '$'))
" v_p: replace last character with line register at last line
call deletebufline('', 1, '$')
call append('$', ['aaa', 'bbb', 'ccc'])
normal G
-2yank
normal $vp
call assert_equal(['', 'aaa', 'bbb', 'cc', 'aaa', ''], getline(1, '$'))
" v_p: replace last character with line register at last line selecting
" newline
call deletebufline('', 1, '$')
call append('$', ['aaa', 'bbb', 'ccc'])
normal G
-2yank
normal $v$p
call assert_equal(['', 'aaa', 'bbb', 'cc', 'aaa', ''], getline(1, '$'))
bwipe!
endfunc
func Test_select_mode_gv()
new
" gv in exclusive select mode after operation
call append('$', ['zzz ', 'äà '])
set selection=exclusive
normal Gkv3lyjv3lpgvcxxx
call assert_equal(['', 'zzz ', 'xxx '], getline(1, '$'))
" gv in exclusive select mode without operation
call deletebufline('', 1, '$')
call append('$', 'zzz ')
set selection=exclusive
exe "normal G0v3l\<Esc>gvcxxx"
call assert_equal(['', 'xxx '], getline(1, '$'))
set selection&vim
bwipe!
endfunc
" vim: shiftwidth=2 sts=2 expandtab " vim: shiftwidth=2 sts=2 expandtab