Example #1
0
    def test_with_nested_union(self):
        @dataclass
        class TestString:
            label: str

        @dataclass
        class TestInt:
            id: int

        @dataclass
        class NestTest:
            nested: Union[TestString, TestInt]

        instance = NestTest(TestString("testString"))
        unmarshalled = unmarshal(marshal(instance, cls=NestTest), cls=NestTest)

        self.assertIsInstance(unmarshalled, NestTest)
        self.assertIsInstance(unmarshalled.nested, TestString)
        self.assertEqual(unmarshalled.nested.label, "testString")

        instance = NestTest(TestInt(5))
        unmarshalled = unmarshal(marshal(instance, cls=NestTest), cls=NestTest)

        self.assertIsInstance(unmarshalled, NestTest)
        self.assertIsInstance(unmarshalled.nested, TestInt)
        self.assertEqual(unmarshalled.nested.id, 5)
Example #2
0
    def test_type_unsupported_by_serializer(self):
        @dataclass
        class TestString:
            label: uuid.UUID

        instance = TestString(uuid.uuid4())
        self.assertRaises(TypeError, lambda: marshal(instance, default=vars))

        unmarshalled = unmarshal(marshal(instance, cls=TestString), cls=TestString)
        self.assertIsInstance(unmarshalled, TestString)
        self.assertIsInstance(unmarshalled.label, uuid.UUID)
Example #3
0
    def test_json_ld(self):
        for instance in CONTAINER_INSTANCES + SCENARIO_INSTANCES:
            with self.subTest(str(instance.__class__.__name__)):
                serialized = marshal(instance, cls=instance.__class__)
                graph = rdflib.Graph()
                graph.parse(data=serialized, format="json-ld")

                self.assertGreater(len(graph), 0)
Example #4
0
    def test_marshalling_scenario(self):
        instances = SCENARIO_INSTANCES

        for instance in instances:
            with self.subTest(str(instance.__class__.__name__)):
                serialized = marshal(instance, cls=instance.__class__)
                clone = unmarshal(serialized, cls=instance.__class__)
                self.assertEqual(instance, clone)
Example #5
0
    def test_unmarshall_without_type(self):
        @emissor_dataclass
        class TestString:
            label: str

        instance = TestString("testString")
        unmarshalled = unmarshal(marshal(instance, cls=TestString))

        self.assertEqual(unmarshalled.label, "testString")
Example #6
0
    def test_set(self):
        @dataclass(frozen=True)
        class TestString:
            label: str

        instance = {TestString("test1"), TestString("test2")}
        unmarshalled = unmarshal(marshal(instance, cls=TestString), cls=TestString)

        self.assertIsInstance(unmarshalled, list)
        self.assertSetEqual(set(unmarshalled), instance)
Example #7
0
    def test_list(self):
        @dataclass(frozen=True)
        class TestString:
            label: str

        instance = [TestString("test1"), TestString("test2")]
        unmarshalled = unmarshal(marshal(instance, cls=TestString), cls=TestString)

        self.assertIsInstance(unmarshalled, list)
        self.assertListEqual(unmarshalled, instance)
Example #8
0
    def test_plain(self):
        @dataclass
        class TestString:
            label: str

        instance = TestString("testString")
        unmarshalled = unmarshal(marshal(instance), cls=TestString)

        self.assertIsInstance(unmarshalled, TestString)
        self.assertEqual(unmarshalled.label, "testString")
Example #9
0
    def test_with_none_value(self):
        @dataclass
        class TestString:
            label: Optional[str]

        instance = TestString(None)
        unmarshalled = unmarshal(marshal(instance, cls=TestString), cls=TestString)

        self.assertIsInstance(unmarshalled, TestString)
        self.assertEqual(unmarshalled.label, None)
Example #10
0
    def test_set(self):
        @dataclass(frozen=True)
        class TestString:
            label: str

        instance = {TestString("test1"), TestString("test2")}
        json = marshal(instance)
        unmarshalled = unmarshal(json)

        self.assertIsInstance(unmarshalled, list)
        self.assertSetEqual({u.label for u in unmarshalled}, {i.label for i in instance})
Example #11
0
    def test_list(self):
        @dataclass(frozen=True)
        class TestString:
            label: str

        instance = [TestString("test1"), TestString("test2")]
        json = marshal(instance)
        unmarshalled = unmarshal(json)

        self.assertIsInstance(unmarshalled, list)
        self.assertListEqual([u.label for u in unmarshalled], [i.label for i in instance])
Example #12
0
    def test_plain(self):
        @dataclass
        class TestString:
            label: str
            json_ld_context: Union[str, dict]

        instance = TestString("testString", {'id': '@id'})

        unmarshalled = unmarshal(marshal(instance, cls=TestString), cls=TestString)

        self.assertIsInstance(unmarshalled, TestString)
        self.assertEqual(unmarshalled.label, "testString")
Example #13
0
    def test_separator(self):
        @emissor_dataclass(separator="/")
        class TestString:
            label: str = LdProperty(alias="name")

        instance = TestString("testString")
        json_string = marshal(instance, cls=TestString)

        obj_dict = json.loads(json_string)
        type_ = obj_dict["@type"]
        context = obj_dict["@context"]

        self.assertEqual("TestString", type_)
        self.assertEqual(EMISSOR_NAMESPACE + "/" + "TestString", context["TestString"])
        self.assertEqual(EMISSOR_NAMESPACE + "/" + "name", context["label"])
Example #14
0
    def test_plain(self):
        @emissor_dataclass
        class TestString:
            label: str

        instance = TestString("testString")
        json_string = marshal(instance, cls=TestString)

        obj_dict = json.loads(json_string)
        type_ = obj_dict["@type"]
        context = obj_dict["@context"]

        self.assertEqual("TestString", type_)
        self.assertEqual(EMISSOR_NAMESPACE + "#" + "TestString", context["TestString"])
        self.assertEqual(EMISSOR_NAMESPACE + "#" + "label", context["label"])
Example #15
0
    def test_with_nested(self):
        @dataclass
        class TestString:
            label: str

        @dataclass
        class NestTest:
            nested: TestString

        instance = NestTest(TestString("testString"))
        unmarshalled = unmarshal(marshal(instance, cls=NestTest), cls=NestTest)

        self.assertIsInstance(unmarshalled, NestTest)
        self.assertIsInstance(unmarshalled.nested, TestString)
        self.assertEqual(unmarshalled.nested.label, "testString")
Example #16
0
    def test_marshalling_array_container(self):
        array_container = ArrayContainer.from_array(np.array([[1.1, 2.2], [3.3, 4.4]]))

        clone = unmarshal(marshal(array_container, cls=ArrayContainer), cls=ArrayContainer)

        assert_array_equal(array_container.array, clone.array)
Example #17
0
 def _serialize(self, value, attr, obj, **kwargs):
     return marshal(value, cls=value.__class__)
Example #18
0
 def json_response(*args, **kwargs):
     return app.response_class(response=marshal(*args, **kwargs),
                               status=200,
                               mimetype='application/json')
Example #19
0
 def test_marshalling_containers(self):
     for instance in CONTAINER_INSTANCES:
         with self.subTest(str(instance.__class__.__name__)):
             serialized = marshal(instance, cls=instance.__class__)
             clone = unmarshal(serialized, cls=instance.__class__)
             self.assertEqual(instance, clone)