示例#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)
示例#2
0
    def save_signal(scenario_id, modality, signal):
        """Save signal
        Save a signal related to a specific scenario and modality
        ---
        tags:
          - signals
        parameters:
          - name: scenario_id
            in: path
            type: string
            required: true
            default: 'scenario_1'
          - name: modality
            in: path
            type: string
            enum: ['image', 'text', 'audio', 'video']
            required: true
            default: 'text'
          - name: signal
            in: path
            $ref: '#/definitions/Signals'
            required: true
            default: '4f0bbc71-2369-4d55-8dd0-b00e56c0f0b2'
        responses:
          200:
            description: Successful addition of signal of specific modality to a given scenario
        """
        signal_json = request.get_data(as_text=True)
        backend.save_signal(scenario_id, unmarshal(signal_json))

        return ""
示例#3
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)
示例#4
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")
示例#5
0
    def test_json_with_missing_property(self):
        @dataclass
        class TestString:
            label: Optional[str]

        unmarshalled = unmarshal("{}", cls=TestString)

        self.assertIsInstance(unmarshalled, TestString)
        self.assertEqual(unmarshalled.label, None)
示例#6
0
    def test_json_with_missing_property(self):
        @dataclass
        class TestString:
            label: Optional[str]

        unmarshalled = unmarshal("{}")

        self.assertNotIsInstance(unmarshalled, TestString)
        self.assertRaises(AttributeError, lambda: unmarshalled.label)
示例#7
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)
示例#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")
示例#9
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)
示例#10
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)
示例#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])
示例#12
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)
示例#13
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})
示例#14
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")
示例#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")
示例#16
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)
示例#17
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)