(self)
| 1406 | self.assertRaises(TypeError, "{}".format, n) |
| 1407 | |
| 1408 | def test_format_map(self): |
| 1409 | self.assertEqual(''.format_map({}), '') |
| 1410 | self.assertEqual('a'.format_map({}), 'a') |
| 1411 | self.assertEqual('ab'.format_map({}), 'ab') |
| 1412 | self.assertEqual('a{{'.format_map({}), 'a{') |
| 1413 | self.assertEqual('a}}'.format_map({}), 'a}') |
| 1414 | self.assertEqual('{{b'.format_map({}), '{b') |
| 1415 | self.assertEqual('}}b'.format_map({}), '}b') |
| 1416 | self.assertEqual('a{{b'.format_map({}), 'a{b') |
| 1417 | |
| 1418 | # using mappings |
| 1419 | class Mapping(dict): |
| 1420 | def __missing__(self, key): |
| 1421 | return key |
| 1422 | self.assertEqual('{hello}'.format_map(Mapping()), 'hello') |
| 1423 | self.assertEqual('{a} {world}'.format_map(Mapping(a='hello')), 'hello world') |
| 1424 | |
| 1425 | class InternalMapping: |
| 1426 | def __init__(self): |
| 1427 | self.mapping = {'a': 'hello'} |
| 1428 | def __getitem__(self, key): |
| 1429 | return self.mapping[key] |
| 1430 | self.assertEqual('{a}'.format_map(InternalMapping()), 'hello') |
| 1431 | |
| 1432 | |
| 1433 | class C: |
| 1434 | def __init__(self, x=100): |
| 1435 | self._x = x |
| 1436 | def __format__(self, spec): |
| 1437 | return spec |
| 1438 | self.assertEqual('{foo._x}'.format_map({'foo': C(20)}), '20') |
| 1439 | |
| 1440 | # test various errors |
| 1441 | self.assertRaises(TypeError, ''.format_map) |
| 1442 | self.assertRaises(TypeError, 'a'.format_map) |
| 1443 | |
| 1444 | self.assertRaises(ValueError, '{'.format_map, {}) |
| 1445 | self.assertRaises(ValueError, '}'.format_map, {}) |
| 1446 | self.assertRaises(ValueError, 'a{'.format_map, {}) |
| 1447 | self.assertRaises(ValueError, 'a}'.format_map, {}) |
| 1448 | self.assertRaises(ValueError, '{a'.format_map, {}) |
| 1449 | self.assertRaises(ValueError, '}a'.format_map, {}) |
| 1450 | |
| 1451 | # issue #12579: can't supply positional params to format_map |
| 1452 | self.assertRaises(ValueError, '{}'.format_map, {'a' : 2}) |
| 1453 | self.assertRaises(ValueError, '{}'.format_map, 'a') |
| 1454 | self.assertRaises(ValueError, '{a} {}'.format_map, {"a" : 2, "b" : 1}) |
| 1455 | |
| 1456 | class BadMapping: |
| 1457 | def __getitem__(self, key): |
| 1458 | return 1/0 |
| 1459 | self.assertRaises(KeyError, '{a}'.format_map, {}) |
| 1460 | self.assertRaises(TypeError, '{a}'.format_map, []) |
| 1461 | self.assertRaises(ZeroDivisionError, '{a}'.format_map, BadMapping()) |
| 1462 | |
| 1463 | def test_format_huge_precision(self): |
| 1464 | format_string = ".{}f".format(sys.maxsize + 1) |
nothing calls this directly
no test coverage detected