class TestStorageFile(TestCase): def setUp(self): self.database = DB() self.storage = Storage(None, self.database) def test_read(self): data = [] for i in range(0, 1): word = randomword(512) self.storage.pages[i] = word data.append(word) for i in range(0, 1): self.assertEqual(self.storage.read(i), data[i]) def test_write(self): data = [] for i in range(0, 4): d = randomword(512) data.append((i, d)) self.storage.write(data) self.assertEqual("".join(self.storage.pages.values()), "".join(d[1] for d in data))
class TestChangeset(TestCase): def setUp(self): self.database = DB() self.storage = Storage(None, self.database) self.changeset = Changeset(self.database) def test_get_page(self): data = {} for i in range(0, 2): word = randomword(512) self.storage.write(((i, word), )) data[i] = word for i in range(0, 2): page = self.changeset.read(i, DummyPage) self.assertEqual(page.data, data[i]) def test_get_page_reversed(self): data = {} for i in range(0, 2): word = randomword(512) self.storage.write(((i, word), )) data[i] = word self.changeset.close() for i in reversed(range(0, 2)): page = self.changeset.read(i, DummyPage) self.assertEqual(page.data, data[i]) def test_get_page_twice(self): data = {} for i in range(0, 2): word = randomword(512) self.storage.write(((i, word), )) data[i] = word self.changeset.close() pages = [] for i in range(0, 2): pages.append(self.changeset.read(i, DummyPage)) for i in range(0, 2): self.assertIs(self.changeset.read(i, DummyPage), pages[i]) def test_write_page(self): data = {} for i in range(0, 2): word = randomword(512) self.changeset.write(i, DummyPage(self.database, word)) data[i] = word self.changeset.close() for i in range(0, 2): page = self.storage.read(i) self.assertEqual(page, data[i]) def test_add(self): data = {} for i in range(1, 2): word = randomword(512) self.changeset.add(DummyPage(self.database, word)) data[i] = word self.changeset.close() for i in range(1, 2): page = self.storage.read(i) self.assertEqual(page, data[i]) def test_add_db_freelist1(self): self.do_test_add_db_freelist(1) def test_add_db_freelist2(self): self.do_test_add_db_freelist(1) def test_add_db_freelist3(self): self.do_test_add_db_freelist(1) def do_test_add_db_freelist(self, freelist_key): data = {} for i in range(0, 3): word = randomword(512) self.changeset.add(DummyPage(self.database, word)) data[i] = word self.database.freelist_item = freelist_key word = randomword(512) self.changeset.add(DummyPage(self.database, word)) data[freelist_key] = word self.changeset.close() for i in range(1, 3): page = self.storage.read(i) self.assertEqual(page, data[i]) def test_add_changeset_freelist1(self): self.do_test_add_changeset_freelist(1) def test_add_changeset_freelist2(self): self.do_test_add_changeset_freelist(2) def do_test_add_changeset_freelist(self, freelist_key): data = {} for i in range(0, 3): word = randomword(512) self.changeset.add(DummyPage(self.database, word)) data[i] = word self.changeset.freelist_item = freelist_key word = randomword(512) self.changeset.add(DummyPage(self.database, word)) data[freelist_key] = word self.changeset.close() for i in range(1, 3): page = self.storage.read(i) self.assertEqual(page, data[i])