| @@ -49,15 +49,79 @@ class TestSmartList(unittest.TestCase): | |||||
| self.assertEquals([2, 3, 4], child) | self.assertEquals([2, 3, 4], child) | ||||
| self.assertEquals([0, 1, 2, 3, 4], parent) | self.assertEquals([0, 1, 2, 3, 4], parent) | ||||
| def test_parent_magics(self): | |||||
| """make sure magically implemented SmartList features work""" | |||||
| # __getitem__ | |||||
| # __setitem__ | |||||
| # __delitem__ | |||||
| # if not py3k: | |||||
| # __getslice__ | |||||
| # __setslice__ | |||||
| # __delslice__ | |||||
| def test_parent_get_set_del(self): | |||||
| """make sure SmartList's getitem/setitem/delitem work""" | |||||
| def assign(L, s1, s2, s3, val): | |||||
| L[s1:s2:s3] = val | |||||
| def delete(L, s1): | |||||
| del L[s1] | |||||
| list1 = SmartList([0, 1, 2, 3, "one", "two"]) | |||||
| list2 = SmartList(list(range(10))) | |||||
| self.assertEquals(1, list1[1]) | |||||
| self.assertEquals("one", list1[-2]) | |||||
| self.assertEquals([2, 3], list1[2:4]) | |||||
| self.assertRaises(IndexError, lambda: list1[6]) | |||||
| self.assertRaises(IndexError, lambda: list1[-7]) | |||||
| self.assertEquals([0, 1, 2], list1[:3]) | |||||
| self.assertEquals([0, 1, 2, 3, "one", "two"], list1[:]) | |||||
| self.assertEquals([3, "one", "two"], list1[3:]) | |||||
| self.assertEquals(["one", "two"], list1[-2:]) | |||||
| self.assertEquals([0, 1], list1[:-4]) | |||||
| self.assertEquals([], list1[6:]) | |||||
| self.assertEquals([], list1[4:2]) | |||||
| self.assertEquals([0, 2, "one"], list1[0:5:2]) | |||||
| self.assertEquals([0, 2], list1[0:-3:2]) | |||||
| self.assertEquals([0, 1, 2, 3, "one", "two"], list1[::]) | |||||
| self.assertEquals([2, 3, "one", "two"], list1[2::]) | |||||
| self.assertEquals([0, 1, 2, 3], list1[:4:]) | |||||
| self.assertEquals([2, 3], list1[2:4:]) | |||||
| self.assertEquals([0, 2, 4, 6, 8], list2[::2]) | |||||
| self.assertEquals([2, 5, 8], list2[2::3]) | |||||
| self.assertEquals([0, 3], list2[:6:3]) | |||||
| self.assertEquals([2, 5, 8], list2[-8:9:3]) | |||||
| self.assertEquals([], list2[100000:1000:-100]) | |||||
| list1[3] = 100 | |||||
| self.assertEquals(100, list1[3]) | |||||
| list1[5:] = [6, 7, 8] | |||||
| self.assertEquals([6, 7, 8], list1[5:]) | |||||
| self.assertEquals([0, 1, 2, 100, "one", 6, 7, 8], list1) | |||||
| list1[2:4] = [-1, -2, -3, -4, -5] | |||||
| self.assertEquals([0, 1, -1, -2, -3, -4, -5, "one", 6, 7, 8], list1) | |||||
| list1[0:-3] = [99] | |||||
| self.assertEquals([99, 6, 7, 8], list1) | |||||
| list2[0:6:2] = [100, 102, 104] | |||||
| self.assertEquals([100, 1, 102, 3, 104, 5, 6, 7, 8, 9], list2) | |||||
| list2[::3] = [200, 203, 206, 209] | |||||
| self.assertEquals([200, 1, 102, 203, 104, 5, 206, 7, 8, 209], list2) | |||||
| list2[::] = range(7) | |||||
| self.assertEquals([0, 1, 2, 3, 4, 5, 6], list2) | |||||
| self.assertRaises(ValueError, | |||||
| lambda: assign(list2, 0, 5, 2, [100, 102, 104, 106])) | |||||
| del list2[2] | |||||
| self.assertEquals([0, 1, 3, 4, 5, 6], list2) | |||||
| del list2[-3] | |||||
| self.assertEquals([0, 1, 3, 5, 6], list2) | |||||
| self.assertRaises(IndexError, lambda: delete(list2, 100)) | |||||
| self.assertRaises(IndexError, lambda: delete(list2, -6)) | |||||
| list2[:] = range(10) | |||||
| del list2[3:6] | |||||
| self.assertEquals([0, 1, 2, 6, 7, 8, 9], list2) | |||||
| del list2[-2:] | |||||
| self.assertEquals([0, 1, 2, 6, 7], list2) | |||||
| del list2[:2] | |||||
| self.assertEquals([2, 6, 7], list2) | |||||
| list2[:] = range(10) | |||||
| del list2[2:8:2] | |||||
| self.assertEquals([0, 1, 3, 5, 7, 8, 9], list2) | |||||
| def test_parent_add(self): | |||||
| """make sure SmartList's add/radd/iadd work""" | |||||
| # __add__ | # __add__ | ||||
| # __radd__ | # __radd__ | ||||
| # __iadd__ | # __iadd__ | ||||
| @@ -150,6 +214,7 @@ class TestSmartList(unittest.TestCase): | |||||
| self.assertEquals([0, 1, 2, 0, 1, 2], list4) | self.assertEquals([0, 1, 2, 0, 1, 2], list4) | ||||
| def test_parent_methods(self): | def test_parent_methods(self): | ||||
| pass | |||||
| # append | # append | ||||
| # count | # count | ||||
| # extend | # extend | ||||
| @@ -161,6 +226,7 @@ class TestSmartList(unittest.TestCase): | |||||
| # sort | # sort | ||||
| def test_child_magics(self): | def test_child_magics(self): | ||||
| pass | |||||
| # if py3k: | # if py3k: | ||||
| # __str__ | # __str__ | ||||
| # __bytes__ | # __bytes__ | ||||
| @@ -197,6 +263,7 @@ class TestSmartList(unittest.TestCase): | |||||
| # __imul__ | # __imul__ | ||||
| def test_child_methods(self): | def test_child_methods(self): | ||||
| pass | |||||
| # append | # append | ||||
| # count | # count | ||||
| # extend | # extend | ||||
| @@ -209,6 +276,8 @@ class TestSmartList(unittest.TestCase): | |||||
| def test_influence(self): | def test_influence(self): | ||||
| pass | pass | ||||
| # test whether changes are propogated correctly | |||||
| # also test whether children that exit scope are removed from parent's map | |||||
| if __name__ == "__main__": | if __name__ == "__main__": | ||||
| unittest.main(verbosity=2) | unittest.main(verbosity=2) | ||||