1edbb763a2b63074cd468a5d33a17908b2cc0654Jeff Vander Stoep# Check every path through every method of UserList
2edbb763a2b63074cd468a5d33a17908b2cc0654Jeff Vander Stoep
3edbb763a2b63074cd468a5d33a17908b2cc0654Jeff Vander Stoepfrom UserList import UserList
4edbb763a2b63074cd468a5d33a17908b2cc0654Jeff Vander Stoepfrom test import test_support, list_tests
5edbb763a2b63074cd468a5d33a17908b2cc0654Jeff Vander Stoep
6edbb763a2b63074cd468a5d33a17908b2cc0654Jeff Vander Stoepclass UserListTest(list_tests.CommonTest):
7edbb763a2b63074cd468a5d33a17908b2cc0654Jeff Vander Stoep    type2test = UserList
8edbb763a2b63074cd468a5d33a17908b2cc0654Jeff Vander Stoep
9edbb763a2b63074cd468a5d33a17908b2cc0654Jeff Vander Stoep    def test_getslice(self):
10edbb763a2b63074cd468a5d33a17908b2cc0654Jeff Vander Stoep        super(UserListTest, self).test_getslice()
11edbb763a2b63074cd468a5d33a17908b2cc0654Jeff Vander Stoep        l = [0, 1, 2, 3, 4]
12edbb763a2b63074cd468a5d33a17908b2cc0654Jeff Vander Stoep        u = self.type2test(l)
13edbb763a2b63074cd468a5d33a17908b2cc0654Jeff Vander Stoep        for i in range(-3, 6):
14edbb763a2b63074cd468a5d33a17908b2cc0654Jeff Vander Stoep            self.assertEqual(u[:i], l[:i])
15edbb763a2b63074cd468a5d33a17908b2cc0654Jeff Vander Stoep            self.assertEqual(u[i:], l[i:])
16edbb763a2b63074cd468a5d33a17908b2cc0654Jeff Vander Stoep            for j in xrange(-3, 6):
17edbb763a2b63074cd468a5d33a17908b2cc0654Jeff Vander Stoep                self.assertEqual(u[i:j], l[i:j])
18edbb763a2b63074cd468a5d33a17908b2cc0654Jeff Vander Stoep
19edbb763a2b63074cd468a5d33a17908b2cc0654Jeff Vander Stoep    def test_add_specials(self):
20edbb763a2b63074cd468a5d33a17908b2cc0654Jeff Vander Stoep        u = UserList("spam")
21edbb763a2b63074cd468a5d33a17908b2cc0654Jeff Vander Stoep        u2 = u + "eggs"
22edbb763a2b63074cd468a5d33a17908b2cc0654Jeff Vander Stoep        self.assertEqual(u2, list("spameggs"))
23edbb763a2b63074cd468a5d33a17908b2cc0654Jeff Vander Stoep
24edbb763a2b63074cd468a5d33a17908b2cc0654Jeff Vander Stoep    def test_radd_specials(self):
25edbb763a2b63074cd468a5d33a17908b2cc0654Jeff Vander Stoep        u = UserList("eggs")
26edbb763a2b63074cd468a5d33a17908b2cc0654Jeff Vander Stoep        u2 = "spam" + u
27edbb763a2b63074cd468a5d33a17908b2cc0654Jeff Vander Stoep        self.assertEqual(u2, list("spameggs"))
28edbb763a2b63074cd468a5d33a17908b2cc0654Jeff Vander Stoep        u2 = u.__radd__(UserList("spam"))
29edbb763a2b63074cd468a5d33a17908b2cc0654Jeff Vander Stoep        self.assertEqual(u2, list("spameggs"))
30edbb763a2b63074cd468a5d33a17908b2cc0654Jeff Vander Stoep
31edbb763a2b63074cd468a5d33a17908b2cc0654Jeff Vander Stoep    def test_iadd(self):
32edbb763a2b63074cd468a5d33a17908b2cc0654Jeff Vander Stoep        super(UserListTest, self).test_iadd()
33edbb763a2b63074cd468a5d33a17908b2cc0654Jeff Vander Stoep        u = [0, 1]
34edbb763a2b63074cd468a5d33a17908b2cc0654Jeff Vander Stoep        u += UserList([0, 1])
35edbb763a2b63074cd468a5d33a17908b2cc0654Jeff Vander Stoep        self.assertEqual(u, [0, 1, 0, 1])
36edbb763a2b63074cd468a5d33a17908b2cc0654Jeff Vander Stoep
37edbb763a2b63074cd468a5d33a17908b2cc0654Jeff Vander Stoep    def test_mixedcmp(self):
38edbb763a2b63074cd468a5d33a17908b2cc0654Jeff Vander Stoep        u = self.type2test([0, 1])
39edbb763a2b63074cd468a5d33a17908b2cc0654Jeff Vander Stoep        self.assertEqual(u, [0, 1])
40edbb763a2b63074cd468a5d33a17908b2cc0654Jeff Vander Stoep        self.assertNotEqual(u, [0])
41edbb763a2b63074cd468a5d33a17908b2cc0654Jeff Vander Stoep        self.assertNotEqual(u, [0, 2])
42edbb763a2b63074cd468a5d33a17908b2cc0654Jeff Vander Stoep
43edbb763a2b63074cd468a5d33a17908b2cc0654Jeff Vander Stoep    def test_mixedadd(self):
44edbb763a2b63074cd468a5d33a17908b2cc0654Jeff Vander Stoep        u = self.type2test([0, 1])
45edbb763a2b63074cd468a5d33a17908b2cc0654Jeff Vander Stoep        self.assertEqual(u + [], u)
46edbb763a2b63074cd468a5d33a17908b2cc0654Jeff Vander Stoep        self.assertEqual(u + [2], [0, 1, 2])
47edbb763a2b63074cd468a5d33a17908b2cc0654Jeff Vander Stoep
48edbb763a2b63074cd468a5d33a17908b2cc0654Jeff Vander Stoep    def test_getitemoverwriteiter(self):
49edbb763a2b63074cd468a5d33a17908b2cc0654Jeff Vander Stoep        # Verify that __getitem__ overrides *are* recognized by __iter__
50edbb763a2b63074cd468a5d33a17908b2cc0654Jeff Vander Stoep        class T(self.type2test):
51edbb763a2b63074cd468a5d33a17908b2cc0654Jeff Vander Stoep            def __getitem__(self, key):
52edbb763a2b63074cd468a5d33a17908b2cc0654Jeff Vander Stoep                return str(key) + '!!!'
53edbb763a2b63074cd468a5d33a17908b2cc0654Jeff Vander Stoep        self.assertEqual(iter(T((1,2))).next(), "0!!!")
54edbb763a2b63074cd468a5d33a17908b2cc0654Jeff Vander Stoep
55edbb763a2b63074cd468a5d33a17908b2cc0654Jeff Vander Stoepdef test_main():
56edbb763a2b63074cd468a5d33a17908b2cc0654Jeff Vander Stoep    with test_support.check_py3k_warnings(
57edbb763a2b63074cd468a5d33a17908b2cc0654Jeff Vander Stoep            (".+__(get|set|del)slice__ has been removed", DeprecationWarning)):
58edbb763a2b63074cd468a5d33a17908b2cc0654Jeff Vander Stoep        test_support.run_unittest(UserListTest)
59edbb763a2b63074cd468a5d33a17908b2cc0654Jeff Vander Stoep
60edbb763a2b63074cd468a5d33a17908b2cc0654Jeff Vander Stoepif __name__ == "__main__":
61edbb763a2b63074cd468a5d33a17908b2cc0654Jeff Vander Stoep    test_main()
62