summaryrefslogtreecommitdiff
path: root/docutils/test/test_nodes.py
diff options
context:
space:
mode:
authorwiemann <wiemann@929543f6-e4f2-0310-98a6-ba3bd3dd1d04>2005-10-11 19:34:52 +0000
committerwiemann <wiemann@929543f6-e4f2-0310-98a6-ba3bd3dd1d04>2005-10-11 19:34:52 +0000
commitaea07799ca44170f123876f194d2dbb5d69d9ce4 (patch)
treeab5844ffa731798ce2eb92d7bb0395c2431f540b /docutils/test/test_nodes.py
parent1d78b5e1057fc44bebf44cfdeccac95de912ea0c (diff)
downloaddocutils-aea07799ca44170f123876f194d2dbb5d69d9ce4.tar.gz
added Node.deepcopy(); fixed bug with doubly-indirect substitutions
git-svn-id: http://svn.code.sf.net/p/docutils/code/trunk@3935 929543f6-e4f2-0310-98a6-ba3bd3dd1d04
Diffstat (limited to 'docutils/test/test_nodes.py')
-rwxr-xr-xdocutils/test/test_nodes.py22
1 files changed, 22 insertions, 0 deletions
diff --git a/docutils/test/test_nodes.py b/docutils/test/test_nodes.py
index 42a64ad49..4471b3a15 100755
--- a/docutils/test/test_nodes.py
+++ b/docutils/test/test_nodes.py
@@ -242,6 +242,28 @@ class MiscTests(unittest.TestCase):
def not_in_testlist(self, x):
return x not in self.testlist
+ def test_copy(self):
+ grandchild = nodes.Text('rawsource')
+ child = nodes.emphasis('rawsource', grandchild, att='child')
+ e = nodes.Element('rawsource', child, att='e')
+ # Shallow copy:
+ e_copy = e.copy()
+ self.assert_(e is not e_copy)
+ # Internal attributes (like `rawsource`) are not copied.
+ self.assertEquals(e.rawsource, 'rawsource')
+ self.assertEquals(e_copy.rawsource, '')
+ self.assertEquals(e_copy['att'], 'e')
+ # Children are not copied.
+ self.assertEquals(len(e_copy), 0)
+ # Deep copy:
+ e_deepcopy = e.deepcopy()
+ self.assertEquals(e_deepcopy.rawsource, '')
+ self.assertEquals(e_deepcopy['att'], 'e')
+ # Children are copied recursively.
+ self.assertEquals(e_deepcopy[0][0], grandchild)
+ self.assert_(e_deepcopy[0][0] is not grandchild)
+ self.assertEquals(e_deepcopy[0]['att'], 'child')
+
class TreeCopyVisitorTests(unittest.TestCase):