test_operator.py revision c9c0f201fed21efcf669dbbf5f923eaf0eeb1db9
1a09ec19a332de34de493b2c4da2b89b46fadc370Barry Warsawimport operator
2cd112f5546256a752f56b3bf6ce0ff19ff30a981Fred Drakeimport unittest
3cd112f5546256a752f56b3bf6ce0ff19ff30a981Fred Drake
4ee8712cda46338d223509cc5751fd36509ad3860Benjamin Petersonfrom test import support
5cd112f5546256a752f56b3bf6ce0ff19ff30a981Fred Drake
6fd163f92cee2aa8189879bd43670782f4cfd2cf8Armin Rigoclass Seq1:
7fd163f92cee2aa8189879bd43670782f4cfd2cf8Armin Rigo    def __init__(self, lst):
8fd163f92cee2aa8189879bd43670782f4cfd2cf8Armin Rigo        self.lst = lst
9fd163f92cee2aa8189879bd43670782f4cfd2cf8Armin Rigo    def __len__(self):
10fd163f92cee2aa8189879bd43670782f4cfd2cf8Armin Rigo        return len(self.lst)
11fd163f92cee2aa8189879bd43670782f4cfd2cf8Armin Rigo    def __getitem__(self, i):
12fd163f92cee2aa8189879bd43670782f4cfd2cf8Armin Rigo        return self.lst[i]
13fd163f92cee2aa8189879bd43670782f4cfd2cf8Armin Rigo    def __add__(self, other):
14fd163f92cee2aa8189879bd43670782f4cfd2cf8Armin Rigo        return self.lst + other.lst
15fd163f92cee2aa8189879bd43670782f4cfd2cf8Armin Rigo    def __mul__(self, other):
16fd163f92cee2aa8189879bd43670782f4cfd2cf8Armin Rigo        return self.lst * other
17fd163f92cee2aa8189879bd43670782f4cfd2cf8Armin Rigo    def __rmul__(self, other):
18fd163f92cee2aa8189879bd43670782f4cfd2cf8Armin Rigo        return other * self.lst
19fd163f92cee2aa8189879bd43670782f4cfd2cf8Armin Rigo
20fd163f92cee2aa8189879bd43670782f4cfd2cf8Armin Rigoclass Seq2(object):
21fd163f92cee2aa8189879bd43670782f4cfd2cf8Armin Rigo    def __init__(self, lst):
22fd163f92cee2aa8189879bd43670782f4cfd2cf8Armin Rigo        self.lst = lst
23fd163f92cee2aa8189879bd43670782f4cfd2cf8Armin Rigo    def __len__(self):
24fd163f92cee2aa8189879bd43670782f4cfd2cf8Armin Rigo        return len(self.lst)
25fd163f92cee2aa8189879bd43670782f4cfd2cf8Armin Rigo    def __getitem__(self, i):
26fd163f92cee2aa8189879bd43670782f4cfd2cf8Armin Rigo        return self.lst[i]
27fd163f92cee2aa8189879bd43670782f4cfd2cf8Armin Rigo    def __add__(self, other):
28fd163f92cee2aa8189879bd43670782f4cfd2cf8Armin Rigo        return self.lst + other.lst
29fd163f92cee2aa8189879bd43670782f4cfd2cf8Armin Rigo    def __mul__(self, other):
30fd163f92cee2aa8189879bd43670782f4cfd2cf8Armin Rigo        return self.lst * other
31fd163f92cee2aa8189879bd43670782f4cfd2cf8Armin Rigo    def __rmul__(self, other):
32fd163f92cee2aa8189879bd43670782f4cfd2cf8Armin Rigo        return other * self.lst
33fd163f92cee2aa8189879bd43670782f4cfd2cf8Armin Rigo
34cd112f5546256a752f56b3bf6ce0ff19ff30a981Fred Drake
35cd112f5546256a752f56b3bf6ce0ff19ff30a981Fred Drakeclass OperatorTestCase(unittest.TestCase):
36cd112f5546256a752f56b3bf6ce0ff19ff30a981Fred Drake    def test_lt(self):
37c9c0f201fed21efcf669dbbf5f923eaf0eeb1db9Benjamin Peterson        self.assertRaises(TypeError, operator.lt)
38c9c0f201fed21efcf669dbbf5f923eaf0eeb1db9Benjamin Peterson        self.assertRaises(TypeError, operator.lt, 1j, 2j)
39c9c0f201fed21efcf669dbbf5f923eaf0eeb1db9Benjamin Peterson        self.assertFalse(operator.lt(1, 0))
40c9c0f201fed21efcf669dbbf5f923eaf0eeb1db9Benjamin Peterson        self.assertFalse(operator.lt(1, 0.0))
41c9c0f201fed21efcf669dbbf5f923eaf0eeb1db9Benjamin Peterson        self.assertFalse(operator.lt(1, 1))
42c9c0f201fed21efcf669dbbf5f923eaf0eeb1db9Benjamin Peterson        self.assertFalse(operator.lt(1, 1.0))
43c9c0f201fed21efcf669dbbf5f923eaf0eeb1db9Benjamin Peterson        self.assertTrue(operator.lt(1, 2))
44c9c0f201fed21efcf669dbbf5f923eaf0eeb1db9Benjamin Peterson        self.assertTrue(operator.lt(1, 2.0))
45cd112f5546256a752f56b3bf6ce0ff19ff30a981Fred Drake
46cd112f5546256a752f56b3bf6ce0ff19ff30a981Fred Drake    def test_le(self):
47c9c0f201fed21efcf669dbbf5f923eaf0eeb1db9Benjamin Peterson        self.assertRaises(TypeError, operator.le)
48c9c0f201fed21efcf669dbbf5f923eaf0eeb1db9Benjamin Peterson        self.assertRaises(TypeError, operator.le, 1j, 2j)
49c9c0f201fed21efcf669dbbf5f923eaf0eeb1db9Benjamin Peterson        self.assertFalse(operator.le(1, 0))
50c9c0f201fed21efcf669dbbf5f923eaf0eeb1db9Benjamin Peterson        self.assertFalse(operator.le(1, 0.0))
51c9c0f201fed21efcf669dbbf5f923eaf0eeb1db9Benjamin Peterson        self.assertTrue(operator.le(1, 1))
52c9c0f201fed21efcf669dbbf5f923eaf0eeb1db9Benjamin Peterson        self.assertTrue(operator.le(1, 1.0))
53c9c0f201fed21efcf669dbbf5f923eaf0eeb1db9Benjamin Peterson        self.assertTrue(operator.le(1, 2))
54c9c0f201fed21efcf669dbbf5f923eaf0eeb1db9Benjamin Peterson        self.assertTrue(operator.le(1, 2.0))
55cd112f5546256a752f56b3bf6ce0ff19ff30a981Fred Drake
56cd112f5546256a752f56b3bf6ce0ff19ff30a981Fred Drake    def test_eq(self):
57bb9c739806b9f0251fa4a564986e2cb5e92e766eWalter Dörwald        class C(object):
58bb9c739806b9f0251fa4a564986e2cb5e92e766eWalter Dörwald            def __eq__(self, other):
59bb9c739806b9f0251fa4a564986e2cb5e92e766eWalter Dörwald                raise SyntaxError
60c9c0f201fed21efcf669dbbf5f923eaf0eeb1db9Benjamin Peterson        self.assertRaises(TypeError, operator.eq)
61c9c0f201fed21efcf669dbbf5f923eaf0eeb1db9Benjamin Peterson        self.assertRaises(SyntaxError, operator.eq, C(), C())
62c9c0f201fed21efcf669dbbf5f923eaf0eeb1db9Benjamin Peterson        self.assertFalse(operator.eq(1, 0))
63c9c0f201fed21efcf669dbbf5f923eaf0eeb1db9Benjamin Peterson        self.assertFalse(operator.eq(1, 0.0))
64c9c0f201fed21efcf669dbbf5f923eaf0eeb1db9Benjamin Peterson        self.assertTrue(operator.eq(1, 1))
65c9c0f201fed21efcf669dbbf5f923eaf0eeb1db9Benjamin Peterson        self.assertTrue(operator.eq(1, 1.0))
66c9c0f201fed21efcf669dbbf5f923eaf0eeb1db9Benjamin Peterson        self.assertFalse(operator.eq(1, 2))
67c9c0f201fed21efcf669dbbf5f923eaf0eeb1db9Benjamin Peterson        self.assertFalse(operator.eq(1, 2.0))
68cd112f5546256a752f56b3bf6ce0ff19ff30a981Fred Drake
69cd112f5546256a752f56b3bf6ce0ff19ff30a981Fred Drake    def test_ne(self):
70bb9c739806b9f0251fa4a564986e2cb5e92e766eWalter Dörwald        class C(object):
71bb9c739806b9f0251fa4a564986e2cb5e92e766eWalter Dörwald            def __ne__(self, other):
72bb9c739806b9f0251fa4a564986e2cb5e92e766eWalter Dörwald                raise SyntaxError
73c9c0f201fed21efcf669dbbf5f923eaf0eeb1db9Benjamin Peterson        self.assertRaises(TypeError, operator.ne)
74c9c0f201fed21efcf669dbbf5f923eaf0eeb1db9Benjamin Peterson        self.assertRaises(SyntaxError, operator.ne, C(), C())
75c9c0f201fed21efcf669dbbf5f923eaf0eeb1db9Benjamin Peterson        self.assertTrue(operator.ne(1, 0))
76c9c0f201fed21efcf669dbbf5f923eaf0eeb1db9Benjamin Peterson        self.assertTrue(operator.ne(1, 0.0))
77c9c0f201fed21efcf669dbbf5f923eaf0eeb1db9Benjamin Peterson        self.assertFalse(operator.ne(1, 1))
78c9c0f201fed21efcf669dbbf5f923eaf0eeb1db9Benjamin Peterson        self.assertFalse(operator.ne(1, 1.0))
79c9c0f201fed21efcf669dbbf5f923eaf0eeb1db9Benjamin Peterson        self.assertTrue(operator.ne(1, 2))
80c9c0f201fed21efcf669dbbf5f923eaf0eeb1db9Benjamin Peterson        self.assertTrue(operator.ne(1, 2.0))
81cd112f5546256a752f56b3bf6ce0ff19ff30a981Fred Drake
82cd112f5546256a752f56b3bf6ce0ff19ff30a981Fred Drake    def test_ge(self):
83c9c0f201fed21efcf669dbbf5f923eaf0eeb1db9Benjamin Peterson        self.assertRaises(TypeError, operator.ge)
84c9c0f201fed21efcf669dbbf5f923eaf0eeb1db9Benjamin Peterson        self.assertRaises(TypeError, operator.ge, 1j, 2j)
85c9c0f201fed21efcf669dbbf5f923eaf0eeb1db9Benjamin Peterson        self.assertTrue(operator.ge(1, 0))
86c9c0f201fed21efcf669dbbf5f923eaf0eeb1db9Benjamin Peterson        self.assertTrue(operator.ge(1, 0.0))
87c9c0f201fed21efcf669dbbf5f923eaf0eeb1db9Benjamin Peterson        self.assertTrue(operator.ge(1, 1))
88c9c0f201fed21efcf669dbbf5f923eaf0eeb1db9Benjamin Peterson        self.assertTrue(operator.ge(1, 1.0))
89c9c0f201fed21efcf669dbbf5f923eaf0eeb1db9Benjamin Peterson        self.assertFalse(operator.ge(1, 2))
90c9c0f201fed21efcf669dbbf5f923eaf0eeb1db9Benjamin Peterson        self.assertFalse(operator.ge(1, 2.0))
91cd112f5546256a752f56b3bf6ce0ff19ff30a981Fred Drake
92cd112f5546256a752f56b3bf6ce0ff19ff30a981Fred Drake    def test_gt(self):
93c9c0f201fed21efcf669dbbf5f923eaf0eeb1db9Benjamin Peterson        self.assertRaises(TypeError, operator.gt)
94c9c0f201fed21efcf669dbbf5f923eaf0eeb1db9Benjamin Peterson        self.assertRaises(TypeError, operator.gt, 1j, 2j)
95c9c0f201fed21efcf669dbbf5f923eaf0eeb1db9Benjamin Peterson        self.assertTrue(operator.gt(1, 0))
96c9c0f201fed21efcf669dbbf5f923eaf0eeb1db9Benjamin Peterson        self.assertTrue(operator.gt(1, 0.0))
97c9c0f201fed21efcf669dbbf5f923eaf0eeb1db9Benjamin Peterson        self.assertFalse(operator.gt(1, 1))
98c9c0f201fed21efcf669dbbf5f923eaf0eeb1db9Benjamin Peterson        self.assertFalse(operator.gt(1, 1.0))
99c9c0f201fed21efcf669dbbf5f923eaf0eeb1db9Benjamin Peterson        self.assertFalse(operator.gt(1, 2))
100c9c0f201fed21efcf669dbbf5f923eaf0eeb1db9Benjamin Peterson        self.assertFalse(operator.gt(1, 2.0))
101cd112f5546256a752f56b3bf6ce0ff19ff30a981Fred Drake
102cd112f5546256a752f56b3bf6ce0ff19ff30a981Fred Drake    def test_abs(self):
103c9c0f201fed21efcf669dbbf5f923eaf0eeb1db9Benjamin Peterson        self.assertRaises(TypeError, operator.abs)
104c9c0f201fed21efcf669dbbf5f923eaf0eeb1db9Benjamin Peterson        self.assertRaises(TypeError, operator.abs, None)
105e61fd5b5ed9d677da2f3349078d7f66f707199deGuido van Rossum        self.assertEqual(operator.abs(-1), 1)
106e61fd5b5ed9d677da2f3349078d7f66f707199deGuido van Rossum        self.assertEqual(operator.abs(1), 1)
107cd112f5546256a752f56b3bf6ce0ff19ff30a981Fred Drake
108cd112f5546256a752f56b3bf6ce0ff19ff30a981Fred Drake    def test_add(self):
109c9c0f201fed21efcf669dbbf5f923eaf0eeb1db9Benjamin Peterson        self.assertRaises(TypeError, operator.add)
110c9c0f201fed21efcf669dbbf5f923eaf0eeb1db9Benjamin Peterson        self.assertRaises(TypeError, operator.add, None, None)
111c9c0f201fed21efcf669dbbf5f923eaf0eeb1db9Benjamin Peterson        self.assertTrue(operator.add(3, 4) == 7)
112cd112f5546256a752f56b3bf6ce0ff19ff30a981Fred Drake
113cd112f5546256a752f56b3bf6ce0ff19ff30a981Fred Drake    def test_bitwise_and(self):
114c9c0f201fed21efcf669dbbf5f923eaf0eeb1db9Benjamin Peterson        self.assertRaises(TypeError, operator.and_)
115c9c0f201fed21efcf669dbbf5f923eaf0eeb1db9Benjamin Peterson        self.assertRaises(TypeError, operator.and_, None, None)
116c9c0f201fed21efcf669dbbf5f923eaf0eeb1db9Benjamin Peterson        self.assertTrue(operator.and_(0xf, 0xa) == 0xa)
117cd112f5546256a752f56b3bf6ce0ff19ff30a981Fred Drake
118cd112f5546256a752f56b3bf6ce0ff19ff30a981Fred Drake    def test_concat(self):
119c9c0f201fed21efcf669dbbf5f923eaf0eeb1db9Benjamin Peterson        self.assertRaises(TypeError, operator.concat)
120c9c0f201fed21efcf669dbbf5f923eaf0eeb1db9Benjamin Peterson        self.assertRaises(TypeError, operator.concat, None, None)
121c9c0f201fed21efcf669dbbf5f923eaf0eeb1db9Benjamin Peterson        self.assertTrue(operator.concat('py', 'thon') == 'python')
122c9c0f201fed21efcf669dbbf5f923eaf0eeb1db9Benjamin Peterson        self.assertTrue(operator.concat([1, 2], [3, 4]) == [1, 2, 3, 4])
123c9c0f201fed21efcf669dbbf5f923eaf0eeb1db9Benjamin Peterson        self.assertTrue(operator.concat(Seq1([5, 6]), Seq1([7])) == [5, 6, 7])
124c9c0f201fed21efcf669dbbf5f923eaf0eeb1db9Benjamin Peterson        self.assertTrue(operator.concat(Seq2([5, 6]), Seq2([7])) == [5, 6, 7])
125c9c0f201fed21efcf669dbbf5f923eaf0eeb1db9Benjamin Peterson        self.assertRaises(TypeError, operator.concat, 13, 29)
126cd112f5546256a752f56b3bf6ce0ff19ff30a981Fred Drake
127cd112f5546256a752f56b3bf6ce0ff19ff30a981Fred Drake    def test_countOf(self):
128c9c0f201fed21efcf669dbbf5f923eaf0eeb1db9Benjamin Peterson        self.assertRaises(TypeError, operator.countOf)
129c9c0f201fed21efcf669dbbf5f923eaf0eeb1db9Benjamin Peterson        self.assertRaises(TypeError, operator.countOf, None, None)
130c9c0f201fed21efcf669dbbf5f923eaf0eeb1db9Benjamin Peterson        self.assertTrue(operator.countOf([1, 2, 1, 3, 1, 4], 3) == 1)
131c9c0f201fed21efcf669dbbf5f923eaf0eeb1db9Benjamin Peterson        self.assertTrue(operator.countOf([1, 2, 1, 3, 1, 4], 5) == 0)
132cd112f5546256a752f56b3bf6ce0ff19ff30a981Fred Drake
133cd112f5546256a752f56b3bf6ce0ff19ff30a981Fred Drake    def test_delitem(self):
134cd112f5546256a752f56b3bf6ce0ff19ff30a981Fred Drake        a = [4, 3, 2, 1]
135c9c0f201fed21efcf669dbbf5f923eaf0eeb1db9Benjamin Peterson        self.assertRaises(TypeError, operator.delitem, a)
136c9c0f201fed21efcf669dbbf5f923eaf0eeb1db9Benjamin Peterson        self.assertRaises(TypeError, operator.delitem, a, None)
137c9c0f201fed21efcf669dbbf5f923eaf0eeb1db9Benjamin Peterson        self.assertTrue(operator.delitem(a, 1) is None)
138c9c0f201fed21efcf669dbbf5f923eaf0eeb1db9Benjamin Peterson        self.assertTrue(a == [4, 2, 1])
139cd112f5546256a752f56b3bf6ce0ff19ff30a981Fred Drake
140cd112f5546256a752f56b3bf6ce0ff19ff30a981Fred Drake    def test_floordiv(self):
141c9c0f201fed21efcf669dbbf5f923eaf0eeb1db9Benjamin Peterson        self.assertRaises(TypeError, operator.floordiv, 5)
142c9c0f201fed21efcf669dbbf5f923eaf0eeb1db9Benjamin Peterson        self.assertRaises(TypeError, operator.floordiv, None, None)
143c9c0f201fed21efcf669dbbf5f923eaf0eeb1db9Benjamin Peterson        self.assertTrue(operator.floordiv(5, 2) == 2)
144cd112f5546256a752f56b3bf6ce0ff19ff30a981Fred Drake
145cd112f5546256a752f56b3bf6ce0ff19ff30a981Fred Drake    def test_truediv(self):
146c9c0f201fed21efcf669dbbf5f923eaf0eeb1db9Benjamin Peterson        self.assertRaises(TypeError, operator.truediv, 5)
147c9c0f201fed21efcf669dbbf5f923eaf0eeb1db9Benjamin Peterson        self.assertRaises(TypeError, operator.truediv, None, None)
148c9c0f201fed21efcf669dbbf5f923eaf0eeb1db9Benjamin Peterson        self.assertTrue(operator.truediv(5, 2) == 2.5)
149cd112f5546256a752f56b3bf6ce0ff19ff30a981Fred Drake
150cd112f5546256a752f56b3bf6ce0ff19ff30a981Fred Drake    def test_getitem(self):
151cd112f5546256a752f56b3bf6ce0ff19ff30a981Fred Drake        a = range(10)
152c9c0f201fed21efcf669dbbf5f923eaf0eeb1db9Benjamin Peterson        self.assertRaises(TypeError, operator.getitem)
153c9c0f201fed21efcf669dbbf5f923eaf0eeb1db9Benjamin Peterson        self.assertRaises(TypeError, operator.getitem, a, None)
154c9c0f201fed21efcf669dbbf5f923eaf0eeb1db9Benjamin Peterson        self.assertTrue(operator.getitem(a, 2) == 2)
155cd112f5546256a752f56b3bf6ce0ff19ff30a981Fred Drake
156cd112f5546256a752f56b3bf6ce0ff19ff30a981Fred Drake    def test_indexOf(self):
157c9c0f201fed21efcf669dbbf5f923eaf0eeb1db9Benjamin Peterson        self.assertRaises(TypeError, operator.indexOf)
158c9c0f201fed21efcf669dbbf5f923eaf0eeb1db9Benjamin Peterson        self.assertRaises(TypeError, operator.indexOf, None, None)
159c9c0f201fed21efcf669dbbf5f923eaf0eeb1db9Benjamin Peterson        self.assertTrue(operator.indexOf([4, 3, 2, 1], 3) == 1)
160cd112f5546256a752f56b3bf6ce0ff19ff30a981Fred Drake        self.assertRaises(ValueError, operator.indexOf, [4, 3, 2, 1], 0)
161cd112f5546256a752f56b3bf6ce0ff19ff30a981Fred Drake
162cd112f5546256a752f56b3bf6ce0ff19ff30a981Fred Drake    def test_invert(self):
163c9c0f201fed21efcf669dbbf5f923eaf0eeb1db9Benjamin Peterson        self.assertRaises(TypeError, operator.invert)
164c9c0f201fed21efcf669dbbf5f923eaf0eeb1db9Benjamin Peterson        self.assertRaises(TypeError, operator.invert, None)
165e61fd5b5ed9d677da2f3349078d7f66f707199deGuido van Rossum        self.assertEqual(operator.inv(4), -5)
166cd112f5546256a752f56b3bf6ce0ff19ff30a981Fred Drake
167cd112f5546256a752f56b3bf6ce0ff19ff30a981Fred Drake    def test_lshift(self):
168c9c0f201fed21efcf669dbbf5f923eaf0eeb1db9Benjamin Peterson        self.assertRaises(TypeError, operator.lshift)
169c9c0f201fed21efcf669dbbf5f923eaf0eeb1db9Benjamin Peterson        self.assertRaises(TypeError, operator.lshift, None, 42)
170c9c0f201fed21efcf669dbbf5f923eaf0eeb1db9Benjamin Peterson        self.assertTrue(operator.lshift(5, 1) == 10)
171c9c0f201fed21efcf669dbbf5f923eaf0eeb1db9Benjamin Peterson        self.assertTrue(operator.lshift(5, 0) == 5)
172cd112f5546256a752f56b3bf6ce0ff19ff30a981Fred Drake        self.assertRaises(ValueError, operator.lshift, 2, -1)
173cd112f5546256a752f56b3bf6ce0ff19ff30a981Fred Drake
174cd112f5546256a752f56b3bf6ce0ff19ff30a981Fred Drake    def test_mod(self):
175c9c0f201fed21efcf669dbbf5f923eaf0eeb1db9Benjamin Peterson        self.assertRaises(TypeError, operator.mod)
176c9c0f201fed21efcf669dbbf5f923eaf0eeb1db9Benjamin Peterson        self.assertRaises(TypeError, operator.mod, None, 42)
177c9c0f201fed21efcf669dbbf5f923eaf0eeb1db9Benjamin Peterson        self.assertTrue(operator.mod(5, 2) == 1)
178cd112f5546256a752f56b3bf6ce0ff19ff30a981Fred Drake
179cd112f5546256a752f56b3bf6ce0ff19ff30a981Fred Drake    def test_mul(self):
180c9c0f201fed21efcf669dbbf5f923eaf0eeb1db9Benjamin Peterson        self.assertRaises(TypeError, operator.mul)
181c9c0f201fed21efcf669dbbf5f923eaf0eeb1db9Benjamin Peterson        self.assertRaises(TypeError, operator.mul, None, None)
182c9c0f201fed21efcf669dbbf5f923eaf0eeb1db9Benjamin Peterson        self.assertTrue(operator.mul(5, 2) == 10)
183cd112f5546256a752f56b3bf6ce0ff19ff30a981Fred Drake
184cd112f5546256a752f56b3bf6ce0ff19ff30a981Fred Drake    def test_neg(self):
185c9c0f201fed21efcf669dbbf5f923eaf0eeb1db9Benjamin Peterson        self.assertRaises(TypeError, operator.neg)
186c9c0f201fed21efcf669dbbf5f923eaf0eeb1db9Benjamin Peterson        self.assertRaises(TypeError, operator.neg, None)
187e61fd5b5ed9d677da2f3349078d7f66f707199deGuido van Rossum        self.assertEqual(operator.neg(5), -5)
188e61fd5b5ed9d677da2f3349078d7f66f707199deGuido van Rossum        self.assertEqual(operator.neg(-5), 5)
189e61fd5b5ed9d677da2f3349078d7f66f707199deGuido van Rossum        self.assertEqual(operator.neg(0), 0)
190e61fd5b5ed9d677da2f3349078d7f66f707199deGuido van Rossum        self.assertEqual(operator.neg(-0), 0)
191cd112f5546256a752f56b3bf6ce0ff19ff30a981Fred Drake
192cd112f5546256a752f56b3bf6ce0ff19ff30a981Fred Drake    def test_bitwise_or(self):
193c9c0f201fed21efcf669dbbf5f923eaf0eeb1db9Benjamin Peterson        self.assertRaises(TypeError, operator.or_)
194c9c0f201fed21efcf669dbbf5f923eaf0eeb1db9Benjamin Peterson        self.assertRaises(TypeError, operator.or_, None, None)
195c9c0f201fed21efcf669dbbf5f923eaf0eeb1db9Benjamin Peterson        self.assertTrue(operator.or_(0xa, 0x5) == 0xf)
196cd112f5546256a752f56b3bf6ce0ff19ff30a981Fred Drake
197cd112f5546256a752f56b3bf6ce0ff19ff30a981Fred Drake    def test_pos(self):
198c9c0f201fed21efcf669dbbf5f923eaf0eeb1db9Benjamin Peterson        self.assertRaises(TypeError, operator.pos)
199c9c0f201fed21efcf669dbbf5f923eaf0eeb1db9Benjamin Peterson        self.assertRaises(TypeError, operator.pos, None)
200e61fd5b5ed9d677da2f3349078d7f66f707199deGuido van Rossum        self.assertEqual(operator.pos(5), 5)
201e61fd5b5ed9d677da2f3349078d7f66f707199deGuido van Rossum        self.assertEqual(operator.pos(-5), -5)
202e61fd5b5ed9d677da2f3349078d7f66f707199deGuido van Rossum        self.assertEqual(operator.pos(0), 0)
203e61fd5b5ed9d677da2f3349078d7f66f707199deGuido van Rossum        self.assertEqual(operator.pos(-0), 0)
204cd112f5546256a752f56b3bf6ce0ff19ff30a981Fred Drake
2055959c559df777eb61b10d986e45ed4bbf269b36dRaymond Hettinger    def test_pow(self):
206c9c0f201fed21efcf669dbbf5f923eaf0eeb1db9Benjamin Peterson        self.assertRaises(TypeError, operator.pow)
207c9c0f201fed21efcf669dbbf5f923eaf0eeb1db9Benjamin Peterson        self.assertRaises(TypeError, operator.pow, None, None)
208e61fd5b5ed9d677da2f3349078d7f66f707199deGuido van Rossum        self.assertEqual(operator.pow(3,5), 3**5)
209e61fd5b5ed9d677da2f3349078d7f66f707199deGuido van Rossum        self.assertEqual(operator.__pow__(3,5), 3**5)
2105959c559df777eb61b10d986e45ed4bbf269b36dRaymond Hettinger        self.assertRaises(TypeError, operator.pow, 1)
2115959c559df777eb61b10d986e45ed4bbf269b36dRaymond Hettinger        self.assertRaises(TypeError, operator.pow, 1, 2, 3)
2125959c559df777eb61b10d986e45ed4bbf269b36dRaymond Hettinger
213cd112f5546256a752f56b3bf6ce0ff19ff30a981Fred Drake    def test_rshift(self):
214c9c0f201fed21efcf669dbbf5f923eaf0eeb1db9Benjamin Peterson        self.assertRaises(TypeError, operator.rshift)
215c9c0f201fed21efcf669dbbf5f923eaf0eeb1db9Benjamin Peterson        self.assertRaises(TypeError, operator.rshift, None, 42)
216c9c0f201fed21efcf669dbbf5f923eaf0eeb1db9Benjamin Peterson        self.assertTrue(operator.rshift(5, 1) == 2)
217c9c0f201fed21efcf669dbbf5f923eaf0eeb1db9Benjamin Peterson        self.assertTrue(operator.rshift(5, 0) == 5)
218cd112f5546256a752f56b3bf6ce0ff19ff30a981Fred Drake        self.assertRaises(ValueError, operator.rshift, 2, -1)
219cd112f5546256a752f56b3bf6ce0ff19ff30a981Fred Drake
220cd112f5546256a752f56b3bf6ce0ff19ff30a981Fred Drake    def test_contains(self):
221c9c0f201fed21efcf669dbbf5f923eaf0eeb1db9Benjamin Peterson        self.assertRaises(TypeError, operator.contains)
222c9c0f201fed21efcf669dbbf5f923eaf0eeb1db9Benjamin Peterson        self.assertRaises(TypeError, operator.contains, None, None)
223c9c0f201fed21efcf669dbbf5f923eaf0eeb1db9Benjamin Peterson        self.assertTrue(operator.contains(range(4), 2))
224c9c0f201fed21efcf669dbbf5f923eaf0eeb1db9Benjamin Peterson        self.assertFalse(operator.contains(range(4), 5))
225cd112f5546256a752f56b3bf6ce0ff19ff30a981Fred Drake
226cd112f5546256a752f56b3bf6ce0ff19ff30a981Fred Drake    def test_setitem(self):
227805365ee39298f93e433e19ae0dd87c6f782145bGuido van Rossum        a = list(range(3))
228c9c0f201fed21efcf669dbbf5f923eaf0eeb1db9Benjamin Peterson        self.assertRaises(TypeError, operator.setitem, a)
229c9c0f201fed21efcf669dbbf5f923eaf0eeb1db9Benjamin Peterson        self.assertRaises(TypeError, operator.setitem, a, None, None)
230c9c0f201fed21efcf669dbbf5f923eaf0eeb1db9Benjamin Peterson        self.assertTrue(operator.setitem(a, 0, 2) is None)
231c9c0f201fed21efcf669dbbf5f923eaf0eeb1db9Benjamin Peterson        self.assertTrue(a == [2, 1, 2])
232cd112f5546256a752f56b3bf6ce0ff19ff30a981Fred Drake        self.assertRaises(IndexError, operator.setitem, a, 4, 2)
233cd112f5546256a752f56b3bf6ce0ff19ff30a981Fred Drake
234cd112f5546256a752f56b3bf6ce0ff19ff30a981Fred Drake    def test_sub(self):
235c9c0f201fed21efcf669dbbf5f923eaf0eeb1db9Benjamin Peterson        self.assertRaises(TypeError, operator.sub)
236c9c0f201fed21efcf669dbbf5f923eaf0eeb1db9Benjamin Peterson        self.assertRaises(TypeError, operator.sub, None, None)
237c9c0f201fed21efcf669dbbf5f923eaf0eeb1db9Benjamin Peterson        self.assertTrue(operator.sub(5, 2) == 3)
238cd112f5546256a752f56b3bf6ce0ff19ff30a981Fred Drake
239cd112f5546256a752f56b3bf6ce0ff19ff30a981Fred Drake    def test_truth(self):
240bb9c739806b9f0251fa4a564986e2cb5e92e766eWalter Dörwald        class C(object):
2414dafcc4ece09c2a60473bb109513de4e7d2c2b11Jack Diederich            def __bool__(self):
242bb9c739806b9f0251fa4a564986e2cb5e92e766eWalter Dörwald                raise SyntaxError
243c9c0f201fed21efcf669dbbf5f923eaf0eeb1db9Benjamin Peterson        self.assertRaises(TypeError, operator.truth)
244c9c0f201fed21efcf669dbbf5f923eaf0eeb1db9Benjamin Peterson        self.assertRaises(SyntaxError, operator.truth, C())
245c9c0f201fed21efcf669dbbf5f923eaf0eeb1db9Benjamin Peterson        self.assertTrue(operator.truth(5))
246c9c0f201fed21efcf669dbbf5f923eaf0eeb1db9Benjamin Peterson        self.assertTrue(operator.truth([0]))
247c9c0f201fed21efcf669dbbf5f923eaf0eeb1db9Benjamin Peterson        self.assertFalse(operator.truth(0))
248c9c0f201fed21efcf669dbbf5f923eaf0eeb1db9Benjamin Peterson        self.assertFalse(operator.truth([]))
249cd112f5546256a752f56b3bf6ce0ff19ff30a981Fred Drake
250cd112f5546256a752f56b3bf6ce0ff19ff30a981Fred Drake    def test_bitwise_xor(self):
251c9c0f201fed21efcf669dbbf5f923eaf0eeb1db9Benjamin Peterson        self.assertRaises(TypeError, operator.xor)
252c9c0f201fed21efcf669dbbf5f923eaf0eeb1db9Benjamin Peterson        self.assertRaises(TypeError, operator.xor, None, None)
253c9c0f201fed21efcf669dbbf5f923eaf0eeb1db9Benjamin Peterson        self.assertTrue(operator.xor(0xb, 0xc) == 0x7)
254cd112f5546256a752f56b3bf6ce0ff19ff30a981Fred Drake
2559543b340066e85bb920a0655edf33e11050d7b08Raymond Hettinger    def test_is(self):
2569543b340066e85bb920a0655edf33e11050d7b08Raymond Hettinger        a = b = 'xyzpdq'
2579543b340066e85bb920a0655edf33e11050d7b08Raymond Hettinger        c = a[:3] + b[3:]
258c9c0f201fed21efcf669dbbf5f923eaf0eeb1db9Benjamin Peterson        self.assertRaises(TypeError, operator.is_)
259c9c0f201fed21efcf669dbbf5f923eaf0eeb1db9Benjamin Peterson        self.assertTrue(operator.is_(a, b))
260c9c0f201fed21efcf669dbbf5f923eaf0eeb1db9Benjamin Peterson        self.assertFalse(operator.is_(a,c))
2619543b340066e85bb920a0655edf33e11050d7b08Raymond Hettinger
2629543b340066e85bb920a0655edf33e11050d7b08Raymond Hettinger    def test_is_not(self):
2639543b340066e85bb920a0655edf33e11050d7b08Raymond Hettinger        a = b = 'xyzpdq'
2649543b340066e85bb920a0655edf33e11050d7b08Raymond Hettinger        c = a[:3] + b[3:]
265c9c0f201fed21efcf669dbbf5f923eaf0eeb1db9Benjamin Peterson        self.assertRaises(TypeError, operator.is_not)
266c9c0f201fed21efcf669dbbf5f923eaf0eeb1db9Benjamin Peterson        self.assertFalse(operator.is_not(a, b))
267c9c0f201fed21efcf669dbbf5f923eaf0eeb1db9Benjamin Peterson        self.assertTrue(operator.is_not(a,c))
268cd112f5546256a752f56b3bf6ce0ff19ff30a981Fred Drake
269166958b5df50fca05cb24be0152737edf575dbb9Raymond Hettinger    def test_attrgetter(self):
270166958b5df50fca05cb24be0152737edf575dbb9Raymond Hettinger        class A:
271166958b5df50fca05cb24be0152737edf575dbb9Raymond Hettinger            pass
272166958b5df50fca05cb24be0152737edf575dbb9Raymond Hettinger        a = A()
273166958b5df50fca05cb24be0152737edf575dbb9Raymond Hettinger        a.name = 'arthur'
274166958b5df50fca05cb24be0152737edf575dbb9Raymond Hettinger        f = operator.attrgetter('name')
275166958b5df50fca05cb24be0152737edf575dbb9Raymond Hettinger        self.assertEqual(f(a), 'arthur')
276166958b5df50fca05cb24be0152737edf575dbb9Raymond Hettinger        f = operator.attrgetter('rank')
277166958b5df50fca05cb24be0152737edf575dbb9Raymond Hettinger        self.assertRaises(AttributeError, f, a)
278166958b5df50fca05cb24be0152737edf575dbb9Raymond Hettinger        f = operator.attrgetter(2)
279166958b5df50fca05cb24be0152737edf575dbb9Raymond Hettinger        self.assertRaises(TypeError, f, a)
280166958b5df50fca05cb24be0152737edf575dbb9Raymond Hettinger        self.assertRaises(TypeError, operator.attrgetter)
281984f9bb7140683fa9b950b42a035477108aba88fRaymond Hettinger
282984f9bb7140683fa9b950b42a035477108aba88fRaymond Hettinger        # multiple gets
283984f9bb7140683fa9b950b42a035477108aba88fRaymond Hettinger        record = A()
284984f9bb7140683fa9b950b42a035477108aba88fRaymond Hettinger        record.x = 'X'
285984f9bb7140683fa9b950b42a035477108aba88fRaymond Hettinger        record.y = 'Y'
286984f9bb7140683fa9b950b42a035477108aba88fRaymond Hettinger        record.z = 'Z'
287984f9bb7140683fa9b950b42a035477108aba88fRaymond Hettinger        self.assertEqual(operator.attrgetter('x','z','y')(record), ('X', 'Z', 'Y'))
288984f9bb7140683fa9b950b42a035477108aba88fRaymond Hettinger        self.assertRaises(TypeError, operator.attrgetter('x', (), 'y'), record)
289166958b5df50fca05cb24be0152737edf575dbb9Raymond Hettinger
290bb9c739806b9f0251fa4a564986e2cb5e92e766eWalter Dörwald        class C(object):
2919bd667ad030913ead3a789f45e73c26f9f28fb46Christian Heimes            def __getattr__(self, name):
292bb9c739806b9f0251fa4a564986e2cb5e92e766eWalter Dörwald                raise SyntaxError
293c9c0f201fed21efcf669dbbf5f923eaf0eeb1db9Benjamin Peterson        self.assertRaises(SyntaxError, operator.attrgetter('foo'), C())
294bb9c739806b9f0251fa4a564986e2cb5e92e766eWalter Dörwald
295d3eb5a1581b78987621781e674ae514b3c5c68ebChristian Heimes        # recursive gets
296d3eb5a1581b78987621781e674ae514b3c5c68ebChristian Heimes        a = A()
297d3eb5a1581b78987621781e674ae514b3c5c68ebChristian Heimes        a.name = 'arthur'
298d3eb5a1581b78987621781e674ae514b3c5c68ebChristian Heimes        a.child = A()
299d3eb5a1581b78987621781e674ae514b3c5c68ebChristian Heimes        a.child.name = 'thomas'
300d3eb5a1581b78987621781e674ae514b3c5c68ebChristian Heimes        f = operator.attrgetter('child.name')
301d3eb5a1581b78987621781e674ae514b3c5c68ebChristian Heimes        self.assertEqual(f(a), 'thomas')
302d3eb5a1581b78987621781e674ae514b3c5c68ebChristian Heimes        self.assertRaises(AttributeError, f, a.child)
303d3eb5a1581b78987621781e674ae514b3c5c68ebChristian Heimes        f = operator.attrgetter('name', 'child.name')
304d3eb5a1581b78987621781e674ae514b3c5c68ebChristian Heimes        self.assertEqual(f(a), ('arthur', 'thomas'))
305d3eb5a1581b78987621781e674ae514b3c5c68ebChristian Heimes        f = operator.attrgetter('name', 'child.name', 'child.child.name')
306d3eb5a1581b78987621781e674ae514b3c5c68ebChristian Heimes        self.assertRaises(AttributeError, f, a)
307d3eb5a1581b78987621781e674ae514b3c5c68ebChristian Heimes
308d3eb5a1581b78987621781e674ae514b3c5c68ebChristian Heimes        a.child.child = A()
309d3eb5a1581b78987621781e674ae514b3c5c68ebChristian Heimes        a.child.child.name = 'johnson'
310d3eb5a1581b78987621781e674ae514b3c5c68ebChristian Heimes        f = operator.attrgetter('child.child.name')
311d3eb5a1581b78987621781e674ae514b3c5c68ebChristian Heimes        self.assertEqual(f(a), 'johnson')
312d3eb5a1581b78987621781e674ae514b3c5c68ebChristian Heimes        f = operator.attrgetter('name', 'child.name', 'child.child.name')
313d3eb5a1581b78987621781e674ae514b3c5c68ebChristian Heimes        self.assertEqual(f(a), ('arthur', 'thomas', 'johnson'))
314d3eb5a1581b78987621781e674ae514b3c5c68ebChristian Heimes
315166958b5df50fca05cb24be0152737edf575dbb9Raymond Hettinger    def test_itemgetter(self):
316166958b5df50fca05cb24be0152737edf575dbb9Raymond Hettinger        a = 'ABCDE'
317166958b5df50fca05cb24be0152737edf575dbb9Raymond Hettinger        f = operator.itemgetter(2)
318166958b5df50fca05cb24be0152737edf575dbb9Raymond Hettinger        self.assertEqual(f(a), 'C')
319166958b5df50fca05cb24be0152737edf575dbb9Raymond Hettinger        f = operator.itemgetter(10)
320166958b5df50fca05cb24be0152737edf575dbb9Raymond Hettinger        self.assertRaises(IndexError, f, a)
321166958b5df50fca05cb24be0152737edf575dbb9Raymond Hettinger
322bb9c739806b9f0251fa4a564986e2cb5e92e766eWalter Dörwald        class C(object):
3239bd667ad030913ead3a789f45e73c26f9f28fb46Christian Heimes            def __getitem__(self, name):
324bb9c739806b9f0251fa4a564986e2cb5e92e766eWalter Dörwald                raise SyntaxError
325c9c0f201fed21efcf669dbbf5f923eaf0eeb1db9Benjamin Peterson        self.assertRaises(SyntaxError, operator.itemgetter(42), C())
326bb9c739806b9f0251fa4a564986e2cb5e92e766eWalter Dörwald
327166958b5df50fca05cb24be0152737edf575dbb9Raymond Hettinger        f = operator.itemgetter('name')
328166958b5df50fca05cb24be0152737edf575dbb9Raymond Hettinger        self.assertRaises(TypeError, f, a)
329166958b5df50fca05cb24be0152737edf575dbb9Raymond Hettinger        self.assertRaises(TypeError, operator.itemgetter)
330166958b5df50fca05cb24be0152737edf575dbb9Raymond Hettinger
331166958b5df50fca05cb24be0152737edf575dbb9Raymond Hettinger        d = dict(key='val')
332166958b5df50fca05cb24be0152737edf575dbb9Raymond Hettinger        f = operator.itemgetter('key')
333166958b5df50fca05cb24be0152737edf575dbb9Raymond Hettinger        self.assertEqual(f(d), 'val')
334166958b5df50fca05cb24be0152737edf575dbb9Raymond Hettinger        f = operator.itemgetter('nonkey')
335166958b5df50fca05cb24be0152737edf575dbb9Raymond Hettinger        self.assertRaises(KeyError, f, d)
336166958b5df50fca05cb24be0152737edf575dbb9Raymond Hettinger
337166958b5df50fca05cb24be0152737edf575dbb9Raymond Hettinger        # example used in the docs
338166958b5df50fca05cb24be0152737edf575dbb9Raymond Hettinger        inventory = [('apple', 3), ('banana', 2), ('pear', 5), ('orange', 1)]
339166958b5df50fca05cb24be0152737edf575dbb9Raymond Hettinger        getcount = operator.itemgetter(1)
340c1f779cb015272412e4da2e5cb61b4e8cdcbf191Guido van Rossum        self.assertEqual(list(map(getcount, inventory)), [3, 2, 5, 1])
34164958a15d7c03efdc3d2eddf247666e18d1fd910Raymond Hettinger        self.assertEqual(sorted(inventory, key=getcount),
342166958b5df50fca05cb24be0152737edf575dbb9Raymond Hettinger            [('orange', 1), ('banana', 2), ('apple', 3), ('pear', 5)])
343166958b5df50fca05cb24be0152737edf575dbb9Raymond Hettinger
344984f9bb7140683fa9b950b42a035477108aba88fRaymond Hettinger        # multiple gets
345c1f779cb015272412e4da2e5cb61b4e8cdcbf191Guido van Rossum        data = list(map(str, range(20)))
346984f9bb7140683fa9b950b42a035477108aba88fRaymond Hettinger        self.assertEqual(operator.itemgetter(2,10,5)(data), ('2', '10', '5'))
347984f9bb7140683fa9b950b42a035477108aba88fRaymond Hettinger        self.assertRaises(TypeError, operator.itemgetter(2, 'x', 5), data)
348984f9bb7140683fa9b950b42a035477108aba88fRaymond Hettinger
349d3eb5a1581b78987621781e674ae514b3c5c68ebChristian Heimes    def test_methodcaller(self):
350d3eb5a1581b78987621781e674ae514b3c5c68ebChristian Heimes        self.assertRaises(TypeError, operator.methodcaller)
351d3eb5a1581b78987621781e674ae514b3c5c68ebChristian Heimes        class A:
352d3eb5a1581b78987621781e674ae514b3c5c68ebChristian Heimes            def foo(self, *args, **kwds):
353d3eb5a1581b78987621781e674ae514b3c5c68ebChristian Heimes                return args[0] + args[1]
354d3eb5a1581b78987621781e674ae514b3c5c68ebChristian Heimes            def bar(self, f=42):
355d3eb5a1581b78987621781e674ae514b3c5c68ebChristian Heimes                return f
356d3eb5a1581b78987621781e674ae514b3c5c68ebChristian Heimes        a = A()
357d3eb5a1581b78987621781e674ae514b3c5c68ebChristian Heimes        f = operator.methodcaller('foo')
358d3eb5a1581b78987621781e674ae514b3c5c68ebChristian Heimes        self.assertRaises(IndexError, f, a)
359d3eb5a1581b78987621781e674ae514b3c5c68ebChristian Heimes        f = operator.methodcaller('foo', 1, 2)
360d3eb5a1581b78987621781e674ae514b3c5c68ebChristian Heimes        self.assertEquals(f(a), 3)
361d3eb5a1581b78987621781e674ae514b3c5c68ebChristian Heimes        f = operator.methodcaller('bar')
362d3eb5a1581b78987621781e674ae514b3c5c68ebChristian Heimes        self.assertEquals(f(a), 42)
363d3eb5a1581b78987621781e674ae514b3c5c68ebChristian Heimes        self.assertRaises(TypeError, f, a, a)
364d3eb5a1581b78987621781e674ae514b3c5c68ebChristian Heimes        f = operator.methodcaller('bar', f=5)
365d3eb5a1581b78987621781e674ae514b3c5c68ebChristian Heimes        self.assertEquals(f(a), 5)
366d3eb5a1581b78987621781e674ae514b3c5c68ebChristian Heimes
367f5bd3b442dd378563036f51595a7d6b2a239f4d5Armin Rigo    def test_inplace(self):
368f5bd3b442dd378563036f51595a7d6b2a239f4d5Armin Rigo        class C(object):
369f5bd3b442dd378563036f51595a7d6b2a239f4d5Armin Rigo            def __iadd__     (self, other): return "iadd"
370f5bd3b442dd378563036f51595a7d6b2a239f4d5Armin Rigo            def __iand__     (self, other): return "iand"
371f5bd3b442dd378563036f51595a7d6b2a239f4d5Armin Rigo            def __ifloordiv__(self, other): return "ifloordiv"
372f5bd3b442dd378563036f51595a7d6b2a239f4d5Armin Rigo            def __ilshift__  (self, other): return "ilshift"
373f5bd3b442dd378563036f51595a7d6b2a239f4d5Armin Rigo            def __imod__     (self, other): return "imod"
374f5bd3b442dd378563036f51595a7d6b2a239f4d5Armin Rigo            def __imul__     (self, other): return "imul"
375f5bd3b442dd378563036f51595a7d6b2a239f4d5Armin Rigo            def __ior__      (self, other): return "ior"
376f5bd3b442dd378563036f51595a7d6b2a239f4d5Armin Rigo            def __ipow__     (self, other): return "ipow"
377f5bd3b442dd378563036f51595a7d6b2a239f4d5Armin Rigo            def __irshift__  (self, other): return "irshift"
378f5bd3b442dd378563036f51595a7d6b2a239f4d5Armin Rigo            def __isub__     (self, other): return "isub"
379f5bd3b442dd378563036f51595a7d6b2a239f4d5Armin Rigo            def __itruediv__ (self, other): return "itruediv"
380f5bd3b442dd378563036f51595a7d6b2a239f4d5Armin Rigo            def __ixor__     (self, other): return "ixor"
381f5bd3b442dd378563036f51595a7d6b2a239f4d5Armin Rigo            def __getitem__(self, other): return 5  # so that C is a sequence
382f5bd3b442dd378563036f51595a7d6b2a239f4d5Armin Rigo        c = C()
383f5bd3b442dd378563036f51595a7d6b2a239f4d5Armin Rigo        self.assertEqual(operator.iadd     (c, 5), "iadd")
384f5bd3b442dd378563036f51595a7d6b2a239f4d5Armin Rigo        self.assertEqual(operator.iand     (c, 5), "iand")
385f5bd3b442dd378563036f51595a7d6b2a239f4d5Armin Rigo        self.assertEqual(operator.ifloordiv(c, 5), "ifloordiv")
386f5bd3b442dd378563036f51595a7d6b2a239f4d5Armin Rigo        self.assertEqual(operator.ilshift  (c, 5), "ilshift")
387f5bd3b442dd378563036f51595a7d6b2a239f4d5Armin Rigo        self.assertEqual(operator.imod     (c, 5), "imod")
388f5bd3b442dd378563036f51595a7d6b2a239f4d5Armin Rigo        self.assertEqual(operator.imul     (c, 5), "imul")
389f5bd3b442dd378563036f51595a7d6b2a239f4d5Armin Rigo        self.assertEqual(operator.ior      (c, 5), "ior")
390f5bd3b442dd378563036f51595a7d6b2a239f4d5Armin Rigo        self.assertEqual(operator.ipow     (c, 5), "ipow")
391f5bd3b442dd378563036f51595a7d6b2a239f4d5Armin Rigo        self.assertEqual(operator.irshift  (c, 5), "irshift")
392f5bd3b442dd378563036f51595a7d6b2a239f4d5Armin Rigo        self.assertEqual(operator.isub     (c, 5), "isub")
393f5bd3b442dd378563036f51595a7d6b2a239f4d5Armin Rigo        self.assertEqual(operator.itruediv (c, 5), "itruediv")
394f5bd3b442dd378563036f51595a7d6b2a239f4d5Armin Rigo        self.assertEqual(operator.ixor     (c, 5), "ixor")
395f5bd3b442dd378563036f51595a7d6b2a239f4d5Armin Rigo        self.assertEqual(operator.iconcat  (c, c), "iadd")
396f5bd3b442dd378563036f51595a7d6b2a239f4d5Armin Rigo        self.assertEqual(operator.__iadd__     (c, 5), "iadd")
397f5bd3b442dd378563036f51595a7d6b2a239f4d5Armin Rigo        self.assertEqual(operator.__iand__     (c, 5), "iand")
398f5bd3b442dd378563036f51595a7d6b2a239f4d5Armin Rigo        self.assertEqual(operator.__ifloordiv__(c, 5), "ifloordiv")
399f5bd3b442dd378563036f51595a7d6b2a239f4d5Armin Rigo        self.assertEqual(operator.__ilshift__  (c, 5), "ilshift")
400f5bd3b442dd378563036f51595a7d6b2a239f4d5Armin Rigo        self.assertEqual(operator.__imod__     (c, 5), "imod")
401f5bd3b442dd378563036f51595a7d6b2a239f4d5Armin Rigo        self.assertEqual(operator.__imul__     (c, 5), "imul")
402f5bd3b442dd378563036f51595a7d6b2a239f4d5Armin Rigo        self.assertEqual(operator.__ior__      (c, 5), "ior")
403f5bd3b442dd378563036f51595a7d6b2a239f4d5Armin Rigo        self.assertEqual(operator.__ipow__     (c, 5), "ipow")
404f5bd3b442dd378563036f51595a7d6b2a239f4d5Armin Rigo        self.assertEqual(operator.__irshift__  (c, 5), "irshift")
405f5bd3b442dd378563036f51595a7d6b2a239f4d5Armin Rigo        self.assertEqual(operator.__isub__     (c, 5), "isub")
406f5bd3b442dd378563036f51595a7d6b2a239f4d5Armin Rigo        self.assertEqual(operator.__itruediv__ (c, 5), "itruediv")
407f5bd3b442dd378563036f51595a7d6b2a239f4d5Armin Rigo        self.assertEqual(operator.__ixor__     (c, 5), "ixor")
408f5bd3b442dd378563036f51595a7d6b2a239f4d5Armin Rigo        self.assertEqual(operator.__iconcat__  (c, c), "iadd")
409984f9bb7140683fa9b950b42a035477108aba88fRaymond Hettinger
410984f9bb7140683fa9b950b42a035477108aba88fRaymond Hettingerdef test_main(verbose=None):
411984f9bb7140683fa9b950b42a035477108aba88fRaymond Hettinger    import sys
412984f9bb7140683fa9b950b42a035477108aba88fRaymond Hettinger    test_classes = (
413984f9bb7140683fa9b950b42a035477108aba88fRaymond Hettinger        OperatorTestCase,
414984f9bb7140683fa9b950b42a035477108aba88fRaymond Hettinger    )
415984f9bb7140683fa9b950b42a035477108aba88fRaymond Hettinger
416ee8712cda46338d223509cc5751fd36509ad3860Benjamin Peterson    support.run_unittest(*test_classes)
4172e2be3760ccdfd4bdde4afdd66f4078022ba3b61Fred Drake
418984f9bb7140683fa9b950b42a035477108aba88fRaymond Hettinger    # verify reference counting
419984f9bb7140683fa9b950b42a035477108aba88fRaymond Hettinger    if verbose and hasattr(sys, "gettotalrefcount"):
420984f9bb7140683fa9b950b42a035477108aba88fRaymond Hettinger        import gc
421984f9bb7140683fa9b950b42a035477108aba88fRaymond Hettinger        counts = [None] * 5
422805365ee39298f93e433e19ae0dd87c6f782145bGuido van Rossum        for i in range(len(counts)):
423ee8712cda46338d223509cc5751fd36509ad3860Benjamin Peterson            support.run_unittest(*test_classes)
424984f9bb7140683fa9b950b42a035477108aba88fRaymond Hettinger            gc.collect()
425984f9bb7140683fa9b950b42a035477108aba88fRaymond Hettinger            counts[i] = sys.gettotalrefcount()
426be19ed77ddb047e02fe94d142181062af6d99dccGuido van Rossum        print(counts)
4272e2be3760ccdfd4bdde4afdd66f4078022ba3b61Fred Drake
4282e2be3760ccdfd4bdde4afdd66f4078022ba3b61Fred Drakeif __name__ == "__main__":
429984f9bb7140683fa9b950b42a035477108aba88fRaymond Hettinger    test_main(verbose=True)
430