diff options
-rw-r--r-- | src/nvim/testdir/Makefile | 1 | ||||
-rw-r--r-- | src/nvim/testdir/test14.in | 94 | ||||
-rw-r--r-- | src/nvim/testdir/test14.ok | 26 | ||||
-rw-r--r-- | src/nvim/testdir/test_edit.vim | 16 | ||||
-rw-r--r-- | src/nvim/testdir/test_normal.vim | 92 | ||||
-rw-r--r-- | src/nvim/testdir/test_search.vim | 24 | ||||
-rw-r--r-- | src/nvim/testdir/test_substitute.vim | 49 | ||||
-rw-r--r-- | src/nvim/testdir/test_visual.vim | 24 |
8 files changed, 203 insertions, 123 deletions
diff --git a/src/nvim/testdir/Makefile b/src/nvim/testdir/Makefile index 6ce49e7596..56b7b99c1b 100644 --- a/src/nvim/testdir/Makefile +++ b/src/nvim/testdir/Makefile @@ -14,7 +14,6 @@ export NVIM_PRG := $(NVIM_PRG) export TMPDIR := $(abspath ../../../Xtest-tmpdir) SCRIPTS_DEFAULT = \ - test14.out \ test37.out \ test42.out \ test48.out \ diff --git a/src/nvim/testdir/test14.in b/src/nvim/testdir/test14.in deleted file mode 100644 index bef2e45431..0000000000 --- a/src/nvim/testdir/test14.in +++ /dev/null @@ -1,94 +0,0 @@ -Tests for "vaBiB", end could be wrong. -Also test ":s/pat/sub/" with different ~s in sub. -Also test for ^Vxff and ^Vo123 in Insert mode. -Also test "[m", "]m", "[M" and "]M" -Also test search() - -STARTTEST -/Start cursor here -vaBiBD:?Bug?,/Piece/-2w! test.out -/^- Bug -:s/u/~u~/ -:s/i/~u~/ -:s/o/~~~/ -:.w >>test.out -:let tt = "o\<C-V>65\<C-V>x42\<C-V>o103 \<C-V>33a\<C-V>xfg\<C-V>o78\<Esc>" -:exe "normal " . tt -:unlet tt -:.w >>test.out -:set vb -/^Piece -2]maA:.w >>test.out -j]maB:.w >>test.out -]maC:.w >>test.out -[maD:.w >>test.out -k2[maE:.w >>test.out -3[maF:.w >>test.out -]MaG:.w >>test.out -j2]MaH:.w >>test.out -]M]MaI:.w >>test.out -2[MaJ:.w >>test.out -k[MaK:.w >>test.out -3[MaL:.w >>test.out -:" -/^foobar -:let startline = line('.') -:call search('foobar', 'c') -:call append(line('$'), line('.') - startline) -j:call search('^$', 'c') -:call append(line('$'), line('.') - startline) -:call search('^$', 'bc') -:call append(line('$'), line('.') - startline) -/two -:call search('.', 'c') -:call append(line('$'), getline('.')[col('.') - 1:]) -:" -/^substitute -:s/foo/bar/ -:$put =@/ -/^substitute -:keeppatterns s/asdf/xyz/ -:$put =@/ -/^substitute -Y:$put =@0 -/bar /e -:$put =@0 --:keeppatterns /xyz -0dn:/^search()/,$w >>test.out -:qa! -ENDTEST - -- Bug in "vPPPP" on this text (Webb): - { - cmd; - { - cmd; /* <-- Start cursor here */ - { - } - } - } - -Piece of Java -{ - tt m1 { - t1; - } e1 - - tt m2 { - t2; - } e2 - - tt m3 { - if (x) - { - t3; - } - } e3 -} - -foobar - -substitute foo asdf - -one two -search() diff --git a/src/nvim/testdir/test14.ok b/src/nvim/testdir/test14.ok deleted file mode 100644 index 0aa2db3f97..0000000000 --- a/src/nvim/testdir/test14.ok +++ /dev/null @@ -1,26 +0,0 @@ -- Bug in "vPPPP" on this text (Webb): - { - } -- Bug uuun "vPPPP" uuuuuuuuun this text (Webb): -ABC !ag8 - tt m1 {A - tt m2 {B - tt m3 {C - tt m3 {DC - tt m1 {EA -{F - }G e1 - }H e3 -}I - }JH e3 - }K e2 -{LF -search() -0 -1 -1 -two -foo -^substitute -substitute bar xyz -xyz diff --git a/src/nvim/testdir/test_edit.vim b/src/nvim/testdir/test_edit.vim index fa7cfaa40c..de0f3ddb06 100644 --- a/src/nvim/testdir/test_edit.vim +++ b/src/nvim/testdir/test_edit.vim @@ -1454,3 +1454,19 @@ func Test_leave_insert_autocmd() au! InsertLeave iunmap x endfunc + +" Test for inserting characters using CTRL-V followed by a number. +func Test_edit_special_chars() + new + + if has("ebcdic") + let t = "o\<C-V>193\<C-V>xc2\<C-V>o303 \<C-V>90a\<C-V>xfg\<C-V>o578\<Esc>" + else + let t = "o\<C-V>65\<C-V>x42\<C-V>o103 \<C-V>33a\<C-V>xfg\<C-V>o78\<Esc>" + endif + + exe "normal " . t + call assert_equal("ABC !a\<C-O>g\<C-G>8", getline(2)) + + close! +endfunc diff --git a/src/nvim/testdir/test_normal.vim b/src/nvim/testdir/test_normal.vim index 9c0f0ee501..9733c73cfc 100644 --- a/src/nvim/testdir/test_normal.vim +++ b/src/nvim/testdir/test_normal.vim @@ -1353,11 +1353,21 @@ func! Test_normal23_K() bw! return endif - set keywordprg=man\ --pager=cat + + if has('mac') + " In MacOS, the option for specifying a pager is different + set keywordprg=man\ -P\ cat + else + set keywordprg=man\ --pager=cat + endif " Test for using man 2 let a = execute('unsilent norm! K') - call assert_match("man --pager=cat 'man'", a) + if has('mac') + call assert_match("man -P cat 'man'", a) + else + call assert_match("man --pager=cat 'man'", a) + endif " clean up let &keywordprg = k @@ -2542,3 +2552,81 @@ func Test_delete_until_paragraph() call assert_equal('', getline(1)) bwipe! endfunc + +" Test for '[m', ']m', '[M' and ']M' +" Jumping to beginning and end of methods in Java-like languages +func Test_java_motion() + new + a +Piece of Java +{ + tt m1 { + t1; + } e1 + + tt m2 { + t2; + } e2 + + tt m3 { + if (x) + { + t3; + } + } e3 +} +. + + normal gg + + normal 2]maA + call assert_equal("\ttt m1 {A", getline('.')) + call assert_equal([3, 9, 16], [line('.'), col('.'), virtcol('.')]) + + normal j]maB + call assert_equal("\ttt m2 {B", getline('.')) + call assert_equal([7, 9, 16], [line('.'), col('.'), virtcol('.')]) + + normal ]maC + call assert_equal("\ttt m3 {C", getline('.')) + call assert_equal([11, 9, 16], [line('.'), col('.'), virtcol('.')]) + + normal [maD + call assert_equal("\ttt m3 {DC", getline('.')) + call assert_equal([11, 9, 16], [line('.'), col('.'), virtcol('.')]) + + normal k2[maE + call assert_equal("\ttt m1 {EA", getline('.')) + call assert_equal([3, 9, 16], [line('.'), col('.'), virtcol('.')]) + + normal 3[maF + call assert_equal("{F", getline('.')) + call assert_equal([2, 2, 2], [line('.'), col('.'), virtcol('.')]) + + normal ]MaG + call assert_equal("\t}G e1", getline('.')) + call assert_equal([5, 3, 10], [line('.'), col('.'), virtcol('.')]) + + normal j2]MaH + call assert_equal("\t}H e3", getline('.')) + call assert_equal([16, 3, 10], [line('.'), col('.'), virtcol('.')]) + + normal ]M]M + normal aI + call assert_equal("}I", getline('.')) + call assert_equal([17, 2, 2], [line('.'), col('.'), virtcol('.')]) + + normal 2[MaJ + call assert_equal("\t}JH e3", getline('.')) + call assert_equal([16, 3, 10], [line('.'), col('.'), virtcol('.')]) + + normal k[MaK + call assert_equal("\t}K e2", getline('.')) + call assert_equal([9, 3, 10], [line('.'), col('.'), virtcol('.')]) + + normal 3[MaL + call assert_equal("{LF", getline('.')) + call assert_equal([2, 2, 2], [line('.'), col('.'), virtcol('.')]) + + close! +endfunc diff --git a/src/nvim/testdir/test_search.vim b/src/nvim/testdir/test_search.vim index 08ccc8d4fe..f4fe4051e3 100644 --- a/src/nvim/testdir/test_search.vim +++ b/src/nvim/testdir/test_search.vim @@ -585,3 +585,27 @@ func Test_one_error_msg() " This was also giving an internal error call assert_fails('call search(" \\((\\v[[=P=]]){185}+ ")', 'E871:') endfunc + +" Test for the search() function with match at the cursor position +func Test_search_match_at_curpos() + new + call append(0, ['foobar', '', 'one two', '']) + + normal gg + + call search('foobar', 'c') + call assert_equal([1, 1], [line('.'), col('.')]) + + normal j + call search('^$', 'c') + call assert_equal([2, 1], [line('.'), col('.')]) + + call search('^$', 'bc') + call assert_equal([2, 1], [line('.'), col('.')]) + + exe "normal /two\<CR>" + call search('.', 'c') + call assert_equal([3, 5], [line('.'), col('.')]) + + close! +endfunc diff --git a/src/nvim/testdir/test_substitute.vim b/src/nvim/testdir/test_substitute.vim index 2738b00f2f..e074a85530 100644 --- a/src/nvim/testdir/test_substitute.vim +++ b/src/nvim/testdir/test_substitute.vim @@ -641,3 +641,52 @@ func Test_nocatch_sub_failure_handling() bwipe! endfunc + +" Test ":s/pat/sub/" with different ~s in sub. +func Test_replace_with_tilde() + new + " Set the last replace string to empty + s/^$// + call append(0, ['- Bug in "vPPPP" on this text:']) + normal gg + s/u/~u~/ + call assert_equal('- Bug in "vPPPP" on this text:', getline(1)) + s/i/~u~/ + call assert_equal('- Bug uuun "vPPPP" on this text:', getline(1)) + s/o/~~~/ + call assert_equal('- Bug uuun "vPPPP" uuuuuuuuun this text:', getline(1)) + close! +endfunc + +func Test_replace_keeppatterns() + new + a +foobar + +substitute foo asdf + +one two +. + + normal gg + /^substitute + s/foo/bar/ + call assert_equal('foo', @/) + call assert_equal('substitute bar asdf', getline('.')) + + /^substitute + keeppatterns s/asdf/xyz/ + call assert_equal('^substitute', @/) + call assert_equal('substitute bar xyz', getline('.')) + + exe "normal /bar /e\<CR>" + call assert_equal(15, col('.')) + normal - + keeppatterns /xyz + call assert_equal('bar ', @/) + call assert_equal('substitute bar xyz', getline('.')) + exe "normal 0dn" + call assert_equal('xyz', getline('.')) + + close! +endfunc diff --git a/src/nvim/testdir/test_visual.vim b/src/nvim/testdir/test_visual.vim index 74afc72f03..f69273635c 100644 --- a/src/nvim/testdir/test_visual.vim +++ b/src/nvim/testdir/test_visual.vim @@ -411,3 +411,27 @@ func Test_Visual_paragraph_textobject() bwipe! endfunc + +" Tests for "vaBiB", end could be wrong. +func Test_Visual_Block() + new + a +- Bug in "vPPPP" on this text: + { + cmd; + { + cmd;\t/* <-- Start cursor here */ + { + } + } + } +. + normal gg + call search('Start cursor here') + normal vaBiBD + call assert_equal(['- Bug in "vPPPP" on this text:', + \ "\t{", + \ "\t}"], getline(1, '$')) + + close! +endfunc |