diff --git a/tests/test_smart_list.py b/tests/test_smart_list.py index 5fc26b3..71f428b 100644 --- a/tests/test_smart_list.py +++ b/tests/test_smart_list.py @@ -49,15 +49,79 @@ class TestSmartList(unittest.TestCase): self.assertEquals([2, 3, 4], child) 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__ # __radd__ # __iadd__ @@ -150,6 +214,7 @@ class TestSmartList(unittest.TestCase): self.assertEquals([0, 1, 2, 0, 1, 2], list4) def test_parent_methods(self): + pass # append # count # extend @@ -161,6 +226,7 @@ class TestSmartList(unittest.TestCase): # sort def test_child_magics(self): + pass # if py3k: # __str__ # __bytes__ @@ -197,6 +263,7 @@ class TestSmartList(unittest.TestCase): # __imul__ def test_child_methods(self): + pass # append # count # extend @@ -209,6 +276,8 @@ class TestSmartList(unittest.TestCase): def test_influence(self): pass + # test whether changes are propogated correctly + # also test whether children that exit scope are removed from parent's map if __name__ == "__main__": unittest.main(verbosity=2)