changeset 11219:e53609585b76 v8.0.0496

patch 8.0.0496: insufficient testing for folding commit https://github.com/vim/vim/commit/518c9b133baed4b1a555d7be0ece1b48bb234b1d Author: Bram Moolenaar <Bram@vim.org> Date: Tue Mar 21 11:48:39 2017 +0100 patch 8.0.0496: insufficient testing for folding Problem: Insufficient testing for folding. Solution: Add a couple more fold tests. (Dominique Pelle, closes https://github.com/vim/vim/issues/1579)
author Christian Brabandt <cb@256bit.org>
date Tue, 21 Mar 2017 12:00:04 +0100
parents 8c6117673fba
children 09300a732ca2
files src/testdir/test_fold.vim src/version.c
diffstat 2 files changed, 57 insertions(+), 2 deletions(-) [+]
line wrap: on
line diff
--- a/src/testdir/test_fold.vim
+++ b/src/testdir/test_fold.vim
@@ -9,8 +9,8 @@ func! Test_address_fold()
   call setline(1, ['int FuncName() {/*{{{*/', 1, 2, 3, 4, 5, '}/*}}}*/',
 	      \ 'after fold 1', 'after fold 2', 'after fold 3'])
   setl fen fdm=marker
-  " The next ccommands should all copy the same part of the buffer,
-  " regardless of the adressing type, since the part to be copied
+  " The next commands should all copy the same part of the buffer,
+  " regardless of the addressing type, since the part to be copied
   " is folded away
   :1y
   call assert_equal(['int FuncName() {/*{{{*/', '1', '2', '3', '4', '5', '}/*}}}*/'], getreg(0,1,1))
@@ -360,3 +360,56 @@ func! Test_move_folds_around_indent()
   call assert_equal([0, 1, 1, 1, 1, 0, 0, 0, 1, 1], map(range(1, line('$')), 'foldlevel(v:val)'))
   bw!
 endfunc
+
+func Test_folddoopen_folddoclosed()
+  new
+  call setline(1, range(1, 9))
+  set foldmethod=manual
+  1,3 fold
+  6,8 fold
+
+  " Test without range.
+  folddoopen   s/$/o/
+  folddoclosed s/$/c/
+  call assert_equal(['1c', '2c', '3c',
+  \                  '4o', '5o',
+  \                  '6c', '7c', '8c',
+  \                  '9o'], getline(1, '$'))
+
+  " Test with range.
+  call setline(1, range(1, 9))
+  1,8 folddoopen   s/$/o/
+  4,$ folddoclosed s/$/c/
+  call assert_equal(['1',  '2', '3',
+  \                  '4o', '5o',
+  \                  '6c', '7c', '8c',
+  \                  '9'], getline(1, '$'))
+
+  set foldmethod&
+  bw!
+endfunc
+
+func Test_fold_error()
+  new
+  call setline(1, [1, 2])
+
+  for fm in ['indent', 'expr', 'syntax', 'diff']
+    exe 'set foldmethod=' . fm
+    call assert_fails('norm zf', 'E350:')
+    call assert_fails('norm zd', 'E351:')
+    call assert_fails('norm zE', 'E352:')
+  endfor
+
+  set foldmethod=manual
+  call assert_fails('norm zd', 'E490:')
+  call assert_fails('norm zo', 'E490:')
+  call assert_fails('3fold',   'E16:')
+
+  set foldmethod=marker
+  set nomodifiable
+  call assert_fails('1,2fold', 'E21:')
+
+  set modifiable&
+  set foldmethod&
+  bw!
+endfunc
--- a/src/version.c
+++ b/src/version.c
@@ -765,6 +765,8 @@ static char *(features[]) =
 static int included_patches[] =
 {   /* Add new patch number below this line */
 /**/
+    496,
+/**/
     495,
 /**/
     494,