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