MCPcopy Index your code
hub / github.com/python/cpython / test_explicit_from_string

Method test_explicit_from_string

Lib/test/test_decimal.py:534–588  ·  view source on GitHub ↗
(self)

Source from the content-addressed store, hash-verified

532 self.assertEqual(str(d), str(i))
533
534 def test_explicit_from_string(self):
535 Decimal = self.decimal.Decimal
536 InvalidOperation = self.decimal.InvalidOperation
537 localcontext = self.decimal.localcontext
538
539 #empty
540 self.assertEqual(str(Decimal('')), 'NaN')
541
542 #int
543 self.assertEqual(str(Decimal('45')), '45')
544
545 #float
546 self.assertEqual(str(Decimal('45.34')), '45.34')
547
548 #engineer notation
549 self.assertEqual(str(Decimal('45e2')), '4.5E+3')
550
551 #just not a number
552 self.assertEqual(str(Decimal('ugly')), 'NaN')
553
554 #leading and trailing whitespace permitted
555 self.assertEqual(str(Decimal('1.3E4 \n')), '1.3E+4')
556 self.assertEqual(str(Decimal(' -7.89')), '-7.89')
557 self.assertEqual(str(Decimal(" 3.45679 ")), '3.45679')
558
559 # underscores
560 self.assertEqual(str(Decimal('1_3.3e4_0')), '1.33E+41')
561 self.assertEqual(str(Decimal('1_0_0_0')), '1000')
562
563 # unicode whitespace
564 for lead in ["", ' ', '\u00a0', '\u205f']:
565 for trail in ["", ' ', '\u00a0', '\u205f']:
566 self.assertEqual(str(Decimal(lead + '9.311E+28' + trail)),
567 '9.311E+28')
568
569 with localcontext() as c:
570 c.traps[InvalidOperation] = True
571 # Invalid string
572 self.assertRaises(InvalidOperation, Decimal, "xyz")
573 # Two arguments max
574 self.assertRaises(TypeError, Decimal, "1234", "x", "y")
575
576 # space within the numeric part
577 self.assertRaises(InvalidOperation, Decimal, "1\u00a02\u00a03")
578 self.assertRaises(InvalidOperation, Decimal, "\u00a01\u00a02\u00a0")
579
580 # unicode whitespace
581 self.assertRaises(InvalidOperation, Decimal, "\u00a0")
582 self.assertRaises(InvalidOperation, Decimal, "\u00a0\u00a0")
583
584 # embedded NUL
585 self.assertRaises(InvalidOperation, Decimal, "12\u00003")
586
587 # underscores don't prevent errors
588 self.assertRaises(InvalidOperation, Decimal, "1_2_\u00003")
589
590 def test_explicit_from_tuples(self):
591 Decimal = self.decimal.Decimal

Callers

nothing calls this directly

Calls 5

strFunction · 0.85
DecimalClass · 0.85
localcontextFunction · 0.85
assertEqualMethod · 0.45
assertRaisesMethod · 0.45

Tested by

no test coverage detected