Moved binary into a submodule
[sandbox] / serial / test_binary.py
index 2223ef8..504f9c2 100644 (file)
@@ -1,84 +1,59 @@
 import unittest
 
-import binary
+from serial import binary
 
-class SerializeTests(unittest.TestCase):
-    def test_serializes_tag_only_types(self):
-        self.assertEqual(
-            binary.serialize(binary.TaggedObject(
-                tag = binary.TAG_NULL,
-                instance = None,
-            )),
-            b'\x00',
-        )
-        self.assertEqual(
-            binary.serialize(binary.TaggedObject(
-                tag = binary.TAG_TRUE,
-                instance = True,
-            )),
-            b'\x01',
-        )
-        self.assertEqual(
-            binary.serialize(binary.TaggedObject(
-                tag = binary.TAG_FALSE,
-                instance = False,
-            )),
-            b'\x02',
-        )
-
-    def test_serializes_unsigned_integer_types(self):
-        self.assertEqual(
-            binary.serialize(binary.TaggedObject(
-                tag = binary.TAG_UINT8,
-                instance = 7,
-            )),
-            b'\x03\x07',
-        )
-        self.assertEqual(
-            binary.serialize(binary.TaggedObject(
-                tag = binary.TAG_UINT16,
-                instance = 7,
-            )),
-            b'\x04\x00\x07',
-        )
-        self.assertEqual(
-            binary.serialize(binary.TaggedObject(
-                tag = binary.TAG_UINT32,
-                instance = 7,
-            )),
-            b'\x05\x00\x00\x00\x07',
-        )
-        self.assertEqual(
-            binary.serialize(binary.TaggedObject(
-                tag = binary.TAG_UINT64,
-                instance = 7,
-            )),
-            b'\x06\x00\x00\x00\x00\x00\x00\x00\x07',
-        )
+EXAMPLE_REPRESENTATIONS = [
+    (binary.TaggedObject(binary.TAG_NULL, None), b'\x00'),
+    (binary.TaggedObject(binary.TAG_TRUE, True), b'\x01'),
+    (binary.TaggedObject(binary.TAG_FALSE, False), b'\x02'),
+    (binary.TaggedObject(binary.TAG_UINT8, 7), b'\x03\x07'),
+    (binary.TaggedObject(binary.TAG_UINT16, 7), b'\x04\x00\x07'),
+    (binary.TaggedObject(binary.TAG_UINT32, 7), b'\x05\x00\x00\x00\x07'),
+    (binary.TaggedObject(binary.TAG_UINT64, 7), b'\x06\x00\x00\x00\x00\x00\x00\x00\x07'),
+    (binary.TaggedObject(binary.TAG_INT8, 7), b'\x10\x07'),
+    (binary.TaggedObject(binary.TAG_INT16, 7), b'\x11\x00\x07'),
+    (binary.TaggedObject(binary.TAG_INT32, 7), b'\x12\x00\x00\x00\x07'),
+    (binary.TaggedObject(binary.TAG_INT64, 7), b'\x13\x00\x00\x00\x00\x00\x00\x00\x07'),
+    (binary.TaggedObject(binary.TAG_UINT8, 254), b'\x03\xfe'),
+    (binary.TaggedObject(binary.TAG_UINT16, 65534), b'\x04\xff\xfe'),
+    (binary.TaggedObject(binary.TAG_UINT32, 4294967294), b'\x05\xff\xff\xff\xfe'),
+    (binary.TaggedObject(binary.TAG_UINT64, 18446744073709551614), b'\x06\xff\xff\xff\xff\xff\xff\xff\xfe'),
+    (binary.TaggedObject(binary.TAG_INT8, -2), b'\x10\xfe'),
+    (binary.TaggedObject(binary.TAG_INT16, -2), b'\x11\xff\xfe'),
+    (binary.TaggedObject(binary.TAG_INT32, -2), b'\x12\xff\xff\xff\xfe'),
+    (binary.TaggedObject(binary.TAG_INT64, -2), b'\x13\xff\xff\xff\xff\xff\xff\xff\xfe'),
+    (binary.TaggedObject(binary.TAG_BINARY, b'\xde\xad\xbe\xef'), b'\x20\x00\x00\x00\x04\xde\xad\xbe\xef'),
+    (binary.TaggedObject(binary.TAG_UTF8, 'Lol!'), b'\x21\x00\x00\x00\x04Lol!'),
+    (binary.TaggedObject(binary.TAG_UTF16, 'かわ'), b'\x22\x00\x00\x00\x06\xff\xfeK0\x8f0'),
+    (binary.TaggedObject(binary.TAG_UTF32, '漢'), b'\x23\x00\x00\x00\x08\xff\xfe\x00\x00"o\x00\x00'),
+    (
+        binary.TaggedObject(
+            binary.TAG_TUPLE,
+            (
+                binary.TaggedObject(
+                    binary.TAG_TRUE,
+                    True,
+                ),
+                binary.TaggedObject(
+                    binary.TAG_UINT8,
+                    7,
+                ),
+            ),
+        ),
+        b'\x30\x00\x00\x00\x03\x01\x03\x07'
+    ),
+]
 
+class SerializeTests(unittest.TestCase):
+    def test_serialize(self):
+        for tagged_object, expected in EXAMPLE_REPRESENTATIONS:
+            actual = binary.serialize(tagged_object)
+            self.assertEqual(expected, actual)
 
 class DeserializeTests(unittest.TestCase):
-    def test_deserializes_tag_only_types(self):
-        self.assertEqual(
-            binary.deserialize(b'\x00'),
-            binary.TaggedObject(
-                tag = binary.TAG_NULL,
-                instance = None,
-            ),
-        )
-        self.assertEqual(
-            binary.deserialize(b'\x01'),
-            binary.TaggedObject(
-                tag = binary.TAG_TRUE,
-                instance = True,
-            ),
-        )
-        self.assertEqual(
-            binary.deserialize(b'\x02'),
-            binary.TaggedObject(
-                tag = binary.TAG_FALSE,
-                instance = False,
-            )
-        )
+    def test_deserialize(self):
+        for expected, representation in EXAMPLE_REPRESENTATIONS:
+            actual = binary.deserialize(representation)
+            self.assertEqual(expected, actual)
 
 unittest.main()