diff --git a/qctoolkit/serialization.py b/qctoolkit/serialization.py index ef486922d..57dda619a 100644 --- a/qctoolkit/serialization.py +++ b/qctoolkit/serialization.py @@ -16,7 +16,8 @@ import tempfile import json -__all__ = ["StorageBackend", "FilesystemBackend", "ZipFileBackend", "CachingBackend", "Serializable", "Serializer", "AnonymousSerializable"] +__all__ = ["StorageBackend", "FilesystemBackend", "ZipFileBackend", "CachingBackend", "Serializable", "Serializer", + "AnonymousSerializable", "DictBackend"] class StorageBackend(metaclass=ABCMeta): diff --git a/tests/serialization_tests.py b/tests/serialization_tests.py index 692b57c13..4782db65e 100644 --- a/tests/serialization_tests.py +++ b/tests/serialization_tests.py @@ -7,7 +7,7 @@ from typing import Optional, Dict, Any from qctoolkit.serialization import FilesystemBackend, Serializer, CachingBackend, Serializable, ExtendedJSONEncoder,\ - ZipFileBackend, AnonymousSerializable + ZipFileBackend, AnonymousSerializable, DictBackend from qctoolkit.pulses.table_pulse_template import TablePulseTemplate from qctoolkit.pulses.sequence_pulse_template import SequencePulseTemplate from qctoolkit.expressions import Expression @@ -281,6 +281,34 @@ def test_get_not_existing(self) -> None: self.caching_backend.get(name) +class DictBackendTests(unittest.TestCase): + def setUp(self): + self.backend =DictBackend() + + def test_put(self): + self.backend.put('a', 'data') + + self.assertEqual(self.backend.storage, {'a': 'data'}) + + with self.assertRaises(FileExistsError): + self.backend.put('a', 'data2') + + def test_get(self): + self.backend.put('a', 'data') + self.backend.put('b', 'data2') + + self.assertEqual(self.backend.get('a'), 'data') + self.assertEqual(self.backend.get('b'), 'data2') + + def test_exists(self): + self.backend.put('a', 'data') + self.backend.put('b', 'data2') + + self.assertTrue(self.backend.exists('a')) + self.assertTrue(self.backend.exists('b')) + self.assertFalse(self.backend.exists('c')) + + class SerializerTests(unittest.TestCase): def setUp(self) -> None: