(self)
| 1593 | sorted(reversed(data), key=f)[-1]) |
| 1594 | |
| 1595 | def test_min(self): |
| 1596 | self.assertEqual(min('123123'), '1') |
| 1597 | self.assertEqual(min(1, 2, 3), 1) |
| 1598 | self.assertEqual(min((1, 2, 3, 1, 2, 3)), 1) |
| 1599 | self.assertEqual(min([1, 2, 3, 1, 2, 3]), 1) |
| 1600 | |
| 1601 | self.assertEqual(min(1, 2, 3.0), 1) |
| 1602 | self.assertEqual(min(1, 2.0, 3), 1) |
| 1603 | self.assertEqual(min(1.0, 2, 3), 1.0) |
| 1604 | |
| 1605 | with self.assertRaisesRegex( |
| 1606 | TypeError, |
| 1607 | 'min expected at least 1 argument, got 0' |
| 1608 | ): |
| 1609 | min() |
| 1610 | |
| 1611 | self.assertRaises(TypeError, min, 42) |
| 1612 | with self.assertRaisesRegex( |
| 1613 | ValueError, |
| 1614 | r'min\(\) iterable argument is empty' |
| 1615 | ): |
| 1616 | min(()) |
| 1617 | class BadSeq: |
| 1618 | def __getitem__(self, index): |
| 1619 | raise ValueError |
| 1620 | self.assertRaises(ValueError, min, BadSeq()) |
| 1621 | |
| 1622 | for stmt in ( |
| 1623 | "min(key=int)", # no args |
| 1624 | "min(default=None)", |
| 1625 | "min(1, 2, default=None)", # require container for default |
| 1626 | "min(default=None, key=int)", |
| 1627 | "min(1, key=int)", # single arg not iterable |
| 1628 | "min(1, 2, keystone=int)", # wrong keyword |
| 1629 | "min(1, 2, key=int, abc=int)", # two many keywords |
| 1630 | "min(1, 2, key=1)", # keyfunc is not callable |
| 1631 | ): |
| 1632 | try: |
| 1633 | exec(stmt, globals()) |
| 1634 | except TypeError: |
| 1635 | pass |
| 1636 | else: |
| 1637 | self.fail(stmt) |
| 1638 | |
| 1639 | self.assertEqual(min((1,), key=neg), 1) # one elem iterable |
| 1640 | self.assertEqual(min((1,2), key=neg), 2) # two elem iterable |
| 1641 | self.assertEqual(min(1, 2, key=neg), 2) # two elems |
| 1642 | |
| 1643 | self.assertEqual(min((), default=None), None) # zero elem iterable |
| 1644 | self.assertEqual(min((1,), default=None), 1) # one elem iterable |
| 1645 | self.assertEqual(min((1,2), default=None), 1) # two elem iterable |
| 1646 | |
| 1647 | self.assertEqual(min((), default=1, key=neg), 1) |
| 1648 | self.assertEqual(min((1, 2), default=1, key=neg), 2) |
| 1649 | |
| 1650 | self.assertEqual(min((1, 2), key=None), 1) |
| 1651 | |
| 1652 | data = [random.randrange(200) for i in range(100)] |
nothing calls this directly
no test coverage detected