diff --git a/test/blockstore/testutils/BlockStoreTest.h b/test/blockstore/testutils/BlockStoreTest.h index a5ce6899..abf8d5a7 100644 --- a/test/blockstore/testutils/BlockStoreTest.h +++ b/test/blockstore/testutils/BlockStoreTest.h @@ -3,7 +3,7 @@ #define MESSMER_BLOCKSTORE_TEST_IMPLEMENTATIONS_TESTUTILS_BLOCKSTORETEST_H_ #include - +#include #include "blockstore/interface/BlockStore.h" class BlockStoreTestFixture { @@ -23,6 +23,19 @@ public: ); ConcreteBlockStoreTestFixture fixture; + + void TestBlockIsUsable(cpputils::unique_ref block, blockstore::BlockStore *blockStore) { + // Write full block space and check it was correctly written + cpputils::Data fixture = cpputils::DataFixture::generate(block->size()); + block->write(fixture.data(), 0, fixture.size()); + EXPECT_EQ(0, std::memcmp(fixture.data(), block->data(), fixture.size())); + + // Store and reload block and check data is still correct + auto key = block->key(); + cpputils::destruct(std::move(block)); + block = blockStore->load(key).value(); + EXPECT_EQ(0, std::memcmp(fixture.data(), block->data(), fixture.size())); + } }; TYPED_TEST_CASE_P(BlockStoreTest);