|
| 1 | +from unittest import TestCase |
| 2 | +from django.utils.numberformat import format as nformat |
| 3 | +from sys import float_info |
| 4 | + |
| 5 | + |
| 6 | +class TestNumberFormat(TestCase): |
| 7 | + |
| 8 | + def test_format_number(self): |
| 9 | + self.assertEqual(nformat(1234, '.'), '1234') |
| 10 | + self.assertEqual(nformat(1234.2, '.'), '1234.2') |
| 11 | + self.assertEqual(nformat(1234, '.', decimal_pos=2), '1234.00') |
| 12 | + self.assertEqual(nformat(1234, '.', grouping=2, thousand_sep=','), |
| 13 | + '1234') |
| 14 | + self.assertEqual(nformat(1234, '.', grouping=2, thousand_sep=',', |
| 15 | + force_grouping=True), '12,34') |
| 16 | + self.assertEqual(nformat(-1234.33, '.', decimal_pos=1), '-1234.3') |
| 17 | + |
| 18 | + def test_format_string(self): |
| 19 | + self.assertEqual(nformat('1234', '.'), '1234') |
| 20 | + self.assertEqual(nformat('1234.2', '.'), '1234.2') |
| 21 | + self.assertEqual(nformat('1234', '.', decimal_pos=2), '1234.00') |
| 22 | + self.assertEqual(nformat('1234', '.', grouping=2, thousand_sep=','), |
| 23 | + '1234') |
| 24 | + self.assertEqual(nformat('1234', '.', grouping=2, thousand_sep=',', |
| 25 | + force_grouping=True), '12,34') |
| 26 | + self.assertEqual(nformat('-1234.33', '.', decimal_pos=1), '-1234.3') |
| 27 | + |
| 28 | + def test_large_number(self): |
| 29 | + most_max = ('{0}179769313486231570814527423731704356798070567525844996' |
| 30 | + '598917476803157260780028538760589558632766878171540458953' |
| 31 | + '514382464234321326889464182768467546703537516986049910576' |
| 32 | + '551282076245490090389328944075868508455133942304583236903' |
| 33 | + '222948165808559332123348274797826204144723168738177180919' |
| 34 | + '29988125040402618412485836{1}') |
| 35 | + most_max2 = ('{0}35953862697246314162905484746340871359614113505168999' |
| 36 | + '31978349536063145215600570775211791172655337563430809179' |
| 37 | + '07028764928468642653778928365536935093407075033972099821' |
| 38 | + '15310256415249098018077865788815173701691026788460916647' |
| 39 | + '38064458963316171186642466965495956524082894463374763543' |
| 40 | + '61838599762500808052368249716736') |
| 41 | + int_max = int(float_info.max) |
| 42 | + self.assertEqual(nformat(int_max, '.'), most_max.format('', '8')) |
| 43 | + self.assertEqual(nformat(int_max + 1, '.'), most_max.format('', '9')) |
| 44 | + self.assertEqual(nformat(int_max * 2, '.'), most_max2.format('')) |
| 45 | + self.assertEqual(nformat(0 - int_max, '.'), most_max.format('-', '8')) |
| 46 | + self.assertEqual(nformat(-1 - int_max, '.'), most_max.format('-', '9')) |
| 47 | + self.assertEqual(nformat(-2 * int_max, '.'), most_max2.format('-')) |
0 commit comments