Kaydet (Commit) df193b3c authored tarafından Claude Paroz's avatar Claude Paroz

Fixed #24382 -- Allowed unicode chars inside formatted numbers

Thanks Jacob Rief for the report and Tim Graham for the review.
üst ea9157f6
from __future__ import unicode_literals
from decimal import Decimal from decimal import Decimal
from django.conf import settings from django.conf import settings
......
# -*- encoding: utf-8 -*-
from __future__ import unicode_literals
from decimal import Decimal from decimal import Decimal
from sys import float_info from sys import float_info
from unittest import TestCase from unittest import TestCase
...@@ -59,3 +62,15 @@ class TestNumberFormat(TestCase): ...@@ -59,3 +62,15 @@ class TestNumberFormat(TestCase):
self.assertEqual(nformat(Decimal('1234'), '.', grouping=2, thousand_sep=',', force_grouping=True), '12,34') 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('-1234.33'), '.', decimal_pos=1), '-1234.3')
self.assertEqual(nformat(Decimal('0.00000001'), '.', decimal_pos=8), '0.00000001') self.assertEqual(nformat(Decimal('0.00000001'), '.', decimal_pos=8), '0.00000001')
def test_decimal_subclass(self):
class EuroDecimal(Decimal):
"""
Wrapper for Decimal which prefixes each amount with the € symbol.
"""
def __format__(self, specifier, **kwargs):
amount = super(EuroDecimal, self).__format__(specifier, **kwargs)
return '€ {}'.format(amount)
price = EuroDecimal('1.23')
self.assertEqual(nformat(price, ','), '€ 1,23')
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment