10c5958b1636c47ed7c284f859c8e805fd06a0e6Bill Yiimport operator 20c5958b1636c47ed7c284f859c8e805fd06a0e6Bill Yiimport unittest 30c5958b1636c47ed7c284f859c8e805fd06a0e6Bill Yi 40c5958b1636c47ed7c284f859c8e805fd06a0e6Bill Yifrom test import test_support 50c5958b1636c47ed7c284f859c8e805fd06a0e6Bill Yi 60c5958b1636c47ed7c284f859c8e805fd06a0e6Bill Yiclass Seq1: 70c5958b1636c47ed7c284f859c8e805fd06a0e6Bill Yi def __init__(self, lst): 80c5958b1636c47ed7c284f859c8e805fd06a0e6Bill Yi self.lst = lst 90c5958b1636c47ed7c284f859c8e805fd06a0e6Bill Yi def __len__(self): 100c5958b1636c47ed7c284f859c8e805fd06a0e6Bill Yi return len(self.lst) 110c5958b1636c47ed7c284f859c8e805fd06a0e6Bill Yi def __getitem__(self, i): 120c5958b1636c47ed7c284f859c8e805fd06a0e6Bill Yi return self.lst[i] 130c5958b1636c47ed7c284f859c8e805fd06a0e6Bill Yi def __add__(self, other): 140c5958b1636c47ed7c284f859c8e805fd06a0e6Bill Yi return self.lst + other.lst 150c5958b1636c47ed7c284f859c8e805fd06a0e6Bill Yi def __mul__(self, other): 160c5958b1636c47ed7c284f859c8e805fd06a0e6Bill Yi return self.lst * other 170c5958b1636c47ed7c284f859c8e805fd06a0e6Bill Yi def __rmul__(self, other): 180c5958b1636c47ed7c284f859c8e805fd06a0e6Bill Yi return other * self.lst 190c5958b1636c47ed7c284f859c8e805fd06a0e6Bill Yi 200c5958b1636c47ed7c284f859c8e805fd06a0e6Bill Yiclass Seq2(object): 210c5958b1636c47ed7c284f859c8e805fd06a0e6Bill Yi def __init__(self, lst): 220c5958b1636c47ed7c284f859c8e805fd06a0e6Bill Yi self.lst = lst 230c5958b1636c47ed7c284f859c8e805fd06a0e6Bill Yi def __len__(self): 240c5958b1636c47ed7c284f859c8e805fd06a0e6Bill Yi return len(self.lst) 250c5958b1636c47ed7c284f859c8e805fd06a0e6Bill Yi def __getitem__(self, i): 260c5958b1636c47ed7c284f859c8e805fd06a0e6Bill Yi return self.lst[i] 270c5958b1636c47ed7c284f859c8e805fd06a0e6Bill Yi def __add__(self, other): 280c5958b1636c47ed7c284f859c8e805fd06a0e6Bill Yi return self.lst + other.lst 290c5958b1636c47ed7c284f859c8e805fd06a0e6Bill Yi def __mul__(self, other): 300c5958b1636c47ed7c284f859c8e805fd06a0e6Bill Yi return self.lst * other 310c5958b1636c47ed7c284f859c8e805fd06a0e6Bill Yi def __rmul__(self, other): 320c5958b1636c47ed7c284f859c8e805fd06a0e6Bill Yi return other * self.lst 330c5958b1636c47ed7c284f859c8e805fd06a0e6Bill Yi 340c5958b1636c47ed7c284f859c8e805fd06a0e6Bill Yi 350c5958b1636c47ed7c284f859c8e805fd06a0e6Bill Yiclass OperatorTestCase(unittest.TestCase): 360c5958b1636c47ed7c284f859c8e805fd06a0e6Bill Yi def test_lt(self): 370c5958b1636c47ed7c284f859c8e805fd06a0e6Bill Yi self.assertRaises(TypeError, operator.lt) 380c5958b1636c47ed7c284f859c8e805fd06a0e6Bill Yi self.assertRaises(TypeError, operator.lt, 1j, 2j) 390c5958b1636c47ed7c284f859c8e805fd06a0e6Bill Yi self.assertFalse(operator.lt(1, 0)) 400c5958b1636c47ed7c284f859c8e805fd06a0e6Bill Yi self.assertFalse(operator.lt(1, 0.0)) 410c5958b1636c47ed7c284f859c8e805fd06a0e6Bill Yi self.assertFalse(operator.lt(1, 1)) 420c5958b1636c47ed7c284f859c8e805fd06a0e6Bill Yi self.assertFalse(operator.lt(1, 1.0)) 430c5958b1636c47ed7c284f859c8e805fd06a0e6Bill Yi self.assertTrue(operator.lt(1, 2)) 440c5958b1636c47ed7c284f859c8e805fd06a0e6Bill Yi self.assertTrue(operator.lt(1, 2.0)) 450c5958b1636c47ed7c284f859c8e805fd06a0e6Bill Yi 460c5958b1636c47ed7c284f859c8e805fd06a0e6Bill Yi def test_le(self): 470c5958b1636c47ed7c284f859c8e805fd06a0e6Bill Yi self.assertRaises(TypeError, operator.le) 480c5958b1636c47ed7c284f859c8e805fd06a0e6Bill Yi self.assertRaises(TypeError, operator.le, 1j, 2j) 490c5958b1636c47ed7c284f859c8e805fd06a0e6Bill Yi self.assertFalse(operator.le(1, 0)) 500c5958b1636c47ed7c284f859c8e805fd06a0e6Bill Yi self.assertFalse(operator.le(1, 0.0)) 510c5958b1636c47ed7c284f859c8e805fd06a0e6Bill Yi self.assertTrue(operator.le(1, 1)) 520c5958b1636c47ed7c284f859c8e805fd06a0e6Bill Yi self.assertTrue(operator.le(1, 1.0)) 530c5958b1636c47ed7c284f859c8e805fd06a0e6Bill Yi self.assertTrue(operator.le(1, 2)) 540c5958b1636c47ed7c284f859c8e805fd06a0e6Bill Yi self.assertTrue(operator.le(1, 2.0)) 550c5958b1636c47ed7c284f859c8e805fd06a0e6Bill Yi 560c5958b1636c47ed7c284f859c8e805fd06a0e6Bill Yi def test_eq(self): 570c5958b1636c47ed7c284f859c8e805fd06a0e6Bill Yi class C(object): 580c5958b1636c47ed7c284f859c8e805fd06a0e6Bill Yi def __eq__(self, other): 590c5958b1636c47ed7c284f859c8e805fd06a0e6Bill Yi raise SyntaxError 600c5958b1636c47ed7c284f859c8e805fd06a0e6Bill Yi __hash__ = None # Silence Py3k warning 610c5958b1636c47ed7c284f859c8e805fd06a0e6Bill Yi self.assertRaises(TypeError, operator.eq) 620c5958b1636c47ed7c284f859c8e805fd06a0e6Bill Yi self.assertRaises(SyntaxError, operator.eq, C(), C()) 630c5958b1636c47ed7c284f859c8e805fd06a0e6Bill Yi self.assertFalse(operator.eq(1, 0)) 640c5958b1636c47ed7c284f859c8e805fd06a0e6Bill Yi self.assertFalse(operator.eq(1, 0.0)) 650c5958b1636c47ed7c284f859c8e805fd06a0e6Bill Yi self.assertTrue(operator.eq(1, 1)) 660c5958b1636c47ed7c284f859c8e805fd06a0e6Bill Yi self.assertTrue(operator.eq(1, 1.0)) 670c5958b1636c47ed7c284f859c8e805fd06a0e6Bill Yi self.assertFalse(operator.eq(1, 2)) 680c5958b1636c47ed7c284f859c8e805fd06a0e6Bill Yi self.assertFalse(operator.eq(1, 2.0)) 690c5958b1636c47ed7c284f859c8e805fd06a0e6Bill Yi 700c5958b1636c47ed7c284f859c8e805fd06a0e6Bill Yi def test_ne(self): 710c5958b1636c47ed7c284f859c8e805fd06a0e6Bill Yi class C(object): 720c5958b1636c47ed7c284f859c8e805fd06a0e6Bill Yi def __ne__(self, other): 730c5958b1636c47ed7c284f859c8e805fd06a0e6Bill Yi raise SyntaxError 740c5958b1636c47ed7c284f859c8e805fd06a0e6Bill Yi self.assertRaises(TypeError, operator.ne) 750c5958b1636c47ed7c284f859c8e805fd06a0e6Bill Yi self.assertRaises(SyntaxError, operator.ne, C(), C()) 760c5958b1636c47ed7c284f859c8e805fd06a0e6Bill Yi self.assertTrue(operator.ne(1, 0)) 770c5958b1636c47ed7c284f859c8e805fd06a0e6Bill Yi self.assertTrue(operator.ne(1, 0.0)) 780c5958b1636c47ed7c284f859c8e805fd06a0e6Bill Yi self.assertFalse(operator.ne(1, 1)) 790c5958b1636c47ed7c284f859c8e805fd06a0e6Bill Yi self.assertFalse(operator.ne(1, 1.0)) 800c5958b1636c47ed7c284f859c8e805fd06a0e6Bill Yi self.assertTrue(operator.ne(1, 2)) 810c5958b1636c47ed7c284f859c8e805fd06a0e6Bill Yi self.assertTrue(operator.ne(1, 2.0)) 820c5958b1636c47ed7c284f859c8e805fd06a0e6Bill Yi 830c5958b1636c47ed7c284f859c8e805fd06a0e6Bill Yi def test_ge(self): 840c5958b1636c47ed7c284f859c8e805fd06a0e6Bill Yi self.assertRaises(TypeError, operator.ge) 850c5958b1636c47ed7c284f859c8e805fd06a0e6Bill Yi self.assertRaises(TypeError, operator.ge, 1j, 2j) 860c5958b1636c47ed7c284f859c8e805fd06a0e6Bill Yi self.assertTrue(operator.ge(1, 0)) 870c5958b1636c47ed7c284f859c8e805fd06a0e6Bill Yi self.assertTrue(operator.ge(1, 0.0)) 880c5958b1636c47ed7c284f859c8e805fd06a0e6Bill Yi self.assertTrue(operator.ge(1, 1)) 890c5958b1636c47ed7c284f859c8e805fd06a0e6Bill Yi self.assertTrue(operator.ge(1, 1.0)) 900c5958b1636c47ed7c284f859c8e805fd06a0e6Bill Yi self.assertFalse(operator.ge(1, 2)) 910c5958b1636c47ed7c284f859c8e805fd06a0e6Bill Yi self.assertFalse(operator.ge(1, 2.0)) 920c5958b1636c47ed7c284f859c8e805fd06a0e6Bill Yi 930c5958b1636c47ed7c284f859c8e805fd06a0e6Bill Yi def test_gt(self): 940c5958b1636c47ed7c284f859c8e805fd06a0e6Bill Yi self.assertRaises(TypeError, operator.gt) 950c5958b1636c47ed7c284f859c8e805fd06a0e6Bill Yi self.assertRaises(TypeError, operator.gt, 1j, 2j) 960c5958b1636c47ed7c284f859c8e805fd06a0e6Bill Yi self.assertTrue(operator.gt(1, 0)) 970c5958b1636c47ed7c284f859c8e805fd06a0e6Bill Yi self.assertTrue(operator.gt(1, 0.0)) 980c5958b1636c47ed7c284f859c8e805fd06a0e6Bill Yi self.assertFalse(operator.gt(1, 1)) 990c5958b1636c47ed7c284f859c8e805fd06a0e6Bill Yi self.assertFalse(operator.gt(1, 1.0)) 1000c5958b1636c47ed7c284f859c8e805fd06a0e6Bill Yi self.assertFalse(operator.gt(1, 2)) 1010c5958b1636c47ed7c284f859c8e805fd06a0e6Bill Yi self.assertFalse(operator.gt(1, 2.0)) 1020c5958b1636c47ed7c284f859c8e805fd06a0e6Bill Yi 1030c5958b1636c47ed7c284f859c8e805fd06a0e6Bill Yi def test_abs(self): 1040c5958b1636c47ed7c284f859c8e805fd06a0e6Bill Yi self.assertRaises(TypeError, operator.abs) 1050c5958b1636c47ed7c284f859c8e805fd06a0e6Bill Yi self.assertRaises(TypeError, operator.abs, None) 1060c5958b1636c47ed7c284f859c8e805fd06a0e6Bill Yi self.assertTrue(operator.abs(-1) == 1) 1070c5958b1636c47ed7c284f859c8e805fd06a0e6Bill Yi self.assertTrue(operator.abs(1) == 1) 1080c5958b1636c47ed7c284f859c8e805fd06a0e6Bill Yi 1090c5958b1636c47ed7c284f859c8e805fd06a0e6Bill Yi def test_add(self): 1100c5958b1636c47ed7c284f859c8e805fd06a0e6Bill Yi self.assertRaises(TypeError, operator.add) 1110c5958b1636c47ed7c284f859c8e805fd06a0e6Bill Yi self.assertRaises(TypeError, operator.add, None, None) 1120c5958b1636c47ed7c284f859c8e805fd06a0e6Bill Yi self.assertTrue(operator.add(3, 4) == 7) 1130c5958b1636c47ed7c284f859c8e805fd06a0e6Bill Yi 1140c5958b1636c47ed7c284f859c8e805fd06a0e6Bill Yi def test_bitwise_and(self): 1150c5958b1636c47ed7c284f859c8e805fd06a0e6Bill Yi self.assertRaises(TypeError, operator.and_) 1160c5958b1636c47ed7c284f859c8e805fd06a0e6Bill Yi self.assertRaises(TypeError, operator.and_, None, None) 1170c5958b1636c47ed7c284f859c8e805fd06a0e6Bill Yi self.assertTrue(operator.and_(0xf, 0xa) == 0xa) 1180c5958b1636c47ed7c284f859c8e805fd06a0e6Bill Yi 1190c5958b1636c47ed7c284f859c8e805fd06a0e6Bill Yi def test_concat(self): 1200c5958b1636c47ed7c284f859c8e805fd06a0e6Bill Yi self.assertRaises(TypeError, operator.concat) 1210c5958b1636c47ed7c284f859c8e805fd06a0e6Bill Yi self.assertRaises(TypeError, operator.concat, None, None) 1220c5958b1636c47ed7c284f859c8e805fd06a0e6Bill Yi self.assertTrue(operator.concat('py', 'thon') == 'python') 1230c5958b1636c47ed7c284f859c8e805fd06a0e6Bill Yi self.assertTrue(operator.concat([1, 2], [3, 4]) == [1, 2, 3, 4]) 1240c5958b1636c47ed7c284f859c8e805fd06a0e6Bill Yi self.assertTrue(operator.concat(Seq1([5, 6]), Seq1([7])) == [5, 6, 7]) 1250c5958b1636c47ed7c284f859c8e805fd06a0e6Bill Yi self.assertTrue(operator.concat(Seq2([5, 6]), Seq2([7])) == [5, 6, 7]) 1260c5958b1636c47ed7c284f859c8e805fd06a0e6Bill Yi self.assertRaises(TypeError, operator.concat, 13, 29) 1270c5958b1636c47ed7c284f859c8e805fd06a0e6Bill Yi 1280c5958b1636c47ed7c284f859c8e805fd06a0e6Bill Yi def test_countOf(self): 1290c5958b1636c47ed7c284f859c8e805fd06a0e6Bill Yi self.assertRaises(TypeError, operator.countOf) 1300c5958b1636c47ed7c284f859c8e805fd06a0e6Bill Yi self.assertRaises(TypeError, operator.countOf, None, None) 1310c5958b1636c47ed7c284f859c8e805fd06a0e6Bill Yi self.assertTrue(operator.countOf([1, 2, 1, 3, 1, 4], 3) == 1) 1320c5958b1636c47ed7c284f859c8e805fd06a0e6Bill Yi self.assertTrue(operator.countOf([1, 2, 1, 3, 1, 4], 5) == 0) 1330c5958b1636c47ed7c284f859c8e805fd06a0e6Bill Yi 1340c5958b1636c47ed7c284f859c8e805fd06a0e6Bill Yi def test_delitem(self): 1350c5958b1636c47ed7c284f859c8e805fd06a0e6Bill Yi a = [4, 3, 2, 1] 1360c5958b1636c47ed7c284f859c8e805fd06a0e6Bill Yi self.assertRaises(TypeError, operator.delitem, a) 1370c5958b1636c47ed7c284f859c8e805fd06a0e6Bill Yi self.assertRaises(TypeError, operator.delitem, a, None) 1380c5958b1636c47ed7c284f859c8e805fd06a0e6Bill Yi self.assertTrue(operator.delitem(a, 1) is None) 1390c5958b1636c47ed7c284f859c8e805fd06a0e6Bill Yi self.assertTrue(a == [4, 2, 1]) 1400c5958b1636c47ed7c284f859c8e805fd06a0e6Bill Yi 1410c5958b1636c47ed7c284f859c8e805fd06a0e6Bill Yi def test_delslice(self): 1420c5958b1636c47ed7c284f859c8e805fd06a0e6Bill Yi a = range(10) 1430c5958b1636c47ed7c284f859c8e805fd06a0e6Bill Yi self.assertRaises(TypeError, operator.delslice, a) 1440c5958b1636c47ed7c284f859c8e805fd06a0e6Bill Yi self.assertRaises(TypeError, operator.delslice, a, None, None) 1450c5958b1636c47ed7c284f859c8e805fd06a0e6Bill Yi self.assertTrue(operator.delslice(a, 2, 8) is None) 1460c5958b1636c47ed7c284f859c8e805fd06a0e6Bill Yi self.assertTrue(a == [0, 1, 8, 9]) 1470c5958b1636c47ed7c284f859c8e805fd06a0e6Bill Yi operator.delslice(a, 0, test_support.MAX_Py_ssize_t) 1480c5958b1636c47ed7c284f859c8e805fd06a0e6Bill Yi self.assertTrue(a == []) 1490c5958b1636c47ed7c284f859c8e805fd06a0e6Bill Yi 1500c5958b1636c47ed7c284f859c8e805fd06a0e6Bill Yi def test_div(self): 1510c5958b1636c47ed7c284f859c8e805fd06a0e6Bill Yi self.assertRaises(TypeError, operator.div, 5) 1520c5958b1636c47ed7c284f859c8e805fd06a0e6Bill Yi self.assertRaises(TypeError, operator.div, None, None) 1530c5958b1636c47ed7c284f859c8e805fd06a0e6Bill Yi self.assertTrue(operator.floordiv(5, 2) == 2) 1540c5958b1636c47ed7c284f859c8e805fd06a0e6Bill Yi 1550c5958b1636c47ed7c284f859c8e805fd06a0e6Bill Yi def test_floordiv(self): 1560c5958b1636c47ed7c284f859c8e805fd06a0e6Bill Yi self.assertRaises(TypeError, operator.floordiv, 5) 1570c5958b1636c47ed7c284f859c8e805fd06a0e6Bill Yi self.assertRaises(TypeError, operator.floordiv, None, None) 1580c5958b1636c47ed7c284f859c8e805fd06a0e6Bill Yi self.assertTrue(operator.floordiv(5, 2) == 2) 1590c5958b1636c47ed7c284f859c8e805fd06a0e6Bill Yi 1600c5958b1636c47ed7c284f859c8e805fd06a0e6Bill Yi def test_truediv(self): 1610c5958b1636c47ed7c284f859c8e805fd06a0e6Bill Yi self.assertRaises(TypeError, operator.truediv, 5) 1620c5958b1636c47ed7c284f859c8e805fd06a0e6Bill Yi self.assertRaises(TypeError, operator.truediv, None, None) 1630c5958b1636c47ed7c284f859c8e805fd06a0e6Bill Yi self.assertTrue(operator.truediv(5, 2) == 2.5) 1640c5958b1636c47ed7c284f859c8e805fd06a0e6Bill Yi 1650c5958b1636c47ed7c284f859c8e805fd06a0e6Bill Yi def test_getitem(self): 1660c5958b1636c47ed7c284f859c8e805fd06a0e6Bill Yi a = range(10) 1670c5958b1636c47ed7c284f859c8e805fd06a0e6Bill Yi self.assertRaises(TypeError, operator.getitem) 1680c5958b1636c47ed7c284f859c8e805fd06a0e6Bill Yi self.assertRaises(TypeError, operator.getitem, a, None) 1690c5958b1636c47ed7c284f859c8e805fd06a0e6Bill Yi self.assertTrue(operator.getitem(a, 2) == 2) 1700c5958b1636c47ed7c284f859c8e805fd06a0e6Bill Yi 1710c5958b1636c47ed7c284f859c8e805fd06a0e6Bill Yi def test_getslice(self): 1720c5958b1636c47ed7c284f859c8e805fd06a0e6Bill Yi a = range(10) 1730c5958b1636c47ed7c284f859c8e805fd06a0e6Bill Yi self.assertRaises(TypeError, operator.getslice) 1740c5958b1636c47ed7c284f859c8e805fd06a0e6Bill Yi self.assertRaises(TypeError, operator.getslice, a, None, None) 1750c5958b1636c47ed7c284f859c8e805fd06a0e6Bill Yi self.assertTrue(operator.getslice(a, 4, 6) == [4, 5]) 1760c5958b1636c47ed7c284f859c8e805fd06a0e6Bill Yi b = operator.getslice(a, 0, test_support.MAX_Py_ssize_t) 1770c5958b1636c47ed7c284f859c8e805fd06a0e6Bill Yi self.assertTrue(b == a) 1780c5958b1636c47ed7c284f859c8e805fd06a0e6Bill Yi 1790c5958b1636c47ed7c284f859c8e805fd06a0e6Bill Yi def test_indexOf(self): 1800c5958b1636c47ed7c284f859c8e805fd06a0e6Bill Yi self.assertRaises(TypeError, operator.indexOf) 1810c5958b1636c47ed7c284f859c8e805fd06a0e6Bill Yi self.assertRaises(TypeError, operator.indexOf, None, None) 1820c5958b1636c47ed7c284f859c8e805fd06a0e6Bill Yi self.assertTrue(operator.indexOf([4, 3, 2, 1], 3) == 1) 1830c5958b1636c47ed7c284f859c8e805fd06a0e6Bill Yi self.assertRaises(ValueError, operator.indexOf, [4, 3, 2, 1], 0) 1840c5958b1636c47ed7c284f859c8e805fd06a0e6Bill Yi 1850c5958b1636c47ed7c284f859c8e805fd06a0e6Bill Yi def test_invert(self): 1860c5958b1636c47ed7c284f859c8e805fd06a0e6Bill Yi self.assertRaises(TypeError, operator.invert) 1870c5958b1636c47ed7c284f859c8e805fd06a0e6Bill Yi self.assertRaises(TypeError, operator.invert, None) 1880c5958b1636c47ed7c284f859c8e805fd06a0e6Bill Yi self.assertTrue(operator.inv(4) == -5) 1890c5958b1636c47ed7c284f859c8e805fd06a0e6Bill Yi 1900c5958b1636c47ed7c284f859c8e805fd06a0e6Bill Yi def test_isCallable(self): 1910c5958b1636c47ed7c284f859c8e805fd06a0e6Bill Yi self.assertRaises(TypeError, operator.isCallable) 1920c5958b1636c47ed7c284f859c8e805fd06a0e6Bill Yi class C: 1930c5958b1636c47ed7c284f859c8e805fd06a0e6Bill Yi pass 1940c5958b1636c47ed7c284f859c8e805fd06a0e6Bill Yi def check(self, o, v): 1950c5958b1636c47ed7c284f859c8e805fd06a0e6Bill Yi with test_support.check_py3k_warnings(): 1960c5958b1636c47ed7c284f859c8e805fd06a0e6Bill Yi self.assertEqual(operator.isCallable(o), v) 1970c5958b1636c47ed7c284f859c8e805fd06a0e6Bill Yi self.assertEqual(callable(o), v) 1980c5958b1636c47ed7c284f859c8e805fd06a0e6Bill Yi check(self, 4, 0) 1990c5958b1636c47ed7c284f859c8e805fd06a0e6Bill Yi check(self, operator.isCallable, 1) 2000c5958b1636c47ed7c284f859c8e805fd06a0e6Bill Yi check(self, C, 1) 2010c5958b1636c47ed7c284f859c8e805fd06a0e6Bill Yi check(self, C(), 0) 2020c5958b1636c47ed7c284f859c8e805fd06a0e6Bill Yi 2030c5958b1636c47ed7c284f859c8e805fd06a0e6Bill Yi def test_isMappingType(self): 2040c5958b1636c47ed7c284f859c8e805fd06a0e6Bill Yi self.assertRaises(TypeError, operator.isMappingType) 2050c5958b1636c47ed7c284f859c8e805fd06a0e6Bill Yi self.assertFalse(operator.isMappingType(1)) 2060c5958b1636c47ed7c284f859c8e805fd06a0e6Bill Yi self.assertFalse(operator.isMappingType(operator.isMappingType)) 2070c5958b1636c47ed7c284f859c8e805fd06a0e6Bill Yi self.assertTrue(operator.isMappingType(operator.__dict__)) 2080c5958b1636c47ed7c284f859c8e805fd06a0e6Bill Yi self.assertTrue(operator.isMappingType({})) 2090c5958b1636c47ed7c284f859c8e805fd06a0e6Bill Yi 2100c5958b1636c47ed7c284f859c8e805fd06a0e6Bill Yi def test_isNumberType(self): 2110c5958b1636c47ed7c284f859c8e805fd06a0e6Bill Yi self.assertRaises(TypeError, operator.isNumberType) 2120c5958b1636c47ed7c284f859c8e805fd06a0e6Bill Yi self.assertTrue(operator.isNumberType(8)) 2130c5958b1636c47ed7c284f859c8e805fd06a0e6Bill Yi self.assertTrue(operator.isNumberType(8j)) 2140c5958b1636c47ed7c284f859c8e805fd06a0e6Bill Yi self.assertTrue(operator.isNumberType(8L)) 2150c5958b1636c47ed7c284f859c8e805fd06a0e6Bill Yi self.assertTrue(operator.isNumberType(8.3)) 2160c5958b1636c47ed7c284f859c8e805fd06a0e6Bill Yi self.assertFalse(operator.isNumberType(dir())) 2170c5958b1636c47ed7c284f859c8e805fd06a0e6Bill Yi 2180c5958b1636c47ed7c284f859c8e805fd06a0e6Bill Yi def test_isSequenceType(self): 2190c5958b1636c47ed7c284f859c8e805fd06a0e6Bill Yi self.assertRaises(TypeError, operator.isSequenceType) 2200c5958b1636c47ed7c284f859c8e805fd06a0e6Bill Yi self.assertTrue(operator.isSequenceType(dir())) 2210c5958b1636c47ed7c284f859c8e805fd06a0e6Bill Yi self.assertTrue(operator.isSequenceType(())) 2220c5958b1636c47ed7c284f859c8e805fd06a0e6Bill Yi self.assertTrue(operator.isSequenceType(xrange(10))) 2230c5958b1636c47ed7c284f859c8e805fd06a0e6Bill Yi self.assertTrue(operator.isSequenceType('yeahbuddy')) 2240c5958b1636c47ed7c284f859c8e805fd06a0e6Bill Yi self.assertFalse(operator.isSequenceType(3)) 2250c5958b1636c47ed7c284f859c8e805fd06a0e6Bill Yi class Dict(dict): pass 2260c5958b1636c47ed7c284f859c8e805fd06a0e6Bill Yi self.assertFalse(operator.isSequenceType(Dict())) 2270c5958b1636c47ed7c284f859c8e805fd06a0e6Bill Yi 2280c5958b1636c47ed7c284f859c8e805fd06a0e6Bill Yi def test_lshift(self): 2290c5958b1636c47ed7c284f859c8e805fd06a0e6Bill Yi self.assertRaises(TypeError, operator.lshift) 2300c5958b1636c47ed7c284f859c8e805fd06a0e6Bill Yi self.assertRaises(TypeError, operator.lshift, None, 42) 2310c5958b1636c47ed7c284f859c8e805fd06a0e6Bill Yi self.assertTrue(operator.lshift(5, 1) == 10) 2320c5958b1636c47ed7c284f859c8e805fd06a0e6Bill Yi self.assertTrue(operator.lshift(5, 0) == 5) 2330c5958b1636c47ed7c284f859c8e805fd06a0e6Bill Yi self.assertRaises(ValueError, operator.lshift, 2, -1) 2340c5958b1636c47ed7c284f859c8e805fd06a0e6Bill Yi 2350c5958b1636c47ed7c284f859c8e805fd06a0e6Bill Yi def test_mod(self): 2360c5958b1636c47ed7c284f859c8e805fd06a0e6Bill Yi self.assertRaises(TypeError, operator.mod) 2370c5958b1636c47ed7c284f859c8e805fd06a0e6Bill Yi self.assertRaises(TypeError, operator.mod, None, 42) 2380c5958b1636c47ed7c284f859c8e805fd06a0e6Bill Yi self.assertTrue(operator.mod(5, 2) == 1) 2390c5958b1636c47ed7c284f859c8e805fd06a0e6Bill Yi 2400c5958b1636c47ed7c284f859c8e805fd06a0e6Bill Yi def test_mul(self): 2410c5958b1636c47ed7c284f859c8e805fd06a0e6Bill Yi self.assertRaises(TypeError, operator.mul) 2420c5958b1636c47ed7c284f859c8e805fd06a0e6Bill Yi self.assertRaises(TypeError, operator.mul, None, None) 2430c5958b1636c47ed7c284f859c8e805fd06a0e6Bill Yi self.assertTrue(operator.mul(5, 2) == 10) 2440c5958b1636c47ed7c284f859c8e805fd06a0e6Bill Yi 2450c5958b1636c47ed7c284f859c8e805fd06a0e6Bill Yi def test_neg(self): 2460c5958b1636c47ed7c284f859c8e805fd06a0e6Bill Yi self.assertRaises(TypeError, operator.neg) 2470c5958b1636c47ed7c284f859c8e805fd06a0e6Bill Yi self.assertRaises(TypeError, operator.neg, None) 2480c5958b1636c47ed7c284f859c8e805fd06a0e6Bill Yi self.assertTrue(operator.neg(5) == -5) 2490c5958b1636c47ed7c284f859c8e805fd06a0e6Bill Yi self.assertTrue(operator.neg(-5) == 5) 2500c5958b1636c47ed7c284f859c8e805fd06a0e6Bill Yi self.assertTrue(operator.neg(0) == 0) 2510c5958b1636c47ed7c284f859c8e805fd06a0e6Bill Yi self.assertTrue(operator.neg(-0) == 0) 2520c5958b1636c47ed7c284f859c8e805fd06a0e6Bill Yi 2530c5958b1636c47ed7c284f859c8e805fd06a0e6Bill Yi def test_bitwise_or(self): 2540c5958b1636c47ed7c284f859c8e805fd06a0e6Bill Yi self.assertRaises(TypeError, operator.or_) 2550c5958b1636c47ed7c284f859c8e805fd06a0e6Bill Yi self.assertRaises(TypeError, operator.or_, None, None) 2560c5958b1636c47ed7c284f859c8e805fd06a0e6Bill Yi self.assertTrue(operator.or_(0xa, 0x5) == 0xf) 2570c5958b1636c47ed7c284f859c8e805fd06a0e6Bill Yi 2580c5958b1636c47ed7c284f859c8e805fd06a0e6Bill Yi def test_pos(self): 2590c5958b1636c47ed7c284f859c8e805fd06a0e6Bill Yi self.assertRaises(TypeError, operator.pos) 2600c5958b1636c47ed7c284f859c8e805fd06a0e6Bill Yi self.assertRaises(TypeError, operator.pos, None) 2610c5958b1636c47ed7c284f859c8e805fd06a0e6Bill Yi self.assertTrue(operator.pos(5) == 5) 2620c5958b1636c47ed7c284f859c8e805fd06a0e6Bill Yi self.assertTrue(operator.pos(-5) == -5) 2630c5958b1636c47ed7c284f859c8e805fd06a0e6Bill Yi self.assertTrue(operator.pos(0) == 0) 2640c5958b1636c47ed7c284f859c8e805fd06a0e6Bill Yi self.assertTrue(operator.pos(-0) == 0) 2650c5958b1636c47ed7c284f859c8e805fd06a0e6Bill Yi 2660c5958b1636c47ed7c284f859c8e805fd06a0e6Bill Yi def test_pow(self): 2670c5958b1636c47ed7c284f859c8e805fd06a0e6Bill Yi self.assertRaises(TypeError, operator.pow) 2680c5958b1636c47ed7c284f859c8e805fd06a0e6Bill Yi self.assertRaises(TypeError, operator.pow, None, None) 2690c5958b1636c47ed7c284f859c8e805fd06a0e6Bill Yi self.assertTrue(operator.pow(3,5) == 3**5) 2700c5958b1636c47ed7c284f859c8e805fd06a0e6Bill Yi self.assertTrue(operator.__pow__(3,5) == 3**5) 2710c5958b1636c47ed7c284f859c8e805fd06a0e6Bill Yi self.assertRaises(TypeError, operator.pow, 1) 2720c5958b1636c47ed7c284f859c8e805fd06a0e6Bill Yi self.assertRaises(TypeError, operator.pow, 1, 2, 3) 2730c5958b1636c47ed7c284f859c8e805fd06a0e6Bill Yi 2740c5958b1636c47ed7c284f859c8e805fd06a0e6Bill Yi def test_repeat(self): 2750c5958b1636c47ed7c284f859c8e805fd06a0e6Bill Yi a = range(3) 2760c5958b1636c47ed7c284f859c8e805fd06a0e6Bill Yi self.assertRaises(TypeError, operator.repeat) 2770c5958b1636c47ed7c284f859c8e805fd06a0e6Bill Yi self.assertRaises(TypeError, operator.repeat, a, None) 2780c5958b1636c47ed7c284f859c8e805fd06a0e6Bill Yi self.assertTrue(operator.repeat(a, 2) == a+a) 2790c5958b1636c47ed7c284f859c8e805fd06a0e6Bill Yi self.assertTrue(operator.repeat(a, 1) == a) 2800c5958b1636c47ed7c284f859c8e805fd06a0e6Bill Yi self.assertTrue(operator.repeat(a, 0) == []) 2810c5958b1636c47ed7c284f859c8e805fd06a0e6Bill Yi a = (1, 2, 3) 2820c5958b1636c47ed7c284f859c8e805fd06a0e6Bill Yi self.assertTrue(operator.repeat(a, 2) == a+a) 2830c5958b1636c47ed7c284f859c8e805fd06a0e6Bill Yi self.assertTrue(operator.repeat(a, 1) == a) 2840c5958b1636c47ed7c284f859c8e805fd06a0e6Bill Yi self.assertTrue(operator.repeat(a, 0) == ()) 2850c5958b1636c47ed7c284f859c8e805fd06a0e6Bill Yi a = '123' 2860c5958b1636c47ed7c284f859c8e805fd06a0e6Bill Yi self.assertTrue(operator.repeat(a, 2) == a+a) 2870c5958b1636c47ed7c284f859c8e805fd06a0e6Bill Yi self.assertTrue(operator.repeat(a, 1) == a) 2880c5958b1636c47ed7c284f859c8e805fd06a0e6Bill Yi self.assertTrue(operator.repeat(a, 0) == '') 2890c5958b1636c47ed7c284f859c8e805fd06a0e6Bill Yi a = Seq1([4, 5, 6]) 2900c5958b1636c47ed7c284f859c8e805fd06a0e6Bill Yi self.assertTrue(operator.repeat(a, 2) == [4, 5, 6, 4, 5, 6]) 2910c5958b1636c47ed7c284f859c8e805fd06a0e6Bill Yi self.assertTrue(operator.repeat(a, 1) == [4, 5, 6]) 2920c5958b1636c47ed7c284f859c8e805fd06a0e6Bill Yi self.assertTrue(operator.repeat(a, 0) == []) 2930c5958b1636c47ed7c284f859c8e805fd06a0e6Bill Yi a = Seq2([4, 5, 6]) 2940c5958b1636c47ed7c284f859c8e805fd06a0e6Bill Yi self.assertTrue(operator.repeat(a, 2) == [4, 5, 6, 4, 5, 6]) 2950c5958b1636c47ed7c284f859c8e805fd06a0e6Bill Yi self.assertTrue(operator.repeat(a, 1) == [4, 5, 6]) 2960c5958b1636c47ed7c284f859c8e805fd06a0e6Bill Yi self.assertTrue(operator.repeat(a, 0) == []) 2970c5958b1636c47ed7c284f859c8e805fd06a0e6Bill Yi self.assertRaises(TypeError, operator.repeat, 6, 7) 2980c5958b1636c47ed7c284f859c8e805fd06a0e6Bill Yi 2990c5958b1636c47ed7c284f859c8e805fd06a0e6Bill Yi def test_rshift(self): 3000c5958b1636c47ed7c284f859c8e805fd06a0e6Bill Yi self.assertRaises(TypeError, operator.rshift) 3010c5958b1636c47ed7c284f859c8e805fd06a0e6Bill Yi self.assertRaises(TypeError, operator.rshift, None, 42) 3020c5958b1636c47ed7c284f859c8e805fd06a0e6Bill Yi self.assertTrue(operator.rshift(5, 1) == 2) 3030c5958b1636c47ed7c284f859c8e805fd06a0e6Bill Yi self.assertTrue(operator.rshift(5, 0) == 5) 3040c5958b1636c47ed7c284f859c8e805fd06a0e6Bill Yi self.assertRaises(ValueError, operator.rshift, 2, -1) 3050c5958b1636c47ed7c284f859c8e805fd06a0e6Bill Yi 3060c5958b1636c47ed7c284f859c8e805fd06a0e6Bill Yi def test_contains(self): 3070c5958b1636c47ed7c284f859c8e805fd06a0e6Bill Yi self.assertRaises(TypeError, operator.contains) 3080c5958b1636c47ed7c284f859c8e805fd06a0e6Bill Yi self.assertRaises(TypeError, operator.contains, None, None) 3090c5958b1636c47ed7c284f859c8e805fd06a0e6Bill Yi self.assertTrue(operator.contains(range(4), 2)) 3100c5958b1636c47ed7c284f859c8e805fd06a0e6Bill Yi self.assertFalse(operator.contains(range(4), 5)) 3110c5958b1636c47ed7c284f859c8e805fd06a0e6Bill Yi with test_support.check_py3k_warnings(): 3120c5958b1636c47ed7c284f859c8e805fd06a0e6Bill Yi self.assertTrue(operator.sequenceIncludes(range(4), 2)) 3130c5958b1636c47ed7c284f859c8e805fd06a0e6Bill Yi self.assertFalse(operator.sequenceIncludes(range(4), 5)) 3140c5958b1636c47ed7c284f859c8e805fd06a0e6Bill Yi 3150c5958b1636c47ed7c284f859c8e805fd06a0e6Bill Yi def test_setitem(self): 3160c5958b1636c47ed7c284f859c8e805fd06a0e6Bill Yi a = range(3) 3170c5958b1636c47ed7c284f859c8e805fd06a0e6Bill Yi self.assertRaises(TypeError, operator.setitem, a) 3180c5958b1636c47ed7c284f859c8e805fd06a0e6Bill Yi self.assertRaises(TypeError, operator.setitem, a, None, None) 3190c5958b1636c47ed7c284f859c8e805fd06a0e6Bill Yi self.assertTrue(operator.setitem(a, 0, 2) is None) 3200c5958b1636c47ed7c284f859c8e805fd06a0e6Bill Yi self.assertTrue(a == [2, 1, 2]) 3210c5958b1636c47ed7c284f859c8e805fd06a0e6Bill Yi self.assertRaises(IndexError, operator.setitem, a, 4, 2) 3220c5958b1636c47ed7c284f859c8e805fd06a0e6Bill Yi 3230c5958b1636c47ed7c284f859c8e805fd06a0e6Bill Yi def test_setslice(self): 3240c5958b1636c47ed7c284f859c8e805fd06a0e6Bill Yi a = range(4) 3250c5958b1636c47ed7c284f859c8e805fd06a0e6Bill Yi self.assertRaises(TypeError, operator.setslice, a) 3260c5958b1636c47ed7c284f859c8e805fd06a0e6Bill Yi self.assertRaises(TypeError, operator.setslice, a, None, None, None) 3270c5958b1636c47ed7c284f859c8e805fd06a0e6Bill Yi self.assertTrue(operator.setslice(a, 1, 3, [2, 1]) is None) 3280c5958b1636c47ed7c284f859c8e805fd06a0e6Bill Yi self.assertTrue(a == [0, 2, 1, 3]) 3290c5958b1636c47ed7c284f859c8e805fd06a0e6Bill Yi operator.setslice(a, 0, test_support.MAX_Py_ssize_t, []) 3300c5958b1636c47ed7c284f859c8e805fd06a0e6Bill Yi self.assertTrue(a == []) 3310c5958b1636c47ed7c284f859c8e805fd06a0e6Bill Yi 3320c5958b1636c47ed7c284f859c8e805fd06a0e6Bill Yi def test_sub(self): 3330c5958b1636c47ed7c284f859c8e805fd06a0e6Bill Yi self.assertRaises(TypeError, operator.sub) 3340c5958b1636c47ed7c284f859c8e805fd06a0e6Bill Yi self.assertRaises(TypeError, operator.sub, None, None) 3350c5958b1636c47ed7c284f859c8e805fd06a0e6Bill Yi self.assertTrue(operator.sub(5, 2) == 3) 3360c5958b1636c47ed7c284f859c8e805fd06a0e6Bill Yi 3370c5958b1636c47ed7c284f859c8e805fd06a0e6Bill Yi def test_truth(self): 3380c5958b1636c47ed7c284f859c8e805fd06a0e6Bill Yi class C(object): 3390c5958b1636c47ed7c284f859c8e805fd06a0e6Bill Yi def __nonzero__(self): 3400c5958b1636c47ed7c284f859c8e805fd06a0e6Bill Yi raise SyntaxError 3410c5958b1636c47ed7c284f859c8e805fd06a0e6Bill Yi self.assertRaises(TypeError, operator.truth) 3420c5958b1636c47ed7c284f859c8e805fd06a0e6Bill Yi self.assertRaises(SyntaxError, operator.truth, C()) 3430c5958b1636c47ed7c284f859c8e805fd06a0e6Bill Yi self.assertTrue(operator.truth(5)) 3440c5958b1636c47ed7c284f859c8e805fd06a0e6Bill Yi self.assertTrue(operator.truth([0])) 3450c5958b1636c47ed7c284f859c8e805fd06a0e6Bill Yi self.assertFalse(operator.truth(0)) 3460c5958b1636c47ed7c284f859c8e805fd06a0e6Bill Yi self.assertFalse(operator.truth([])) 3470c5958b1636c47ed7c284f859c8e805fd06a0e6Bill Yi 3480c5958b1636c47ed7c284f859c8e805fd06a0e6Bill Yi def test_bitwise_xor(self): 3490c5958b1636c47ed7c284f859c8e805fd06a0e6Bill Yi self.assertRaises(TypeError, operator.xor) 3500c5958b1636c47ed7c284f859c8e805fd06a0e6Bill Yi self.assertRaises(TypeError, operator.xor, None, None) 3510c5958b1636c47ed7c284f859c8e805fd06a0e6Bill Yi self.assertTrue(operator.xor(0xb, 0xc) == 0x7) 3520c5958b1636c47ed7c284f859c8e805fd06a0e6Bill Yi 3530c5958b1636c47ed7c284f859c8e805fd06a0e6Bill Yi def test_is(self): 3540c5958b1636c47ed7c284f859c8e805fd06a0e6Bill Yi a = b = 'xyzpdq' 3550c5958b1636c47ed7c284f859c8e805fd06a0e6Bill Yi c = a[:3] + b[3:] 3560c5958b1636c47ed7c284f859c8e805fd06a0e6Bill Yi self.assertRaises(TypeError, operator.is_) 3570c5958b1636c47ed7c284f859c8e805fd06a0e6Bill Yi self.assertTrue(operator.is_(a, b)) 3580c5958b1636c47ed7c284f859c8e805fd06a0e6Bill Yi self.assertFalse(operator.is_(a,c)) 3590c5958b1636c47ed7c284f859c8e805fd06a0e6Bill Yi 3600c5958b1636c47ed7c284f859c8e805fd06a0e6Bill Yi def test_is_not(self): 3610c5958b1636c47ed7c284f859c8e805fd06a0e6Bill Yi a = b = 'xyzpdq' 3620c5958b1636c47ed7c284f859c8e805fd06a0e6Bill Yi c = a[:3] + b[3:] 3630c5958b1636c47ed7c284f859c8e805fd06a0e6Bill Yi self.assertRaises(TypeError, operator.is_not) 3640c5958b1636c47ed7c284f859c8e805fd06a0e6Bill Yi self.assertFalse(operator.is_not(a, b)) 3650c5958b1636c47ed7c284f859c8e805fd06a0e6Bill Yi self.assertTrue(operator.is_not(a,c)) 3660c5958b1636c47ed7c284f859c8e805fd06a0e6Bill Yi 3670c5958b1636c47ed7c284f859c8e805fd06a0e6Bill Yi def test_attrgetter(self): 3680c5958b1636c47ed7c284f859c8e805fd06a0e6Bill Yi class A: 3690c5958b1636c47ed7c284f859c8e805fd06a0e6Bill Yi pass 3700c5958b1636c47ed7c284f859c8e805fd06a0e6Bill Yi a = A() 3710c5958b1636c47ed7c284f859c8e805fd06a0e6Bill Yi a.name = 'arthur' 3720c5958b1636c47ed7c284f859c8e805fd06a0e6Bill Yi f = operator.attrgetter('name') 3730c5958b1636c47ed7c284f859c8e805fd06a0e6Bill Yi self.assertEqual(f(a), 'arthur') 3740c5958b1636c47ed7c284f859c8e805fd06a0e6Bill Yi f = operator.attrgetter('rank') 3750c5958b1636c47ed7c284f859c8e805fd06a0e6Bill Yi self.assertRaises(AttributeError, f, a) 3760c5958b1636c47ed7c284f859c8e805fd06a0e6Bill Yi f = operator.attrgetter(2) 3770c5958b1636c47ed7c284f859c8e805fd06a0e6Bill Yi self.assertRaises(TypeError, f, a) 3780c5958b1636c47ed7c284f859c8e805fd06a0e6Bill Yi self.assertRaises(TypeError, operator.attrgetter) 3790c5958b1636c47ed7c284f859c8e805fd06a0e6Bill Yi 3800c5958b1636c47ed7c284f859c8e805fd06a0e6Bill Yi # multiple gets 3810c5958b1636c47ed7c284f859c8e805fd06a0e6Bill Yi record = A() 3820c5958b1636c47ed7c284f859c8e805fd06a0e6Bill Yi record.x = 'X' 3830c5958b1636c47ed7c284f859c8e805fd06a0e6Bill Yi record.y = 'Y' 3840c5958b1636c47ed7c284f859c8e805fd06a0e6Bill Yi record.z = 'Z' 3850c5958b1636c47ed7c284f859c8e805fd06a0e6Bill Yi self.assertEqual(operator.attrgetter('x','z','y')(record), ('X', 'Z', 'Y')) 3860c5958b1636c47ed7c284f859c8e805fd06a0e6Bill Yi self.assertRaises(TypeError, operator.attrgetter('x', (), 'y'), record) 3870c5958b1636c47ed7c284f859c8e805fd06a0e6Bill Yi 3880c5958b1636c47ed7c284f859c8e805fd06a0e6Bill Yi class C(object): 3890c5958b1636c47ed7c284f859c8e805fd06a0e6Bill Yi def __getattr__(self, name): 3900c5958b1636c47ed7c284f859c8e805fd06a0e6Bill Yi raise SyntaxError 3910c5958b1636c47ed7c284f859c8e805fd06a0e6Bill Yi self.assertRaises(SyntaxError, operator.attrgetter('foo'), C()) 3920c5958b1636c47ed7c284f859c8e805fd06a0e6Bill Yi 3930c5958b1636c47ed7c284f859c8e805fd06a0e6Bill Yi # recursive gets 3940c5958b1636c47ed7c284f859c8e805fd06a0e6Bill Yi a = A() 3950c5958b1636c47ed7c284f859c8e805fd06a0e6Bill Yi a.name = 'arthur' 3960c5958b1636c47ed7c284f859c8e805fd06a0e6Bill Yi a.child = A() 3970c5958b1636c47ed7c284f859c8e805fd06a0e6Bill Yi a.child.name = 'thomas' 3980c5958b1636c47ed7c284f859c8e805fd06a0e6Bill Yi f = operator.attrgetter('child.name') 3990c5958b1636c47ed7c284f859c8e805fd06a0e6Bill Yi self.assertEqual(f(a), 'thomas') 4000c5958b1636c47ed7c284f859c8e805fd06a0e6Bill Yi self.assertRaises(AttributeError, f, a.child) 4010c5958b1636c47ed7c284f859c8e805fd06a0e6Bill Yi f = operator.attrgetter('name', 'child.name') 4020c5958b1636c47ed7c284f859c8e805fd06a0e6Bill Yi self.assertEqual(f(a), ('arthur', 'thomas')) 4030c5958b1636c47ed7c284f859c8e805fd06a0e6Bill Yi f = operator.attrgetter('name', 'child.name', 'child.child.name') 4040c5958b1636c47ed7c284f859c8e805fd06a0e6Bill Yi self.assertRaises(AttributeError, f, a) 4050c5958b1636c47ed7c284f859c8e805fd06a0e6Bill Yi 4060c5958b1636c47ed7c284f859c8e805fd06a0e6Bill Yi a.child.child = A() 4070c5958b1636c47ed7c284f859c8e805fd06a0e6Bill Yi a.child.child.name = 'johnson' 4080c5958b1636c47ed7c284f859c8e805fd06a0e6Bill Yi f = operator.attrgetter('child.child.name') 4090c5958b1636c47ed7c284f859c8e805fd06a0e6Bill Yi self.assertEqual(f(a), 'johnson') 4100c5958b1636c47ed7c284f859c8e805fd06a0e6Bill Yi f = operator.attrgetter('name', 'child.name', 'child.child.name') 4110c5958b1636c47ed7c284f859c8e805fd06a0e6Bill Yi self.assertEqual(f(a), ('arthur', 'thomas', 'johnson')) 4120c5958b1636c47ed7c284f859c8e805fd06a0e6Bill Yi 4130c5958b1636c47ed7c284f859c8e805fd06a0e6Bill Yi def test_itemgetter(self): 4140c5958b1636c47ed7c284f859c8e805fd06a0e6Bill Yi a = 'ABCDE' 4150c5958b1636c47ed7c284f859c8e805fd06a0e6Bill Yi f = operator.itemgetter(2) 4160c5958b1636c47ed7c284f859c8e805fd06a0e6Bill Yi self.assertEqual(f(a), 'C') 4170c5958b1636c47ed7c284f859c8e805fd06a0e6Bill Yi f = operator.itemgetter(10) 4180c5958b1636c47ed7c284f859c8e805fd06a0e6Bill Yi self.assertRaises(IndexError, f, a) 4190c5958b1636c47ed7c284f859c8e805fd06a0e6Bill Yi 4200c5958b1636c47ed7c284f859c8e805fd06a0e6Bill Yi class C(object): 4210c5958b1636c47ed7c284f859c8e805fd06a0e6Bill Yi def __getitem__(self, name): 4220c5958b1636c47ed7c284f859c8e805fd06a0e6Bill Yi raise SyntaxError 4230c5958b1636c47ed7c284f859c8e805fd06a0e6Bill Yi self.assertRaises(SyntaxError, operator.itemgetter(42), C()) 4240c5958b1636c47ed7c284f859c8e805fd06a0e6Bill Yi 4250c5958b1636c47ed7c284f859c8e805fd06a0e6Bill Yi f = operator.itemgetter('name') 4260c5958b1636c47ed7c284f859c8e805fd06a0e6Bill Yi self.assertRaises(TypeError, f, a) 4270c5958b1636c47ed7c284f859c8e805fd06a0e6Bill Yi self.assertRaises(TypeError, operator.itemgetter) 4280c5958b1636c47ed7c284f859c8e805fd06a0e6Bill Yi 4290c5958b1636c47ed7c284f859c8e805fd06a0e6Bill Yi d = dict(key='val') 4300c5958b1636c47ed7c284f859c8e805fd06a0e6Bill Yi f = operator.itemgetter('key') 4310c5958b1636c47ed7c284f859c8e805fd06a0e6Bill Yi self.assertEqual(f(d), 'val') 4320c5958b1636c47ed7c284f859c8e805fd06a0e6Bill Yi f = operator.itemgetter('nonkey') 4330c5958b1636c47ed7c284f859c8e805fd06a0e6Bill Yi self.assertRaises(KeyError, f, d) 4340c5958b1636c47ed7c284f859c8e805fd06a0e6Bill Yi 4350c5958b1636c47ed7c284f859c8e805fd06a0e6Bill Yi # example used in the docs 4360c5958b1636c47ed7c284f859c8e805fd06a0e6Bill Yi inventory = [('apple', 3), ('banana', 2), ('pear', 5), ('orange', 1)] 4370c5958b1636c47ed7c284f859c8e805fd06a0e6Bill Yi getcount = operator.itemgetter(1) 4380c5958b1636c47ed7c284f859c8e805fd06a0e6Bill Yi self.assertEqual(map(getcount, inventory), [3, 2, 5, 1]) 4390c5958b1636c47ed7c284f859c8e805fd06a0e6Bill Yi self.assertEqual(sorted(inventory, key=getcount), 4400c5958b1636c47ed7c284f859c8e805fd06a0e6Bill Yi [('orange', 1), ('banana', 2), ('apple', 3), ('pear', 5)]) 4410c5958b1636c47ed7c284f859c8e805fd06a0e6Bill Yi 4420c5958b1636c47ed7c284f859c8e805fd06a0e6Bill Yi # multiple gets 4430c5958b1636c47ed7c284f859c8e805fd06a0e6Bill Yi data = map(str, range(20)) 4440c5958b1636c47ed7c284f859c8e805fd06a0e6Bill Yi self.assertEqual(operator.itemgetter(2,10,5)(data), ('2', '10', '5')) 4450c5958b1636c47ed7c284f859c8e805fd06a0e6Bill Yi self.assertRaises(TypeError, operator.itemgetter(2, 'x', 5), data) 4460c5958b1636c47ed7c284f859c8e805fd06a0e6Bill Yi 4470c5958b1636c47ed7c284f859c8e805fd06a0e6Bill Yi def test_methodcaller(self): 4480c5958b1636c47ed7c284f859c8e805fd06a0e6Bill Yi self.assertRaises(TypeError, operator.methodcaller) 4490c5958b1636c47ed7c284f859c8e805fd06a0e6Bill Yi class A: 4500c5958b1636c47ed7c284f859c8e805fd06a0e6Bill Yi def foo(self, *args, **kwds): 4510c5958b1636c47ed7c284f859c8e805fd06a0e6Bill Yi return args[0] + args[1] 4520c5958b1636c47ed7c284f859c8e805fd06a0e6Bill Yi def bar(self, f=42): 4530c5958b1636c47ed7c284f859c8e805fd06a0e6Bill Yi return f 4540c5958b1636c47ed7c284f859c8e805fd06a0e6Bill Yi a = A() 4550c5958b1636c47ed7c284f859c8e805fd06a0e6Bill Yi f = operator.methodcaller('foo') 4560c5958b1636c47ed7c284f859c8e805fd06a0e6Bill Yi self.assertRaises(IndexError, f, a) 4570c5958b1636c47ed7c284f859c8e805fd06a0e6Bill Yi f = operator.methodcaller('foo', 1, 2) 4580c5958b1636c47ed7c284f859c8e805fd06a0e6Bill Yi self.assertEqual(f(a), 3) 4590c5958b1636c47ed7c284f859c8e805fd06a0e6Bill Yi f = operator.methodcaller('bar') 4600c5958b1636c47ed7c284f859c8e805fd06a0e6Bill Yi self.assertEqual(f(a), 42) 4610c5958b1636c47ed7c284f859c8e805fd06a0e6Bill Yi self.assertRaises(TypeError, f, a, a) 4620c5958b1636c47ed7c284f859c8e805fd06a0e6Bill Yi f = operator.methodcaller('bar', f=5) 4630c5958b1636c47ed7c284f859c8e805fd06a0e6Bill Yi self.assertEqual(f(a), 5) 4640c5958b1636c47ed7c284f859c8e805fd06a0e6Bill Yi 4650c5958b1636c47ed7c284f859c8e805fd06a0e6Bill Yi def test_inplace(self): 4660c5958b1636c47ed7c284f859c8e805fd06a0e6Bill Yi class C(object): 4670c5958b1636c47ed7c284f859c8e805fd06a0e6Bill Yi def __iadd__ (self, other): return "iadd" 4680c5958b1636c47ed7c284f859c8e805fd06a0e6Bill Yi def __iand__ (self, other): return "iand" 4690c5958b1636c47ed7c284f859c8e805fd06a0e6Bill Yi def __idiv__ (self, other): return "idiv" 4700c5958b1636c47ed7c284f859c8e805fd06a0e6Bill Yi def __ifloordiv__(self, other): return "ifloordiv" 4710c5958b1636c47ed7c284f859c8e805fd06a0e6Bill Yi def __ilshift__ (self, other): return "ilshift" 4720c5958b1636c47ed7c284f859c8e805fd06a0e6Bill Yi def __imod__ (self, other): return "imod" 4730c5958b1636c47ed7c284f859c8e805fd06a0e6Bill Yi def __imul__ (self, other): return "imul" 4740c5958b1636c47ed7c284f859c8e805fd06a0e6Bill Yi def __ior__ (self, other): return "ior" 4750c5958b1636c47ed7c284f859c8e805fd06a0e6Bill Yi def __ipow__ (self, other): return "ipow" 4760c5958b1636c47ed7c284f859c8e805fd06a0e6Bill Yi def __irshift__ (self, other): return "irshift" 4770c5958b1636c47ed7c284f859c8e805fd06a0e6Bill Yi def __isub__ (self, other): return "isub" 4780c5958b1636c47ed7c284f859c8e805fd06a0e6Bill Yi def __itruediv__ (self, other): return "itruediv" 4790c5958b1636c47ed7c284f859c8e805fd06a0e6Bill Yi def __ixor__ (self, other): return "ixor" 4800c5958b1636c47ed7c284f859c8e805fd06a0e6Bill Yi def __getitem__(self, other): return 5 # so that C is a sequence 4810c5958b1636c47ed7c284f859c8e805fd06a0e6Bill Yi c = C() 4820c5958b1636c47ed7c284f859c8e805fd06a0e6Bill Yi self.assertEqual(operator.iadd (c, 5), "iadd") 4830c5958b1636c47ed7c284f859c8e805fd06a0e6Bill Yi self.assertEqual(operator.iand (c, 5), "iand") 4840c5958b1636c47ed7c284f859c8e805fd06a0e6Bill Yi self.assertEqual(operator.idiv (c, 5), "idiv") 4850c5958b1636c47ed7c284f859c8e805fd06a0e6Bill Yi self.assertEqual(operator.ifloordiv(c, 5), "ifloordiv") 4860c5958b1636c47ed7c284f859c8e805fd06a0e6Bill Yi self.assertEqual(operator.ilshift (c, 5), "ilshift") 4870c5958b1636c47ed7c284f859c8e805fd06a0e6Bill Yi self.assertEqual(operator.imod (c, 5), "imod") 4880c5958b1636c47ed7c284f859c8e805fd06a0e6Bill Yi self.assertEqual(operator.imul (c, 5), "imul") 4890c5958b1636c47ed7c284f859c8e805fd06a0e6Bill Yi self.assertEqual(operator.ior (c, 5), "ior") 4900c5958b1636c47ed7c284f859c8e805fd06a0e6Bill Yi self.assertEqual(operator.ipow (c, 5), "ipow") 4910c5958b1636c47ed7c284f859c8e805fd06a0e6Bill Yi self.assertEqual(operator.irshift (c, 5), "irshift") 4920c5958b1636c47ed7c284f859c8e805fd06a0e6Bill Yi self.assertEqual(operator.isub (c, 5), "isub") 4930c5958b1636c47ed7c284f859c8e805fd06a0e6Bill Yi self.assertEqual(operator.itruediv (c, 5), "itruediv") 4940c5958b1636c47ed7c284f859c8e805fd06a0e6Bill Yi self.assertEqual(operator.ixor (c, 5), "ixor") 4950c5958b1636c47ed7c284f859c8e805fd06a0e6Bill Yi self.assertEqual(operator.iconcat (c, c), "iadd") 4960c5958b1636c47ed7c284f859c8e805fd06a0e6Bill Yi self.assertEqual(operator.irepeat (c, 5), "imul") 4970c5958b1636c47ed7c284f859c8e805fd06a0e6Bill Yi self.assertEqual(operator.__iadd__ (c, 5), "iadd") 4980c5958b1636c47ed7c284f859c8e805fd06a0e6Bill Yi self.assertEqual(operator.__iand__ (c, 5), "iand") 4990c5958b1636c47ed7c284f859c8e805fd06a0e6Bill Yi self.assertEqual(operator.__idiv__ (c, 5), "idiv") 5000c5958b1636c47ed7c284f859c8e805fd06a0e6Bill Yi self.assertEqual(operator.__ifloordiv__(c, 5), "ifloordiv") 5010c5958b1636c47ed7c284f859c8e805fd06a0e6Bill Yi self.assertEqual(operator.__ilshift__ (c, 5), "ilshift") 5020c5958b1636c47ed7c284f859c8e805fd06a0e6Bill Yi self.assertEqual(operator.__imod__ (c, 5), "imod") 5030c5958b1636c47ed7c284f859c8e805fd06a0e6Bill Yi self.assertEqual(operator.__imul__ (c, 5), "imul") 5040c5958b1636c47ed7c284f859c8e805fd06a0e6Bill Yi self.assertEqual(operator.__ior__ (c, 5), "ior") 5050c5958b1636c47ed7c284f859c8e805fd06a0e6Bill Yi self.assertEqual(operator.__ipow__ (c, 5), "ipow") 5060c5958b1636c47ed7c284f859c8e805fd06a0e6Bill Yi self.assertEqual(operator.__irshift__ (c, 5), "irshift") 5070c5958b1636c47ed7c284f859c8e805fd06a0e6Bill Yi self.assertEqual(operator.__isub__ (c, 5), "isub") 5080c5958b1636c47ed7c284f859c8e805fd06a0e6Bill Yi self.assertEqual(operator.__itruediv__ (c, 5), "itruediv") 5090c5958b1636c47ed7c284f859c8e805fd06a0e6Bill Yi self.assertEqual(operator.__ixor__ (c, 5), "ixor") 5100c5958b1636c47ed7c284f859c8e805fd06a0e6Bill Yi self.assertEqual(operator.__iconcat__ (c, c), "iadd") 5110c5958b1636c47ed7c284f859c8e805fd06a0e6Bill Yi self.assertEqual(operator.__irepeat__ (c, 5), "imul") 5120c5958b1636c47ed7c284f859c8e805fd06a0e6Bill Yi 5130c5958b1636c47ed7c284f859c8e805fd06a0e6Bill Yidef test_main(verbose=None): 5140c5958b1636c47ed7c284f859c8e805fd06a0e6Bill Yi import sys 5150c5958b1636c47ed7c284f859c8e805fd06a0e6Bill Yi test_classes = ( 5160c5958b1636c47ed7c284f859c8e805fd06a0e6Bill Yi OperatorTestCase, 5170c5958b1636c47ed7c284f859c8e805fd06a0e6Bill Yi ) 5180c5958b1636c47ed7c284f859c8e805fd06a0e6Bill Yi 5190c5958b1636c47ed7c284f859c8e805fd06a0e6Bill Yi test_support.run_unittest(*test_classes) 5200c5958b1636c47ed7c284f859c8e805fd06a0e6Bill Yi 5210c5958b1636c47ed7c284f859c8e805fd06a0e6Bill Yi # verify reference counting 5220c5958b1636c47ed7c284f859c8e805fd06a0e6Bill Yi if verbose and hasattr(sys, "gettotalrefcount"): 5230c5958b1636c47ed7c284f859c8e805fd06a0e6Bill Yi import gc 5240c5958b1636c47ed7c284f859c8e805fd06a0e6Bill Yi counts = [None] * 5 5250c5958b1636c47ed7c284f859c8e805fd06a0e6Bill Yi for i in xrange(len(counts)): 5260c5958b1636c47ed7c284f859c8e805fd06a0e6Bill Yi test_support.run_unittest(*test_classes) 5270c5958b1636c47ed7c284f859c8e805fd06a0e6Bill Yi gc.collect() 5280c5958b1636c47ed7c284f859c8e805fd06a0e6Bill Yi counts[i] = sys.gettotalrefcount() 5290c5958b1636c47ed7c284f859c8e805fd06a0e6Bill Yi print counts 5300c5958b1636c47ed7c284f859c8e805fd06a0e6Bill Yi 5310c5958b1636c47ed7c284f859c8e805fd06a0e6Bill Yiif __name__ == "__main__": 5320c5958b1636c47ed7c284f859c8e805fd06a0e6Bill Yi test_main(verbose=True) 533