4 # Author: David Goodger <goodger@python.org>
5 # Copyright: This module has been placed in the public domain.
8 Test module for the ViewList class from statemachine.py.
14 from DocutilsTestSupport
import statemachine
17 class ViewListTests(unittest
.TestCase
):
19 a_list
= list('abcdefg')
20 b_list
= list('AEIOU')
24 self
.a
= statemachine
.ViewList(self
.a_list
, 'a')
25 self
.b
= statemachine
.ViewList(self
.b_list
, 'b')
26 self
.c
= statemachine
.ViewList(self
.c_list
, 'c')
29 self
.assertEqual(self
.a
, self
.a_list
)
30 self
.assertEqual(str(self
.a
), str(self
.a_list
))
31 self
.assertEqual(self
.b
, self
.b_list
)
32 self
.assertEqual(self
.c
, self
.c_list
)
33 self
.assertEqual(self
.a
.items
,
34 zip('a' * len(self
.a_list
), range(len(self
.a_list
))))
36 def test_get_slice(self
):
38 a_list
= self
.a_list
[1:-1]
39 self
.assertEqual(a
, a_list
)
40 self
.assertEqual(a
.items
,
41 zip('a' * len(a_list
), range(1, len(a_list
) + 1)))
42 self
.assertEqual(a
.parent
, self
.a
)
44 def test_set_slice(self
):
45 a
= statemachine
.ViewList(self
.a
[:])
48 s_list
= self
.a_list
[2:-2]
49 s_list
[2:2] = self
.b_list
50 self
.assertEqual(s
, s_list
)
51 self
.assertEqual(s
, a
[2:-2])
52 self
.assertEqual(s
.items
, a
[2:-2].items
)
54 def test_del_slice(self
):
55 a
= statemachine
.ViewList(self
.a
[:])
57 s_list
= self
.a_list
[2:]
60 self
.assertEqual(s
, s_list
)
61 self
.assertEqual(s
, a
[2:])
62 self
.assertEqual(s
.items
, a
[2:].items
)
64 def test_insert(self
):
65 a_list
= self
.a_list
[:]
67 a_list
[4:4] = self
.b_list
69 self
.assert_(isinstance(a
, statemachine
.ViewList
))
70 a
.insert(2, 'Q', 'runtime')
72 self
.assertEqual(a
, a_list
)
73 self
.assertEqual(a
.info(2), ('runtime', 0))
74 self
.assertEqual(a
.info(5), ('b', 1))
76 def test_append(self
):
77 a_list
= self
.a_list
[:]
79 a_list
.extend(self
.b_list
)
80 a
= statemachine
.ViewList(self
.a
)
81 a
.append('Q', 'runtime')
83 self
.assertEqual(a
, a_list
)
84 self
.assertEqual(a
.info(len(self
.a
)), ('runtime', 0))
85 self
.assertEqual(a
.info(-2), ('b', len(self
.b
) - 2))
87 def test_extend(self
):
88 a_list
= self
.a_list
[:]
89 a_list
.extend(self
.b_list
)
90 a
= statemachine
.ViewList(self
.a
)
92 self
.assertEqual(a
, a_list
)
93 self
.assertEqual(a
.info(len(self
.a
) + 1), ('b', 1))
96 a
= statemachine
.ViewList(self
.a
[:])
100 self
.assertEqual(s
, a
[2:-2])
101 self
.assertEqual(s
.items
, a
[2:-2].items
)
103 self
.assertEqual(s
, a
[2:-2])
104 self
.assertEqual(s
.items
, a
[2:-2].items
)
106 self
.assertEqual(s
, a
[2:-2])
107 self
.assertEqual(s
.items
, a
[2:-2].items
)
110 a
= statemachine
.ViewList(self
.a
[:])
113 self
.assertEquals(a
, self
.a
)
114 self
.assertEquals(s
, a
[2:-1])
116 self
.assertEquals(a
, self
.a
)
117 self
.assertEquals(s
, a
[2:-2])
127 class StringList(unittest
.TestCase
):
139 indented_string
= """\
146 self
.a_list
= self
.text
.splitlines(1)
147 self
.a
= statemachine
.StringList(self
.a_list
, 'a')
149 def test_trim_left(self
):
152 self
.assertEqual(s
, [line
.lstrip() for line
in self
.a_list
[3:5]])
154 def test_get_indented(self
):
155 self
.assertEquals(self
.a
.get_indented(),
157 block
= statemachine
.StringList(
158 statemachine
.string2lines(self
.indented_string
))
159 self
.assertEquals(block
.get_indented(),
160 ([s
[6:] for s
in block
], 6, 1))
163 if __name__
== '__main__':