class TestPageString(TestCase): def setUp(self): self.database = DB() self.storage = Storage(None, self.database) self.changeset = Changeset(self.database) self.changeset.add(DummyPage(self.database)) # fill page 0 def test_encode_decode_single_page_index(self): word = randomword(100) page = StringPageIndex(self.database, word, total_length=len(word)) page_copy = StringPageIndex(self.database) page_copy.unserialize(page.serialize()) self.assertEqual((page.total_length, page.next_page, page.data), (page_copy.total_length, page_copy.next_page, page_copy.data)) def test_encode_decode_single_page_noindex(self): word = randomword(100) page = StringPage(self.database, word) page_copy = StringPage(self.database) page_copy.unserialize(page.serialize()) self.assertEqual((page.next_page, page.data), (page_copy.next_page, page_copy.data)) def test_create_single_page(self): word = randomword(100) page_number = StringPageIndex.create(self.database, self.changeset, word) self.changeset.close() page = StringPageIndex(self.database) page.unserialize(self.storage.read(page_number)) self.assertEqual((page.total_length, page.next_page, page.data), (100, 0, word)) def test_create_multi_page(self): length = 2000 word = randomword(length) page_number = StringPageIndex.create(self.database, self.changeset, word) self.changeset.close() page = StringPageIndex(self.database) page.unserialize(self.storage.read(page_number)) self.assertEqual(page.total_length, length) data = page.data next_page = page.next_page while next_page > 0: page = StringPage(self.database) page.unserialize(self.storage.read(next_page)) data += page.data next_page = page.next_page self.assertEqual(len(data), len(word)) self.assertEqual(data, word)
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))
def setUp(self): self.database = DB() self.storage = Storage(None, self.database)
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])
def setUp(self): self.database = DB() self.storage = Storage(None, self.database) self.changeset = Changeset(self.database)
def setUp(self): self.database = DB() self.storage = Storage(None, self.database) self.changeset = Changeset(self.database) self.changeset.add(DummyPage(self.database)) # fill page 0