changeset 17688:c945f1d03b1c v8.1.1841

patch 8.1.1841: no test for Ex shift commands commit https://github.com/vim/vim/commit/d5e3cc11d391f3aa80bf66f91001f11a3a145b43 Author: Bram Moolenaar <Bram@vim.org> Date: Mon Aug 12 14:38:02 2019 +0200 patch 8.1.1841: no test for Ex shift commands Problem: No test for Ex shift commands. Solution: Add a test. (Dominique Pelle, closes https://github.com/vim/vim/issues/4801)
author Bram Moolenaar <Bram@vim.org>
date Mon, 12 Aug 2019 14:45:05 +0200
parents b8738c462084
children 15b71dff4c2d
files src/testdir/Make_all.mak src/testdir/test_alot.vim src/testdir/test_shift.vim src/version.c
diffstat 4 files changed, 117 insertions(+), 0 deletions(-) [+]
line wrap: on
line diff
--- a/src/testdir/Make_all.mak
+++ b/src/testdir/Make_all.mak
@@ -227,6 +227,7 @@ NEW_TESTS = \
 	test_searchpos \
 	test_set \
 	test_sha256 \
+	test_shift \
 	test_shortpathname \
 	test_signals \
 	test_signs \
--- a/src/testdir/test_alot.vim
+++ b/src/testdir/test_alot.vim
@@ -52,6 +52,7 @@ source test_rename.vim
 source test_scroll_opt.vim
 source test_searchpos.vim
 source test_set.vim
+source test_shift.vim
 source test_sort.vim
 source test_sha256.vim
 source test_statusline.vim
new file mode 100644
--- /dev/null
+++ b/src/testdir/test_shift.vim
@@ -0,0 +1,113 @@
+" Test shifting lines with :> and :<
+
+source check.vim
+
+func Test_ex_shift_right()
+  set shiftwidth=2
+
+  " shift right current line.
+  call setline(1, range(1, 5))
+  2
+  >
+  3
+  >>
+  call assert_equal(['1',
+        \            '  2',
+        \            '    3',
+        \            '4',
+        \            '5'], getline(1, '$'))
+
+  " shift right with range.
+  call setline(1, range(1, 4))
+  2,3>>
+  call assert_equal(['1',
+        \            '    2',
+        \            '    3',
+        \            '4',
+        \            '5'], getline(1, '$'))
+
+  " shift right with range and count.
+  call setline(1, range(1, 4))
+  2>3
+  call assert_equal(['1',
+        \            '  2',
+        \            '  3',
+        \            '  4',
+        \            '5'], getline(1, '$'))
+
+  bw!
+  set shiftwidth&
+endfunc
+
+func Test_ex_shift_left()
+  set shiftwidth=2
+
+  call setline(1, range(1, 5))
+  %>>>
+
+  " left shift current line.
+  2<
+  3<<
+  4<<<<<
+  call assert_equal(['      1',
+        \            '    2',
+        \            '  3',
+        \            '4',
+        \            '      5'], getline(1, '$'))
+
+  " shift right with range.
+  call setline(1, range(1, 5))
+  %>>>
+  2,3<<
+  call assert_equal(['      1',
+        \            '  2',
+        \            '  3',
+        \            '      4',
+        \            '      5'], getline(1, '$'))
+
+  " shift right with range and count.
+  call setline(1, range(1, 5))
+  %>>>
+  2<<3
+  call assert_equal(['      1',
+     \               '  2',
+     \               '  3',
+     \               '  4',
+     \               '      5'], getline(1, '$'))
+
+  bw!
+  set shiftwidth&
+endfunc
+
+func Test_ex_shift_rightleft()
+  CheckFeature rightleft
+
+  set shiftwidth=2 rightleft
+
+  call setline(1, range(1, 4))
+  2,3<<
+  call assert_equal(['1',
+        \             '    2',
+        \             '    3',
+        \             '4'], getline(1, '$'))
+
+  3,4>
+  call assert_equal(['1',
+        \            '    2',
+        \            '  3',
+        \            '4'], getline(1, '$'))
+
+  bw!
+  set rightleft& shiftwidth&
+endfunc
+
+func Test_ex_shift_errors()
+  call assert_fails('><', 'E488:')
+  call assert_fails('<>', 'E488:')
+
+  call assert_fails('>!', 'E477:')
+  call assert_fails('<!', 'E477:')
+
+  call assert_fails('2,1>', 'E493:')
+  call assert_fails('2,1<', 'E493:')
+endfunc
--- a/src/version.c
+++ b/src/version.c
@@ -770,6 +770,8 @@ static char *(features[]) =
 static int included_patches[] =
 {   /* Add new patch number below this line */
 /**/
+    1841,
+/**/
     1840,
 /**/
     1839,