Since I don't have any actual unit tests for the persistence code yet, I'll start off by making some. In the process, I have to figure out how persistence will actually work. The following code goes in tests/test_persistence.py
:
from unittest import TestCase from planner.persistence import File class test_file(TestCase): def test_basic(self): storage = File(':memory:') storage.store_object('tag1', ('some object',)) self.assertEqual(tuple(storage.load_objects('tag1')), (('some object',),)) def test_multiple_tags(self): storage = File(':memory:') storage.store_object('tag1', 'A') storage.store_object('tag2', 'B') storage.store_object('tag1', 'C') storage.store_object('tag1', 'D') storage.store_object('tag3', 'E') storage.store_object('tag3', 'F') self.assertEqual(set(storage.load_objects('tag1')), set(['A', 'C', 'D'])) self.assertEqual(set(storage.load_objects('tag2')), set(['B'])) self.assertEqual(set(storage.load_objects('tag3')), set(['E', 'F']))
Looking at each of the important sections of the test code, we see the following:
def test_basic(self): storage = File(':memory:') storage.store_object('tag1', ('some object',)) self.assertEqual(tuple(storage.load_objects('tag1')), (('some object',),))
The test_basic
test creates File
, stores a single object under the name 'tag1'
, and then loads that object back from storage and checks whether it is equal to the original object. It really is a very basic test, but it covers the simple use case.
def test_multiple_tags(self): storage = File(':memory:') storage.store_object('tag1', 'A') storage.store_object('tag2', 'B') storage.store_object('tag1', 'C') storage.store_object('tag1', 'D') storage.store_object('tag3', 'E') storage.store_object('tag3', 'F') self.assertEqual(set(storage.load_objects('tag1')), set(['A', 'C', 'D'])) self.assertEqual(set(storage.load_objects('tag2')), set(['B'])) self.assertEqual(set(storage.load_objects('tag3')), set(['E', 'F']))
The test_multiple_tags
test creates a storage, and then stores multiple objects in it, some with duplicate tags. It then checks whether the storage keeps all of the objects with a given tag, and returns all of them on request.
In other words, all these tests define the persistence file as a multimap from string keys to object values.
3.145.166.149