diff options
author | hut <hut@lavabit.com> | 2010-02-13 16:52:54 +0100 |
---|---|---|
committer | hut <hut@lavabit.com> | 2010-03-09 14:40:20 +0100 |
commit | c70c915b5ec5a03f0f5b8641322d5c60a1235df5 (patch) | |
tree | ab8c82674365461fcb3a372824a8952e697886e1 /test | |
parent | 705eabe249d07dd569ea4c5b6af134a718a65db0 (diff) | |
download | ranger-c70c915b5ec5a03f0f5b8641322d5c60a1235df5.tar.gz |
keyparser: added tree.copy() for deep copies
Diffstat (limited to 'test')
-rw-r--r-- | test/tc_newkeys.py | 25 |
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() |