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