summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorYegappan Lakshmanan <yegappan@yahoo.com>2021-05-31 19:23:01 +0200
committerBram Moolenaar <Bram@vim.org>2021-05-31 19:23:01 +0200
commit2ac7184d34cd01e2b76bd1f704fd6a4b4af10239 (patch)
treefcabc6d151a256f814e20bcf197b41e5aa4a4a5e
parentef8706fb84cfe8bd58b1b26b0742e42caf09655b (diff)
downloadvim-git-2ac7184d34cd01e2b76bd1f704fd6a4b4af10239.tar.gz
patch 8.2.2916: operators are not fully testedv8.2.2916
Problem: Operators are not fully tested. Solution: Add a few more tests. (Yegappan Lakshmanan, closes #8290)
-rw-r--r--src/ops.c3
-rw-r--r--src/testdir/test_netbeans.vim40
-rw-r--r--src/testdir/test_normal.vim30
-rw-r--r--src/testdir/test_visual.vim92
-rw-r--r--src/version.c2
5 files changed, 166 insertions, 1 deletions
diff --git a/src/ops.c b/src/ops.c
index e4590a1e7..87fb2a05b 100644
--- a/src/ops.c
+++ b/src/ops.c
@@ -2383,9 +2383,10 @@ op_addsub(
#ifdef FEAT_NETBEANS_INTG
if (netbeans_active() && one_change)
{
- char_u *ptr = ml_get_buf(curbuf, pos.lnum, FALSE);
+ char_u *ptr;
netbeans_removed(curbuf, pos.lnum, pos.col, (long)length);
+ ptr = ml_get_buf(curbuf, pos.lnum, FALSE);
netbeans_inserted(curbuf, pos.lnum, pos.col,
&ptr[pos.col], length);
}
diff --git a/src/testdir/test_netbeans.vim b/src/testdir/test_netbeans.vim
index d792ab97c..8dff32d0b 100644
--- a/src/testdir/test_netbeans.vim
+++ b/src/testdir/test_netbeans.vim
@@ -367,6 +367,46 @@ func Nb_basic(port)
call assert_match('2:insert=\d\+ 26 "\t"', l[-1])
let g:last += 18
+ " Test for changing case of multiple lines using ~
+ normal ggVG~
+ call WaitFor('len(ReadXnetbeans()) >= (g:last + 6)')
+ let l = ReadXnetbeans()
+ call assert_match('2:remove=\d\+ 0 8', l[-6])
+ call assert_match('2:insert=\d\+ 0 "FOO BAR2"', l[-5])
+ call assert_match('2:remove=\d\+ 9 8', l[-4])
+ call assert_match('2:insert=\d\+ 9 "BLUE SKy"', l[-3])
+ call assert_match('2:remove=\d\+ 18 9', l[-2])
+ call assert_match('2:insert=\d\+ 18 "\tFOO BAR3"', l[-1])
+ let g:last += 6
+
+ " Test for changing case of a visual block using ~
+ exe "normal ggw\<C-V>$~"
+ call WaitFor('len(ReadXnetbeans()) >= (g:last + 2)')
+ let l = ReadXnetbeans()
+ call assert_match('2:remove=\d\+ 4 4', l[-2])
+ call assert_match('2:insert=\d\+ 4 "bar2"', l[-1])
+ let g:last += 2
+
+ " Increment a number using <C-A> in visual mode
+ exe "normal! gg$v6\<C-A>"
+ call WaitFor('len(ReadXnetbeans()) >= (g:last + 6)')
+ let l = ReadXnetbeans()
+ call assert_match('2:remove=\d\+ 0 9', l[-4])
+ call assert_match('2:insert=\d\+ 0 "FOO bar8"', l[-3])
+ call assert_match('2:remove=\d\+ 7 1', l[-2])
+ call assert_match('2:insert=\d\+ 7 "8"', l[-1])
+ let g:last += 6
+
+ " Decrement a number using <C-X> in visual mode
+ exe "normal! gg$v3\<C-X>"
+ call WaitFor('len(ReadXnetbeans()) >= (g:last + 6)')
+ let l = ReadXnetbeans()
+ call assert_match('2:remove=\d\+ 0 9', l[-4])
+ call assert_match('2:insert=\d\+ 0 "FOO bar5"', l[-3])
+ call assert_match('2:remove=\d\+ 7 1', l[-2])
+ call assert_match('2:insert=\d\+ 7 "5"', l[-1])
+ let g:last += 6
+
" stopDocumentListen test
call appendbufline(cmdbufnr, '$', 'stopDocumentListen_Test')
call WaitFor('len(ReadXnetbeans()) >= (g:last + 3)')
diff --git a/src/testdir/test_normal.vim b/src/testdir/test_normal.vim
index 48cc46e07..63acebc6e 100644
--- a/src/testdir/test_normal.vim
+++ b/src/testdir/test_normal.vim
@@ -3377,4 +3377,34 @@ func Test_normal_shift_rightleft()
bw!
endfunc
+" Some commands like yy, cc, dd, >>, << and !! accept a count after
+" typing the first letter of the command.
+func Test_normal_count_after_operator()
+ new
+ setlocal shiftwidth=4 tabstop=8 autoindent
+ call setline(1, ['one', 'two', 'three', 'four', 'five'])
+ let @a = ''
+ normal! j"ay4y
+ call assert_equal("two\nthree\nfour\nfive\n", @a)
+ normal! 3G>2>
+ call assert_equal(['one', 'two', ' three', ' four', 'five'],
+ \ getline(1, '$'))
+ exe "normal! 3G0c2cred\nblue"
+ call assert_equal(['one', 'two', ' red', ' blue', 'five'],
+ \ getline(1, '$'))
+ exe "normal! gg<8<"
+ call assert_equal(['one', 'two', 'red', 'blue', 'five'],
+ \ getline(1, '$'))
+ exe "normal! ggd3d"
+ call assert_equal(['blue', 'five'], getline(1, '$'))
+ call setline(1, range(1, 4))
+ call feedkeys("gg!3!\<C-B>\"\<CR>", 'xt')
+ call assert_equal('".,.+2!', @:)
+ call feedkeys("gg!1!\<C-B>\"\<CR>", 'xt')
+ call assert_equal('".!', @:)
+ call feedkeys("gg!9!\<C-B>\"\<CR>", 'xt')
+ call assert_equal('".,$!', @:)
+ bw!
+endfunc
+
" vim: shiftwidth=2 sts=2 expandtab
diff --git a/src/testdir/test_visual.vim b/src/testdir/test_visual.vim
index 2b3b2139e..1b3661c22 100644
--- a/src/testdir/test_visual.vim
+++ b/src/testdir/test_visual.vim
@@ -818,7 +818,99 @@ func Test_visual_block_mode()
exe "normal ld\<C-V>j"
call assert_equal(['13', '46', '789'], getline(1, '$'))
+ " Test from ':help v_b_I_example'
+ %d _
+ setlocal tabstop=8 shiftwidth=4
+ let lines =<< trim END
+ abcdefghijklmnopqrstuvwxyz
+ abc defghijklmnopqrstuvwxyz
+ abcdef ghi jklmnopqrstuvwxyz
+ abcdefghijklmnopqrstuvwxyz
+ END
+ call setline(1, lines)
+ exe "normal ggfo\<C-V>3jISTRING"
+ let expected =<< trim END
+ abcdefghijklmnSTRINGopqrstuvwxyz
+ abc STRING defghijklmnopqrstuvwxyz
+ abcdef ghi STRING jklmnopqrstuvwxyz
+ abcdefghijklmnSTRINGopqrstuvwxyz
+ END
+ call assert_equal(expected, getline(1, '$'))
+
+ " Test from ':help v_b_A_example'
+ %d _
+ let lines =<< trim END
+ abcdefghijklmnopqrstuvwxyz
+ abc defghijklmnopqrstuvwxyz
+ abcdef ghi jklmnopqrstuvwxyz
+ abcdefghijklmnopqrstuvwxyz
+ END
+ call setline(1, lines)
+ exe "normal ggfo\<C-V>3j$ASTRING"
+ let expected =<< trim END
+ abcdefghijklmnopqrstuvwxyzSTRING
+ abc defghijklmnopqrstuvwxyzSTRING
+ abcdef ghi jklmnopqrstuvwxyzSTRING
+ abcdefghijklmnopqrstuvwxyzSTRING
+ END
+ call assert_equal(expected, getline(1, '$'))
+
+ " Test from ':help v_b_<_example'
+ %d _
+ let lines =<< trim END
+ abcdefghijklmnopqrstuvwxyz
+ abc defghijklmnopqrstuvwxyz
+ abcdef ghi jklmnopqrstuvwxyz
+ abcdefghijklmnopqrstuvwxyz
+ END
+ call setline(1, lines)
+ exe "normal ggfo\<C-V>3j3l<.."
+ let expected =<< trim END
+ abcdefghijklmnopqrstuvwxyz
+ abc defghijklmnopqrstuvwxyz
+ abcdef ghi jklmnopqrstuvwxyz
+ abcdefghijklmnopqrstuvwxyz
+ END
+ call assert_equal(expected, getline(1, '$'))
+
+ " Test from ':help v_b_>_example'
+ %d _
+ let lines =<< trim END
+ abcdefghijklmnopqrstuvwxyz
+ abc defghijklmnopqrstuvwxyz
+ abcdef ghi jklmnopqrstuvwxyz
+ abcdefghijklmnopqrstuvwxyz
+ END
+ call setline(1, lines)
+ exe "normal ggfo\<C-V>3j>.."
+ let expected =<< trim END
+ abcdefghijklmn opqrstuvwxyz
+ abc defghijklmnopqrstuvwxyz
+ abcdef ghi jklmnopqrstuvwxyz
+ abcdefghijklmn opqrstuvwxyz
+ END
+ call assert_equal(expected, getline(1, '$'))
+
+ " Test from ':help v_b_r_example'
+ %d _
+ let lines =<< trim END
+ abcdefghijklmnopqrstuvwxyz
+ abc defghijklmnopqrstuvwxyz
+ abcdef ghi jklmnopqrstuvwxyz
+ abcdefghijklmnopqrstuvwxyz
+ END
+ call setline(1, lines)
+ exe "normal ggfo\<C-V>5l3jrX"
+ let expected =<< trim END
+ abcdefghijklmnXXXXXXuvwxyz
+ abc XXXXXXhijklmnopqrstuvwxyz
+ abcdef ghi XXXXXX jklmnopqrstuvwxyz
+ abcdefghijklmnXXXXXXuvwxyz
+ END
+ call assert_equal(expected, getline(1, '$'))
+
bwipe!
+ set tabstop& shiftwidth&
endfunc
" Test block-insert using cursor keys for movement
diff --git a/src/version.c b/src/version.c
index 858477852..87eb48430 100644
--- a/src/version.c
+++ b/src/version.c
@@ -751,6 +751,8 @@ static char *(features[]) =
static int included_patches[] =
{ /* Add new patch number below this line */
/**/
+ 2916,
+/**/
2915,
/**/
2914,