libcryfs/src/test/testutils/VirtualTestFile.h

48 lines
1.0 KiB
C
Raw Normal View History

#pragma once
#ifndef TEST_TESTUTILS_VIRTUALTESTFILE_H_
#define TEST_TESTUTILS_VIRTUALTESTFILE_H_
#include <cstdio>
class VirtualTestFile {
public:
2014-11-27 16:40:22 +01:00
VirtualTestFile(size_t size, long long int IV = 1);
virtual ~VirtualTestFile();
int read(void *buf, size_t count, off_t offset);
// Return true, iff the given data is equal to the data of the file at the given offset.
2014-11-27 16:40:22 +01:00
bool fileContentEqual(const char *content, size_t count, off_t offset);
const char *data();
size_t size();
protected:
char *_fileData;
size_t _size;
private:
2014-11-27 16:40:22 +01:00
void fillFileWithRandomData(long long int IV);
};
class VirtualTestFileWriteable: public VirtualTestFile {
public:
2014-11-27 16:40:22 +01:00
VirtualTestFileWriteable(size_t size, long long int IV = 1);
virtual ~VirtualTestFileWriteable();
2014-11-27 16:40:22 +01:00
void write(const void *buf, size_t count, off_t offset);
bool sizeUnchanged();
bool regionUnchanged(off_t offset, size_t count);
private:
2014-11-27 16:40:22 +01:00
void extendFileSizeIfNecessary(size_t size);
void extendFileSize(size_t size);
char *_originalFileData;
size_t _originalSize;
};
#endif