blob: 1ed67dac805967c4673245d29955ee394910e9c6 [file] [log] [blame]
Guido van Rossum447b4a01999-03-26 16:20:45 +00001# Check every path through every method of UserList
2
Raymond Hettinger53dbe392008-02-12 20:03:09 +00003from collections import UserList
Serhiy Storchakae4fbb022016-04-24 23:42:49 +03004from test import list_tests
Zachary Wareac28b792015-12-04 23:32:23 -06005import unittest
Tim Petersf5fa0fc2000-09-19 20:31:24 +00006
Walter Dörwald1dde95d2003-12-08 11:38:45 +00007class UserListTest(list_tests.CommonTest):
8 type2test = UserList
Guido van Rossum447b4a01999-03-26 16:20:45 +00009
Walter Dörwald75852292003-02-13 18:07:43 +000010 def test_getslice(self):
Guido van Rossumcd16bf62007-06-13 18:07:49 +000011 super().test_getslice()
Walter Dörwald1dde95d2003-12-08 11:38:45 +000012 l = [0, 1, 2, 3, 4]
13 u = self.type2test(l)
14 for i in range(-3, 6):
Walter Dörwald75852292003-02-13 18:07:43 +000015 self.assertEqual(u[:i], l[:i])
16 self.assertEqual(u[i:], l[i:])
Guido van Rossum805365e2007-05-07 22:24:25 +000017 for j in range(-3, 6):
Walter Dörwald75852292003-02-13 18:07:43 +000018 self.assertEqual(u[i:j], l[i:j])
Guido van Rossum447b4a01999-03-26 16:20:45 +000019
Michael Blahayb1c31672019-05-07 17:41:06 -040020 def test_slice_type(self):
21 l = [0, 1, 2, 3, 4]
22 u = UserList(l)
23 self.assertIsInstance(u[:], u.__class__)
24 self.assertEqual(u[:],u)
25
Walter Dörwald75852292003-02-13 18:07:43 +000026 def test_add_specials(self):
27 u = UserList("spam")
28 u2 = u + "eggs"
29 self.assertEqual(u2, list("spameggs"))
Guido van Rossum447b4a01999-03-26 16:20:45 +000030
Walter Dörwald75852292003-02-13 18:07:43 +000031 def test_radd_specials(self):
32 u = UserList("eggs")
33 u2 = "spam" + u
34 self.assertEqual(u2, list("spameggs"))
35 u2 = u.__radd__(UserList("spam"))
36 self.assertEqual(u2, list("spameggs"))
Guido van Rossum447b4a01999-03-26 16:20:45 +000037
Walter Dörwald75852292003-02-13 18:07:43 +000038 def test_iadd(self):
Guido van Rossumcd16bf62007-06-13 18:07:49 +000039 super().test_iadd()
Walter Dörwald1dde95d2003-12-08 11:38:45 +000040 u = [0, 1]
Walter Dörwald75852292003-02-13 18:07:43 +000041 u += UserList([0, 1])
Walter Dörwald1dde95d2003-12-08 11:38:45 +000042 self.assertEqual(u, [0, 1, 0, 1])
Guido van Rossum447b4a01999-03-26 16:20:45 +000043
Walter Dörwald1dde95d2003-12-08 11:38:45 +000044 def test_mixedcmp(self):
45 u = self.type2test([0, 1])
46 self.assertEqual(u, [0, 1])
47 self.assertNotEqual(u, [0])
48 self.assertNotEqual(u, [0, 2])
Guido van Rossum447b4a01999-03-26 16:20:45 +000049
Walter Dörwald1dde95d2003-12-08 11:38:45 +000050 def test_mixedadd(self):
51 u = self.type2test([0, 1])
52 self.assertEqual(u + [], u)
53 self.assertEqual(u + [2], [0, 1, 2])
Guido van Rossum447b4a01999-03-26 16:20:45 +000054
Walter Dörwald1dde95d2003-12-08 11:38:45 +000055 def test_getitemoverwriteiter(self):
56 # Verify that __getitem__ overrides *are* recognized by __iter__
57 class T(self.type2test):
58 def __getitem__(self, key):
59 return str(key) + '!!!'
Georg Brandla18af4e2007-04-21 15:47:16 +000060 self.assertEqual(next(iter(T((1,2)))), "0!!!")
Guido van Rossum447b4a01999-03-26 16:20:45 +000061
Raymond Hettinger1c7b7f72011-05-05 14:34:35 -070062 def test_userlist_copy(self):
63 u = self.type2test([6, 8, 1, 9, 1])
64 v = u.copy()
65 self.assertEqual(u, v)
66 self.assertEqual(type(u), type(v))
67
Walter Dörwald75852292003-02-13 18:07:43 +000068if __name__ == "__main__":
Zachary Ware38c707e2015-04-13 15:00:43 -050069 unittest.main()