(self)
| 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 |
nothing calls this directly
no test coverage detected