Started implementing object serialization
[sandbox] / serial / test.py
index 35bb800..72c7b35 100644 (file)
@@ -42,6 +42,33 @@ EXAMPLE_BINARY_REPRESENTATIONS = [
         ),
         b'\x30\x00\x00\x00\x03\x01\x03\x07'
     ),
+    (
+        tags.TaggedObject(
+            tag = tags.LIST,
+            instance = [
+                tags.TaggedObject(tag = tags.UINT8, instance = 9),
+                tags.TaggedObject(tag = tags.UINT8, instance = 22),
+                tags.TaggedObject(tag = tags.UINT8, instance = 36),
+            ],
+        ),
+        b'\x31\x03\x00\x00\x00\x03\x09\x16\x24',
+    ),
+    (
+        tags.TaggedObject(
+            tag = tags.OBJECT,
+            instance = [
+                (
+                    tags.TaggedObject(tag = tags.UTF8, instance = 'foo'),
+                    tags.TaggedObject(tag = tags.UTF8, instance = 'bar'),
+                ),
+                (
+                    tags.TaggedObject(tag = tags.UTF8, instance = 'baz'),
+                    tags.TaggedObject(tag = tags.UINT8, instance = 42),
+                ),
+            ],
+        ),
+        b'\x32\x21\x00\x00\x00\x03foo\x21\x00\x00\x00\x03bar\x00\x00\x00\x03baz\x03\x2a',
+    ),
 ]
 
 class BinarySerializeTests(unittest.TestCase):
@@ -72,6 +99,37 @@ EXAMPLE_TEXT_REPRESENTATIONS = [
     (tags.TaggedObject(tags.INT16, -2), '-2i16'),
     (tags.TaggedObject(tags.INT32, -2), '-2i32'),
     (tags.TaggedObject(tags.INT64, -2), '-2i64'),
+    (tags.TaggedObject(tags.BINARY, b'\x42\xde\xad\xbe\xef'), 'bin"42deadbeef"'),
+    (tags.TaggedObject(tags.UTF8, 'Lol!'), 'utf8"Lol!"'),
+    (tags.TaggedObject(tags.UTF16, 'かわ'), 'utf16"かわ"'),
+    (tags.TaggedObject(tags.UTF32, '漢'), 'utf32"漢"'),
+    (
+        tags.TaggedObject(
+            tag = tags.LIST,
+            instance = [
+                tags.TaggedObject(tag = tags.UINT8, instance = 9),
+                tags.TaggedObject(tag = tags.UINT8, instance = 22),
+                tags.TaggedObject(tag = tags.UINT8, instance = 36),
+            ],
+        ),
+        '[\n  9u8,\n  22u8,\n  36u8\n]'
+    ),
+    (
+        tags.TaggedObject(
+            tag = tags.OBJECT,
+            instance = [
+                (
+                    tags.TaggedObject(tag = tags.UTF8, instance = 'foo'),
+                    tags.TaggedObject(tag = tags.UTF8, instance = 'bar'),
+                ),
+                (
+                    tags.TaggedObject(tag = tags.UTF8, instance = 'baz'),
+                    tags.TaggedObject(tag = tags.UINT8, instance = 42),
+                ),
+            ],
+        ),
+        '{\n  utf8"foo": utf8"bar",\n  utf8"baz": 42u8\n}',
+    ),
 ]
 
 class TextSerializeTests(unittest.TestCase):