summary refs log tree commit diff stats
diff options
context:
space:
mode:
-rw-r--r--test/tc_newkeys.py25
1 files changed, 25 insertions, 0 deletions
diff --git a/test/tc_newkeys.py b/test/tc_newkeys.py
index d29450d9..7bdbccad 100644
--- a/test/tc_newkeys.py
+++ b/test/tc_newkeys.py
@@ -241,6 +241,21 @@ class Tree(object):
 		self.key = key
 		self.parent = parent
 
+	def copy(self):
+		"""Create a deep copy"""
+		def deep_copy_dict(dct):
+			dct = dct.copy()
+			for key, val in dct.items():
+				if isinstance(val, dict):
+					dct[key] = deep_copy_dict(val)
+			return dct
+		newtree = Tree()
+		if isinstance(self._tree, dict):
+			newtree._tree = deep_copy_dict(self._tree)
+		else:
+			newtree._tree = self._tree
+		return newtree
+
 	def set(self, keys, value, force=True):
 		"""Sets the element at the end of the path to <value>."""
 		if not isinstance(keys, (list, tuple)):
@@ -603,5 +618,15 @@ class Test(PressTestCase):
 
 		self.assertEqual(40, press('40jkhl'))
 
+	def test_tree_deep_copy(self):
+		t = Tree()
+		s = t.plow('abc')
+		s['d'] = "X"
+		u = t.copy()
+		self.assertEqual(t._tree, u._tree)
+		s = t.traverse('ab')
+		s['c'] = 'Y'
+		self.assertNotEqual(t._tree, u._tree)
+
 
 if __name__ == '__main__': main()
24 -0700 committer Kartik K. Agaram <vc@akkartik.com> 2022-07-12 16:20:20 -0700 add state arg to some functions' href='/akkartik/view.love/commit/search.lua?id=3874f325f8e1c71c067ed4dd3e9caa6fc3a254fc'>3874f32 ^
3850fba ^
0d52962 ^

5aae527 ^
0d52962 ^
5aae527 ^
0d52962 ^
5aae527 ^
0d52962 ^

5aae527 ^

0d52962 ^
5aae527 ^

0d52962 ^





5aae527 ^

0d52962 ^
5aae527 ^

0d52962 ^




5aae527 ^



0d52962 ^
5aae527 ^



0d52962 ^


5aae527 ^
0d52962 ^
5aae527 ^
0d52962 ^
5aae527 ^
0d52962 ^

5aae527 ^

0d52962 ^
5aae527 ^

0d52962 ^





5aae527 ^

0d52962 ^
5aae527 ^

0d52962 ^




5aae527 ^



0d52962 ^
5aae527 ^



0d52962 ^













1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114