MCPcopy Index your code
hub / github.com/python/cpython / test_itemgetter

Method test_itemgetter

Lib/test/test_operator.py:423–472  ·  view source on GitHub ↗
(self)

Source from the content-addressed store, hash-verified

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

Callers

nothing calls this directly

Calls 7

listClass · 0.85
sliceClass · 0.85
fFunction · 0.70
CClass · 0.70
TClass · 0.70
assertEqualMethod · 0.45
assertRaisesMethod · 0.45

Tested by

no test coverage detected