test_operator.py revision 9bd667ad030913ead3a789f45e73c26f9f28fb46
1a09ec19a332de34de493b2c4da2b89b46fadc370Barry Warsawimport operator 2cd112f5546256a752f56b3bf6ce0ff19ff30a981Fred Drakeimport unittest 3cd112f5546256a752f56b3bf6ce0ff19ff30a981Fred Drake 404f357cffef6d764f2f0ff2671dabde75ec250d1Barry Warsawfrom test import test_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): 37bb9c739806b9f0251fa4a564986e2cb5e92e766eWalter Dörwald self.failUnlessRaises(TypeError, operator.lt) 38bb9c739806b9f0251fa4a564986e2cb5e92e766eWalter Dörwald self.failUnlessRaises(TypeError, operator.lt, 1j, 2j) 39cd112f5546256a752f56b3bf6ce0ff19ff30a981Fred Drake self.failIf(operator.lt(1, 0)) 40cd112f5546256a752f56b3bf6ce0ff19ff30a981Fred Drake self.failIf(operator.lt(1, 0.0)) 41cd112f5546256a752f56b3bf6ce0ff19ff30a981Fred Drake self.failIf(operator.lt(1, 1)) 42cd112f5546256a752f56b3bf6ce0ff19ff30a981Fred Drake self.failIf(operator.lt(1, 1.0)) 43cd112f5546256a752f56b3bf6ce0ff19ff30a981Fred Drake self.failUnless(operator.lt(1, 2)) 44cd112f5546256a752f56b3bf6ce0ff19ff30a981Fred Drake self.failUnless(operator.lt(1, 2.0)) 45cd112f5546256a752f56b3bf6ce0ff19ff30a981Fred Drake 46cd112f5546256a752f56b3bf6ce0ff19ff30a981Fred Drake def test_le(self): 47bb9c739806b9f0251fa4a564986e2cb5e92e766eWalter Dörwald self.failUnlessRaises(TypeError, operator.le) 48bb9c739806b9f0251fa4a564986e2cb5e92e766eWalter Dörwald self.failUnlessRaises(TypeError, operator.le, 1j, 2j) 49cd112f5546256a752f56b3bf6ce0ff19ff30a981Fred Drake self.failIf(operator.le(1, 0)) 50cd112f5546256a752f56b3bf6ce0ff19ff30a981Fred Drake self.failIf(operator.le(1, 0.0)) 51cd112f5546256a752f56b3bf6ce0ff19ff30a981Fred Drake self.failUnless(operator.le(1, 1)) 52cd112f5546256a752f56b3bf6ce0ff19ff30a981Fred Drake self.failUnless(operator.le(1, 1.0)) 53cd112f5546256a752f56b3bf6ce0ff19ff30a981Fred Drake self.failUnless(operator.le(1, 2)) 54cd112f5546256a752f56b3bf6ce0ff19ff30a981Fred Drake self.failUnless(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 60bb9c739806b9f0251fa4a564986e2cb5e92e766eWalter Dörwald self.failUnlessRaises(TypeError, operator.eq) 61bb9c739806b9f0251fa4a564986e2cb5e92e766eWalter Dörwald self.failUnlessRaises(SyntaxError, operator.eq, C(), C()) 62cd112f5546256a752f56b3bf6ce0ff19ff30a981Fred Drake self.failIf(operator.eq(1, 0)) 63cd112f5546256a752f56b3bf6ce0ff19ff30a981Fred Drake self.failIf(operator.eq(1, 0.0)) 64cd112f5546256a752f56b3bf6ce0ff19ff30a981Fred Drake self.failUnless(operator.eq(1, 1)) 65cd112f5546256a752f56b3bf6ce0ff19ff30a981Fred Drake self.failUnless(operator.eq(1, 1.0)) 66cd112f5546256a752f56b3bf6ce0ff19ff30a981Fred Drake self.failIf(operator.eq(1, 2)) 67cd112f5546256a752f56b3bf6ce0ff19ff30a981Fred Drake self.failIf(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 73bb9c739806b9f0251fa4a564986e2cb5e92e766eWalter Dörwald self.failUnlessRaises(TypeError, operator.ne) 74bb9c739806b9f0251fa4a564986e2cb5e92e766eWalter Dörwald self.failUnlessRaises(SyntaxError, operator.ne, C(), C()) 75cd112f5546256a752f56b3bf6ce0ff19ff30a981Fred Drake self.failUnless(operator.ne(1, 0)) 76cd112f5546256a752f56b3bf6ce0ff19ff30a981Fred Drake self.failUnless(operator.ne(1, 0.0)) 77cd112f5546256a752f56b3bf6ce0ff19ff30a981Fred Drake self.failIf(operator.ne(1, 1)) 78cd112f5546256a752f56b3bf6ce0ff19ff30a981Fred Drake self.failIf(operator.ne(1, 1.0)) 79cd112f5546256a752f56b3bf6ce0ff19ff30a981Fred Drake self.failUnless(operator.ne(1, 2)) 80cd112f5546256a752f56b3bf6ce0ff19ff30a981Fred Drake self.failUnless(operator.ne(1, 2.0)) 81cd112f5546256a752f56b3bf6ce0ff19ff30a981Fred Drake 82cd112f5546256a752f56b3bf6ce0ff19ff30a981Fred Drake def test_ge(self): 83bb9c739806b9f0251fa4a564986e2cb5e92e766eWalter Dörwald self.failUnlessRaises(TypeError, operator.ge) 84bb9c739806b9f0251fa4a564986e2cb5e92e766eWalter Dörwald self.failUnlessRaises(TypeError, operator.ge, 1j, 2j) 85cd112f5546256a752f56b3bf6ce0ff19ff30a981Fred Drake self.failUnless(operator.ge(1, 0)) 86cd112f5546256a752f56b3bf6ce0ff19ff30a981Fred Drake self.failUnless(operator.ge(1, 0.0)) 87cd112f5546256a752f56b3bf6ce0ff19ff30a981Fred Drake self.failUnless(operator.ge(1, 1)) 88cd112f5546256a752f56b3bf6ce0ff19ff30a981Fred Drake self.failUnless(operator.ge(1, 1.0)) 89cd112f5546256a752f56b3bf6ce0ff19ff30a981Fred Drake self.failIf(operator.ge(1, 2)) 90cd112f5546256a752f56b3bf6ce0ff19ff30a981Fred Drake self.failIf(operator.ge(1, 2.0)) 91cd112f5546256a752f56b3bf6ce0ff19ff30a981Fred Drake 92cd112f5546256a752f56b3bf6ce0ff19ff30a981Fred Drake def test_gt(self): 93bb9c739806b9f0251fa4a564986e2cb5e92e766eWalter Dörwald self.failUnlessRaises(TypeError, operator.gt) 94bb9c739806b9f0251fa4a564986e2cb5e92e766eWalter Dörwald self.failUnlessRaises(TypeError, operator.gt, 1j, 2j) 95cd112f5546256a752f56b3bf6ce0ff19ff30a981Fred Drake self.failUnless(operator.gt(1, 0)) 96cd112f5546256a752f56b3bf6ce0ff19ff30a981Fred Drake self.failUnless(operator.gt(1, 0.0)) 97cd112f5546256a752f56b3bf6ce0ff19ff30a981Fred Drake self.failIf(operator.gt(1, 1)) 98cd112f5546256a752f56b3bf6ce0ff19ff30a981Fred Drake self.failIf(operator.gt(1, 1.0)) 99cd112f5546256a752f56b3bf6ce0ff19ff30a981Fred Drake self.failIf(operator.gt(1, 2)) 100cd112f5546256a752f56b3bf6ce0ff19ff30a981Fred Drake self.failIf(operator.gt(1, 2.0)) 101cd112f5546256a752f56b3bf6ce0ff19ff30a981Fred Drake 102cd112f5546256a752f56b3bf6ce0ff19ff30a981Fred Drake def test_abs(self): 103bb9c739806b9f0251fa4a564986e2cb5e92e766eWalter Dörwald self.failUnlessRaises(TypeError, operator.abs) 104bb9c739806b9f0251fa4a564986e2cb5e92e766eWalter Dörwald self.failUnlessRaises(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): 109bb9c739806b9f0251fa4a564986e2cb5e92e766eWalter Dörwald self.failUnlessRaises(TypeError, operator.add) 110bb9c739806b9f0251fa4a564986e2cb5e92e766eWalter Dörwald self.failUnlessRaises(TypeError, operator.add, None, None) 111cd112f5546256a752f56b3bf6ce0ff19ff30a981Fred Drake self.failUnless(operator.add(3, 4) == 7) 112cd112f5546256a752f56b3bf6ce0ff19ff30a981Fred Drake 113cd112f5546256a752f56b3bf6ce0ff19ff30a981Fred Drake def test_bitwise_and(self): 114bb9c739806b9f0251fa4a564986e2cb5e92e766eWalter Dörwald self.failUnlessRaises(TypeError, operator.and_) 115bb9c739806b9f0251fa4a564986e2cb5e92e766eWalter Dörwald self.failUnlessRaises(TypeError, operator.and_, None, None) 116cd112f5546256a752f56b3bf6ce0ff19ff30a981Fred Drake self.failUnless(operator.and_(0xf, 0xa) == 0xa) 117cd112f5546256a752f56b3bf6ce0ff19ff30a981Fred Drake 118cd112f5546256a752f56b3bf6ce0ff19ff30a981Fred Drake def test_concat(self): 119bb9c739806b9f0251fa4a564986e2cb5e92e766eWalter Dörwald self.failUnlessRaises(TypeError, operator.concat) 120bb9c739806b9f0251fa4a564986e2cb5e92e766eWalter Dörwald self.failUnlessRaises(TypeError, operator.concat, None, None) 121cd112f5546256a752f56b3bf6ce0ff19ff30a981Fred Drake self.failUnless(operator.concat('py', 'thon') == 'python') 122cd112f5546256a752f56b3bf6ce0ff19ff30a981Fred Drake self.failUnless(operator.concat([1, 2], [3, 4]) == [1, 2, 3, 4]) 123fd163f92cee2aa8189879bd43670782f4cfd2cf8Armin Rigo self.failUnless(operator.concat(Seq1([5, 6]), Seq1([7])) == [5, 6, 7]) 124fd163f92cee2aa8189879bd43670782f4cfd2cf8Armin Rigo self.failUnless(operator.concat(Seq2([5, 6]), Seq2([7])) == [5, 6, 7]) 125fd163f92cee2aa8189879bd43670782f4cfd2cf8Armin Rigo self.failUnlessRaises(TypeError, operator.concat, 13, 29) 126cd112f5546256a752f56b3bf6ce0ff19ff30a981Fred Drake 127cd112f5546256a752f56b3bf6ce0ff19ff30a981Fred Drake def test_countOf(self): 128bb9c739806b9f0251fa4a564986e2cb5e92e766eWalter Dörwald self.failUnlessRaises(TypeError, operator.countOf) 129bb9c739806b9f0251fa4a564986e2cb5e92e766eWalter Dörwald self.failUnlessRaises(TypeError, operator.countOf, None, None) 130cd112f5546256a752f56b3bf6ce0ff19ff30a981Fred Drake self.failUnless(operator.countOf([1, 2, 1, 3, 1, 4], 3) == 1) 131cd112f5546256a752f56b3bf6ce0ff19ff30a981Fred Drake self.failUnless(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] 135bb9c739806b9f0251fa4a564986e2cb5e92e766eWalter Dörwald self.failUnlessRaises(TypeError, operator.delitem, a) 136bb9c739806b9f0251fa4a564986e2cb5e92e766eWalter Dörwald self.failUnlessRaises(TypeError, operator.delitem, a, None) 137cd112f5546256a752f56b3bf6ce0ff19ff30a981Fred Drake self.failUnless(operator.delitem(a, 1) is None) 138cd112f5546256a752f56b3bf6ce0ff19ff30a981Fred Drake self.assert_(a == [4, 2, 1]) 139cd112f5546256a752f56b3bf6ce0ff19ff30a981Fred Drake 140cd112f5546256a752f56b3bf6ce0ff19ff30a981Fred Drake def test_delslice(self): 141805365ee39298f93e433e19ae0dd87c6f782145bGuido van Rossum a = list(range(10)) 142bb9c739806b9f0251fa4a564986e2cb5e92e766eWalter Dörwald self.failUnlessRaises(TypeError, operator.delslice, a) 143bb9c739806b9f0251fa4a564986e2cb5e92e766eWalter Dörwald self.failUnlessRaises(TypeError, operator.delslice, a, None, None) 144cd112f5546256a752f56b3bf6ce0ff19ff30a981Fred Drake self.failUnless(operator.delslice(a, 2, 8) is None) 145cd112f5546256a752f56b3bf6ce0ff19ff30a981Fred Drake self.assert_(a == [0, 1, 8, 9]) 146d8faa3654c2887eaa146dcdb553a9f9793bd2e5aGuido van Rossum operator.delslice(a, 0, test_support.MAX_Py_ssize_t) 147e61fd5b5ed9d677da2f3349078d7f66f707199deGuido van Rossum self.assertEqual(a, []) 148cd112f5546256a752f56b3bf6ce0ff19ff30a981Fred Drake 149cd112f5546256a752f56b3bf6ce0ff19ff30a981Fred Drake def test_floordiv(self): 150bb9c739806b9f0251fa4a564986e2cb5e92e766eWalter Dörwald self.failUnlessRaises(TypeError, operator.floordiv, 5) 151bb9c739806b9f0251fa4a564986e2cb5e92e766eWalter Dörwald self.failUnlessRaises(TypeError, operator.floordiv, None, None) 152cd112f5546256a752f56b3bf6ce0ff19ff30a981Fred Drake self.failUnless(operator.floordiv(5, 2) == 2) 153cd112f5546256a752f56b3bf6ce0ff19ff30a981Fred Drake 154cd112f5546256a752f56b3bf6ce0ff19ff30a981Fred Drake def test_truediv(self): 155bb9c739806b9f0251fa4a564986e2cb5e92e766eWalter Dörwald self.failUnlessRaises(TypeError, operator.truediv, 5) 156bb9c739806b9f0251fa4a564986e2cb5e92e766eWalter Dörwald self.failUnlessRaises(TypeError, operator.truediv, None, None) 157cd112f5546256a752f56b3bf6ce0ff19ff30a981Fred Drake self.failUnless(operator.truediv(5, 2) == 2.5) 158cd112f5546256a752f56b3bf6ce0ff19ff30a981Fred Drake 159cd112f5546256a752f56b3bf6ce0ff19ff30a981Fred Drake def test_getitem(self): 160cd112f5546256a752f56b3bf6ce0ff19ff30a981Fred Drake a = range(10) 161bb9c739806b9f0251fa4a564986e2cb5e92e766eWalter Dörwald self.failUnlessRaises(TypeError, operator.getitem) 162bb9c739806b9f0251fa4a564986e2cb5e92e766eWalter Dörwald self.failUnlessRaises(TypeError, operator.getitem, a, None) 163cd112f5546256a752f56b3bf6ce0ff19ff30a981Fred Drake self.failUnless(operator.getitem(a, 2) == 2) 164cd112f5546256a752f56b3bf6ce0ff19ff30a981Fred Drake 165cd112f5546256a752f56b3bf6ce0ff19ff30a981Fred Drake def test_getslice(self): 166805365ee39298f93e433e19ae0dd87c6f782145bGuido van Rossum a = list(range(10)) 167bb9c739806b9f0251fa4a564986e2cb5e92e766eWalter Dörwald self.failUnlessRaises(TypeError, operator.getslice) 168bb9c739806b9f0251fa4a564986e2cb5e92e766eWalter Dörwald self.failUnlessRaises(TypeError, operator.getslice, a, None, None) 169cd112f5546256a752f56b3bf6ce0ff19ff30a981Fred Drake self.failUnless(operator.getslice(a, 4, 6) == [4, 5]) 170d8faa3654c2887eaa146dcdb553a9f9793bd2e5aGuido van Rossum b = operator.getslice(a, 0, test_support.MAX_Py_ssize_t) 171e61fd5b5ed9d677da2f3349078d7f66f707199deGuido van Rossum self.assertEqual(b, a) 172cd112f5546256a752f56b3bf6ce0ff19ff30a981Fred Drake 173cd112f5546256a752f56b3bf6ce0ff19ff30a981Fred Drake def test_indexOf(self): 174bb9c739806b9f0251fa4a564986e2cb5e92e766eWalter Dörwald self.failUnlessRaises(TypeError, operator.indexOf) 175bb9c739806b9f0251fa4a564986e2cb5e92e766eWalter Dörwald self.failUnlessRaises(TypeError, operator.indexOf, None, None) 176cd112f5546256a752f56b3bf6ce0ff19ff30a981Fred Drake self.failUnless(operator.indexOf([4, 3, 2, 1], 3) == 1) 177cd112f5546256a752f56b3bf6ce0ff19ff30a981Fred Drake self.assertRaises(ValueError, operator.indexOf, [4, 3, 2, 1], 0) 178cd112f5546256a752f56b3bf6ce0ff19ff30a981Fred Drake 179cd112f5546256a752f56b3bf6ce0ff19ff30a981Fred Drake def test_invert(self): 180bb9c739806b9f0251fa4a564986e2cb5e92e766eWalter Dörwald self.failUnlessRaises(TypeError, operator.invert) 181bb9c739806b9f0251fa4a564986e2cb5e92e766eWalter Dörwald self.failUnlessRaises(TypeError, operator.invert, None) 182e61fd5b5ed9d677da2f3349078d7f66f707199deGuido van Rossum self.assertEqual(operator.inv(4), -5) 183cd112f5546256a752f56b3bf6ce0ff19ff30a981Fred Drake 184cd112f5546256a752f56b3bf6ce0ff19ff30a981Fred Drake def test_isMappingType(self): 185bb9c739806b9f0251fa4a564986e2cb5e92e766eWalter Dörwald self.failUnlessRaises(TypeError, operator.isMappingType) 186cd112f5546256a752f56b3bf6ce0ff19ff30a981Fred Drake self.failIf(operator.isMappingType(1)) 187cd112f5546256a752f56b3bf6ce0ff19ff30a981Fred Drake self.failIf(operator.isMappingType(operator.isMappingType)) 188cd112f5546256a752f56b3bf6ce0ff19ff30a981Fred Drake self.failUnless(operator.isMappingType(operator.__dict__)) 189cd112f5546256a752f56b3bf6ce0ff19ff30a981Fred Drake self.failUnless(operator.isMappingType({})) 190cd112f5546256a752f56b3bf6ce0ff19ff30a981Fred Drake 191cd112f5546256a752f56b3bf6ce0ff19ff30a981Fred Drake def test_isNumberType(self): 192bb9c739806b9f0251fa4a564986e2cb5e92e766eWalter Dörwald self.failUnlessRaises(TypeError, operator.isNumberType) 193cd112f5546256a752f56b3bf6ce0ff19ff30a981Fred Drake self.failUnless(operator.isNumberType(8)) 194cd112f5546256a752f56b3bf6ce0ff19ff30a981Fred Drake self.failUnless(operator.isNumberType(8j)) 195e2a383d062434c05b73031f0da57fe82b9da8942Guido van Rossum self.failUnless(operator.isNumberType(8)) 196cd112f5546256a752f56b3bf6ce0ff19ff30a981Fred Drake self.failUnless(operator.isNumberType(8.3)) 197cd112f5546256a752f56b3bf6ce0ff19ff30a981Fred Drake self.failIf(operator.isNumberType(dir())) 198cd112f5546256a752f56b3bf6ce0ff19ff30a981Fred Drake 199cd112f5546256a752f56b3bf6ce0ff19ff30a981Fred Drake def test_isSequenceType(self): 200bb9c739806b9f0251fa4a564986e2cb5e92e766eWalter Dörwald self.failUnlessRaises(TypeError, operator.isSequenceType) 201cd112f5546256a752f56b3bf6ce0ff19ff30a981Fred Drake self.failUnless(operator.isSequenceType(dir())) 202cd112f5546256a752f56b3bf6ce0ff19ff30a981Fred Drake self.failUnless(operator.isSequenceType(())) 203805365ee39298f93e433e19ae0dd87c6f782145bGuido van Rossum self.failUnless(operator.isSequenceType(range(10))) 204cd112f5546256a752f56b3bf6ce0ff19ff30a981Fred Drake self.failUnless(operator.isSequenceType('yeahbuddy')) 205cd112f5546256a752f56b3bf6ce0ff19ff30a981Fred Drake self.failIf(operator.isSequenceType(3)) 206cf297e46b85257396560774e5492e9d71a40f32eThomas Wouters class Dict(dict): pass 207cf297e46b85257396560774e5492e9d71a40f32eThomas Wouters self.failIf(operator.isSequenceType(Dict())) 208cd112f5546256a752f56b3bf6ce0ff19ff30a981Fred Drake 209cd112f5546256a752f56b3bf6ce0ff19ff30a981Fred Drake def test_lshift(self): 210bb9c739806b9f0251fa4a564986e2cb5e92e766eWalter Dörwald self.failUnlessRaises(TypeError, operator.lshift) 211bb9c739806b9f0251fa4a564986e2cb5e92e766eWalter Dörwald self.failUnlessRaises(TypeError, operator.lshift, None, 42) 212cd112f5546256a752f56b3bf6ce0ff19ff30a981Fred Drake self.failUnless(operator.lshift(5, 1) == 10) 213cd112f5546256a752f56b3bf6ce0ff19ff30a981Fred Drake self.failUnless(operator.lshift(5, 0) == 5) 214cd112f5546256a752f56b3bf6ce0ff19ff30a981Fred Drake self.assertRaises(ValueError, operator.lshift, 2, -1) 215cd112f5546256a752f56b3bf6ce0ff19ff30a981Fred Drake 216cd112f5546256a752f56b3bf6ce0ff19ff30a981Fred Drake def test_mod(self): 217bb9c739806b9f0251fa4a564986e2cb5e92e766eWalter Dörwald self.failUnlessRaises(TypeError, operator.mod) 218bb9c739806b9f0251fa4a564986e2cb5e92e766eWalter Dörwald self.failUnlessRaises(TypeError, operator.mod, None, 42) 219cd112f5546256a752f56b3bf6ce0ff19ff30a981Fred Drake self.failUnless(operator.mod(5, 2) == 1) 220cd112f5546256a752f56b3bf6ce0ff19ff30a981Fred Drake 221cd112f5546256a752f56b3bf6ce0ff19ff30a981Fred Drake def test_mul(self): 222bb9c739806b9f0251fa4a564986e2cb5e92e766eWalter Dörwald self.failUnlessRaises(TypeError, operator.mul) 223bb9c739806b9f0251fa4a564986e2cb5e92e766eWalter Dörwald self.failUnlessRaises(TypeError, operator.mul, None, None) 224cd112f5546256a752f56b3bf6ce0ff19ff30a981Fred Drake self.failUnless(operator.mul(5, 2) == 10) 225cd112f5546256a752f56b3bf6ce0ff19ff30a981Fred Drake 226cd112f5546256a752f56b3bf6ce0ff19ff30a981Fred Drake def test_neg(self): 227bb9c739806b9f0251fa4a564986e2cb5e92e766eWalter Dörwald self.failUnlessRaises(TypeError, operator.neg) 228bb9c739806b9f0251fa4a564986e2cb5e92e766eWalter Dörwald self.failUnlessRaises(TypeError, operator.neg, None) 229e61fd5b5ed9d677da2f3349078d7f66f707199deGuido van Rossum self.assertEqual(operator.neg(5), -5) 230e61fd5b5ed9d677da2f3349078d7f66f707199deGuido van Rossum self.assertEqual(operator.neg(-5), 5) 231e61fd5b5ed9d677da2f3349078d7f66f707199deGuido van Rossum self.assertEqual(operator.neg(0), 0) 232e61fd5b5ed9d677da2f3349078d7f66f707199deGuido van Rossum self.assertEqual(operator.neg(-0), 0) 233cd112f5546256a752f56b3bf6ce0ff19ff30a981Fred Drake 234cd112f5546256a752f56b3bf6ce0ff19ff30a981Fred Drake def test_bitwise_or(self): 235bb9c739806b9f0251fa4a564986e2cb5e92e766eWalter Dörwald self.failUnlessRaises(TypeError, operator.or_) 236bb9c739806b9f0251fa4a564986e2cb5e92e766eWalter Dörwald self.failUnlessRaises(TypeError, operator.or_, None, None) 237cd112f5546256a752f56b3bf6ce0ff19ff30a981Fred Drake self.failUnless(operator.or_(0xa, 0x5) == 0xf) 238cd112f5546256a752f56b3bf6ce0ff19ff30a981Fred Drake 239cd112f5546256a752f56b3bf6ce0ff19ff30a981Fred Drake def test_pos(self): 240bb9c739806b9f0251fa4a564986e2cb5e92e766eWalter Dörwald self.failUnlessRaises(TypeError, operator.pos) 241bb9c739806b9f0251fa4a564986e2cb5e92e766eWalter Dörwald self.failUnlessRaises(TypeError, operator.pos, None) 242e61fd5b5ed9d677da2f3349078d7f66f707199deGuido van Rossum self.assertEqual(operator.pos(5), 5) 243e61fd5b5ed9d677da2f3349078d7f66f707199deGuido van Rossum self.assertEqual(operator.pos(-5), -5) 244e61fd5b5ed9d677da2f3349078d7f66f707199deGuido van Rossum self.assertEqual(operator.pos(0), 0) 245e61fd5b5ed9d677da2f3349078d7f66f707199deGuido van Rossum self.assertEqual(operator.pos(-0), 0) 246cd112f5546256a752f56b3bf6ce0ff19ff30a981Fred Drake 2475959c559df777eb61b10d986e45ed4bbf269b36dRaymond Hettinger def test_pow(self): 248bb9c739806b9f0251fa4a564986e2cb5e92e766eWalter Dörwald self.failUnlessRaises(TypeError, operator.pow) 249bb9c739806b9f0251fa4a564986e2cb5e92e766eWalter Dörwald self.failUnlessRaises(TypeError, operator.pow, None, None) 250e61fd5b5ed9d677da2f3349078d7f66f707199deGuido van Rossum self.assertEqual(operator.pow(3,5), 3**5) 251e61fd5b5ed9d677da2f3349078d7f66f707199deGuido van Rossum self.assertEqual(operator.__pow__(3,5), 3**5) 2525959c559df777eb61b10d986e45ed4bbf269b36dRaymond Hettinger self.assertRaises(TypeError, operator.pow, 1) 2535959c559df777eb61b10d986e45ed4bbf269b36dRaymond Hettinger self.assertRaises(TypeError, operator.pow, 1, 2, 3) 2545959c559df777eb61b10d986e45ed4bbf269b36dRaymond Hettinger 255cd112f5546256a752f56b3bf6ce0ff19ff30a981Fred Drake def test_repeat(self): 256805365ee39298f93e433e19ae0dd87c6f782145bGuido van Rossum a = list(range(3)) 257bb9c739806b9f0251fa4a564986e2cb5e92e766eWalter Dörwald self.failUnlessRaises(TypeError, operator.repeat) 258bb9c739806b9f0251fa4a564986e2cb5e92e766eWalter Dörwald self.failUnlessRaises(TypeError, operator.repeat, a, None) 259cd112f5546256a752f56b3bf6ce0ff19ff30a981Fred Drake self.failUnless(operator.repeat(a, 2) == a+a) 260cd112f5546256a752f56b3bf6ce0ff19ff30a981Fred Drake self.failUnless(operator.repeat(a, 1) == a) 261cd112f5546256a752f56b3bf6ce0ff19ff30a981Fred Drake self.failUnless(operator.repeat(a, 0) == []) 262cd112f5546256a752f56b3bf6ce0ff19ff30a981Fred Drake a = (1, 2, 3) 263cd112f5546256a752f56b3bf6ce0ff19ff30a981Fred Drake self.failUnless(operator.repeat(a, 2) == a+a) 264cd112f5546256a752f56b3bf6ce0ff19ff30a981Fred Drake self.failUnless(operator.repeat(a, 1) == a) 265cd112f5546256a752f56b3bf6ce0ff19ff30a981Fred Drake self.failUnless(operator.repeat(a, 0) == ()) 266cd112f5546256a752f56b3bf6ce0ff19ff30a981Fred Drake a = '123' 267cd112f5546256a752f56b3bf6ce0ff19ff30a981Fred Drake self.failUnless(operator.repeat(a, 2) == a+a) 268cd112f5546256a752f56b3bf6ce0ff19ff30a981Fred Drake self.failUnless(operator.repeat(a, 1) == a) 269cd112f5546256a752f56b3bf6ce0ff19ff30a981Fred Drake self.failUnless(operator.repeat(a, 0) == '') 270fd163f92cee2aa8189879bd43670782f4cfd2cf8Armin Rigo a = Seq1([4, 5, 6]) 271fd163f92cee2aa8189879bd43670782f4cfd2cf8Armin Rigo self.failUnless(operator.repeat(a, 2) == [4, 5, 6, 4, 5, 6]) 272fd163f92cee2aa8189879bd43670782f4cfd2cf8Armin Rigo self.failUnless(operator.repeat(a, 1) == [4, 5, 6]) 273fd163f92cee2aa8189879bd43670782f4cfd2cf8Armin Rigo self.failUnless(operator.repeat(a, 0) == []) 274fd163f92cee2aa8189879bd43670782f4cfd2cf8Armin Rigo a = Seq2([4, 5, 6]) 275fd163f92cee2aa8189879bd43670782f4cfd2cf8Armin Rigo self.failUnless(operator.repeat(a, 2) == [4, 5, 6, 4, 5, 6]) 276fd163f92cee2aa8189879bd43670782f4cfd2cf8Armin Rigo self.failUnless(operator.repeat(a, 1) == [4, 5, 6]) 277fd163f92cee2aa8189879bd43670782f4cfd2cf8Armin Rigo self.failUnless(operator.repeat(a, 0) == []) 278fd163f92cee2aa8189879bd43670782f4cfd2cf8Armin Rigo self.failUnlessRaises(TypeError, operator.repeat, 6, 7) 279cd112f5546256a752f56b3bf6ce0ff19ff30a981Fred Drake 280cd112f5546256a752f56b3bf6ce0ff19ff30a981Fred Drake def test_rshift(self): 281bb9c739806b9f0251fa4a564986e2cb5e92e766eWalter Dörwald self.failUnlessRaises(TypeError, operator.rshift) 282bb9c739806b9f0251fa4a564986e2cb5e92e766eWalter Dörwald self.failUnlessRaises(TypeError, operator.rshift, None, 42) 283cd112f5546256a752f56b3bf6ce0ff19ff30a981Fred Drake self.failUnless(operator.rshift(5, 1) == 2) 284cd112f5546256a752f56b3bf6ce0ff19ff30a981Fred Drake self.failUnless(operator.rshift(5, 0) == 5) 285cd112f5546256a752f56b3bf6ce0ff19ff30a981Fred Drake self.assertRaises(ValueError, operator.rshift, 2, -1) 286cd112f5546256a752f56b3bf6ce0ff19ff30a981Fred Drake 287cd112f5546256a752f56b3bf6ce0ff19ff30a981Fred Drake def test_contains(self): 288bb9c739806b9f0251fa4a564986e2cb5e92e766eWalter Dörwald self.failUnlessRaises(TypeError, operator.contains) 289bb9c739806b9f0251fa4a564986e2cb5e92e766eWalter Dörwald self.failUnlessRaises(TypeError, operator.contains, None, None) 290cd112f5546256a752f56b3bf6ce0ff19ff30a981Fred Drake self.failUnless(operator.contains(range(4), 2)) 291cd112f5546256a752f56b3bf6ce0ff19ff30a981Fred Drake self.failIf(operator.contains(range(4), 5)) 292cd112f5546256a752f56b3bf6ce0ff19ff30a981Fred Drake 293cd112f5546256a752f56b3bf6ce0ff19ff30a981Fred Drake def test_setitem(self): 294805365ee39298f93e433e19ae0dd87c6f782145bGuido van Rossum a = list(range(3)) 295bb9c739806b9f0251fa4a564986e2cb5e92e766eWalter Dörwald self.failUnlessRaises(TypeError, operator.setitem, a) 296bb9c739806b9f0251fa4a564986e2cb5e92e766eWalter Dörwald self.failUnlessRaises(TypeError, operator.setitem, a, None, None) 297cd112f5546256a752f56b3bf6ce0ff19ff30a981Fred Drake self.failUnless(operator.setitem(a, 0, 2) is None) 298cd112f5546256a752f56b3bf6ce0ff19ff30a981Fred Drake self.assert_(a == [2, 1, 2]) 299cd112f5546256a752f56b3bf6ce0ff19ff30a981Fred Drake self.assertRaises(IndexError, operator.setitem, a, 4, 2) 300cd112f5546256a752f56b3bf6ce0ff19ff30a981Fred Drake 301cd112f5546256a752f56b3bf6ce0ff19ff30a981Fred Drake def test_setslice(self): 302805365ee39298f93e433e19ae0dd87c6f782145bGuido van Rossum a = list(range(4)) 303bb9c739806b9f0251fa4a564986e2cb5e92e766eWalter Dörwald self.failUnlessRaises(TypeError, operator.setslice, a) 304bb9c739806b9f0251fa4a564986e2cb5e92e766eWalter Dörwald self.failUnlessRaises(TypeError, operator.setslice, a, None, None, None) 305cd112f5546256a752f56b3bf6ce0ff19ff30a981Fred Drake self.failUnless(operator.setslice(a, 1, 3, [2, 1]) is None) 306cd112f5546256a752f56b3bf6ce0ff19ff30a981Fred Drake self.assert_(a == [0, 2, 1, 3]) 307d8faa3654c2887eaa146dcdb553a9f9793bd2e5aGuido van Rossum operator.setslice(a, 0, test_support.MAX_Py_ssize_t, []) 308e61fd5b5ed9d677da2f3349078d7f66f707199deGuido van Rossum self.assertEqual(a, []) 309cd112f5546256a752f56b3bf6ce0ff19ff30a981Fred Drake 310cd112f5546256a752f56b3bf6ce0ff19ff30a981Fred Drake def test_sub(self): 311bb9c739806b9f0251fa4a564986e2cb5e92e766eWalter Dörwald self.failUnlessRaises(TypeError, operator.sub) 312bb9c739806b9f0251fa4a564986e2cb5e92e766eWalter Dörwald self.failUnlessRaises(TypeError, operator.sub, None, None) 313cd112f5546256a752f56b3bf6ce0ff19ff30a981Fred Drake self.failUnless(operator.sub(5, 2) == 3) 314cd112f5546256a752f56b3bf6ce0ff19ff30a981Fred Drake 315cd112f5546256a752f56b3bf6ce0ff19ff30a981Fred Drake def test_truth(self): 316bb9c739806b9f0251fa4a564986e2cb5e92e766eWalter Dörwald class C(object): 3174dafcc4ece09c2a60473bb109513de4e7d2c2b11Jack Diederich def __bool__(self): 318bb9c739806b9f0251fa4a564986e2cb5e92e766eWalter Dörwald raise SyntaxError 319bb9c739806b9f0251fa4a564986e2cb5e92e766eWalter Dörwald self.failUnlessRaises(TypeError, operator.truth) 320bb9c739806b9f0251fa4a564986e2cb5e92e766eWalter Dörwald self.failUnlessRaises(SyntaxError, operator.truth, C()) 321cd112f5546256a752f56b3bf6ce0ff19ff30a981Fred Drake self.failUnless(operator.truth(5)) 322cd112f5546256a752f56b3bf6ce0ff19ff30a981Fred Drake self.failUnless(operator.truth([0])) 323cd112f5546256a752f56b3bf6ce0ff19ff30a981Fred Drake self.failIf(operator.truth(0)) 324cd112f5546256a752f56b3bf6ce0ff19ff30a981Fred Drake self.failIf(operator.truth([])) 325cd112f5546256a752f56b3bf6ce0ff19ff30a981Fred Drake 326cd112f5546256a752f56b3bf6ce0ff19ff30a981Fred Drake def test_bitwise_xor(self): 327bb9c739806b9f0251fa4a564986e2cb5e92e766eWalter Dörwald self.failUnlessRaises(TypeError, operator.xor) 328bb9c739806b9f0251fa4a564986e2cb5e92e766eWalter Dörwald self.failUnlessRaises(TypeError, operator.xor, None, None) 329cd112f5546256a752f56b3bf6ce0ff19ff30a981Fred Drake self.failUnless(operator.xor(0xb, 0xc) == 0x7) 330cd112f5546256a752f56b3bf6ce0ff19ff30a981Fred Drake 3319543b340066e85bb920a0655edf33e11050d7b08Raymond Hettinger def test_is(self): 3329543b340066e85bb920a0655edf33e11050d7b08Raymond Hettinger a = b = 'xyzpdq' 3339543b340066e85bb920a0655edf33e11050d7b08Raymond Hettinger c = a[:3] + b[3:] 334bb9c739806b9f0251fa4a564986e2cb5e92e766eWalter Dörwald self.failUnlessRaises(TypeError, operator.is_) 3359543b340066e85bb920a0655edf33e11050d7b08Raymond Hettinger self.failUnless(operator.is_(a, b)) 3369543b340066e85bb920a0655edf33e11050d7b08Raymond Hettinger self.failIf(operator.is_(a,c)) 3379543b340066e85bb920a0655edf33e11050d7b08Raymond Hettinger 3389543b340066e85bb920a0655edf33e11050d7b08Raymond Hettinger def test_is_not(self): 3399543b340066e85bb920a0655edf33e11050d7b08Raymond Hettinger a = b = 'xyzpdq' 3409543b340066e85bb920a0655edf33e11050d7b08Raymond Hettinger c = a[:3] + b[3:] 341bb9c739806b9f0251fa4a564986e2cb5e92e766eWalter Dörwald self.failUnlessRaises(TypeError, operator.is_not) 3429543b340066e85bb920a0655edf33e11050d7b08Raymond Hettinger self.failIf(operator.is_not(a, b)) 3439543b340066e85bb920a0655edf33e11050d7b08Raymond Hettinger self.failUnless(operator.is_not(a,c)) 344cd112f5546256a752f56b3bf6ce0ff19ff30a981Fred Drake 345166958b5df50fca05cb24be0152737edf575dbb9Raymond Hettinger def test_attrgetter(self): 346166958b5df50fca05cb24be0152737edf575dbb9Raymond Hettinger class A: 347166958b5df50fca05cb24be0152737edf575dbb9Raymond Hettinger pass 348166958b5df50fca05cb24be0152737edf575dbb9Raymond Hettinger a = A() 349166958b5df50fca05cb24be0152737edf575dbb9Raymond Hettinger a.name = 'arthur' 350166958b5df50fca05cb24be0152737edf575dbb9Raymond Hettinger f = operator.attrgetter('name') 351166958b5df50fca05cb24be0152737edf575dbb9Raymond Hettinger self.assertEqual(f(a), 'arthur') 352166958b5df50fca05cb24be0152737edf575dbb9Raymond Hettinger f = operator.attrgetter('rank') 353166958b5df50fca05cb24be0152737edf575dbb9Raymond Hettinger self.assertRaises(AttributeError, f, a) 354166958b5df50fca05cb24be0152737edf575dbb9Raymond Hettinger f = operator.attrgetter(2) 355166958b5df50fca05cb24be0152737edf575dbb9Raymond Hettinger self.assertRaises(TypeError, f, a) 356166958b5df50fca05cb24be0152737edf575dbb9Raymond Hettinger self.assertRaises(TypeError, operator.attrgetter) 357984f9bb7140683fa9b950b42a035477108aba88fRaymond Hettinger 358984f9bb7140683fa9b950b42a035477108aba88fRaymond Hettinger # multiple gets 359984f9bb7140683fa9b950b42a035477108aba88fRaymond Hettinger record = A() 360984f9bb7140683fa9b950b42a035477108aba88fRaymond Hettinger record.x = 'X' 361984f9bb7140683fa9b950b42a035477108aba88fRaymond Hettinger record.y = 'Y' 362984f9bb7140683fa9b950b42a035477108aba88fRaymond Hettinger record.z = 'Z' 363984f9bb7140683fa9b950b42a035477108aba88fRaymond Hettinger self.assertEqual(operator.attrgetter('x','z','y')(record), ('X', 'Z', 'Y')) 364984f9bb7140683fa9b950b42a035477108aba88fRaymond Hettinger self.assertRaises(TypeError, operator.attrgetter('x', (), 'y'), record) 365166958b5df50fca05cb24be0152737edf575dbb9Raymond Hettinger 366bb9c739806b9f0251fa4a564986e2cb5e92e766eWalter Dörwald class C(object): 3679bd667ad030913ead3a789f45e73c26f9f28fb46Christian Heimes def __getattr__(self, name): 368bb9c739806b9f0251fa4a564986e2cb5e92e766eWalter Dörwald raise SyntaxError 3699bd667ad030913ead3a789f45e73c26f9f28fb46Christian Heimes self.failUnlessRaises(SyntaxError, operator.attrgetter('foo'), C()) 370bb9c739806b9f0251fa4a564986e2cb5e92e766eWalter Dörwald 371166958b5df50fca05cb24be0152737edf575dbb9Raymond Hettinger def test_itemgetter(self): 372166958b5df50fca05cb24be0152737edf575dbb9Raymond Hettinger a = 'ABCDE' 373166958b5df50fca05cb24be0152737edf575dbb9Raymond Hettinger f = operator.itemgetter(2) 374166958b5df50fca05cb24be0152737edf575dbb9Raymond Hettinger self.assertEqual(f(a), 'C') 375166958b5df50fca05cb24be0152737edf575dbb9Raymond Hettinger f = operator.itemgetter(10) 376166958b5df50fca05cb24be0152737edf575dbb9Raymond Hettinger self.assertRaises(IndexError, f, a) 377166958b5df50fca05cb24be0152737edf575dbb9Raymond Hettinger 378bb9c739806b9f0251fa4a564986e2cb5e92e766eWalter Dörwald class C(object): 3799bd667ad030913ead3a789f45e73c26f9f28fb46Christian Heimes def __getitem__(self, name): 380bb9c739806b9f0251fa4a564986e2cb5e92e766eWalter Dörwald raise SyntaxError 3819bd667ad030913ead3a789f45e73c26f9f28fb46Christian Heimes self.failUnlessRaises(SyntaxError, operator.itemgetter(42), C()) 382bb9c739806b9f0251fa4a564986e2cb5e92e766eWalter Dörwald 383166958b5df50fca05cb24be0152737edf575dbb9Raymond Hettinger f = operator.itemgetter('name') 384166958b5df50fca05cb24be0152737edf575dbb9Raymond Hettinger self.assertRaises(TypeError, f, a) 385166958b5df50fca05cb24be0152737edf575dbb9Raymond Hettinger self.assertRaises(TypeError, operator.itemgetter) 386166958b5df50fca05cb24be0152737edf575dbb9Raymond Hettinger 387166958b5df50fca05cb24be0152737edf575dbb9Raymond Hettinger d = dict(key='val') 388166958b5df50fca05cb24be0152737edf575dbb9Raymond Hettinger f = operator.itemgetter('key') 389166958b5df50fca05cb24be0152737edf575dbb9Raymond Hettinger self.assertEqual(f(d), 'val') 390166958b5df50fca05cb24be0152737edf575dbb9Raymond Hettinger f = operator.itemgetter('nonkey') 391166958b5df50fca05cb24be0152737edf575dbb9Raymond Hettinger self.assertRaises(KeyError, f, d) 392166958b5df50fca05cb24be0152737edf575dbb9Raymond Hettinger 393166958b5df50fca05cb24be0152737edf575dbb9Raymond Hettinger # example used in the docs 394166958b5df50fca05cb24be0152737edf575dbb9Raymond Hettinger inventory = [('apple', 3), ('banana', 2), ('pear', 5), ('orange', 1)] 395166958b5df50fca05cb24be0152737edf575dbb9Raymond Hettinger getcount = operator.itemgetter(1) 396c1f779cb015272412e4da2e5cb61b4e8cdcbf191Guido van Rossum self.assertEqual(list(map(getcount, inventory)), [3, 2, 5, 1]) 39764958a15d7c03efdc3d2eddf247666e18d1fd910Raymond Hettinger self.assertEqual(sorted(inventory, key=getcount), 398166958b5df50fca05cb24be0152737edf575dbb9Raymond Hettinger [('orange', 1), ('banana', 2), ('apple', 3), ('pear', 5)]) 399166958b5df50fca05cb24be0152737edf575dbb9Raymond Hettinger 400984f9bb7140683fa9b950b42a035477108aba88fRaymond Hettinger # multiple gets 401c1f779cb015272412e4da2e5cb61b4e8cdcbf191Guido van Rossum data = list(map(str, range(20))) 402984f9bb7140683fa9b950b42a035477108aba88fRaymond Hettinger self.assertEqual(operator.itemgetter(2,10,5)(data), ('2', '10', '5')) 403984f9bb7140683fa9b950b42a035477108aba88fRaymond Hettinger self.assertRaises(TypeError, operator.itemgetter(2, 'x', 5), data) 404984f9bb7140683fa9b950b42a035477108aba88fRaymond Hettinger 405f5bd3b442dd378563036f51595a7d6b2a239f4d5Armin Rigo def test_inplace(self): 406f5bd3b442dd378563036f51595a7d6b2a239f4d5Armin Rigo class C(object): 407f5bd3b442dd378563036f51595a7d6b2a239f4d5Armin Rigo def __iadd__ (self, other): return "iadd" 408f5bd3b442dd378563036f51595a7d6b2a239f4d5Armin Rigo def __iand__ (self, other): return "iand" 409f5bd3b442dd378563036f51595a7d6b2a239f4d5Armin Rigo def __ifloordiv__(self, other): return "ifloordiv" 410f5bd3b442dd378563036f51595a7d6b2a239f4d5Armin Rigo def __ilshift__ (self, other): return "ilshift" 411f5bd3b442dd378563036f51595a7d6b2a239f4d5Armin Rigo def __imod__ (self, other): return "imod" 412f5bd3b442dd378563036f51595a7d6b2a239f4d5Armin Rigo def __imul__ (self, other): return "imul" 413f5bd3b442dd378563036f51595a7d6b2a239f4d5Armin Rigo def __ior__ (self, other): return "ior" 414f5bd3b442dd378563036f51595a7d6b2a239f4d5Armin Rigo def __ipow__ (self, other): return "ipow" 415f5bd3b442dd378563036f51595a7d6b2a239f4d5Armin Rigo def __irshift__ (self, other): return "irshift" 416f5bd3b442dd378563036f51595a7d6b2a239f4d5Armin Rigo def __isub__ (self, other): return "isub" 417f5bd3b442dd378563036f51595a7d6b2a239f4d5Armin Rigo def __itruediv__ (self, other): return "itruediv" 418f5bd3b442dd378563036f51595a7d6b2a239f4d5Armin Rigo def __ixor__ (self, other): return "ixor" 419f5bd3b442dd378563036f51595a7d6b2a239f4d5Armin Rigo def __getitem__(self, other): return 5 # so that C is a sequence 420f5bd3b442dd378563036f51595a7d6b2a239f4d5Armin Rigo c = C() 421f5bd3b442dd378563036f51595a7d6b2a239f4d5Armin Rigo self.assertEqual(operator.iadd (c, 5), "iadd") 422f5bd3b442dd378563036f51595a7d6b2a239f4d5Armin Rigo self.assertEqual(operator.iand (c, 5), "iand") 423f5bd3b442dd378563036f51595a7d6b2a239f4d5Armin Rigo self.assertEqual(operator.ifloordiv(c, 5), "ifloordiv") 424f5bd3b442dd378563036f51595a7d6b2a239f4d5Armin Rigo self.assertEqual(operator.ilshift (c, 5), "ilshift") 425f5bd3b442dd378563036f51595a7d6b2a239f4d5Armin Rigo self.assertEqual(operator.imod (c, 5), "imod") 426f5bd3b442dd378563036f51595a7d6b2a239f4d5Armin Rigo self.assertEqual(operator.imul (c, 5), "imul") 427f5bd3b442dd378563036f51595a7d6b2a239f4d5Armin Rigo self.assertEqual(operator.ior (c, 5), "ior") 428f5bd3b442dd378563036f51595a7d6b2a239f4d5Armin Rigo self.assertEqual(operator.ipow (c, 5), "ipow") 429f5bd3b442dd378563036f51595a7d6b2a239f4d5Armin Rigo self.assertEqual(operator.irshift (c, 5), "irshift") 430f5bd3b442dd378563036f51595a7d6b2a239f4d5Armin Rigo self.assertEqual(operator.isub (c, 5), "isub") 431f5bd3b442dd378563036f51595a7d6b2a239f4d5Armin Rigo self.assertEqual(operator.itruediv (c, 5), "itruediv") 432f5bd3b442dd378563036f51595a7d6b2a239f4d5Armin Rigo self.assertEqual(operator.ixor (c, 5), "ixor") 433f5bd3b442dd378563036f51595a7d6b2a239f4d5Armin Rigo self.assertEqual(operator.iconcat (c, c), "iadd") 434f5bd3b442dd378563036f51595a7d6b2a239f4d5Armin Rigo self.assertEqual(operator.irepeat (c, 5), "imul") 435f5bd3b442dd378563036f51595a7d6b2a239f4d5Armin Rigo self.assertEqual(operator.__iadd__ (c, 5), "iadd") 436f5bd3b442dd378563036f51595a7d6b2a239f4d5Armin Rigo self.assertEqual(operator.__iand__ (c, 5), "iand") 437f5bd3b442dd378563036f51595a7d6b2a239f4d5Armin Rigo self.assertEqual(operator.__ifloordiv__(c, 5), "ifloordiv") 438f5bd3b442dd378563036f51595a7d6b2a239f4d5Armin Rigo self.assertEqual(operator.__ilshift__ (c, 5), "ilshift") 439f5bd3b442dd378563036f51595a7d6b2a239f4d5Armin Rigo self.assertEqual(operator.__imod__ (c, 5), "imod") 440f5bd3b442dd378563036f51595a7d6b2a239f4d5Armin Rigo self.assertEqual(operator.__imul__ (c, 5), "imul") 441f5bd3b442dd378563036f51595a7d6b2a239f4d5Armin Rigo self.assertEqual(operator.__ior__ (c, 5), "ior") 442f5bd3b442dd378563036f51595a7d6b2a239f4d5Armin Rigo self.assertEqual(operator.__ipow__ (c, 5), "ipow") 443f5bd3b442dd378563036f51595a7d6b2a239f4d5Armin Rigo self.assertEqual(operator.__irshift__ (c, 5), "irshift") 444f5bd3b442dd378563036f51595a7d6b2a239f4d5Armin Rigo self.assertEqual(operator.__isub__ (c, 5), "isub") 445f5bd3b442dd378563036f51595a7d6b2a239f4d5Armin Rigo self.assertEqual(operator.__itruediv__ (c, 5), "itruediv") 446f5bd3b442dd378563036f51595a7d6b2a239f4d5Armin Rigo self.assertEqual(operator.__ixor__ (c, 5), "ixor") 447f5bd3b442dd378563036f51595a7d6b2a239f4d5Armin Rigo self.assertEqual(operator.__iconcat__ (c, c), "iadd") 448f5bd3b442dd378563036f51595a7d6b2a239f4d5Armin Rigo self.assertEqual(operator.__irepeat__ (c, 5), "imul") 449984f9bb7140683fa9b950b42a035477108aba88fRaymond Hettinger 450984f9bb7140683fa9b950b42a035477108aba88fRaymond Hettingerdef test_main(verbose=None): 451984f9bb7140683fa9b950b42a035477108aba88fRaymond Hettinger import sys 452984f9bb7140683fa9b950b42a035477108aba88fRaymond Hettinger test_classes = ( 453984f9bb7140683fa9b950b42a035477108aba88fRaymond Hettinger OperatorTestCase, 454984f9bb7140683fa9b950b42a035477108aba88fRaymond Hettinger ) 455984f9bb7140683fa9b950b42a035477108aba88fRaymond Hettinger 456984f9bb7140683fa9b950b42a035477108aba88fRaymond Hettinger test_support.run_unittest(*test_classes) 4572e2be3760ccdfd4bdde4afdd66f4078022ba3b61Fred Drake 458984f9bb7140683fa9b950b42a035477108aba88fRaymond Hettinger # verify reference counting 459984f9bb7140683fa9b950b42a035477108aba88fRaymond Hettinger if verbose and hasattr(sys, "gettotalrefcount"): 460984f9bb7140683fa9b950b42a035477108aba88fRaymond Hettinger import gc 461984f9bb7140683fa9b950b42a035477108aba88fRaymond Hettinger counts = [None] * 5 462805365ee39298f93e433e19ae0dd87c6f782145bGuido van Rossum for i in range(len(counts)): 463984f9bb7140683fa9b950b42a035477108aba88fRaymond Hettinger test_support.run_unittest(*test_classes) 464984f9bb7140683fa9b950b42a035477108aba88fRaymond Hettinger gc.collect() 465984f9bb7140683fa9b950b42a035477108aba88fRaymond Hettinger counts[i] = sys.gettotalrefcount() 466be19ed77ddb047e02fe94d142181062af6d99dccGuido van Rossum print(counts) 4672e2be3760ccdfd4bdde4afdd66f4078022ba3b61Fred Drake 4682e2be3760ccdfd4bdde4afdd66f4078022ba3b61Fred Drakeif __name__ == "__main__": 469984f9bb7140683fa9b950b42a035477108aba88fRaymond Hettinger test_main(verbose=True) 470