0
0
mirror of https://github.com/vim/vim.git synced 2025-07-24 10:45:12 -04:00

patch 9.1.0516: need more tests for nested dicts and list comparision

Problem:  need more tests for nested dicts and list comparision
Solution: Add tests for comparing deeply nested List/Dict values
          (Yegappan Lakshmanan)

closes: #15081

Signed-off-by: Yegappan Lakshmanan <yegappan@yahoo.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
This commit is contained in:
Yegappan Lakshmanan 2024-06-23 10:00:04 +02:00 committed by Christian Brabandt
parent 8625714ac1
commit 88bbdb04c2
No known key found for this signature in database
GPG Key ID: F3F92DA383FDDE09
2 changed files with 51 additions and 0 deletions

View File

@ -1557,4 +1557,53 @@ func Test_extendnew_leak()
for i in range(100) | silent! call extendnew({}, {}, {}) | endfor
endfunc
" Test for comparing deeply nested List/Dict values
func Test_deep_nested_listdict_compare()
let lines =<< trim END
def GetNestedList(sz: number): list<any>
var l: list<any> = []
var x: list<any> = l
for i in range(sz)
var y: list<any> = [1]
add(x, y)
x = y
endfor
return l
enddef
VAR l1 = GetNestedList(1000)
VAR l2 = GetNestedList(999)
call assert_false(l1 == l2)
#" after 1000 nested items, the lists are considered to be equal
VAR l3 = GetNestedList(1001)
VAR l4 = GetNestedList(1002)
call assert_true(l3 == l4)
END
call v9.CheckLegacyAndVim9Success(lines)
let lines =<< trim END
def GetNestedDict(sz: number): dict<any>
var d: dict<any> = {}
var x: dict<any> = d
for i in range(sz)
var y: dict<any> = {}
x['a'] = y
x = y
endfor
return d
enddef
VAR d1 = GetNestedDict(1000)
VAR d2 = GetNestedDict(999)
call assert_false(d1 == d2)
#" after 1000 nested items, the Dicts are considered to be equal
VAR d3 = GetNestedDict(1001)
VAR d4 = GetNestedDict(1002)
call assert_true(d3 == d4)
END
call v9.CheckLegacyAndVim9Success(lines)
endfunc
" vim: shiftwidth=2 sts=2 expandtab

View File

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