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 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153
|
#!/usr/bin/python
# Author: David Goodger
# Contact: goodger@users.sourceforge.net
# Revision: $Revision: 1.11 $
# Date: $Date: 2003/04/28 02:51:01 $
# Copyright: This module has been placed in the public domain.
"""
Test module for nodes.py.
"""
import unittest
from types import ClassType
from DocutilsTestSupport import nodes, utils
debug = 0
class TextTests(unittest.TestCase):
def setUp(self):
self.text = nodes.Text('Line 1.\nLine 2.')
def test_repr(self):
self.assertEquals(repr(self.text), r"<#text: 'Line 1.\nLine 2.'>")
def test_str(self):
self.assertEquals(str(self.text), 'Line 1.\nLine 2.')
def test_astext(self):
self.assertEquals(self.text.astext(), 'Line 1.\nLine 2.')
def test_pformat(self):
self.assertEquals(self.text.pformat(), 'Line 1.\nLine 2.\n')
class ElementTests(unittest.TestCase):
def test_empty(self):
element = nodes.Element()
self.assertEquals(repr(element), '<Element: >')
self.assertEquals(str(element), '<Element/>')
dom = element.asdom()
self.assertEquals(dom.toxml(), '<Element/>')
dom.unlink()
element['attr'] = '1'
self.assertEquals(repr(element), '<Element: >')
self.assertEquals(str(element), '<Element attr="1"/>')
dom = element.asdom()
self.assertEquals(dom.toxml(), '<Element attr="1"/>')
dom.unlink()
self.assertEquals(element.pformat(), '<Element attr="1">\n')
del element['attr']
element['mark'] = u'\u2022'
self.assertEquals(repr(element), '<Element: >')
self.assertEquals(str(element), '<Element mark="\\u2022"/>')
dom = element.asdom()
self.assertEquals(dom.toxml(), u'<Element mark="\u2022"/>')
dom.unlink()
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">
text
more
""")
class MiscTests(unittest.TestCase):
def test_node_class_names(self):
node_class_names = []
for x in dir(nodes):
c = getattr(nodes, x)
if type(c) is ClassType and issubclass(c, nodes.Node) \
and len(c.__bases__) > 1:
node_class_names.append(x)
node_class_names.sort()
nodes.node_class_names.sort()
self.assertEquals(node_class_names, nodes.node_class_names)
ids = [('a', 'a'), ('A', 'a'), ('', ''), ('a b \n c', 'a-b-c'),
('a.b.c', 'a-b-c'), (' - a - b - c - ', 'a-b-c'), (' - ', ''),
(u'\u2020\u2066', ''), (u'a \xa7 b \u2020 c', 'a-b-c'),
('1', ''), ('1abc', 'abc')]
def test_make_id(self):
for input, output in self.ids:
normed = nodes.make_id(input)
self.assertEquals(normed, output)
class TreeCopyVisitorTests(unittest.TestCase):
def setUp(self):
document = utils.new_document('test data')
document += nodes.paragraph('', 'Paragraph 1.')
blist = nodes.bullet_list()
for i in range(1, 6):
item = nodes.list_item()
for j in range(1, 4):
item += nodes.paragraph('', 'Item %s, paragraph %s.' % (i, j))
blist += item
document += blist
self.document = document
def compare_trees(self, one, two):
self.assertEquals(one.__class__, two.__class__)
self.assertNotEquals(id(one), id(two))
children1 = one.get_children()
children2 = two.get_children()
self.assertEquals(len(children1), len(children2))
for i in range(len(children1)):
self.compare_trees(children1[i], children2[i])
def test_copy_whole(self):
visitor = nodes.TreeCopyVisitor(self.document)
self.document.walkabout(visitor)
newtree = visitor.get_tree_copy()
self.assertEquals(self.document.pformat(), newtree.pformat())
self.compare_trees(self.document, newtree)
class MiscFunctionTests(unittest.TestCase):
names = [('a', 'a'), ('A', 'a'), ('A a A', 'a a a'),
('A a A a', 'a a a a'),
(' AaA\n\r\naAa\tAaA\t\t', 'aaa aaa aaa')]
def test_normalize_name(self):
for input, output in self.names:
normed = nodes.fully_normalize_name(input)
self.assertEquals(normed, output)
if __name__ == '__main__':
unittest.main()
|