libcryfs/test/testutils/InMemoryFile.h
2015-04-25 16:43:37 +02:00

41 lines
890 B
C++

#pragma once
#ifndef BLOCKS_MESSMER_FSPP_TEST_TESTUTILS_INMEMORYFILE_H_
#define BLOCKS_MESSMER_FSPP_TEST_TESTUTILS_INMEMORYFILE_H_
#include <messmer/cpp-utils/data/Data.h>
class InMemoryFile {
public:
InMemoryFile(cpputils::Data data);
virtual ~InMemoryFile();
int read(void *buf, size_t count, off_t offset) const;
const void *data() const;
size_t size() const;
bool fileContentEquals(const cpputils::Data &expected, off_t offset) const;
protected:
cpputils::Data _data;
};
class WriteableInMemoryFile: public InMemoryFile {
public:
WriteableInMemoryFile(cpputils::Data data);
void write(const void *buf, size_t count, off_t offset);
bool sizeUnchanged() const;
bool regionUnchanged(off_t offset, size_t count) const;
private:
void _extendFileSizeIfNecessary(size_t size);
void _extendFileSize(size_t size);
cpputils::Data _originalData;
};
#endif