diff options
| author | milde <milde@929543f6-e4f2-0310-98a6-ba3bd3dd1d04> | 2010-05-07 08:18:29 +0000 |
|---|---|---|
| committer | milde <milde@929543f6-e4f2-0310-98a6-ba3bd3dd1d04> | 2010-05-07 08:18:29 +0000 |
| commit | a7e51bd80609eceec4a54ef9ca312a047334e6ee (patch) | |
| tree | cf12a922343c8629ac000df76116e686a41ce21d /docutils | |
| parent | f3888be3970c6ffc9259bb054d2c9d8aaf5f8b1a (diff) | |
| download | docutils-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-x | docutils/test/test_viewlist.py | 71 |
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 |
