summaryrefslogtreecommitdiffstats
path: root/Lib
diff options
context:
space:
mode:
Diffstat (limited to 'Lib')
-rw-r--r--Lib/test/test_decimal.py22
1 files changed, 22 insertions, 0 deletions
diff --git a/Lib/test/test_decimal.py b/Lib/test/test_decimal.py
index 4d3ea73..7ce61fc 100644
--- a/Lib/test/test_decimal.py
+++ b/Lib/test/test_decimal.py
@@ -1121,6 +1121,13 @@ class FormatTest:
('z>z6.1f', '-0.', 'zzz0.0'),
('x>z6.1f', '-0.', 'xxx0.0'),
('🖤>z6.1f', '-0.', '🖤🖤🖤0.0'), # multi-byte fill char
+ ('\x00>z6.1f', '-0.', '\x00\x00\x000.0'), # null fill char
+
+ # issue 114563 ('z' format on F type in cdecimal)
+ ('z3,.10F', '-6.24E-323', '0.0000000000'),
+
+ # issue 91060 ('#' format in cdecimal)
+ ('#', '0', '0.'),
# issue 6850
('a=-7.0', '0.12345', 'aaaa0.1'),
@@ -5712,6 +5719,21 @@ class CWhitebox(unittest.TestCase):
with self.assertRaisesRegex(ValueError, err_msg):
sd.copy()
+ def test_format_fallback_capitals(self):
+ # Fallback to _pydecimal formatting (triggered by `#` format which
+ # is unsupported by mpdecimal) should honor the current context.
+ x = C.Decimal('6.09e+23')
+ self.assertEqual(format(x, '#'), '6.09E+23')
+ with C.localcontext(capitals=0):
+ self.assertEqual(format(x, '#'), '6.09e+23')
+
+ def test_format_fallback_rounding(self):
+ y = C.Decimal('6.09')
+ self.assertEqual(format(y, '#.1f'), '6.1')
+ with C.localcontext(rounding=C.ROUND_DOWN):
+ self.assertEqual(format(y, '#.1f'), '6.0')
+
+
@requires_docstrings
@requires_cdecimal
class SignatureTest(unittest.TestCase):