diff options
author | Charly C <changaco@changaco.oy.lc> | 2018-06-16 11:09:13 +0200 |
---|---|---|
committer | Changaco <changaco@changaco.oy.lc> | 2018-06-17 09:10:32 +0200 |
commit | f7ac6530a70ad3b58a85add5ace83131777beb83 (patch) | |
tree | 8513c2e56b8a374f57ee4620ab7b2e37def8f013 /tests/test_numbers.py | |
parent | a3ef3c0fc13a0f1976019fcf1975ab588d8a2cb9 (diff) | |
download | babel-f7ac6530a70ad3b58a85add5ace83131777beb83.tar.gz |
add a `strict` mode to `parse_decimal()`
Fixes https://github.com/python-babel/babel/issues/589
Diffstat (limited to 'tests/test_numbers.py')
-rw-r--r-- | tests/test_numbers.py | 19 |
1 files changed, 19 insertions, 0 deletions
diff --git a/tests/test_numbers.py b/tests/test_numbers.py index 32f4280..50c53de 100644 --- a/tests/test_numbers.py +++ b/tests/test_numbers.py @@ -165,6 +165,25 @@ class NumberParsingTestCase(unittest.TestCase): self.assertRaises(numbers.NumberFormatError, lambda: numbers.parse_decimal('2,109,998', locale='de')) + def test_parse_decimal_strict_mode(self): + # Numbers with a misplaced grouping symbol should be rejected + with self.assertRaises(numbers.NumberFormatError): + numbers.parse_decimal('11.11', locale='de', strict=True) + # Partially grouped numbers should be rejected + with self.assertRaises(numbers.NumberFormatError): + numbers.parse_decimal('2000,000', locale='en_US', strict=True) + # Numbers with duplicate grouping symbols should be rejected + with self.assertRaises(numbers.NumberFormatError): + numbers.parse_decimal('0,,000', locale='en_US', strict=True) + # Properly formatted numbers should be accepted + assert str(numbers.parse_decimal('1.001', locale='de', strict=True)) == '1001' + # Trailing zeroes should be accepted + assert str(numbers.parse_decimal('3.00', locale='en_US', strict=True)) == '3.00' + # Numbers without any grouping symbol should be accepted + assert str(numbers.parse_decimal('2000.1', locale='en_US', strict=True)) == '2000.1' + # High precision numbers should be accepted + assert str(numbers.parse_decimal('5,000001', locale='fr', strict=True)) == '5.000001' + def test_list_currencies(): assert isinstance(list_currencies(), set) |