17db96d56Sopenharmony_ci# Check every path through every method of UserList 27db96d56Sopenharmony_ci 37db96d56Sopenharmony_cifrom collections import UserList 47db96d56Sopenharmony_cifrom test import list_tests 57db96d56Sopenharmony_ciimport unittest 67db96d56Sopenharmony_ci 77db96d56Sopenharmony_ciclass UserListTest(list_tests.CommonTest): 87db96d56Sopenharmony_ci type2test = UserList 97db96d56Sopenharmony_ci 107db96d56Sopenharmony_ci def test_getslice(self): 117db96d56Sopenharmony_ci super().test_getslice() 127db96d56Sopenharmony_ci l = [0, 1, 2, 3, 4] 137db96d56Sopenharmony_ci u = self.type2test(l) 147db96d56Sopenharmony_ci for i in range(-3, 6): 157db96d56Sopenharmony_ci self.assertEqual(u[:i], l[:i]) 167db96d56Sopenharmony_ci self.assertEqual(u[i:], l[i:]) 177db96d56Sopenharmony_ci for j in range(-3, 6): 187db96d56Sopenharmony_ci self.assertEqual(u[i:j], l[i:j]) 197db96d56Sopenharmony_ci 207db96d56Sopenharmony_ci def test_slice_type(self): 217db96d56Sopenharmony_ci l = [0, 1, 2, 3, 4] 227db96d56Sopenharmony_ci u = UserList(l) 237db96d56Sopenharmony_ci self.assertIsInstance(u[:], u.__class__) 247db96d56Sopenharmony_ci self.assertEqual(u[:],u) 257db96d56Sopenharmony_ci 267db96d56Sopenharmony_ci def test_add_specials(self): 277db96d56Sopenharmony_ci u = UserList("spam") 287db96d56Sopenharmony_ci u2 = u + "eggs" 297db96d56Sopenharmony_ci self.assertEqual(u2, list("spameggs")) 307db96d56Sopenharmony_ci 317db96d56Sopenharmony_ci def test_radd_specials(self): 327db96d56Sopenharmony_ci u = UserList("eggs") 337db96d56Sopenharmony_ci u2 = "spam" + u 347db96d56Sopenharmony_ci self.assertEqual(u2, list("spameggs")) 357db96d56Sopenharmony_ci u2 = u.__radd__(UserList("spam")) 367db96d56Sopenharmony_ci self.assertEqual(u2, list("spameggs")) 377db96d56Sopenharmony_ci 387db96d56Sopenharmony_ci def test_iadd(self): 397db96d56Sopenharmony_ci super().test_iadd() 407db96d56Sopenharmony_ci u = [0, 1] 417db96d56Sopenharmony_ci u += UserList([0, 1]) 427db96d56Sopenharmony_ci self.assertEqual(u, [0, 1, 0, 1]) 437db96d56Sopenharmony_ci 447db96d56Sopenharmony_ci def test_mixedcmp(self): 457db96d56Sopenharmony_ci u = self.type2test([0, 1]) 467db96d56Sopenharmony_ci self.assertEqual(u, [0, 1]) 477db96d56Sopenharmony_ci self.assertNotEqual(u, [0]) 487db96d56Sopenharmony_ci self.assertNotEqual(u, [0, 2]) 497db96d56Sopenharmony_ci 507db96d56Sopenharmony_ci def test_mixedadd(self): 517db96d56Sopenharmony_ci u = self.type2test([0, 1]) 527db96d56Sopenharmony_ci self.assertEqual(u + [], u) 537db96d56Sopenharmony_ci self.assertEqual(u + [2], [0, 1, 2]) 547db96d56Sopenharmony_ci 557db96d56Sopenharmony_ci def test_getitemoverwriteiter(self): 567db96d56Sopenharmony_ci # Verify that __getitem__ overrides *are* recognized by __iter__ 577db96d56Sopenharmony_ci class T(self.type2test): 587db96d56Sopenharmony_ci def __getitem__(self, key): 597db96d56Sopenharmony_ci return str(key) + '!!!' 607db96d56Sopenharmony_ci self.assertEqual(next(iter(T((1,2)))), "0!!!") 617db96d56Sopenharmony_ci 627db96d56Sopenharmony_ci def test_userlist_copy(self): 637db96d56Sopenharmony_ci u = self.type2test([6, 8, 1, 9, 1]) 647db96d56Sopenharmony_ci v = u.copy() 657db96d56Sopenharmony_ci self.assertEqual(u, v) 667db96d56Sopenharmony_ci self.assertEqual(type(u), type(v)) 677db96d56Sopenharmony_ci 687db96d56Sopenharmony_ciif __name__ == "__main__": 697db96d56Sopenharmony_ci unittest.main() 70