Parse binaries and UTF strings with leading whitespace
[ton] / test_don.py
index df62ff5..cc04df3 100644 (file)
@@ -245,15 +245,27 @@ 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',
             string.deserialize('"deadbeef"b'),
         )
 
+    def test_deserializes_binary_with_leading_whitespace(self):
+        self.assertEqual(
+            b'\xde\xad\xbe\xef',
+            string.deserialize(' \t\n"deadbeef"b'),
+        )
+
     def test_deserializes_utf8(self):
         self.assertEqual(
             "Hello, world",
@@ -272,6 +284,24 @@ class TestStringDeserialize(unittest.TestCase):
             string.deserialize('"Hello, world"utf32'),
         )
 
+    def test_deserializes_utf8_with_leading_whitespace(self):
+        self.assertEqual(
+            "Hello, world",
+            string.deserialize(' \t\n"Hello, world"utf8'),
+        )
+
+    def test_deserializes_utf16_with_leading_whitespace(self):
+        self.assertEqual(
+            "Hello, world",
+            string.deserialize(' \t\n"Hello, world"utf16'),
+        )
+
+    def test_deserializes_utf32_with_leading_whitespace(self):
+        self.assertEqual(
+            "Hello, world",
+            string.deserialize(' \t\n"Hello, world"utf32'),
+        )
+
     def test_deserializes_list(self):
         self.assertEqual(
             [1,2,3,4,5],