]> granicus.if.org Git - vim/commitdiff
patch 8.1.0440: remove() with a range not sufficiently tested v8.1.0440
authorBram Moolenaar <Bram@vim.org>
Sun, 30 Sep 2018 15:16:25 +0000 (17:16 +0200)
committerBram Moolenaar <Bram@vim.org>
Sun, 30 Sep 2018 15:16:25 +0000 (17:16 +0200)
Problem:    remove() with a range not sufficiently tested.
Solution:   Add a test. (Dominique Pelle, closes #3497)

src/testdir/test_listdict.vim
src/version.c

index 023332c90a96b771fb907d853c3114a00bde8af2..999d4dbd4a7fb85515470a36837f82861a2056d1 100644 (file)
@@ -106,6 +106,43 @@ func Test_list_range_assign()
   call assert_equal([1, 2], l)
 endfunc
 
+" Test removing items in list
+func Test_list_func_remove()
+  " Test removing 1 element
+  let l = [1, 2, 3, 4]
+  call assert_equal(1, remove(l, 0))
+  call assert_equal([2, 3, 4], l)
+
+  let l = [1, 2, 3, 4]
+  call assert_equal(2, remove(l, 1))
+  call assert_equal([1, 3, 4], l)
+
+  let l = [1, 2, 3, 4]
+  call assert_equal(4, remove(l, -1))
+  call assert_equal([1, 2, 3], l)
+
+  " Test removing range of element(s)
+  let l = [1, 2, 3, 4]
+  call assert_equal([3], remove(l, 2, 2))
+  call assert_equal([1, 2, 4], l)
+
+  let l = [1, 2, 3, 4]
+  call assert_equal([2, 3], remove(l, 1, 2))
+  call assert_equal([1, 4], l)
+
+  let l = [1, 2, 3, 4]
+  call assert_equal([2, 3], remove(l, -3, -2))
+  call assert_equal([1, 4], l)
+
+  " Test invalid cases
+  let l = [1, 2, 3, 4]
+  call assert_fails("call remove(l, 5)", 'E684:')
+  call assert_fails("call remove(l, 1, 5)", 'E684:')
+  call assert_fails("call remove(l, 3, 2)", 'E16:')
+  call assert_fails("call remove(1, 0)", 'E712:')
+  call assert_fails("call remove(l, l)", 'E745:')
+endfunc
+
 " Tests for Dictionary type
 
 func Test_dict()
@@ -222,6 +259,17 @@ func Test_script_local_dict_func()
   unlet g:dict
 endfunc
 
+" Test removing items in la dictionary
+func Test_dict_func_remove()
+  let d = {1:'a', 2:'b', 3:'c'}
+  call assert_equal('b', remove(d, 2))
+  call assert_equal({1:'a', 3:'c'}, d)
+
+  call assert_fails("call remove(d, 1, 2)", 'E118:')
+  call assert_fails("call remove(d, 'a')", 'E716:')
+  call assert_fails("call remove(d, [])", 'E730:')
+endfunc
+
 " Nasty: remove func from Dict that's being called (works)
 func Test_dict_func_remove_in_use()
   let d = {1:1}
index 1f14030030ce7877ba8346b273ac08f6fc08e0d8..e6f7e1ed5a2040a94c23005b50f01b6b1ae6f462 100644 (file)
@@ -794,6 +794,8 @@ static char *(features[]) =
 
 static int included_patches[] =
 {   /* Add new patch number below this line */
+/**/
+    440,
 /**/
     439,
 /**/