From 48f2c79ec8219c35f46f42809cbaa4f2bfb8f9ae Mon Sep 17 00:00:00 2001 From: David Kerkeslager Date: Fri, 14 Apr 2017 11:49:11 -0400 Subject: [PATCH] Parse floats/doubles with leading whitespace --- don/string.py | 2 ++ test_don.py | 6 ++++++ 2 files changed, 8 insertions(+) diff --git a/don/string.py b/don/string.py index 1e930ac..f77eab7 100644 --- a/don/string.py +++ b/don/string.py @@ -106,6 +106,7 @@ def _make_integer_parser(width): _BINARY32_MATCHER = re.compile(r'(-?\d+\.\d+)f') _BINARY64_MATCHER = re.compile(r'(-?\d+\.\d+)d') +@_consume_leading_whitespace def _binary32_parser(s): match = _BINARY32_MATCHER.match(s) @@ -119,6 +120,7 @@ def _binary32_parser(s): return _shared._FAILED_PARSE_RESULT +@_consume_leading_whitespace def _binary64_parser(s): match = _BINARY64_MATCHER.match(s) diff --git a/test_don.py b/test_don.py index df62ff5..bdcc8dd 100644 --- a/test_don.py +++ b/test_don.py @@ -245,9 +245,15 @@ class TestStringDeserialize(unittest.TestCase): def test_deserializes_float(self): self.assertEqual(1.0, string.deserialize('1.0f')) + def test_deserializes_float_with_leading_whitspace(self): + self.assertEqual(1.0, string.deserialize(' \t\n1.0f')) + def test_deserializes_double(self): self.assertEqual(1.0, string.deserialize('1.0d')) + def test_deserializes_double_with_leading_whitespace(self): + self.assertEqual(1.0, string.deserialize(' \t\n1.0d')) + def test_deserializes_binary(self): self.assertEqual( b'\xde\xad\xbe\xef', -- 2.20.1