test_operator.py revision bb9c739806b9f0251fa4a564986e2cb5e92e766e
1a09ec19a332de34de493b2c4da2b89b46fadc370Barry Warsawimport operator
2cd112f5546256a752f56b3bf6ce0ff19ff30a981Fred Drakeimport unittest
3cd112f5546256a752f56b3bf6ce0ff19ff30a981Fred Drake
404f357cffef6d764f2f0ff2671dabde75ec250d1Barry Warsawfrom test import test_support
5cd112f5546256a752f56b3bf6ce0ff19ff30a981Fred Drake
6cd112f5546256a752f56b3bf6ce0ff19ff30a981Fred Drake
7cd112f5546256a752f56b3bf6ce0ff19ff30a981Fred Drakeclass OperatorTestCase(unittest.TestCase):
8cd112f5546256a752f56b3bf6ce0ff19ff30a981Fred Drake    def test_lt(self):
9bb9c739806b9f0251fa4a564986e2cb5e92e766eWalter Dörwald        self.failUnlessRaises(TypeError, operator.lt)
10bb9c739806b9f0251fa4a564986e2cb5e92e766eWalter Dörwald        self.failUnlessRaises(TypeError, operator.lt, 1j, 2j)
11cd112f5546256a752f56b3bf6ce0ff19ff30a981Fred Drake        self.failIf(operator.lt(1, 0))
12cd112f5546256a752f56b3bf6ce0ff19ff30a981Fred Drake        self.failIf(operator.lt(1, 0.0))
13cd112f5546256a752f56b3bf6ce0ff19ff30a981Fred Drake        self.failIf(operator.lt(1, 1))
14cd112f5546256a752f56b3bf6ce0ff19ff30a981Fred Drake        self.failIf(operator.lt(1, 1.0))
15cd112f5546256a752f56b3bf6ce0ff19ff30a981Fred Drake        self.failUnless(operator.lt(1, 2))
16cd112f5546256a752f56b3bf6ce0ff19ff30a981Fred Drake        self.failUnless(operator.lt(1, 2.0))
17cd112f5546256a752f56b3bf6ce0ff19ff30a981Fred Drake
18cd112f5546256a752f56b3bf6ce0ff19ff30a981Fred Drake    def test_le(self):
19bb9c739806b9f0251fa4a564986e2cb5e92e766eWalter Dörwald        self.failUnlessRaises(TypeError, operator.le)
20bb9c739806b9f0251fa4a564986e2cb5e92e766eWalter Dörwald        self.failUnlessRaises(TypeError, operator.le, 1j, 2j)
21cd112f5546256a752f56b3bf6ce0ff19ff30a981Fred Drake        self.failIf(operator.le(1, 0))
22cd112f5546256a752f56b3bf6ce0ff19ff30a981Fred Drake        self.failIf(operator.le(1, 0.0))
23cd112f5546256a752f56b3bf6ce0ff19ff30a981Fred Drake        self.failUnless(operator.le(1, 1))
24cd112f5546256a752f56b3bf6ce0ff19ff30a981Fred Drake        self.failUnless(operator.le(1, 1.0))
25cd112f5546256a752f56b3bf6ce0ff19ff30a981Fred Drake        self.failUnless(operator.le(1, 2))
26cd112f5546256a752f56b3bf6ce0ff19ff30a981Fred Drake        self.failUnless(operator.le(1, 2.0))
27cd112f5546256a752f56b3bf6ce0ff19ff30a981Fred Drake
28cd112f5546256a752f56b3bf6ce0ff19ff30a981Fred Drake    def test_eq(self):
29bb9c739806b9f0251fa4a564986e2cb5e92e766eWalter Dörwald        class C(object):
30bb9c739806b9f0251fa4a564986e2cb5e92e766eWalter Dörwald            def __eq__(self, other):
31bb9c739806b9f0251fa4a564986e2cb5e92e766eWalter Dörwald                raise SyntaxError
32bb9c739806b9f0251fa4a564986e2cb5e92e766eWalter Dörwald        self.failUnlessRaises(TypeError, operator.eq)
33bb9c739806b9f0251fa4a564986e2cb5e92e766eWalter Dörwald        self.failUnlessRaises(SyntaxError, operator.eq, C(), C())
34cd112f5546256a752f56b3bf6ce0ff19ff30a981Fred Drake        self.failIf(operator.eq(1, 0))
35cd112f5546256a752f56b3bf6ce0ff19ff30a981Fred Drake        self.failIf(operator.eq(1, 0.0))
36cd112f5546256a752f56b3bf6ce0ff19ff30a981Fred Drake        self.failUnless(operator.eq(1, 1))
37cd112f5546256a752f56b3bf6ce0ff19ff30a981Fred Drake        self.failUnless(operator.eq(1, 1.0))
38cd112f5546256a752f56b3bf6ce0ff19ff30a981Fred Drake        self.failIf(operator.eq(1, 2))
39cd112f5546256a752f56b3bf6ce0ff19ff30a981Fred Drake        self.failIf(operator.eq(1, 2.0))
40cd112f5546256a752f56b3bf6ce0ff19ff30a981Fred Drake
41cd112f5546256a752f56b3bf6ce0ff19ff30a981Fred Drake    def test_ne(self):
42bb9c739806b9f0251fa4a564986e2cb5e92e766eWalter Dörwald        class C(object):
43bb9c739806b9f0251fa4a564986e2cb5e92e766eWalter Dörwald            def __ne__(self, other):
44bb9c739806b9f0251fa4a564986e2cb5e92e766eWalter Dörwald                raise SyntaxError
45bb9c739806b9f0251fa4a564986e2cb5e92e766eWalter Dörwald        self.failUnlessRaises(TypeError, operator.ne)
46bb9c739806b9f0251fa4a564986e2cb5e92e766eWalter Dörwald        self.failUnlessRaises(SyntaxError, operator.ne, C(), C())
47cd112f5546256a752f56b3bf6ce0ff19ff30a981Fred Drake        self.failUnless(operator.ne(1, 0))
48cd112f5546256a752f56b3bf6ce0ff19ff30a981Fred Drake        self.failUnless(operator.ne(1, 0.0))
49cd112f5546256a752f56b3bf6ce0ff19ff30a981Fred Drake        self.failIf(operator.ne(1, 1))
50cd112f5546256a752f56b3bf6ce0ff19ff30a981Fred Drake        self.failIf(operator.ne(1, 1.0))
51cd112f5546256a752f56b3bf6ce0ff19ff30a981Fred Drake        self.failUnless(operator.ne(1, 2))
52cd112f5546256a752f56b3bf6ce0ff19ff30a981Fred Drake        self.failUnless(operator.ne(1, 2.0))
53cd112f5546256a752f56b3bf6ce0ff19ff30a981Fred Drake
54cd112f5546256a752f56b3bf6ce0ff19ff30a981Fred Drake    def test_ge(self):
55bb9c739806b9f0251fa4a564986e2cb5e92e766eWalter Dörwald        self.failUnlessRaises(TypeError, operator.ge)
56bb9c739806b9f0251fa4a564986e2cb5e92e766eWalter Dörwald        self.failUnlessRaises(TypeError, operator.ge, 1j, 2j)
57cd112f5546256a752f56b3bf6ce0ff19ff30a981Fred Drake        self.failUnless(operator.ge(1, 0))
58cd112f5546256a752f56b3bf6ce0ff19ff30a981Fred Drake        self.failUnless(operator.ge(1, 0.0))
59cd112f5546256a752f56b3bf6ce0ff19ff30a981Fred Drake        self.failUnless(operator.ge(1, 1))
60cd112f5546256a752f56b3bf6ce0ff19ff30a981Fred Drake        self.failUnless(operator.ge(1, 1.0))
61cd112f5546256a752f56b3bf6ce0ff19ff30a981Fred Drake        self.failIf(operator.ge(1, 2))
62cd112f5546256a752f56b3bf6ce0ff19ff30a981Fred Drake        self.failIf(operator.ge(1, 2.0))
63cd112f5546256a752f56b3bf6ce0ff19ff30a981Fred Drake
64cd112f5546256a752f56b3bf6ce0ff19ff30a981Fred Drake    def test_gt(self):
65bb9c739806b9f0251fa4a564986e2cb5e92e766eWalter Dörwald        self.failUnlessRaises(TypeError, operator.gt)
66bb9c739806b9f0251fa4a564986e2cb5e92e766eWalter Dörwald        self.failUnlessRaises(TypeError, operator.gt, 1j, 2j)
67cd112f5546256a752f56b3bf6ce0ff19ff30a981Fred Drake        self.failUnless(operator.gt(1, 0))
68cd112f5546256a752f56b3bf6ce0ff19ff30a981Fred Drake        self.failUnless(operator.gt(1, 0.0))
69cd112f5546256a752f56b3bf6ce0ff19ff30a981Fred Drake        self.failIf(operator.gt(1, 1))
70cd112f5546256a752f56b3bf6ce0ff19ff30a981Fred Drake        self.failIf(operator.gt(1, 1.0))
71cd112f5546256a752f56b3bf6ce0ff19ff30a981Fred Drake        self.failIf(operator.gt(1, 2))
72cd112f5546256a752f56b3bf6ce0ff19ff30a981Fred Drake        self.failIf(operator.gt(1, 2.0))
73cd112f5546256a752f56b3bf6ce0ff19ff30a981Fred Drake
74cd112f5546256a752f56b3bf6ce0ff19ff30a981Fred Drake    def test_abs(self):
75bb9c739806b9f0251fa4a564986e2cb5e92e766eWalter Dörwald        self.failUnlessRaises(TypeError, operator.abs)
76bb9c739806b9f0251fa4a564986e2cb5e92e766eWalter Dörwald        self.failUnlessRaises(TypeError, operator.abs, None)
77cd112f5546256a752f56b3bf6ce0ff19ff30a981Fred Drake        self.failUnless(operator.abs(-1) == 1)
78cd112f5546256a752f56b3bf6ce0ff19ff30a981Fred Drake        self.failUnless(operator.abs(1) == 1)
79cd112f5546256a752f56b3bf6ce0ff19ff30a981Fred Drake
80cd112f5546256a752f56b3bf6ce0ff19ff30a981Fred Drake    def test_add(self):
81bb9c739806b9f0251fa4a564986e2cb5e92e766eWalter Dörwald        self.failUnlessRaises(TypeError, operator.add)
82bb9c739806b9f0251fa4a564986e2cb5e92e766eWalter Dörwald        self.failUnlessRaises(TypeError, operator.add, None, None)
83cd112f5546256a752f56b3bf6ce0ff19ff30a981Fred Drake        self.failUnless(operator.add(3, 4) == 7)
84cd112f5546256a752f56b3bf6ce0ff19ff30a981Fred Drake
85cd112f5546256a752f56b3bf6ce0ff19ff30a981Fred Drake    def test_bitwise_and(self):
86bb9c739806b9f0251fa4a564986e2cb5e92e766eWalter Dörwald        self.failUnlessRaises(TypeError, operator.and_)
87bb9c739806b9f0251fa4a564986e2cb5e92e766eWalter Dörwald        self.failUnlessRaises(TypeError, operator.and_, None, None)
88cd112f5546256a752f56b3bf6ce0ff19ff30a981Fred Drake        self.failUnless(operator.and_(0xf, 0xa) == 0xa)
89cd112f5546256a752f56b3bf6ce0ff19ff30a981Fred Drake
90cd112f5546256a752f56b3bf6ce0ff19ff30a981Fred Drake    def test_concat(self):
91bb9c739806b9f0251fa4a564986e2cb5e92e766eWalter Dörwald        self.failUnlessRaises(TypeError, operator.concat)
92bb9c739806b9f0251fa4a564986e2cb5e92e766eWalter Dörwald        self.failUnlessRaises(TypeError, operator.concat, None, None)
93cd112f5546256a752f56b3bf6ce0ff19ff30a981Fred Drake        self.failUnless(operator.concat('py', 'thon') == 'python')
94cd112f5546256a752f56b3bf6ce0ff19ff30a981Fred Drake        self.failUnless(operator.concat([1, 2], [3, 4]) == [1, 2, 3, 4])
95cd112f5546256a752f56b3bf6ce0ff19ff30a981Fred Drake
96cd112f5546256a752f56b3bf6ce0ff19ff30a981Fred Drake    def test_countOf(self):
97bb9c739806b9f0251fa4a564986e2cb5e92e766eWalter Dörwald        self.failUnlessRaises(TypeError, operator.countOf)
98bb9c739806b9f0251fa4a564986e2cb5e92e766eWalter Dörwald        self.failUnlessRaises(TypeError, operator.countOf, None, None)
99cd112f5546256a752f56b3bf6ce0ff19ff30a981Fred Drake        self.failUnless(operator.countOf([1, 2, 1, 3, 1, 4], 3) == 1)
100cd112f5546256a752f56b3bf6ce0ff19ff30a981Fred Drake        self.failUnless(operator.countOf([1, 2, 1, 3, 1, 4], 5) == 0)
101cd112f5546256a752f56b3bf6ce0ff19ff30a981Fred Drake
102cd112f5546256a752f56b3bf6ce0ff19ff30a981Fred Drake    def test_delitem(self):
103cd112f5546256a752f56b3bf6ce0ff19ff30a981Fred Drake        a = [4, 3, 2, 1]
104bb9c739806b9f0251fa4a564986e2cb5e92e766eWalter Dörwald        self.failUnlessRaises(TypeError, operator.delitem, a)
105bb9c739806b9f0251fa4a564986e2cb5e92e766eWalter Dörwald        self.failUnlessRaises(TypeError, operator.delitem, a, None)
106cd112f5546256a752f56b3bf6ce0ff19ff30a981Fred Drake        self.failUnless(operator.delitem(a, 1) is None)
107cd112f5546256a752f56b3bf6ce0ff19ff30a981Fred Drake        self.assert_(a == [4, 2, 1])
108cd112f5546256a752f56b3bf6ce0ff19ff30a981Fred Drake
109cd112f5546256a752f56b3bf6ce0ff19ff30a981Fred Drake    def test_delslice(self):
110cd112f5546256a752f56b3bf6ce0ff19ff30a981Fred Drake        a = range(10)
111bb9c739806b9f0251fa4a564986e2cb5e92e766eWalter Dörwald        self.failUnlessRaises(TypeError, operator.delslice, a)
112bb9c739806b9f0251fa4a564986e2cb5e92e766eWalter Dörwald        self.failUnlessRaises(TypeError, operator.delslice, a, None, None)
113cd112f5546256a752f56b3bf6ce0ff19ff30a981Fred Drake        self.failUnless(operator.delslice(a, 2, 8) is None)
114cd112f5546256a752f56b3bf6ce0ff19ff30a981Fred Drake        self.assert_(a == [0, 1, 8, 9])
115cd112f5546256a752f56b3bf6ce0ff19ff30a981Fred Drake
116cd112f5546256a752f56b3bf6ce0ff19ff30a981Fred Drake    def test_div(self):
117bb9c739806b9f0251fa4a564986e2cb5e92e766eWalter Dörwald        self.failUnlessRaises(TypeError, operator.div, 5)
118bb9c739806b9f0251fa4a564986e2cb5e92e766eWalter Dörwald        self.failUnlessRaises(TypeError, operator.div, None, None)
11954e54c6877329e105406c48490f218faff59db39Guido van Rossum        self.failUnless(operator.floordiv(5, 2) == 2)
120cd112f5546256a752f56b3bf6ce0ff19ff30a981Fred Drake
121cd112f5546256a752f56b3bf6ce0ff19ff30a981Fred Drake    def test_floordiv(self):
122bb9c739806b9f0251fa4a564986e2cb5e92e766eWalter Dörwald        self.failUnlessRaises(TypeError, operator.floordiv, 5)
123bb9c739806b9f0251fa4a564986e2cb5e92e766eWalter Dörwald        self.failUnlessRaises(TypeError, operator.floordiv, None, None)
124cd112f5546256a752f56b3bf6ce0ff19ff30a981Fred Drake        self.failUnless(operator.floordiv(5, 2) == 2)
125cd112f5546256a752f56b3bf6ce0ff19ff30a981Fred Drake
126cd112f5546256a752f56b3bf6ce0ff19ff30a981Fred Drake    def test_truediv(self):
127bb9c739806b9f0251fa4a564986e2cb5e92e766eWalter Dörwald        self.failUnlessRaises(TypeError, operator.truediv, 5)
128bb9c739806b9f0251fa4a564986e2cb5e92e766eWalter Dörwald        self.failUnlessRaises(TypeError, operator.truediv, None, None)
129cd112f5546256a752f56b3bf6ce0ff19ff30a981Fred Drake        self.failUnless(operator.truediv(5, 2) == 2.5)
130cd112f5546256a752f56b3bf6ce0ff19ff30a981Fred Drake
131cd112f5546256a752f56b3bf6ce0ff19ff30a981Fred Drake    def test_getitem(self):
132cd112f5546256a752f56b3bf6ce0ff19ff30a981Fred Drake        a = range(10)
133bb9c739806b9f0251fa4a564986e2cb5e92e766eWalter Dörwald        self.failUnlessRaises(TypeError, operator.getitem)
134bb9c739806b9f0251fa4a564986e2cb5e92e766eWalter Dörwald        self.failUnlessRaises(TypeError, operator.getitem, a, None)
135cd112f5546256a752f56b3bf6ce0ff19ff30a981Fred Drake        self.failUnless(operator.getitem(a, 2) == 2)
136cd112f5546256a752f56b3bf6ce0ff19ff30a981Fred Drake
137cd112f5546256a752f56b3bf6ce0ff19ff30a981Fred Drake    def test_getslice(self):
138cd112f5546256a752f56b3bf6ce0ff19ff30a981Fred Drake        a = range(10)
139bb9c739806b9f0251fa4a564986e2cb5e92e766eWalter Dörwald        self.failUnlessRaises(TypeError, operator.getslice)
140bb9c739806b9f0251fa4a564986e2cb5e92e766eWalter Dörwald        self.failUnlessRaises(TypeError, operator.getslice, a, None, None)
141cd112f5546256a752f56b3bf6ce0ff19ff30a981Fred Drake        self.failUnless(operator.getslice(a, 4, 6) == [4, 5])
142cd112f5546256a752f56b3bf6ce0ff19ff30a981Fred Drake
143cd112f5546256a752f56b3bf6ce0ff19ff30a981Fred Drake    def test_indexOf(self):
144bb9c739806b9f0251fa4a564986e2cb5e92e766eWalter Dörwald        self.failUnlessRaises(TypeError, operator.indexOf)
145bb9c739806b9f0251fa4a564986e2cb5e92e766eWalter Dörwald        self.failUnlessRaises(TypeError, operator.indexOf, None, None)
146cd112f5546256a752f56b3bf6ce0ff19ff30a981Fred Drake        self.failUnless(operator.indexOf([4, 3, 2, 1], 3) == 1)
147cd112f5546256a752f56b3bf6ce0ff19ff30a981Fred Drake        self.assertRaises(ValueError, operator.indexOf, [4, 3, 2, 1], 0)
148cd112f5546256a752f56b3bf6ce0ff19ff30a981Fred Drake
149cd112f5546256a752f56b3bf6ce0ff19ff30a981Fred Drake    def test_invert(self):
150bb9c739806b9f0251fa4a564986e2cb5e92e766eWalter Dörwald        self.failUnlessRaises(TypeError, operator.invert)
151bb9c739806b9f0251fa4a564986e2cb5e92e766eWalter Dörwald        self.failUnlessRaises(TypeError, operator.invert, None)
152cd112f5546256a752f56b3bf6ce0ff19ff30a981Fred Drake        self.failUnless(operator.inv(4) == -5)
153cd112f5546256a752f56b3bf6ce0ff19ff30a981Fred Drake
154cd112f5546256a752f56b3bf6ce0ff19ff30a981Fred Drake    def test_isCallable(self):
155bb9c739806b9f0251fa4a564986e2cb5e92e766eWalter Dörwald        self.failUnlessRaises(TypeError, operator.isCallable)
156cd112f5546256a752f56b3bf6ce0ff19ff30a981Fred Drake        class C:
157cd112f5546256a752f56b3bf6ce0ff19ff30a981Fred Drake            pass
158cd112f5546256a752f56b3bf6ce0ff19ff30a981Fred Drake        def check(self, o, v):
159cd112f5546256a752f56b3bf6ce0ff19ff30a981Fred Drake            self.assert_(operator.isCallable(o) == callable(o) == v)
160cd112f5546256a752f56b3bf6ce0ff19ff30a981Fred Drake        check(self, 4, 0)
161cd112f5546256a752f56b3bf6ce0ff19ff30a981Fred Drake        check(self, operator.isCallable, 1)
162cd112f5546256a752f56b3bf6ce0ff19ff30a981Fred Drake        check(self, C, 1)
163cd112f5546256a752f56b3bf6ce0ff19ff30a981Fred Drake        check(self, C(), 0)
164cd112f5546256a752f56b3bf6ce0ff19ff30a981Fred Drake
165cd112f5546256a752f56b3bf6ce0ff19ff30a981Fred Drake    def test_isMappingType(self):
166bb9c739806b9f0251fa4a564986e2cb5e92e766eWalter Dörwald        self.failUnlessRaises(TypeError, operator.isMappingType)
167cd112f5546256a752f56b3bf6ce0ff19ff30a981Fred Drake        self.failIf(operator.isMappingType(1))
168cd112f5546256a752f56b3bf6ce0ff19ff30a981Fred Drake        self.failIf(operator.isMappingType(operator.isMappingType))
169cd112f5546256a752f56b3bf6ce0ff19ff30a981Fred Drake        self.failUnless(operator.isMappingType(operator.__dict__))
170cd112f5546256a752f56b3bf6ce0ff19ff30a981Fred Drake        self.failUnless(operator.isMappingType({}))
171cd112f5546256a752f56b3bf6ce0ff19ff30a981Fred Drake
172cd112f5546256a752f56b3bf6ce0ff19ff30a981Fred Drake    def test_isNumberType(self):
173bb9c739806b9f0251fa4a564986e2cb5e92e766eWalter Dörwald        self.failUnlessRaises(TypeError, operator.isNumberType)
174cd112f5546256a752f56b3bf6ce0ff19ff30a981Fred Drake        self.failUnless(operator.isNumberType(8))
175cd112f5546256a752f56b3bf6ce0ff19ff30a981Fred Drake        self.failUnless(operator.isNumberType(8j))
176cd112f5546256a752f56b3bf6ce0ff19ff30a981Fred Drake        self.failUnless(operator.isNumberType(8L))
177cd112f5546256a752f56b3bf6ce0ff19ff30a981Fred Drake        self.failUnless(operator.isNumberType(8.3))
178cd112f5546256a752f56b3bf6ce0ff19ff30a981Fred Drake        self.failIf(operator.isNumberType(dir()))
179cd112f5546256a752f56b3bf6ce0ff19ff30a981Fred Drake
180cd112f5546256a752f56b3bf6ce0ff19ff30a981Fred Drake    def test_isSequenceType(self):
181bb9c739806b9f0251fa4a564986e2cb5e92e766eWalter Dörwald        self.failUnlessRaises(TypeError, operator.isSequenceType)
182cd112f5546256a752f56b3bf6ce0ff19ff30a981Fred Drake        self.failUnless(operator.isSequenceType(dir()))
183cd112f5546256a752f56b3bf6ce0ff19ff30a981Fred Drake        self.failUnless(operator.isSequenceType(()))
184cd112f5546256a752f56b3bf6ce0ff19ff30a981Fred Drake        self.failUnless(operator.isSequenceType(xrange(10)))
185cd112f5546256a752f56b3bf6ce0ff19ff30a981Fred Drake        self.failUnless(operator.isSequenceType('yeahbuddy'))
186cd112f5546256a752f56b3bf6ce0ff19ff30a981Fred Drake        self.failIf(operator.isSequenceType(3))
187cd112f5546256a752f56b3bf6ce0ff19ff30a981Fred Drake
188cd112f5546256a752f56b3bf6ce0ff19ff30a981Fred Drake    def test_lshift(self):
189bb9c739806b9f0251fa4a564986e2cb5e92e766eWalter Dörwald        self.failUnlessRaises(TypeError, operator.lshift)
190bb9c739806b9f0251fa4a564986e2cb5e92e766eWalter Dörwald        self.failUnlessRaises(TypeError, operator.lshift, None, 42)
191cd112f5546256a752f56b3bf6ce0ff19ff30a981Fred Drake        self.failUnless(operator.lshift(5, 1) == 10)
192cd112f5546256a752f56b3bf6ce0ff19ff30a981Fred Drake        self.failUnless(operator.lshift(5, 0) == 5)
193cd112f5546256a752f56b3bf6ce0ff19ff30a981Fred Drake        self.assertRaises(ValueError, operator.lshift, 2, -1)
194cd112f5546256a752f56b3bf6ce0ff19ff30a981Fred Drake
195cd112f5546256a752f56b3bf6ce0ff19ff30a981Fred Drake    def test_mod(self):
196bb9c739806b9f0251fa4a564986e2cb5e92e766eWalter Dörwald        self.failUnlessRaises(TypeError, operator.mod)
197bb9c739806b9f0251fa4a564986e2cb5e92e766eWalter Dörwald        self.failUnlessRaises(TypeError, operator.mod, None, 42)
198cd112f5546256a752f56b3bf6ce0ff19ff30a981Fred Drake        self.failUnless(operator.mod(5, 2) == 1)
199cd112f5546256a752f56b3bf6ce0ff19ff30a981Fred Drake
200cd112f5546256a752f56b3bf6ce0ff19ff30a981Fred Drake    def test_mul(self):
201bb9c739806b9f0251fa4a564986e2cb5e92e766eWalter Dörwald        self.failUnlessRaises(TypeError, operator.mul)
202bb9c739806b9f0251fa4a564986e2cb5e92e766eWalter Dörwald        self.failUnlessRaises(TypeError, operator.mul, None, None)
203cd112f5546256a752f56b3bf6ce0ff19ff30a981Fred Drake        self.failUnless(operator.mul(5, 2) == 10)
204cd112f5546256a752f56b3bf6ce0ff19ff30a981Fred Drake
205cd112f5546256a752f56b3bf6ce0ff19ff30a981Fred Drake    def test_neg(self):
206bb9c739806b9f0251fa4a564986e2cb5e92e766eWalter Dörwald        self.failUnlessRaises(TypeError, operator.neg)
207bb9c739806b9f0251fa4a564986e2cb5e92e766eWalter Dörwald        self.failUnlessRaises(TypeError, operator.neg, None)
208cd112f5546256a752f56b3bf6ce0ff19ff30a981Fred Drake        self.failUnless(operator.neg(5) == -5)
209cd112f5546256a752f56b3bf6ce0ff19ff30a981Fred Drake        self.failUnless(operator.neg(-5) == 5)
210cd112f5546256a752f56b3bf6ce0ff19ff30a981Fred Drake        self.failUnless(operator.neg(0) == 0)
211cd112f5546256a752f56b3bf6ce0ff19ff30a981Fred Drake        self.failUnless(operator.neg(-0) == 0)
212cd112f5546256a752f56b3bf6ce0ff19ff30a981Fred Drake
213cd112f5546256a752f56b3bf6ce0ff19ff30a981Fred Drake    def test_bitwise_or(self):
214bb9c739806b9f0251fa4a564986e2cb5e92e766eWalter Dörwald        self.failUnlessRaises(TypeError, operator.or_)
215bb9c739806b9f0251fa4a564986e2cb5e92e766eWalter Dörwald        self.failUnlessRaises(TypeError, operator.or_, None, None)
216cd112f5546256a752f56b3bf6ce0ff19ff30a981Fred Drake        self.failUnless(operator.or_(0xa, 0x5) == 0xf)
217cd112f5546256a752f56b3bf6ce0ff19ff30a981Fred Drake
218cd112f5546256a752f56b3bf6ce0ff19ff30a981Fred Drake    def test_pos(self):
219bb9c739806b9f0251fa4a564986e2cb5e92e766eWalter Dörwald        self.failUnlessRaises(TypeError, operator.pos)
220bb9c739806b9f0251fa4a564986e2cb5e92e766eWalter Dörwald        self.failUnlessRaises(TypeError, operator.pos, None)
221cd112f5546256a752f56b3bf6ce0ff19ff30a981Fred Drake        self.failUnless(operator.pos(5) == 5)
222cd112f5546256a752f56b3bf6ce0ff19ff30a981Fred Drake        self.failUnless(operator.pos(-5) == -5)
223cd112f5546256a752f56b3bf6ce0ff19ff30a981Fred Drake        self.failUnless(operator.pos(0) == 0)
224cd112f5546256a752f56b3bf6ce0ff19ff30a981Fred Drake        self.failUnless(operator.pos(-0) == 0)
225cd112f5546256a752f56b3bf6ce0ff19ff30a981Fred Drake
2265959c559df777eb61b10d986e45ed4bbf269b36dRaymond Hettinger    def test_pow(self):
227bb9c739806b9f0251fa4a564986e2cb5e92e766eWalter Dörwald        self.failUnlessRaises(TypeError, operator.pow)
228bb9c739806b9f0251fa4a564986e2cb5e92e766eWalter Dörwald        self.failUnlessRaises(TypeError, operator.pow, None, None)
2295959c559df777eb61b10d986e45ed4bbf269b36dRaymond Hettinger        self.failUnless(operator.pow(3,5) == 3**5)
2305959c559df777eb61b10d986e45ed4bbf269b36dRaymond Hettinger        self.failUnless(operator.__pow__(3,5) == 3**5)
2315959c559df777eb61b10d986e45ed4bbf269b36dRaymond Hettinger        self.assertRaises(TypeError, operator.pow, 1)
2325959c559df777eb61b10d986e45ed4bbf269b36dRaymond Hettinger        self.assertRaises(TypeError, operator.pow, 1, 2, 3)
2335959c559df777eb61b10d986e45ed4bbf269b36dRaymond Hettinger
234cd112f5546256a752f56b3bf6ce0ff19ff30a981Fred Drake    def test_repeat(self):
235cd112f5546256a752f56b3bf6ce0ff19ff30a981Fred Drake        a = range(3)
236bb9c739806b9f0251fa4a564986e2cb5e92e766eWalter Dörwald        self.failUnlessRaises(TypeError, operator.repeat)
237bb9c739806b9f0251fa4a564986e2cb5e92e766eWalter Dörwald        self.failUnlessRaises(TypeError, operator.repeat, a, None)
238cd112f5546256a752f56b3bf6ce0ff19ff30a981Fred Drake        self.failUnless(operator.repeat(a, 2) == a+a)
239cd112f5546256a752f56b3bf6ce0ff19ff30a981Fred Drake        self.failUnless(operator.repeat(a, 1) == a)
240cd112f5546256a752f56b3bf6ce0ff19ff30a981Fred Drake        self.failUnless(operator.repeat(a, 0) == [])
241cd112f5546256a752f56b3bf6ce0ff19ff30a981Fred Drake        a = (1, 2, 3)
242cd112f5546256a752f56b3bf6ce0ff19ff30a981Fred Drake        self.failUnless(operator.repeat(a, 2) == a+a)
243cd112f5546256a752f56b3bf6ce0ff19ff30a981Fred Drake        self.failUnless(operator.repeat(a, 1) == a)
244cd112f5546256a752f56b3bf6ce0ff19ff30a981Fred Drake        self.failUnless(operator.repeat(a, 0) == ())
245cd112f5546256a752f56b3bf6ce0ff19ff30a981Fred Drake        a = '123'
246cd112f5546256a752f56b3bf6ce0ff19ff30a981Fred Drake        self.failUnless(operator.repeat(a, 2) == a+a)
247cd112f5546256a752f56b3bf6ce0ff19ff30a981Fred Drake        self.failUnless(operator.repeat(a, 1) == a)
248cd112f5546256a752f56b3bf6ce0ff19ff30a981Fred Drake        self.failUnless(operator.repeat(a, 0) == '')
249cd112f5546256a752f56b3bf6ce0ff19ff30a981Fred Drake
250cd112f5546256a752f56b3bf6ce0ff19ff30a981Fred Drake    def test_rshift(self):
251bb9c739806b9f0251fa4a564986e2cb5e92e766eWalter Dörwald        self.failUnlessRaises(TypeError, operator.rshift)
252bb9c739806b9f0251fa4a564986e2cb5e92e766eWalter Dörwald        self.failUnlessRaises(TypeError, operator.rshift, None, 42)
253cd112f5546256a752f56b3bf6ce0ff19ff30a981Fred Drake        self.failUnless(operator.rshift(5, 1) == 2)
254cd112f5546256a752f56b3bf6ce0ff19ff30a981Fred Drake        self.failUnless(operator.rshift(5, 0) == 5)
255cd112f5546256a752f56b3bf6ce0ff19ff30a981Fred Drake        self.assertRaises(ValueError, operator.rshift, 2, -1)
256cd112f5546256a752f56b3bf6ce0ff19ff30a981Fred Drake
257cd112f5546256a752f56b3bf6ce0ff19ff30a981Fred Drake    def test_contains(self):
258bb9c739806b9f0251fa4a564986e2cb5e92e766eWalter Dörwald        self.failUnlessRaises(TypeError, operator.contains)
259bb9c739806b9f0251fa4a564986e2cb5e92e766eWalter Dörwald        self.failUnlessRaises(TypeError, operator.contains, None, None)
260cd112f5546256a752f56b3bf6ce0ff19ff30a981Fred Drake        self.failUnless(operator.contains(range(4), 2))
261cd112f5546256a752f56b3bf6ce0ff19ff30a981Fred Drake        self.failIf(operator.contains(range(4), 5))
262cd112f5546256a752f56b3bf6ce0ff19ff30a981Fred Drake        self.failUnless(operator.sequenceIncludes(range(4), 2))
263cd112f5546256a752f56b3bf6ce0ff19ff30a981Fred Drake        self.failIf(operator.sequenceIncludes(range(4), 5))
264cd112f5546256a752f56b3bf6ce0ff19ff30a981Fred Drake
265cd112f5546256a752f56b3bf6ce0ff19ff30a981Fred Drake    def test_setitem(self):
266cd112f5546256a752f56b3bf6ce0ff19ff30a981Fred Drake        a = range(3)
267bb9c739806b9f0251fa4a564986e2cb5e92e766eWalter Dörwald        self.failUnlessRaises(TypeError, operator.setitem, a)
268bb9c739806b9f0251fa4a564986e2cb5e92e766eWalter Dörwald        self.failUnlessRaises(TypeError, operator.setitem, a, None, None)
269cd112f5546256a752f56b3bf6ce0ff19ff30a981Fred Drake        self.failUnless(operator.setitem(a, 0, 2) is None)
270cd112f5546256a752f56b3bf6ce0ff19ff30a981Fred Drake        self.assert_(a == [2, 1, 2])
271cd112f5546256a752f56b3bf6ce0ff19ff30a981Fred Drake        self.assertRaises(IndexError, operator.setitem, a, 4, 2)
272cd112f5546256a752f56b3bf6ce0ff19ff30a981Fred Drake
273cd112f5546256a752f56b3bf6ce0ff19ff30a981Fred Drake    def test_setslice(self):
274cd112f5546256a752f56b3bf6ce0ff19ff30a981Fred Drake        a = range(4)
275bb9c739806b9f0251fa4a564986e2cb5e92e766eWalter Dörwald        self.failUnlessRaises(TypeError, operator.setslice, a)
276bb9c739806b9f0251fa4a564986e2cb5e92e766eWalter Dörwald        self.failUnlessRaises(TypeError, operator.setslice, a, None, None, None)
277cd112f5546256a752f56b3bf6ce0ff19ff30a981Fred Drake        self.failUnless(operator.setslice(a, 1, 3, [2, 1]) is None)
278cd112f5546256a752f56b3bf6ce0ff19ff30a981Fred Drake        self.assert_(a == [0, 2, 1, 3])
279cd112f5546256a752f56b3bf6ce0ff19ff30a981Fred Drake
280cd112f5546256a752f56b3bf6ce0ff19ff30a981Fred Drake    def test_sub(self):
281bb9c739806b9f0251fa4a564986e2cb5e92e766eWalter Dörwald        self.failUnlessRaises(TypeError, operator.sub)
282bb9c739806b9f0251fa4a564986e2cb5e92e766eWalter Dörwald        self.failUnlessRaises(TypeError, operator.sub, None, None)
283cd112f5546256a752f56b3bf6ce0ff19ff30a981Fred Drake        self.failUnless(operator.sub(5, 2) == 3)
284cd112f5546256a752f56b3bf6ce0ff19ff30a981Fred Drake
285cd112f5546256a752f56b3bf6ce0ff19ff30a981Fred Drake    def test_truth(self):
286bb9c739806b9f0251fa4a564986e2cb5e92e766eWalter Dörwald        class C(object):
287bb9c739806b9f0251fa4a564986e2cb5e92e766eWalter Dörwald            def __nonzero__(self):
288bb9c739806b9f0251fa4a564986e2cb5e92e766eWalter Dörwald                raise SyntaxError
289bb9c739806b9f0251fa4a564986e2cb5e92e766eWalter Dörwald        self.failUnlessRaises(TypeError, operator.truth)
290bb9c739806b9f0251fa4a564986e2cb5e92e766eWalter Dörwald        self.failUnlessRaises(SyntaxError, operator.truth, C())
291cd112f5546256a752f56b3bf6ce0ff19ff30a981Fred Drake        self.failUnless(operator.truth(5))
292cd112f5546256a752f56b3bf6ce0ff19ff30a981Fred Drake        self.failUnless(operator.truth([0]))
293cd112f5546256a752f56b3bf6ce0ff19ff30a981Fred Drake        self.failIf(operator.truth(0))
294cd112f5546256a752f56b3bf6ce0ff19ff30a981Fred Drake        self.failIf(operator.truth([]))
295cd112f5546256a752f56b3bf6ce0ff19ff30a981Fred Drake
296cd112f5546256a752f56b3bf6ce0ff19ff30a981Fred Drake    def test_bitwise_xor(self):
297bb9c739806b9f0251fa4a564986e2cb5e92e766eWalter Dörwald        self.failUnlessRaises(TypeError, operator.xor)
298bb9c739806b9f0251fa4a564986e2cb5e92e766eWalter Dörwald        self.failUnlessRaises(TypeError, operator.xor, None, None)
299cd112f5546256a752f56b3bf6ce0ff19ff30a981Fred Drake        self.failUnless(operator.xor(0xb, 0xc) == 0x7)
300cd112f5546256a752f56b3bf6ce0ff19ff30a981Fred Drake
3019543b340066e85bb920a0655edf33e11050d7b08Raymond Hettinger    def test_is(self):
3029543b340066e85bb920a0655edf33e11050d7b08Raymond Hettinger        a = b = 'xyzpdq'
3039543b340066e85bb920a0655edf33e11050d7b08Raymond Hettinger        c = a[:3] + b[3:]
304bb9c739806b9f0251fa4a564986e2cb5e92e766eWalter Dörwald        self.failUnlessRaises(TypeError, operator.is_)
3059543b340066e85bb920a0655edf33e11050d7b08Raymond Hettinger        self.failUnless(operator.is_(a, b))
3069543b340066e85bb920a0655edf33e11050d7b08Raymond Hettinger        self.failIf(operator.is_(a,c))
3079543b340066e85bb920a0655edf33e11050d7b08Raymond Hettinger
3089543b340066e85bb920a0655edf33e11050d7b08Raymond Hettinger    def test_is_not(self):
3099543b340066e85bb920a0655edf33e11050d7b08Raymond Hettinger        a = b = 'xyzpdq'
3109543b340066e85bb920a0655edf33e11050d7b08Raymond Hettinger        c = a[:3] + b[3:]
311bb9c739806b9f0251fa4a564986e2cb5e92e766eWalter Dörwald        self.failUnlessRaises(TypeError, operator.is_not)
3129543b340066e85bb920a0655edf33e11050d7b08Raymond Hettinger        self.failIf(operator.is_not(a, b))
3139543b340066e85bb920a0655edf33e11050d7b08Raymond Hettinger        self.failUnless(operator.is_not(a,c))
314cd112f5546256a752f56b3bf6ce0ff19ff30a981Fred Drake
315166958b5df50fca05cb24be0152737edf575dbb9Raymond Hettinger    def test_attrgetter(self):
316166958b5df50fca05cb24be0152737edf575dbb9Raymond Hettinger        class A:
317166958b5df50fca05cb24be0152737edf575dbb9Raymond Hettinger            pass
318166958b5df50fca05cb24be0152737edf575dbb9Raymond Hettinger        a = A()
319166958b5df50fca05cb24be0152737edf575dbb9Raymond Hettinger        a.name = 'arthur'
320166958b5df50fca05cb24be0152737edf575dbb9Raymond Hettinger        f = operator.attrgetter('name')
321166958b5df50fca05cb24be0152737edf575dbb9Raymond Hettinger        self.assertEqual(f(a), 'arthur')
322166958b5df50fca05cb24be0152737edf575dbb9Raymond Hettinger        f = operator.attrgetter('rank')
323166958b5df50fca05cb24be0152737edf575dbb9Raymond Hettinger        self.assertRaises(AttributeError, f, a)
324166958b5df50fca05cb24be0152737edf575dbb9Raymond Hettinger        f = operator.attrgetter(2)
325166958b5df50fca05cb24be0152737edf575dbb9Raymond Hettinger        self.assertRaises(TypeError, f, a)
326166958b5df50fca05cb24be0152737edf575dbb9Raymond Hettinger        self.assertRaises(TypeError, operator.attrgetter)
327166958b5df50fca05cb24be0152737edf575dbb9Raymond Hettinger        self.assertRaises(TypeError, operator.attrgetter, 1, 2)
328166958b5df50fca05cb24be0152737edf575dbb9Raymond Hettinger
329bb9c739806b9f0251fa4a564986e2cb5e92e766eWalter Dörwald        class C(object):
330bb9c739806b9f0251fa4a564986e2cb5e92e766eWalter Dörwald            def __getattr(self, name):
331bb9c739806b9f0251fa4a564986e2cb5e92e766eWalter Dörwald                raise SyntaxError
332bb9c739806b9f0251fa4a564986e2cb5e92e766eWalter Dörwald        self.failUnlessRaises(AttributeError, operator.attrgetter('foo'), C())
333bb9c739806b9f0251fa4a564986e2cb5e92e766eWalter Dörwald
334166958b5df50fca05cb24be0152737edf575dbb9Raymond Hettinger    def test_itemgetter(self):
335166958b5df50fca05cb24be0152737edf575dbb9Raymond Hettinger        a = 'ABCDE'
336166958b5df50fca05cb24be0152737edf575dbb9Raymond Hettinger        f = operator.itemgetter(2)
337166958b5df50fca05cb24be0152737edf575dbb9Raymond Hettinger        self.assertEqual(f(a), 'C')
338166958b5df50fca05cb24be0152737edf575dbb9Raymond Hettinger        f = operator.itemgetter(10)
339166958b5df50fca05cb24be0152737edf575dbb9Raymond Hettinger        self.assertRaises(IndexError, f, a)
340166958b5df50fca05cb24be0152737edf575dbb9Raymond Hettinger
341bb9c739806b9f0251fa4a564986e2cb5e92e766eWalter Dörwald        class C(object):
342bb9c739806b9f0251fa4a564986e2cb5e92e766eWalter Dörwald            def __getitem(self, name):
343bb9c739806b9f0251fa4a564986e2cb5e92e766eWalter Dörwald                raise SyntaxError
344bb9c739806b9f0251fa4a564986e2cb5e92e766eWalter Dörwald        self.failUnlessRaises(TypeError, operator.itemgetter(42), C())
345bb9c739806b9f0251fa4a564986e2cb5e92e766eWalter Dörwald
346166958b5df50fca05cb24be0152737edf575dbb9Raymond Hettinger        f = operator.itemgetter('name')
347166958b5df50fca05cb24be0152737edf575dbb9Raymond Hettinger        self.assertRaises(TypeError, f, a)
348166958b5df50fca05cb24be0152737edf575dbb9Raymond Hettinger        self.assertRaises(TypeError, operator.itemgetter)
349166958b5df50fca05cb24be0152737edf575dbb9Raymond Hettinger        self.assertRaises(TypeError, operator.itemgetter, 1, 2)
350166958b5df50fca05cb24be0152737edf575dbb9Raymond Hettinger
351166958b5df50fca05cb24be0152737edf575dbb9Raymond Hettinger        d = dict(key='val')
352166958b5df50fca05cb24be0152737edf575dbb9Raymond Hettinger        f = operator.itemgetter('key')
353166958b5df50fca05cb24be0152737edf575dbb9Raymond Hettinger        self.assertEqual(f(d), 'val')
354166958b5df50fca05cb24be0152737edf575dbb9Raymond Hettinger        f = operator.itemgetter('nonkey')
355166958b5df50fca05cb24be0152737edf575dbb9Raymond Hettinger        self.assertRaises(KeyError, f, d)
356166958b5df50fca05cb24be0152737edf575dbb9Raymond Hettinger
357166958b5df50fca05cb24be0152737edf575dbb9Raymond Hettinger        # example used in the docs
358166958b5df50fca05cb24be0152737edf575dbb9Raymond Hettinger        inventory = [('apple', 3), ('banana', 2), ('pear', 5), ('orange', 1)]
359166958b5df50fca05cb24be0152737edf575dbb9Raymond Hettinger        getcount = operator.itemgetter(1)
360166958b5df50fca05cb24be0152737edf575dbb9Raymond Hettinger        self.assertEqual(map(getcount, inventory), [3, 2, 5, 1])
36164958a15d7c03efdc3d2eddf247666e18d1fd910Raymond Hettinger        self.assertEqual(sorted(inventory, key=getcount),
362166958b5df50fca05cb24be0152737edf575dbb9Raymond Hettinger            [('orange', 1), ('banana', 2), ('apple', 3), ('pear', 5)])
363166958b5df50fca05cb24be0152737edf575dbb9Raymond Hettinger
3642e2be3760ccdfd4bdde4afdd66f4078022ba3b61Fred Drakedef test_main():
3652e2be3760ccdfd4bdde4afdd66f4078022ba3b61Fred Drake    test_support.run_unittest(OperatorTestCase)
3662e2be3760ccdfd4bdde4afdd66f4078022ba3b61Fred Drake
3672e2be3760ccdfd4bdde4afdd66f4078022ba3b61Fred Drake
3682e2be3760ccdfd4bdde4afdd66f4078022ba3b61Fred Drakeif __name__ == "__main__":
3692e2be3760ccdfd4bdde4afdd66f4078022ba3b61Fred Drake    test_main()
370