def setUp(self): self.text = nodes.Text('Line 1.\nLine 2.') self.unicode_text = nodes.Text(u'Möhren') self.longtext = nodes.Text('Mary had a little lamb whose ' 'fleece was white as snow and ' 'everwhere that Mary went the ' 'lamb was sure to go.')
def test_traverse(self): e = nodes.Element() e += nodes.Element() e[0] += nodes.Element() e[0] += nodes.TextElement() e[0][1] += nodes.Text('some text') e += nodes.Element() e += nodes.Element() self.assertEqual(list(e.traverse()), [e, e[0], e[0][0], e[0][1], e[0][1][0], e[1], e[2]]) self.assertEqual(list(e.traverse(include_self=False)), [e[0], e[0][0], e[0][1], e[0][1][0], e[1], e[2]]) self.assertEqual(list(e.traverse(descend=False)), [e]) self.assertEqual(list(e[0].traverse(descend=False, ascend=True)), [e[0], e[1], e[2]]) self.assertEqual(list(e[0][0].traverse(descend=False, ascend=True)), [e[0][0], e[0][1], e[1], e[2]]) self.assertEqual(list(e[0][0].traverse(descend=False, siblings=True)), [e[0][0], e[0][1]]) self.testlist = e[0:2] self.assertEqual(list(e.traverse(condition=self.not_in_testlist)), [e, e[0][0], e[0][1], e[0][1][0], e[2]]) # Return siblings despite siblings=False because ascend is true. self.assertEqual(list(e[1].traverse(ascend=True, siblings=False)), [e[1], e[2]]) self.assertEqual(list(e[0].traverse()), [e[0], e[0][0], e[0][1], e[0][1][0]]) self.testlist = [e[0][0], e[0][1]] self.assertEqual(list(e[0].traverse(condition=self.not_in_testlist)), [e[0], e[0][1][0]]) self.testlist.append(e[0][1][0]) self.assertEqual(list(e[0].traverse(condition=self.not_in_testlist)), [e[0]]) self.assertEqual(list(e.traverse(nodes.TextElement)), [e[0][1]])
def test_strip(self): text = nodes.Text(' was noch ', ' \was\ noch \\ ') stripped = text.lstrip().rstrip() stripped2 = text.lstrip(' wahn').rstrip(' wahn') self.assertEqual(stripped, u'was noch') self.assertEqual(stripped.rawsource, u'\was\\ noch') self.assertEqual(stripped2, u's noc') self.assertEqual(stripped2.rawsource, u's\\ noc')
def test_withtext(self): element = nodes.Element('text\nmore', nodes.Text('text\nmore')) uelement = nodes.Element(u'grün', nodes.Text(u'grün')) self.assertEqual(repr(element), r"<Element: <#text: 'text\nmore'>>") if sys.version_info < (3, 0): self.assertEqual(repr(uelement), "<Element: <#text: 'gr\\xfcn'>>") else: self.assertEqual(repr(uelement), u"<Element: <#text: 'grün'>>") self.assertTrue(isinstance(repr(uelement), str)) self.assertEqual(str(element), '<Element>text\nmore</Element>') self.assertEqual(str(uelement), '<Element>gr\xfcn</Element>') dom = element.asdom() self.assertEqual(dom.toxml(), '<Element>text\nmore</Element>') dom.unlink() element['attr'] = '1' self.assertEqual(repr(element), r"<Element: <#text: 'text\nmore'>>") self.assertEqual(str(element), '<Element attr="1">text\nmore</Element>') dom = element.asdom() self.assertEqual(dom.toxml(), '<Element attr="1">text\nmore</Element>') dom.unlink() self.assertEqual(element.pformat(), '<Element attr="1">\n text\n more\n')
def test_next_node(self): e = nodes.Element() e += nodes.Element() e[0] += nodes.Element() e[0] += nodes.TextElement() e[0][1] += nodes.Text('some text') e += nodes.Element() e += nodes.Element() self.testlist = [e[0], e[0][1], e[1]] compare = [(e, e[0][0]), (e[0], e[0][0]), (e[0][0], e[0][1][0]), (e[0][1], e[0][1][0]), (e[0][1][0], e[2]), (e[1], e[2]), (e[2], None)] for node, next_node in compare: self.assertEqual(node.next_node(self.not_in_testlist, ascend=True), next_node) self.assertEqual(e[0][0].next_node(ascend=True), e[0][1]) self.assertEqual(e[2].next_node(), None)
def test_withtext(self): element = nodes.Element('text\nmore', nodes.Text('text\nmore')) self.assertEquals(repr(element), r"<Element: <#text: 'text\nmore'>>") self.assertEquals(str(element), '<Element>text\nmore</Element>') dom = element.asdom() self.assertEquals(dom.toxml(), '<Element>text\nmore</Element>') dom.unlink() element['attr'] = '1' self.assertEquals(repr(element), r"<Element: <#text: 'text\nmore'>>") self.assertEquals(str(element), '<Element attr="1">text\nmore</Element>') dom = element.asdom() self.assertEquals(dom.toxml(), '<Element attr="1">text\nmore</Element>') dom.unlink() self.assertEquals(element.pformat(), '<Element attr="1">\n text\n more\n')
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.assertTrue(e is not e_copy) # Internal attributes (like `rawsource`) are also copied. self.assertEqual(e.rawsource, 'rawsource') self.assertEqual(e_copy.rawsource, e.rawsource) self.assertEqual(e_copy['att'], 'e') # Children are not copied. self.assertEqual(len(e_copy), 0) # Deep copy: e_deepcopy = e.deepcopy() self.assertEqual(e_deepcopy.rawsource, e.rawsource) self.assertEqual(e_deepcopy['att'], 'e') # Children are copied recursively. self.assertEqual(e_deepcopy[0][0], grandchild) self.assertTrue(e_deepcopy[0][0] is not grandchild) self.assertEqual(e_deepcopy[0]['att'], 'child')
def test_unicode(self): node = nodes.Element(u'Möhren', nodes.Text(u'Möhren', u'Möhren')) self.assertEqual(unicode(node), u'<Element>Möhren</Element>')
def test_unicode(self): node = nodes.Element('Möhren', nodes.Text('Möhren', 'Möhren')) self.assertEqual(str(node), '<Element>Möhren</Element>')
def setUp(self): self.text = nodes.Text('Line 1.\nLine 2.') self.unicode_text = nodes.Text(u'Möhren')
def test_strip(self): text = nodes.Text(' was noch ', ' \was\ noch \\ ') stripped = text.lstrip().rstrip() stripped2 = text.lstrip(' wahn').rstrip(' wahn') self.assertEqual(stripped, 'was noch') self.assertEqual(stripped2, 's noc')