mirror of
https://github.com/python/cpython.git
synced 2025-08-31 14:07:50 +00:00
Allow printing a leading '-' and the maximum number of exponent digits
rather than raising RuntimeError (allocated space is sufficient for the additional character).
This commit is contained in:
parent
0774e9b9f5
commit
ff3eca0cc3
2 changed files with 50 additions and 2 deletions
|
@ -4977,6 +4977,54 @@ class CWhitebox(unittest.TestCase):
|
|||
x = "1e%d" % (-sys.maxsize-1)
|
||||
self.assertRaises(InvalidOperation, Decimal, x)
|
||||
|
||||
def test_from_tuple(self):
|
||||
Decimal = C.Decimal
|
||||
localcontext = C.localcontext
|
||||
InvalidOperation = C.InvalidOperation
|
||||
Overflow = C.Overflow
|
||||
Underflow = C.Underflow
|
||||
|
||||
with localcontext() as c:
|
||||
|
||||
c.traps[InvalidOperation] = True
|
||||
c.traps[Overflow] = True
|
||||
c.traps[Underflow] = True
|
||||
|
||||
# SSIZE_MAX
|
||||
x = (1, (), sys.maxsize)
|
||||
self.assertEqual(str(c.create_decimal(x)), '-0E+999999')
|
||||
self.assertRaises(InvalidOperation, Decimal, x)
|
||||
|
||||
x = (1, (0, 1, 2), sys.maxsize)
|
||||
self.assertRaises(Overflow, c.create_decimal, x)
|
||||
self.assertRaises(InvalidOperation, Decimal, x)
|
||||
|
||||
# SSIZE_MIN
|
||||
x = (1, (), -sys.maxsize-1)
|
||||
self.assertEqual(str(c.create_decimal(x)), '-0E-1000026')
|
||||
self.assertRaises(InvalidOperation, Decimal, x)
|
||||
|
||||
x = (1, (0, 1, 2), -sys.maxsize-1)
|
||||
self.assertRaises(Underflow, c.create_decimal, x)
|
||||
self.assertRaises(InvalidOperation, Decimal, x)
|
||||
|
||||
# OverflowError
|
||||
x = (1, (), sys.maxsize+1)
|
||||
self.assertRaises(OverflowError, c.create_decimal, x)
|
||||
self.assertRaises(OverflowError, Decimal, x)
|
||||
|
||||
x = (1, (), -sys.maxsize-2)
|
||||
self.assertRaises(OverflowError, c.create_decimal, x)
|
||||
self.assertRaises(OverflowError, Decimal, x)
|
||||
|
||||
# Specials
|
||||
x = (1, (), "N")
|
||||
self.assertEqual(str(Decimal(x)), '-sNaN')
|
||||
x = (1, (0,), "N")
|
||||
self.assertEqual(str(Decimal(x)), '-sNaN')
|
||||
x = (1, (0, 1), "N")
|
||||
self.assertEqual(str(Decimal(x)), '-sNaN1')
|
||||
|
||||
|
||||
all_tests = [
|
||||
CExplicitConstructionTest, PyExplicitConstructionTest,
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue