diff options
author | David Bürgin <676c7473@gmail.com> | 2015-03-22 00:47:39 +0100 |
---|---|---|
committer | Justin M. Keyes <justinkz@gmail.com> | 2015-03-25 16:33:24 -0400 |
commit | d2d99454e63c0e6649fddd52bbd9a10d27c2e347 (patch) | |
tree | d1d3395178b42dfd370c2e932f642abff1b34455 | |
parent | c56c035576f56f86405c40f3708bff49c996f1f8 (diff) | |
download | rneovim-d2d99454e63c0e6649fddd52bbd9a10d27c2e347.tar.gz rneovim-d2d99454e63c0e6649fddd52bbd9a10d27c2e347.tar.bz2 rneovim-d2d99454e63c0e6649fddd52bbd9a10d27c2e347.zip |
tests: Migrate legacy test 94 #2218
-rw-r--r-- | src/nvim/testdir/Makefile | 2 | ||||
-rw-r--r-- | src/nvim/testdir/test94.in | 94 | ||||
-rw-r--r-- | src/nvim/testdir/test94.ok | 20 | ||||
-rw-r--r-- | test/functional/legacy/094_visual_mode_operators_spec.lua | 153 |
4 files changed, 154 insertions, 115 deletions
diff --git a/src/nvim/testdir/Makefile b/src/nvim/testdir/Makefile index 8e0f853446..70e6f8ee4c 100644 --- a/src/nvim/testdir/Makefile +++ b/src/nvim/testdir/Makefile @@ -27,7 +27,7 @@ SCRIPTS := test_autoformat_join.out \ test76.out test78.out test79.out test80.out \ test82.out test83.out test85.out \ test86.out test87.out test88.out \ - test92.out test93.out test94.out \ + test92.out test93.out \ test96.out test99.out \ test_listlbr.out \ test_breakindent.out diff --git a/src/nvim/testdir/test94.in b/src/nvim/testdir/test94.in deleted file mode 100644 index a8b46112d2..0000000000 --- a/src/nvim/testdir/test94.in +++ /dev/null @@ -1,94 +0,0 @@ -Test for Visual mode and operators - -Tests for the two kinds of operations: Those executed with Visual mode -followed by an operator and those executed via Operator-pending mode. Also -part of the test are mappings, counts, and repetition with the . command. - -Test cases: -- Visual modes (v V CTRL-V) followed by an operator; count; repeating -- Visual mode maps; count; repeating - - Simple - - With an Ex command (custom text object) -- Operator-pending mode maps - - Simple - - With Ex command moving the cursor - - With Ex command and Visual selection (custom text object) -- Patch 7.3.879: Properly abort Ex command in Operator-pending mode - -STARTTEST -:so small.vim -: -:" User functions -:function MoveToCap() -: call search('\u', 'W') -:endfunction -:function 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 -: -:" Visual modes followed by operator -/^apple -lvld.l3vd.: -/^line 1 -Vcnewlinej.j2Vd.: -/^xxxx -jlc l.l2c----l.: -: -:" Visual mode maps (movement and text object) -:vnoremap W /\u/s-1<CR> -:vnoremap iW :<C-U>call SelectInCaps()<CR> -/^Kiwi -vWcNol.fD2vd.: -/^Jambu -llviWc-l.l2vdl.: -: -:" Operator-pending mode maps (movement and text object) -:onoremap W /\u/<CR> -:onoremap <Leader>W :<C-U>call MoveToCap()<CR> -:onoremap iW :<C-U>call SelectInCaps()<CR> -/^Pineapple -cW-l.l2.l.: -/^Juniper -g?\WfD.: -/^Lemon -yiWPlciWNewfr.: -: -:" Patch 7.3.879: Properly abort Operator-pending mode for "dv:<Esc>" etc. -/^zzzz -dV:
dv:
:set noma | let v:errmsg = '' -d:
:set ma | put = v:errmsg =~# '^E21' ? 'ok' : 'failed' -dv:dV::set noma | let v:errmsg = '' -d::set ma | put = v:errmsg =~# '^E21' ? 'failed' : 'ok' -:/^start:/+2,$w! test.out -:q! -ENDTEST - -start: - -apple banana cherry - -line 1 line 1 -line 2 line 2 -line 3 line 3 -line 4 line 4 -line 5 line 5 -line 6 line 6 - -xxxxxxxxxxxxx -xxxxxxxxxxxxx -xxxxxxxxxxxxx -xxxxxxxxxxxxx - -KiwiRaspberryDateWatermelonPeach -JambuRambutanBananaTangerineMango - -PineappleQuinceLoganberryOrangeGrapefruitKiwiZ -JuniperDurianZ -LemonNectarineZ - -zzzz -zzzz diff --git a/src/nvim/testdir/test94.ok b/src/nvim/testdir/test94.ok deleted file mode 100644 index 3996f2a3a4..0000000000 --- a/src/nvim/testdir/test94.ok +++ /dev/null @@ -1,20 +0,0 @@ -a y - -newline -newline - - --------x - --------x -xxxx--------x -xxxx--------x - -NoNoberryach ---ago - -----Z -WhavcreQhevnaZ -LemonNewNewZ - -zzz -ok -ok diff --git a/test/functional/legacy/094_visual_mode_operators_spec.lua b/test/functional/legacy/094_visual_mode_operators_spec.lua new file mode 100644 index 0000000000..c4aebe4ecc --- /dev/null +++ b/test/functional/legacy/094_visual_mode_operators_spec.lua @@ -0,0 +1,153 @@ +-- Test for Visual mode and operators. +-- +-- Tests for the two kinds of operations: Those executed with Visual mode +-- followed by an operator and those executed via Operator-pending mode. Also +-- part of the test are mappings, counts, and repetition with the . command. + +local helpers = require('test.functional.helpers') +local feed, insert, source = helpers.feed, helpers.insert, helpers.source +local clear, execute, expect = helpers.clear, helpers.execute, helpers.expect + +-- Vim script user functions needed for some of the test cases. +local function source_user_functions() + source([[ + function MoveToCap() + call search('\u', 'W') + endfunction + function 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 + ]]) +end + +describe('Visual mode and operator', function() + before_each(function() + clear() + source_user_functions() + end) + + it('simple change in Visual mode', function() + insert([[ + apple banana cherry + + line 1 line 1 + line 2 line 2 + line 3 line 3 + line 4 line 4 + line 5 line 5 + line 6 line 6 + + xxxxxxxxxxxxx + xxxxxxxxxxxxx + xxxxxxxxxxxxx + xxxxxxxxxxxxx]]) + + -- Exercise characterwise Visual mode plus operator, with count and repeat. + execute('/^apple') + feed('lvld.l3vd.') + + -- Same in linewise Visual mode. + execute('/^line 1') + feed('Vcnewline<esc>j.j2Vd.') + + -- Same in blockwise Visual mode. + execute('/^xxxx') + feed('<c-v>jlc <esc>l.l2<c-v>c----<esc>l.') + + -- Assert buffer contents. + expect([[ + a y + + newline + newline + + --------x + --------x + xxxx--------x + xxxx--------x]]) + end) + + it('Visual mode mapping', function() + insert([[ + KiwiRaspberryDateWatermelonPeach + JambuRambutanBananaTangerineMango]]) + + -- Set up Visual mode mappings. + execute('vnoremap W /\\u/s-1<CR>') + execute('vnoremap iW :<C-U>call SelectInCaps()<CR>') + + -- Do a simple change using the simple vmap, also with count and repeat. + execute('/^Kiwi') + feed('vWcNo<esc>l.fD2vd.') + + -- Same, using the vmap that maps to an Ex command. + execute('/^Jambu') + feed('llviWc-<esc>l.l2vdl.') + + -- Assert buffer contents. + expect([[ + NoNoberryach + --ago]]) + end) + + it('Operator-pending mode mapping', function() + insert([[ + PineappleQuinceLoganberryOrangeGrapefruitKiwiZ + JuniperDurianZ + LemonNectarineZ]]) + + -- Set up Operator-pending mode mappings. + execute('onoremap W /\\u/<CR>') + execute('onoremap <Leader>W :<C-U>call MoveToCap()<CR>') + execute('onoremap iW :<C-U>call SelectInCaps()<CR>') + + -- Do a simple change using the simple omap, also with count and repeat. + execute('/^Pineapple') + feed('cW-<esc>l.l2.l.') + + -- Same, using the omap that maps to an Ex command to move the cursor. + execute('/^Juniper') + feed('g?\\WfD.') + + -- Same, using the omap that uses Ex and Visual mode (custom text object). + execute('/^Lemon') + feed('yiWPlciWNew<esc>fr.') + + -- Assert buffer contents. + expect([[ + ----Z + WhavcreQhevnaZ + LemonNewNewZ]]) + end) + + -- Vim patch 7.3.879 addressed a bug where typing ":" (the start of an Ex + -- command) in Operator-pending mode couldn't be aborted with Escape, the + -- change operation implied by the operator was always executed. + it('patch 7.3.879', function() + insert([[ + zzzz + zzzz]]) + + -- Start a change operation consisting of operator plus Ex command, like + -- "dV:..." etc., then either + -- - complete the operation by pressing Enter: as a result the buffer is + -- changed, taking into account the v/V/<c-v> modifier given; or + -- - abort the operation by pressing Escape: no change to the buffer is + -- carried out. + execute('/^zzzz') + feed([[dV:<cr>dv:<cr>:set noma | let v:errmsg = ''<cr>]]) + feed([[d:<cr>:set ma | put = v:errmsg =~# '^E21' ? 'ok' : 'failed'<cr>]]) + feed([[dv:<esc>dV:<esc>:set noma | let v:errmsg = ''<cr>]]) + feed([[d:<esc>:set ma | put = v:errmsg =~# '^E21' ? 'failed' : 'ok'<cr>]]) + + -- Assert buffer contents. + expect([[ + zzz + ok + ok]]) + end) +end) |