1# Check every path through every method of UserList 2 3from collections import UserList 4from test import list_tests 5import unittest 6from test import support 7 8 9class UserListTest(list_tests.CommonTest): 10 type2test = UserList 11 12 def test_getslice(self): 13 super().test_getslice() 14 l = [0, 1, 2, 3, 4] 15 u = self.type2test(l) 16 for i in range(-3, 6): 17 self.assertEqual(u[:i], l[:i]) 18 self.assertEqual(u[i:], l[i:]) 19 for j in range(-3, 6): 20 self.assertEqual(u[i:j], l[i:j]) 21 22 def test_slice_type(self): 23 l = [0, 1, 2, 3, 4] 24 u = UserList(l) 25 self.assertIsInstance(u[:], u.__class__) 26 self.assertEqual(u[:],u) 27 28 def test_add_specials(self): 29 u = UserList("spam") 30 u2 = u + "eggs" 31 self.assertEqual(u2, list("spameggs")) 32 33 def test_radd_specials(self): 34 u = UserList("eggs") 35 u2 = "spam" + u 36 self.assertEqual(u2, list("spameggs")) 37 u2 = u.__radd__(UserList("spam")) 38 self.assertEqual(u2, list("spameggs")) 39 40 def test_iadd(self): 41 super().test_iadd() 42 u = [0, 1] 43 u += UserList([0, 1]) 44 self.assertEqual(u, [0, 1, 0, 1]) 45 46 def test_mixedcmp(self): 47 u = self.type2test([0, 1]) 48 self.assertEqual(u, [0, 1]) 49 self.assertNotEqual(u, [0]) 50 self.assertNotEqual(u, [0, 2]) 51 52 def test_mixedadd(self): 53 u = self.type2test([0, 1]) 54 self.assertEqual(u + [], u) 55 self.assertEqual(u + [2], [0, 1, 2]) 56 57 def test_getitemoverwriteiter(self): 58 # Verify that __getitem__ overrides *are* recognized by __iter__ 59 class T(self.type2test): 60 def __getitem__(self, key): 61 return str(key) + '!!!' 62 self.assertEqual(next(iter(T((1,2)))), "0!!!") 63 64 def test_userlist_copy(self): 65 u = self.type2test([6, 8, 1, 9, 1]) 66 v = u.copy() 67 self.assertEqual(u, v) 68 self.assertEqual(type(u), type(v)) 69 70 # Decorate existing test with recursion limit, because 71 # the test is for C structure, but `UserList` is a Python structure. 72 test_repr_deep = support.infinite_recursion(25)( 73 list_tests.CommonTest.test_repr_deep, 74 ) 75 76if __name__ == "__main__": 77 unittest.main() 78