summaryrefslogtreecommitdiff
path: root/tests
diff options
context:
space:
mode:
authorCharly C <changaco@changaco.oy.lc>2018-06-16 11:09:13 +0200
committerChangaco <changaco@changaco.oy.lc>2018-06-17 09:10:32 +0200
commitf7ac6530a70ad3b58a85add5ace83131777beb83 (patch)
tree8513c2e56b8a374f57ee4620ab7b2e37def8f013 /tests
parenta3ef3c0fc13a0f1976019fcf1975ab588d8a2cb9 (diff)
downloadbabel-f7ac6530a70ad3b58a85add5ace83131777beb83.tar.gz
add a `strict` mode to `parse_decimal()`
Fixes https://github.com/python-babel/babel/issues/589
Diffstat (limited to 'tests')
-rw-r--r--tests/test_numbers.py19
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)