1
0
forked from aniani/vim

patch 8.1.0980: extend() insufficiently tested

Problem:    extend() insufficiently tested.
Solution:   Add more tests. (Dominique Pelle, closes #4040)
This commit is contained in:
Bram Moolenaar
2019-02-25 05:56:31 +01:00
parent 1fa8fdd611
commit 58d63a0a23
2 changed files with 58 additions and 6 deletions

View File

@@ -641,19 +641,69 @@ func Test_listdict_compare_complex()
endfunc endfunc
func Test_listdict_extend() func Test_listdict_extend()
" Test extend() with lists
" Pass the same List to extend() " Pass the same List to extend()
let l = [1, 2, 3, 4, 5] let l = [1, 2, 3]
call extend(l, l) call assert_equal([1, 2, 3, 1, 2, 3], extend(l, l))
call assert_equal([1, 2, 3, 4, 5, 1, 2, 3, 4, 5], l) call assert_equal([1, 2, 3, 1, 2, 3], l)
let l = [1, 2, 3]
call assert_equal([1, 2, 3, 4, 5, 6], extend(l, [4, 5, 6]))
call assert_equal([1, 2, 3, 4, 5, 6], l)
let l = [1, 2, 3]
call extend(l, [4, 5, 6], 0)
call assert_equal([4, 5, 6, 1, 2, 3], l)
let l = [1, 2, 3]
call extend(l, [4, 5, 6], 1)
call assert_equal([1, 4, 5, 6, 2, 3], l)
let l = [1, 2, 3]
call extend(l, [4, 5, 6], 3)
call assert_equal([1, 2, 3, 4, 5, 6], l)
let l = [1, 2, 3]
call extend(l, [4, 5, 6], -1)
call assert_equal([1, 2, 4, 5, 6, 3], l)
let l = [1, 2, 3]
call extend(l, [4, 5, 6], -3)
call assert_equal([4, 5, 6, 1, 2, 3], l)
let l = [1, 2, 3]
call assert_fails("call extend(l, [4, 5, 6], 4)", 'E684:')
call assert_fails("call extend(l, [4, 5, 6], -4)", 'E684:')
call assert_fails("call extend(l, [4, 5, 6], 1.2)", 'E805:')
" Test extend() with dictionaries.
" Pass the same Dict to extend() " Pass the same Dict to extend()
let d = { 'a': {'b': 'B'}} let d = { 'a': {'b': 'B'}}
call extend(d, d) call extend(d, d)
call assert_equal({'a': {'b': 'B'}}, d) call assert_equal({'a': {'b': 'B'}}, d)
" Pass the same Dict to extend() with "error" let d = {'a': 'A', 'b': 'B'}
call assert_fails("call extend(d, d, 'error')", 'E737:') call assert_equal({'a': 'A', 'b': 0, 'c': 'C'}, extend(d, {'b': 0, 'c':'C'}))
call assert_equal({'a': {'b': 'B'}}, d) call assert_equal({'a': 'A', 'b': 0, 'c': 'C'}, d)
let d = {'a': 'A', 'b': 'B'}
call extend(d, {'a': 'A', 'b': 0, 'c': 'C'}, "force")
call assert_equal({'a': 'A', 'b': 0, 'c': 'C'}, d)
let d = {'a': 'A', 'b': 'B'}
call extend(d, {'b': 0, 'c':'C'}, "keep")
call assert_equal({'a': 'A', 'b': 'B', 'c': 'C'}, d)
let d = {'a': 'A', 'b': 'B'}
call assert_fails("call extend(d, {'b': 0, 'c':'C'}, 'error')", 'E737:')
call assert_fails("call extend(d, {'b': 0, 'c':'C'}, 'xxx')", 'E475:')
call assert_fails("call extend(d, {'b': 0, 'c':'C'}, 1.2)", 'E806:')
call assert_equal({'a': 'A', 'b': 'B'}, d)
call assert_fails("call extend([1, 2], 1)", 'E712:')
call assert_fails("call extend([1, 2], {})", 'E712:')
endfunc endfunc
func s:check_scope_dict(x, fixed) func s:check_scope_dict(x, fixed)

View File

@@ -779,6 +779,8 @@ static char *(features[]) =
static int included_patches[] = static int included_patches[] =
{ /* Add new patch number below this line */ { /* Add new patch number below this line */
/**/
980,
/**/ /**/
979, 979,
/**/ /**/