(self)
| 421 | self.assertEqual(f(a), ('arthur', 'thomas', 'johnson')) |
| 422 | |
| 423 | def test_itemgetter(self): |
| 424 | operator = self.module |
| 425 | a = 'ABCDE' |
| 426 | f = operator.itemgetter(2) |
| 427 | self.assertEqual(f(a), 'C') |
| 428 | self.assertRaises(TypeError, f) |
| 429 | self.assertRaises(TypeError, f, a, 3) |
| 430 | self.assertRaises(TypeError, f, a, size=3) |
| 431 | f = operator.itemgetter(10) |
| 432 | self.assertRaises(IndexError, f, a) |
| 433 | |
| 434 | class C(object): |
| 435 | def __getitem__(self, name): |
| 436 | raise SyntaxError |
| 437 | self.assertRaises(SyntaxError, operator.itemgetter(42), C()) |
| 438 | |
| 439 | f = operator.itemgetter('name') |
| 440 | self.assertRaises(TypeError, f, a) |
| 441 | self.assertRaises(TypeError, operator.itemgetter) |
| 442 | |
| 443 | d = dict(key='val') |
| 444 | f = operator.itemgetter('key') |
| 445 | self.assertEqual(f(d), 'val') |
| 446 | f = operator.itemgetter('nonkey') |
| 447 | self.assertRaises(KeyError, f, d) |
| 448 | |
| 449 | # example used in the docs |
| 450 | inventory = [('apple', 3), ('banana', 2), ('pear', 5), ('orange', 1)] |
| 451 | getcount = operator.itemgetter(1) |
| 452 | self.assertEqual(list(map(getcount, inventory)), [3, 2, 5, 1]) |
| 453 | self.assertEqual(sorted(inventory, key=getcount), |
| 454 | [('orange', 1), ('banana', 2), ('apple', 3), ('pear', 5)]) |
| 455 | |
| 456 | # multiple gets |
| 457 | data = list(map(str, range(20))) |
| 458 | self.assertEqual(operator.itemgetter(2,10,5)(data), ('2', '10', '5')) |
| 459 | self.assertRaises(TypeError, operator.itemgetter(2, 'x', 5), data) |
| 460 | |
| 461 | # interesting indices |
| 462 | t = tuple('abcde') |
| 463 | self.assertEqual(operator.itemgetter(-1)(t), 'e') |
| 464 | self.assertEqual(operator.itemgetter(slice(2, 4))(t), ('c', 'd')) |
| 465 | |
| 466 | # interesting sequences |
| 467 | class T(tuple): |
| 468 | 'Tuple subclass' |
| 469 | pass |
| 470 | self.assertEqual(operator.itemgetter(0)(T('abc')), 'a') |
| 471 | self.assertEqual(operator.itemgetter(0)(['a', 'b', 'c']), 'a') |
| 472 | self.assertEqual(operator.itemgetter(0)(range(100, 200)), 100) |
| 473 | |
| 474 | def test_methodcaller(self): |
| 475 | operator = self.module |
nothing calls this directly
no test coverage detected