(self)
| 1545 | self.assertEqual(eval('f"\\\r"'), '') |
| 1546 | |
| 1547 | def test_debug_conversion(self): |
| 1548 | x = 'A string' |
| 1549 | self.assertEqual(f'{x=}', 'x=' + repr(x)) |
| 1550 | self.assertEqual(f'{x =}', 'x =' + repr(x)) |
| 1551 | self.assertEqual(f'{x=!s}', 'x=' + str(x)) |
| 1552 | self.assertEqual(f'{x=!r}', 'x=' + repr(x)) |
| 1553 | self.assertEqual(f'{x=!a}', 'x=' + ascii(x)) |
| 1554 | |
| 1555 | x = 2.71828 |
| 1556 | self.assertEqual(f'{x=:.2f}', 'x=' + format(x, '.2f')) |
| 1557 | self.assertEqual(f'{x=:}', 'x=' + format(x, '')) |
| 1558 | self.assertEqual(f'{x=!r:^20}', 'x=' + format(repr(x), '^20')) |
| 1559 | self.assertEqual(f'{x=!s:^20}', 'x=' + format(str(x), '^20')) |
| 1560 | self.assertEqual(f'{x=!a:^20}', 'x=' + format(ascii(x), '^20')) |
| 1561 | |
| 1562 | x = 9 |
| 1563 | self.assertEqual(f'{3*x+15=}', '3*x+15=42') |
| 1564 | |
| 1565 | # There is code in ast.c that deals with non-ascii expression values. So, |
| 1566 | # use a unicode identifier to trigger that. |
| 1567 | tenπ = 31.4 |
| 1568 | self.assertEqual(f'{tenπ=:.2f}', 'tenπ=31.40') |
| 1569 | |
| 1570 | # Also test with Unicode in non-identifiers. |
| 1571 | self.assertEqual(f'{"Σ"=}', '"Σ"=\'Σ\'') |
| 1572 | |
| 1573 | # Make sure nested fstrings still work. |
| 1574 | self.assertEqual(f'{f"{3.1415=:.1f}":*^20}', '*****3.1415=3.1*****') |
| 1575 | |
| 1576 | # Make sure text before and after an expression with = works |
| 1577 | # correctly. |
| 1578 | pi = 'π' |
| 1579 | self.assertEqual(f'alpha α {pi=} ω omega', "alpha α pi='π' ω omega") |
| 1580 | |
| 1581 | # Check multi-line expressions. |
| 1582 | self.assertEqual(f'''{ |
| 1583 | 3 |
| 1584 | =}''', '\n3\n=3') |
| 1585 | |
| 1586 | # Since = is handled specially, make sure all existing uses of |
| 1587 | # it still work. |
| 1588 | |
| 1589 | self.assertEqual(f'{0==1}', 'False') |
| 1590 | self.assertEqual(f'{0!=1}', 'True') |
| 1591 | self.assertEqual(f'{0<=1}', 'True') |
| 1592 | self.assertEqual(f'{0>=1}', 'False') |
| 1593 | self.assertEqual(f'{(x:="5")}', '5') |
| 1594 | self.assertEqual(x, '5') |
| 1595 | self.assertEqual(f'{(x:=5)}', '5') |
| 1596 | self.assertEqual(x, 5) |
| 1597 | self.assertEqual(f'{"="}', '=') |
| 1598 | |
| 1599 | x = 20 |
| 1600 | # This isn't an assignment expression, it's 'x', with a format |
| 1601 | # spec of '=10'. See test_walrus: you need to use parens. |
| 1602 | self.assertEqual(f'{x:=10}', ' 20') |
| 1603 | |
| 1604 | # Test named function parameters, to make sure '=' parsing works |
nothing calls this directly
no test coverage detected