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