Mercurial > vim
changeset 35501:6a4bf16680ba v9.1.0516
patch 9.1.0516: need more tests for nested dicts and list comparision
Commit: https://github.com/vim/vim/commit/88bbdb04c2776ba69b8e5da58051fd94f8842b03
Author: Yegappan Lakshmanan <yegappan@yahoo.com>
Date: Sun Jun 23 10:00:04 2024 +0200
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>
author | Christian Brabandt <cb@256bit.org> |
---|---|
date | Sun, 23 Jun 2024 10:15:05 +0200 |
parents | 91ba296a07c4 |
children | 2513db81df13 |
files | src/testdir/test_listdict.vim src/version.c |
diffstat | 2 files changed, 51 insertions(+), 0 deletions(-) [+] |
line wrap: on
line diff
--- a/src/testdir/test_listdict.vim +++ b/src/testdir/test_listdict.vim @@ -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