3 # Author: David Goodger
4 # Contact: goodger@users.sourceforge.net
7 # Copyright: This module has been placed in the public domain.
10 Test module for the ViewList class from statemachine.py.
16 from DocutilsTestSupport
import statemachine
19 class ViewListTests(unittest
.TestCase
):
21 a_list
= list('abcdefg')
22 b_list
= list('AEIOU')
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')
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
):
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
[:])
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
[:])
59 s_list
= self
.a_list
[2:]
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
[:]
69 a_list
[4:4] = self
.b_list
71 self
.assert_(isinstance(a
, statemachine
.ViewList
))
72 a
.insert(2, 'Q', 'runtime')
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
[:]
81 a_list
.extend(self
.b_list
)
82 a
= statemachine
.ViewList(self
.a
)
83 a
.append('Q', 'runtime')
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
)
94 self
.assertEqual(a
, a_list
)
95 self
.assertEqual(a
.info(len(self
.a
) + 1), ('b', 1))
98 a
= statemachine
.ViewList(self
.a
[:])
102 self
.assertEqual(s
, a
[2:-2])
103 self
.assertEqual(s
.items
, a
[2:-2].items
)
105 self
.assertEqual(s
, a
[2:-2])
106 self
.assertEqual(s
.items
, a
[2:-2].items
)
108 self
.assertEqual(s
, a
[2:-2])
109 self
.assertEqual(s
.items
, a
[2:-2].items
)
112 a
= statemachine
.ViewList(self
.a
[:])
115 self
.assertEquals(a
, self
.a
)
116 self
.assertEquals(s
, a
[2:-1])
118 self
.assertEquals(a
, self
.a
)
119 self
.assertEquals(s
, a
[2:-2])
129 class StringList(unittest
.TestCase
):
141 indented_string
= """\
148 self
.a_list
= self
.text
.splitlines(1)
149 self
.a
= statemachine
.StringList(self
.a_list
, 'a')
151 def test_trim_left(self
):
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(),
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__':