summaryrefslogtreecommitdiff
path: root/src/testdir
diff options
context:
space:
mode:
authorBram Moolenaar <Bram@vim.org>2016-07-24 17:33:05 +0200
committerBram Moolenaar <Bram@vim.org>2016-07-24 17:33:05 +0200
commit6835dc61aebca2b602d85a9d63c449ace58683b4 (patch)
tree4b7803caa1400d5c9de8c9ce25929e0288603876 /src/testdir
parent73ac0c4281a3606651604a3cbcc334bfb3859a87 (diff)
downloadvim-6835dc61aebca2b602d85a9d63c449ace58683b4.zip
patch 7.4.2100
Problem: "cgn" and "dgn" do not work correctly with a single character match and the replacement includes the searched pattern. (John Beckett) Solution: If the match is found in the wrong column try in the next column. Turn the test into new style. (Christian Brabandt)
Diffstat (limited to 'src/testdir')
-rw-r--r--src/testdir/Make_all.mak1
-rw-r--r--src/testdir/test53.in59
-rw-r--r--src/testdir/test53.ok26
-rw-r--r--src/testdir/test_gn.vim93
4 files changed, 94 insertions, 85 deletions
diff --git a/src/testdir/Make_all.mak b/src/testdir/Make_all.mak
index 4e4f43b02..193679810 100644
--- a/src/testdir/Make_all.mak
+++ b/src/testdir/Make_all.mak
@@ -171,6 +171,7 @@ NEW_TESTS = test_arglist.res \
test_cscope.res \
test_digraph.res \
test_farsi.res \
+ test_gn.res \
test_hardcopy.res \
test_history.res \
test_increment.res \
diff --git a/src/testdir/test53.in b/src/testdir/test53.in
index 7c35b2e85..b5f97f282 100644
--- a/src/testdir/test53.in
+++ b/src/testdir/test53.in
@@ -4,8 +4,6 @@ Note that the end-of-line moves the cursor to the next test line.
Also test match() and matchstr()
-Also test the gn command and repeating it.
-
STARTTEST
:so small.vim
/^start:/
@@ -53,35 +51,6 @@ dit
:put =match('abc', '\zs', 2, 1) " 2
:put =match('abc', '\zs', 3, 1) " 3
:put =match('abc', '\zs', 4, 1) " -1
-/^foobar
-gncsearchmatch/one\_s*two\_s
-:1
-gnd
-/[a]bcdx
-:1
-2gnd/join
-/$
-0gnd
-/\>\zs
-0gnd/^
-gnd$h/\zs
-gnd/[u]niquepattern/s
-vlgnd
-/mother
-:set selection=exclusive
-$cgNmongoose/i
-cgnj
-:" Make sure there is no other match y uppercase.
-/x59
-gggnd
-:" test repeating dgn
-/^Johnny
-ggdgn.
-:" test repeating gUgn
-/^Depp
-gggUgn.
-gg/a:0\@!\zs\d\+
-nygnop
:/^start:/,/^end:/wq! test.out
ENDTEST
@@ -103,32 +72,4 @@ innertext object
</b>
</begin>
SEARCH:
-foobar
-one
-two
-abcdx | abcdx | abcdx
-join
-lines
-zero width pattern
-delete first and last chars
-uniquepattern uniquepattern
-my very excellent mother just served us nachos
-for (i=0; i<=10; i++)
-a:10
-
-a:1
-
-a:20
-Y
-text
-Y
---1
-Johnny
---2
-Johnny
---3
-Depp
---4
-Depp
---5
end:
diff --git a/src/testdir/test53.ok b/src/testdir/test53.ok
index 05206972a..d57d86bbb 100644
--- a/src/testdir/test53.ok
+++ b/src/testdir/test53.ok
@@ -42,30 +42,4 @@ a
3
-1
SEARCH:
-searchmatch
-abcdx | | abcdx
-join lines
-zerowidth pattern
-elete first and last char
- uniquepattern
-my very excellent mongoose just served us nachos
-for (j=0; i<=10; i++)
-a:10
-
-a:1
-1
-
-a:20
-
-text
-Y
---1
-
---2
-
---3
-DEPP
---4
-DEPP
---5
end:
diff --git a/src/testdir/test_gn.vim b/src/testdir/test_gn.vim
new file mode 100644
index 000000000..3eca99bd9
--- /dev/null
+++ b/src/testdir/test_gn.vim
@@ -0,0 +1,93 @@
+" Test for gn command
+
+func Test_gn_command()
+ noa new
+ " replace a single char by itsself quoted:
+ call setline('.', 'abc x def x ghi x jkl')
+ let @/='x'
+ exe "norm! cgn'x'\<esc>.."
+ call assert_equal("abc 'x' def 'x' ghi 'x' jkl", getline('.'))
+ sil! %d_
+ " simple search match
+ call setline('.', 'foobar')
+ let @/='foobar'
+ exe "norm! gncsearchmatch"
+ call assert_equal('searchmatch', getline('.'))
+ sil! %d _
+ " replace a multi-line match
+ call setline('.', ['', 'one', 'two'])
+ let @/='one\_s*two\_s'
+ exe "norm! gnceins\<CR>zwei"
+ call assert_equal(['','eins','zwei'], getline(1,'$'))
+ sil! %d _
+ " test count argument
+ call setline('.', ['', 'abcdx | abcdx | abcdx'])
+ let @/='[a]bcdx'
+ exe "norm! 2gnd"
+ call assert_equal(['','abcdx | | abcdx'], getline(1,'$'))
+ sil! %d _
+ " join lines
+ call setline('.', ['join ', 'lines'])
+ let @/='$'
+ exe "norm! 0gnd"
+ call assert_equal(['join lines'], getline(1,'$'))
+ sil! %d _
+ " zero-width match
+ call setline('.', ['', 'zero width pattern'])
+ let @/='\>\zs'
+ exe "norm! 0gnd"
+ call assert_equal(['', 'zerowidth pattern'], getline(1,'$'))
+ sil! %d _
+ " delete first and last chars
+ call setline('.', ['delete first and last chars'])
+ let @/='^'
+ exe "norm! 0gnd$"
+ let @/='\zs'
+ exe "norm! gnd"
+ call assert_equal(['elete first and last char'], getline(1,'$'))
+ sil! %d _
+ " using visual mode
+ call setline('.', ['', 'uniquepattern uniquepattern'])
+ exe "norm! /[u]niquepattern/s\<cr>vlgnd"
+ call assert_equal(['', ' uniquepattern'], getline(1,'$'))
+ sil! %d _
+ " backwards search
+ call setline('.', ['my very excellent mother just served us nachos'])
+ let @/='mother'
+ exe "norm! $cgNmongoose"
+ call assert_equal(['my very excellent mongoose just served us nachos'], getline(1,'$'))
+ sil! %d _
+ " search for single char
+ call setline('.', ['','for (i=0; i<=10; i++)'])
+ let @/='i'
+ exe "norm! cgnj"
+ call assert_equal(['','for (j=0; i<=10; i++)'], getline(1,'$'))
+ sil! %d _
+ " search hex char
+ call setline('.', ['','Y'])
+ set noignorecase
+ let @/='\%x59'
+ exe "norm! gnd"
+ call assert_equal(['',''], getline(1,'$'))
+ sil! %d _
+ " test repeating gdn
+ call setline('.', ['', '1', 'Johnny', '2', 'Johnny', '3'])
+ let @/='Johnny'
+ exe "norm! dgn."
+ call assert_equal(['','1', '', '2', '', '3'], getline(1,'$'))
+ sil! %d _
+ " test repeating gUgn
+ call setline('.', ['', '1', 'Depp', '2', 'Depp', '3'])
+ let @/='Depp'
+ exe "norm! gUgn."
+ call assert_equal(['', '1', 'DEPP', '2', 'DEPP', '3'], getline(1,'$'))
+ sil! %d _
+ " test using look-ahead assertions
+ call setline('.', ['a:10', '', 'a:1', '', 'a:20'])
+ let @/='a:0\@!\zs\d\+'
+ exe "norm! 2nygno\<esc>p"
+ call assert_equal(['a:10', '', 'a:1', '1', '', 'a:20'], getline(1,'$'))
+ sil! %d _
+endfu
+
+" vim: tabstop=2 shiftwidth=0 expandtab