self._defaults = {}
# determines whether an "option" looks like a negative number
- self._negative_number_matcher = _re.compile(r'^-\d+$|^-\d*\.\d+$')
+ self._negative_number_matcher = _re.compile(r'^-\d[\d_]*(\.\d[\d_]*)?$')
# whether or not there are any optionals that look like negative
# numbers -- uses a list so it can be shared and edited
]
+class TestNegativeNumber(ParserTestCase):
+ """Test parsing negative numbers"""
+
+ argument_signatures = [
+ Sig('--int', type=int),
+ Sig('--float', type=float),
+ ]
+ failures = [
+ '--float -_.45',
+ '--float -1__000.0',
+ '--int -1__000',
+ ]
+ successes = [
+ ('--int -1000 --float -1000.0', NS(int=-1000, float=-1000.0)),
+ ('--int -1_000 --float -1_000.0', NS(int=-1000, float=-1000.0)),
+ ('--int -1_000_000 --float -1_000_000.0', NS(int=-1000000, float=-1000000.0)),
+ ('--float -1_000.0', NS(int=None, float=-1000.0)),
+ ('--float -1_000_000.0_0', NS(int=None, float=-1000000.0)),
+ ]
+
class TestInvalidAction(TestCase):
"""Test invalid user defined Action"""