summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorYegappan Lakshmanan <yegappan@yahoo.com>2024-06-23 10:00:04 +0200
committerChristian Brabandt <cb@256bit.org>2024-06-23 10:00:04 +0200
commit88bbdb04c2776ba69b8e5da58051fd94f8842b03 (patch)
treebdf4c2fb062f76d1cf19006f7a3c2dea0898eef8
parent8625714ac13cba271f60687b33f0b63bd29feba1 (diff)
patch 9.1.0516: need more tests for nested dicts and list comparisionv9.1.0516
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>
-rw-r--r--src/testdir/test_listdict.vim49
-rw-r--r--src/version.c2
2 files changed, 51 insertions, 0 deletions
diff --git a/src/testdir/test_listdict.vim b/src/testdir/test_listdict.vim
index 12a6dd4fe3..f2d4a3e753 100644
--- 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
diff --git a/src/version.c b/src/version.c
index 357f9c1e39..0fb66979d9 100644
--- a/src/version.c
+++ b/src/version.c
@@ -705,6 +705,8 @@ static char *(features[]) =
static int included_patches[] =
{ /* Add new patch number below this line */
/**/
+ 516,
+/**/
515,
/**/
514,