Fixes in linepsacing doc.
[docutils.git] / test / test_viewlist.py
blob85164b148a87797c1d98af842335b01a1b55dac7
1 #! /usr/bin/env python
3 # Author: David Goodger
4 # Contact: goodger@users.sourceforge.net
5 # Revision: $Revision$
6 # Date: $Date$
7 # Copyright: This module has been placed in the public domain.
9 """
10 Test module for the ViewList class from statemachine.py.
11 """
13 import unittest
14 import sys
15 import re
16 from DocutilsTestSupport import statemachine
19 class ViewListTests(unittest.TestCase):
21 a_list = list('abcdefg')
22 b_list = list('AEIOU')
23 c_list = list('XYZ')
25 def setUp(self):
26 self.a = statemachine.ViewList(self.a_list, 'a')
27 self.b = statemachine.ViewList(self.b_list, 'b')
28 self.c = statemachine.ViewList(self.c_list, 'c')
30 def test_lists(self):
31 self.assertEqual(self.a, self.a_list)
32 self.assertEqual(str(self.a), str(self.a_list))
33 self.assertEqual(self.b, self.b_list)
34 self.assertEqual(self.c, self.c_list)
35 self.assertEqual(self.a.items,
36 zip('a' * len(self.a_list), range(len(self.a_list))))
38 def test_get_slice(self):
39 a = self.a[1:-1]
40 a_list = self.a_list[1:-1]
41 self.assertEqual(a, a_list)
42 self.assertEqual(a.items,
43 zip('a' * len(a_list), range(1, len(a_list) + 1)))
44 self.assertEqual(a.parent, self.a)
46 def test_set_slice(self):
47 a = statemachine.ViewList(self.a[:])
48 s = a[2:-2]
49 s[2:2] = self.b
50 s_list = self.a_list[2:-2]
51 s_list[2:2] = self.b_list
52 self.assertEqual(s, s_list)
53 self.assertEqual(s, a[2:-2])
54 self.assertEqual(s.items, a[2:-2].items)
56 def test_del_slice(self):
57 a = statemachine.ViewList(self.a[:])
58 s = a[2:]
59 s_list = self.a_list[2:]
60 del s[3:5]
61 del s_list[3:5]
62 self.assertEqual(s, s_list)
63 self.assertEqual(s, a[2:])
64 self.assertEqual(s.items, a[2:].items)
66 def test_insert(self):
67 a_list = self.a_list[:]
68 a_list.insert(2, 'Q')
69 a_list[4:4] = self.b_list
70 a = self.a[:]
71 self.assert_(isinstance(a, statemachine.ViewList))
72 a.insert(2, 'Q', 'runtime')
73 a.insert(4, self.b)
74 self.assertEqual(a, a_list)
75 self.assertEqual(a.info(2), ('runtime', 0))
76 self.assertEqual(a.info(5), ('b', 1))
78 def test_append(self):
79 a_list = self.a_list[:]
80 a_list.append('Q')
81 a_list.extend(self.b_list)
82 a = statemachine.ViewList(self.a)
83 a.append('Q', 'runtime')
84 a.append(self.b)
85 self.assertEqual(a, a_list)
86 self.assertEqual(a.info(len(self.a)), ('runtime', 0))
87 self.assertEqual(a.info(-2), ('b', len(self.b) - 2))
89 def test_extend(self):
90 a_list = self.a_list[:]
91 a_list.extend(self.b_list)
92 a = statemachine.ViewList(self.a)
93 a.extend(self.b)
94 self.assertEqual(a, a_list)
95 self.assertEqual(a.info(len(self.a) + 1), ('b', 1))
97 def test_view(self):
98 a = statemachine.ViewList(self.a[:])
99 a.insert(4, self.b)
100 s = a[2:-2]
101 s.insert(5, self.c)
102 self.assertEqual(s, a[2:-2])
103 self.assertEqual(s.items, a[2:-2].items)
104 s.pop()
105 self.assertEqual(s, a[2:-2])
106 self.assertEqual(s.items, a[2:-2].items)
107 s.remove('X')
108 self.assertEqual(s, a[2:-2])
109 self.assertEqual(s.items, a[2:-2].items)
111 def test_trim(self):
112 a = statemachine.ViewList(self.a[:])
113 s = a[1:-1]
114 s.trim_start(1)
115 self.assertEquals(a, self.a)
116 self.assertEquals(s, a[2:-1])
117 s.trim_end(1)
118 self.assertEquals(a, self.a)
119 self.assertEquals(s, a[2:-2])
122 # print
123 # print a
124 # print s
125 # print a.items
126 # print s.items
129 class StringList(unittest.TestCase):
131 text = """\
132 This is some
133 example text.
135 Here is some
136 indented text.
138 Unindented text.
141 indented_string = """\
143 literal
144 block"""
147 def setUp(self):
148 self.a_list = self.text.splitlines(1)
149 self.a = statemachine.StringList(self.a_list, 'a')
151 def test_trim_left(self):
152 s = self.a[3:5]
153 s.trim_left(4)
154 self.assertEqual(s, [line.lstrip() for line in self.a_list[3:5]])
156 def test_get_indented(self):
157 self.assertEquals(self.a.get_indented(),
158 ([], 0, 0))
159 block = statemachine.StringList(
160 statemachine.string2lines(self.indented_string))
161 self.assertEquals(block.get_indented(),
162 ([s[6:] for s in block], 6, 1))
165 if __name__ == '__main__':
166 unittest.main()