コード例 #1
0
class TablePulseTemplateSerializationTests(unittest.TestCase):
    def setUp(self) -> None:
        self.serializer = DummySerializer(lambda x: dict(name=x.name),
                                          lambda x: x.name,
                                          lambda x: x['name'])
        self.entries = dict(A=[('foo', 2, 'hold'), ('hugo', 'ilse', 'linear')],
                            B=[(0, 5, 'hold'), (1, 7, 'jump'),
                               ('k', 't', 'hold')])
        self.measurements = [('m', 1, 1), ('foo', 'z', 'o')]
        self.template = TablePulseTemplate(
            entries=self.entries,
            measurements=self.measurements,
            identifier='foo',
            parameter_constraints=['ilse>2', 'k>foo'])
        self.expected_data = dict(
            type=self.serializer.get_type_identifier(self.template))
        self.maxDiff = None

    def test_get_serialization_data(self) -> None:
        expected_data = dict(measurements=self.measurements,
                             entries=self.entries,
                             parameter_constraints=[
                                 str(Expression('ilse>2')),
                                 str(Expression('k>foo'))
                             ])

        data = self.template.get_serialization_data(self.serializer)
        self.assertEqual(expected_data, data)

    def test_deserialize(self) -> None:
        data = dict(measurements=self.measurements,
                    entries=self.entries,
                    parameter_constraints=['ilse>2', 'k>foo'],
                    identifier='foo')

        # deserialize
        template = TablePulseTemplate.deserialize(self.serializer, **data)

        self.assertEqual(template.entries, self.template.entries)
        self.assertEqual(template.measurement_declarations,
                         self.template.measurement_declarations)
        self.assertEqual(template.parameter_constraints,
                         self.template.parameter_constraints)

    def test_serializer_integration(self):
        serializer = Serializer(DummyStorageBackend())
        serializer.serialize(self.template)
        template = serializer.deserialize('foo')

        self.assertIsInstance(template, TablePulseTemplate)
        self.assertEqual(template.entries, self.template.entries)
        self.assertEqual(template.measurement_declarations,
                         self.template.measurement_declarations)
        self.assertEqual(template.parameter_constraints,
                         self.template.parameter_constraints)
コード例 #2
0
class TablePulseTemplateSerializationTests(unittest.TestCase):

    def setUp(self) -> None:
        self.serializer = DummySerializer(lambda x: dict(name=x.name), lambda x: x.name, lambda x: x['name'])
        self.template = TablePulseTemplate(measurement=True, identifier='foo')
        self.expected_data = dict(type=self.serializer.get_type_identifier(self.template))

    def test_get_serialization_data(self) -> None:
        self.template.add_entry('foo', 2)
        self.template.add_entry('hugo', 'ilse', interpolation='linear')

        self.expected_data['is_measurement_pulse'] = True
        self.expected_data['time_parameter_declarations'] = [dict(name='foo'), dict(name='hugo')]
        self.expected_data['voltage_parameter_declarations'] = [dict(name='ilse')]
        self.expected_data['entries'] = [[(0, 0, 'hold'), ('foo', 2, 'hold'), ('hugo', 'ilse', 'linear')]]
        data = self.template.get_serialization_data(self.serializer)
        self.assertEqual(self.expected_data, data)

    def test_deserialize(self) -> None:
        data = dict(is_measurement_pulse=True,
                    time_parameter_declarations=[dict(name='hugo'), dict(name='foo')],
                    voltage_parameter_declarations=[dict(name='ilse')],
                    entries=[[(0, 0, 'hold'), ('foo', 2, 'hold'), ('hugo', 'ilse', 'linear')]],
                    identifier='foo')

        # prepare dependencies for deserialization
        self.serializer.subelements['foo'] = ParameterDeclaration('foo')
        self.serializer.subelements['hugo'] = ParameterDeclaration('hugo')
        self.serializer.subelements['ilse'] = ParameterDeclaration('ilse')

        # deserialize
        template = TablePulseTemplate.deserialize(self.serializer, **data)

        # prepare expected parameter declarations
        self.serializer.subelements['foo'].min_value = 0
        self.serializer.subelements['foo'].max_value = self.serializer.subelements['hugo']
        all_declarations = set(self.serializer.subelements.values())

        # prepare expected entries
        entries = [[(0, 0, HoldInterpolationStrategy()),
                   (self.serializer.subelements['foo'], 2, HoldInterpolationStrategy()),
                   (self.serializer.subelements['hugo'], self.serializer.subelements['ilse'], LinearInterpolationStrategy())]]

        # compare!
        self.assertEqual(all_declarations, template.parameter_declarations)
        self.assertEqual({'foo', 'hugo', 'ilse'}, template.parameter_names)
        self.assertEqual(entries, template.entries)
        self.assertEqual('foo', template.identifier)
コード例 #3
0
class TablePulseTemplateSerializationTests(unittest.TestCase):

    def setUp(self) -> None:
        self.serializer = DummySerializer(lambda x: dict(name=x.name), lambda x: x.name, lambda x: x['name'])
        self.template = TablePulseTemplate(measurement=True, identifier='foo')
        self.expected_data = dict(type=self.serializer.get_type_identifier(self.template))

    def test_get_serialization_data(self) -> None:
        self.template.add_entry('foo', 2)
        self.template.add_entry('hugo', 'ilse', interpolation='linear')

        self.expected_data['is_measurement_pulse'] = True
        self.expected_data['time_parameter_declarations'] = [dict(name='foo'), dict(name='hugo')]
        self.expected_data['voltage_parameter_declarations'] = [dict(name='ilse')]
        self.expected_data['entries'] = [(0, 0, 'hold'), ('foo', 2, 'hold'), ('hugo', 'ilse', 'linear')]
        self.assertEqual(self.expected_data, self.template.get_serialization_data(self.serializer))

    def test_deserialize(self) -> None:
        data = dict(is_measurement_pulse=True,
                    time_parameter_declarations=[dict(name='hugo'), dict(name='foo')],
                    voltage_parameter_declarations=[dict(name='ilse')],
                    entries=[(0, 0, 'hold'), ('foo', 2, 'hold'), ('hugo', 'ilse', 'linear')],
                    identifier='foo')

        # prepare dependencies for deserialization
        self.serializer.subelements['foo'] = ParameterDeclaration('foo')
        self.serializer.subelements['hugo'] = ParameterDeclaration('hugo')
        self.serializer.subelements['ilse'] = ParameterDeclaration('ilse')

        # deserialize
        template = TablePulseTemplate.deserialize(self.serializer, **data)

        # prepare expected parameter declarations
        self.serializer.subelements['foo'].min_value = 0
        self.serializer.subelements['foo'].max_value = self.serializer.subelements['hugo']
        all_declarations = set(self.serializer.subelements.values())

        # prepare expected entries
        entries = [(0, 0, HoldInterpolationStrategy()),
                   (self.serializer.subelements['foo'], 2, HoldInterpolationStrategy()),
                   (self.serializer.subelements['hugo'], self.serializer.subelements['ilse'], LinearInterpolationStrategy())]

        # compare!
        self.assertEqual(all_declarations, template.parameter_declarations)
        self.assertEqual({'foo', 'hugo', 'ilse'}, template.parameter_names)
        self.assertEqual(entries, template.entries)
        self.assertEqual('foo', template.identifier)