libcryfs/test/implementations/onblocks/BlobReadWriteTest.cpp

47 lines
1.2 KiB
C++
Raw Normal View History

#include "testutils/BlobStoreTest.h"
#include <messmer/blockstore/utils/Data.h>
2015-03-06 16:54:49 +01:00
#include "../../testutils/DataBlockFixture.h"
using std::unique_ptr;
using namespace blobstore;
using blockstore::Key;
using blockstore::Data;
class BlobReadWriteTest: public BlobStoreTest {
public:
2015-03-06 16:54:49 +01:00
static constexpr uint32_t LARGE_SIZE = 10 * 1024 * 1024;
BlobReadWriteTest()
:randomData(LARGE_SIZE),
blob(blobStore->create()) {
}
Data readBlob(const Blob &blob) {
Data data(blob.size());
blob.read(data.data(), 0, data.size());
return data;
}
DataBlockFixture randomData;
unique_ptr<Blob> blob;
};
2015-03-06 16:54:49 +01:00
constexpr uint32_t BlobReadWriteTest::LARGE_SIZE;
TEST_F(BlobReadWriteTest, WritingImmediatelyFlushes_SmallSize) {
blob->resize(5);
blob->write(randomData.data(), 0, 5);
auto loaded = blobStore->load(blob->key());
EXPECT_EQ(0, std::memcmp(readBlob(*loaded).data(), randomData.data(), 5));
}
TEST_F(BlobReadWriteTest, WritingImmediatelyFlushes_LargeSize) {
blob->resize(LARGE_SIZE);
blob->write(randomData.data(), 0, LARGE_SIZE);
auto loaded = blobStore->load(blob->key());
EXPECT_EQ(0, std::memcmp(readBlob(*loaded).data(), randomData.data(), LARGE_SIZE));
}
//TODO Test read/write
//TODO Test read/write with loading inbetween