diff --git a/tests/utils_tests/test_numberformat.py b/tests/utils_tests/test_numberformat.py index f78fc91087..3b815adfb8 100644 --- a/tests/utils_tests/test_numberformat.py +++ b/tests/utils_tests/test_numberformat.py @@ -49,6 +49,12 @@ class TestNumberFormat(TestCase): self.assertEqual(nformat(-1 - int_max, '.'), most_max.format('-', '9')) self.assertEqual(nformat(-2 * int_max, '.'), most_max2.format('-')) + def test_float_numbers(self): + # A float without a fractional part (3.) results in a ".0" when no + # deimal_pos is given. Contrast that with the Decimal('3.') case in + # test_decimal_numbers which doesn't return a fractional part. + self.assertEqual(nformat(3., '.'), '3.0') + def test_decimal_numbers(self): self.assertEqual(nformat(Decimal('1234'), '.'), '1234') self.assertEqual(nformat(Decimal('1234.2'), '.'), '1234.2') @@ -57,6 +63,18 @@ class TestNumberFormat(TestCase): self.assertEqual(nformat(Decimal('1234'), '.', grouping=2, thousand_sep=',', force_grouping=True), '12,34') self.assertEqual(nformat(Decimal('-1234.33'), '.', decimal_pos=1), '-1234.3') self.assertEqual(nformat(Decimal('0.00000001'), '.', decimal_pos=8), '0.00000001') + self.assertEqual(nformat(Decimal('9e-19'), '.', decimal_pos=2), '0.00') + self.assertEqual(nformat(Decimal('.00000000000099'), '.', decimal_pos=0), '0') + self.assertEqual( + nformat(Decimal('1e16'), '.', thousand_sep=',', grouping=3, force_grouping=True), + '10,000,000,000,000,000' + ) + self.assertEqual( + nformat(Decimal('1e16'), '.', decimal_pos=2, thousand_sep=',', grouping=3, force_grouping=True), + '10,000,000,000,000,000.00' + ) + self.assertEqual(nformat(Decimal('3.'), '.'), '3') + self.assertEqual(nformat(Decimal('3.0'), '.'), '3.0') def test_decimal_subclass(self): class EuroDecimal(Decimal):