summaryrefslogtreecommitdiff
path: root/docutils
diff options
context:
space:
mode:
authormilde <milde@929543f6-e4f2-0310-98a6-ba3bd3dd1d04>2010-05-07 08:18:29 +0000
committermilde <milde@929543f6-e4f2-0310-98a6-ba3bd3dd1d04>2010-05-07 08:18:29 +0000
commita7e51bd80609eceec4a54ef9ca312a047334e6ee (patch)
treecf12a922343c8629ac000df76116e686a41ce21d /docutils
parentf3888be3970c6ffc9259bb054d2c9d8aaf5f8b1a (diff)
downloaddocutils-a7e51bd80609eceec4a54ef9ca312a047334e6ee.tar.gz
More tests for the ViewList class
git-svn-id: http://svn.code.sf.net/p/docutils/code/trunk@6321 929543f6-e4f2-0310-98a6-ba3bd3dd1d04
Diffstat (limited to 'docutils')
-rwxr-xr-xdocutils/test/test_viewlist.py71
1 files changed, 67 insertions, 4 deletions
diff --git a/docutils/test/test_viewlist.py b/docutils/test/test_viewlist.py
index 2cb578549..5044f68fc 100755
--- a/docutils/test/test_viewlist.py
+++ b/docutils/test/test_viewlist.py
@@ -25,21 +25,58 @@ class ViewListTests(unittest.TestCase):
self.b = statemachine.ViewList(self.b_list, 'b')
self.c = statemachine.ViewList(self.c_list, 'c')
+ def test_xitems(self):
+ self.assertEqual(list(self.b.xitems()),
+ [('b', 0, 'A'), ('b', 1, 'E'),
+ ('b', 2, 'I'), ('b', 3, 'O'), ('b', 4, 'U')])
+ self.assertEqual(list(self.c.xitems()),
+ [('c', 0, 'X'), ('c', 1, 'Y'), ('c', 2, 'Z')])
+
def test_lists(self):
+ # be compatible to standard lists whenever sensible:
self.assertEqual(self.a, self.a_list)
self.assertEqual(str(self.a), str(self.a_list))
self.assertEqual(self.b, self.b_list)
self.assertEqual(self.c, self.c_list)
+ self.assertEqual(len(self.a), len(self.a_list))
+ self.assertTrue('d' in self.a) # __contains__
+ self.assertEqual([value for value in self.a], self.a_list)
+ # get and set values
+ self.assertEqual(self.a[2], self.a_list[2])
+ a = self.a[:]
+ self.assertEqual(a, self.a)
+ a[1] = 3
+ self.assertEqual(a[1], 3)
+ # the `items` list contains the metadata (source/offset tuples)
self.assertEqual(self.a.items,
- zip('a' * len(self.a_list), range(len(self.a_list))))
+ [('a', i) for (i, v) in enumerate(self.a_list)])
+
+ def test_special_class_methods(self):
+ # `repr` returns instantiation expression
+ self.assertEqual(repr(self.a), "ViewList(%s, items=%s)" %
+ (repr(self.a_list), repr(self.a.items)))
+ # `del` also deletes meta-data:
+ del(self.c[1])
+ self.assertEqual(list(self.c.xitems()),
+ [('c', 0, 'X'), ('c', 2, 'Z')])
+ # operators with extended behaviour
+ ab = self.a + self.b
+ self.assertEqual(ab, self.a_list + self.b_list)
+ self.assertEqual(ab.items, self.a.items + self.b.items)
+ aa = self.a * 2
+ self.assertEqual(aa, self.a_list * 2)
+ self.assertEqual(aa.items, self.a.items * 2)
+ self.a += self.b
+ self.assertEqual(self.a, self.a_list + self.b_list)
+ # self.assertEqual(self.a.items, self.a.items + self.b.items)
def test_get_slice(self):
a = self.a[1:-1]
a_list = self.a_list[1:-1]
self.assertEqual(a, a_list)
- self.assertEqual(a.items,
- zip('a' * len(a_list), range(1, len(a_list) + 1)))
+ self.assertEqual(a.items, [('a', i+1) for (i, v) in enumerate(a_list)])
self.assertEqual(a.parent, self.a)
+ # a.pprint()
def test_set_slice(self):
a = statemachine.ViewList(self.a[:])
@@ -47,6 +84,8 @@ class ViewListTests(unittest.TestCase):
s[2:2] = self.b
s_list = self.a_list[2:-2]
s_list[2:2] = self.b_list
+ # s.pprint()
+ # s[1:4].pprint()
self.assertEqual(s, s_list)
self.assertEqual(s, a[2:-2])
self.assertEqual(s.items, a[2:-2].items)
@@ -80,6 +119,7 @@ class ViewListTests(unittest.TestCase):
a = statemachine.ViewList(self.a)
a.append('Q', 'runtime')
a.append(self.b)
+ # a.pprint()
self.assertEqual(a, a_list)
self.assertEqual(a.info(len(self.a)), ('runtime', 0))
self.assertEqual(a.info(-2), ('b', len(self.b) - 2))
@@ -91,6 +131,7 @@ class ViewListTests(unittest.TestCase):
a.extend(self.b)
self.assertEqual(a, a_list)
self.assertEqual(a.info(len(self.a) + 1), ('b', 1))
+ # a.pprint()
def test_view(self):
a = statemachine.ViewList(self.a[:])
@@ -116,7 +157,29 @@ class ViewListTests(unittest.TestCase):
self.assertEquals(a, self.a)
self.assertEquals(s, a[2:-2])
-
+ def test_info(self):
+ ab = self.a + self.b
+ self.assertEqual(ab.info(0), ('a', 0))
+ self.assertEqual(ab.info(-1), ('b', len(self.b)-1))
+ # report source if index is off the list by one
+ self.assertEqual(ab.info(len(ab)), ('b', None))
+ # `source` and `offset` methods are based on info
+ self.assertEqual(ab.source(-1), 'b')
+ self.assertEqual(ab.offset(-1), len(self.b)-1)
+
+ def test_reverse(self):
+ c = self.c[:]
+ c.reverse()
+ self.assertEqual(list(c.xitems()),
+ [('c', 2, 'Z'), ('c', 1, 'Y'), ('c', 0, 'X')])
+
+ def test_sort(self):
+ c = self.c[:]
+ c.reverse()
+ # c.pprint()
+ c.sort()
+ self.assertEqual(self.c, c)
+
# print
# print a
# print s