From f461858f81b5a603f02a15ab733f2fbf0cf6a2c2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=8E=8A=E9=9B=B2=E5=87=B1?= Date: Fri, 6 Oct 2017 10:21:17 +0800 Subject: [PATCH 1/3] [Serialization] Impl Serializer interface --- serialization/serializer.py | 10 ++++++++++ 1 file changed, 10 insertions(+) create mode 100644 serialization/serializer.py diff --git a/serialization/serializer.py b/serialization/serializer.py new file mode 100644 index 0000000..4e0597b --- /dev/null +++ b/serialization/serializer.py @@ -0,0 +1,10 @@ +class Serializer: + def __init__(self, serialize_obj): + self.serialize_obj = serialize_obj + + def serialize(self, data): + return self.serialize_obj.serialize(data) + + def deserialize(self, data): + return self.serialize_obj.deserialize(data) + From 6dc0f591d52c33f8767cd3b3fb410119f7923817 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=8E=8A=E9=9B=B2=E5=87=B1?= Date: Fri, 6 Oct 2017 10:26:42 +0800 Subject: [PATCH 2/3] [Serialization] Impl json Serializer The serializer in Json convert python dict to string(raw data), and deserializer convert string(raw data) to python dict. --- serialization/json/json.py | 14 ++++++++++++++ 1 file changed, 14 insertions(+) create mode 100644 serialization/json/json.py diff --git a/serialization/json/json.py b/serialization/json/json.py new file mode 100644 index 0000000..facb8c7 --- /dev/null +++ b/serialization/json/json.py @@ -0,0 +1,14 @@ +import json + + +class Json: + + def serialize(data): + if type(data) is dict: + return json.dumps(data) + + def deserialize(data): + if type(data) is str: + return json.loads(data) + + From 22acb5cadbe3570e5608e927ea3e033fcb3af638 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=8E=8A=E9=9B=B2=E5=87=B1?= Date: Fri, 6 Oct 2017 10:32:18 +0800 Subject: [PATCH 3/3] [test][Serialization] Test json serializer by converting format Test json serializer by converting between python dict and raw json data. --- Makefile | 1 + tests/serialization_test.py | 23 +++++++++++++++++++++ tests/testsuites/serialization/test_json.py | 12 +++++++++++ 3 files changed, 36 insertions(+) create mode 100644 tests/serialization_test.py create mode 100644 tests/testsuites/serialization/test_json.py diff --git a/Makefile b/Makefile index 60510ef..5bfebc0 100644 --- a/Makefile +++ b/Makefile @@ -14,6 +14,7 @@ all: check: $(PYTHON) -m unittest \ + $(TEST).serialization_test \ $(TEST).scheduler_test \ $(TEST).roulette_test # $(TEST).reader_test \ diff --git a/tests/serialization_test.py b/tests/serialization_test.py new file mode 100644 index 0000000..e452f78 --- /dev/null +++ b/tests/serialization_test.py @@ -0,0 +1,23 @@ +import unittest +import json +from tests.testsuites.serialization.test_json import * + + +class SerializationTestcase(unittest.TestCase): + def setUp(self): + self.raw_data = "{\"name\":\"john\",\"age\":22,\"class\":\"mca\"}" + self.dict_data = {'age': 22, 'class': 'mca', 'name': 'john'} + + assert self.raw_data != '' + assert self.dict_data != None + + def test_json_serialize(self): + expected = self.raw_data + result = json_serialize(self.dict_data) + self.assertDictEqual(json_deserialize( + expected), json_deserialize(result)) + + def test_json_deserialize(self): + expected = self.dict_data + result = json_deserialize(self.raw_data) + self.assertDictEqual(expected, result) diff --git a/tests/testsuites/serialization/test_json.py b/tests/testsuites/serialization/test_json.py new file mode 100644 index 0000000..200751f --- /dev/null +++ b/tests/testsuites/serialization/test_json.py @@ -0,0 +1,12 @@ +from serialization import serializer +from serialization.json import json + + +def json_serialize(dict_data): + Serializer = serializer.Serializer(json.Json) + return Serializer.serialize(dict_data) + + +def json_deserialize(raw_data): + Serializer = serializer.Serializer(json.Json) + return Serializer.deserialize(raw_data)