aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJan Edmund Lazo <jan.lazo@mail.utoronto.ca>2018-10-04 12:40:59 -0400
committerJustin M. Keyes <justinkz@gmail.com>2018-10-04 18:40:59 +0200
commitc1c5c4f8e498af77fc45f5c07068412af3dc1764 (patch)
tree06ff387cda56ca80926cf1dca6bee1ad0fe089fb
parent79b358facd6ca00f1bd60f30f643aed989698b38 (diff)
downloadrneovim-c1c5c4f8e498af77fc45f5c07068412af3dc1764.tar.gz
rneovim-c1c5c4f8e498af77fc45f5c07068412af3dc1764.tar.bz2
rneovim-c1c5c4f8e498af77fc45f5c07068412af3dc1764.zip
vim-patch:8.1.0440: remove() with a range not sufficiently tested (#9076)
Problem: remove() with a range not sufficiently tested. Solution: Add a test. (Dominique Pelle, closes vim/vim#3497) https://github.com/vim/vim/commit/2bfddfc508bcc8dcee108f098eb75844a228fa44
-rw-r--r--src/nvim/testdir/test_listdict.vim48
1 files changed, 48 insertions, 0 deletions
diff --git a/src/nvim/testdir/test_listdict.vim b/src/nvim/testdir/test_listdict.vim
index 023332c90a..999d4dbd4a 100644
--- a/src/nvim/testdir/test_listdict.vim
+++ b/src/nvim/testdir/test_listdict.vim
@@ -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}