mirror of https://gitlab.com/nakst/essence
add test for resizing files
This commit is contained in:
parent
259d904418
commit
7c4f131899
|
@ -1220,6 +1220,66 @@ bool RestartTest() {
|
||||||
|
|
||||||
//////////////////////////////////////////////////////////////
|
//////////////////////////////////////////////////////////////
|
||||||
|
|
||||||
|
bool ResizeFileTest() {
|
||||||
|
int checkIndex = 0;
|
||||||
|
|
||||||
|
size_t dataBytes = 2 + 2 * 4096 + 2 * 262144;
|
||||||
|
uint8_t *data = (uint8_t *) EsHeapAllocate(dataBytes, false);
|
||||||
|
uint8_t *compare = (uint8_t *) EsHeapAllocate(dataBytes, false);
|
||||||
|
EsFileOffset currentSize = 0;
|
||||||
|
|
||||||
|
// Make a list of all the file sizes that should cover the interesting cases.
|
||||||
|
|
||||||
|
EsFileOffset sizes[125];
|
||||||
|
size_t sizeCount = 0;
|
||||||
|
|
||||||
|
for (int i = -2; i <= 2; i++) {
|
||||||
|
for (int j = -2; j <= 2; j++) {
|
||||||
|
for (int k = -2; k <= 2; k++) {
|
||||||
|
EsFileOffsetDifference size = k + j * 4096 /* page size */ + i * 262144 /* active section size */;
|
||||||
|
if (size < 0) continue;
|
||||||
|
EsAssert(sizeCount != sizeof(sizes) / sizeof(sizes[0]));
|
||||||
|
EsAssert((uintptr_t) size <= dataBytes);
|
||||||
|
sizes[sizeCount++] = size;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
EsFileInformation file = EsFileOpen(EsLiteral("0:/resize.txt"), ES_FILE_WRITE | ES_NODE_FAIL_IF_FOUND);
|
||||||
|
CHECK(file.error == ES_SUCCESS);
|
||||||
|
|
||||||
|
for (uintptr_t i = 0; i < sizeCount; i++) {
|
||||||
|
for (uintptr_t j = 0; j < sizeCount; j++) {
|
||||||
|
EsPrint("i %x, j %x\n", sizes[i], sizes[j]);
|
||||||
|
|
||||||
|
CHECK(ES_SUCCESS == EsFileResize(file.handle, sizes[i]));
|
||||||
|
if (sizes[i] > currentSize) EsMemoryZero(data + currentSize, sizes[i] - currentSize);
|
||||||
|
currentSize = sizes[i];
|
||||||
|
CHECK(currentSize == EsFileReadSync(file.handle, 0, dataBytes, compare));
|
||||||
|
CHECK(0 == EsMemoryCompare(data, compare, currentSize));
|
||||||
|
|
||||||
|
CHECK(ES_SUCCESS == EsFileResize(file.handle, sizes[j]));
|
||||||
|
if (sizes[j] > currentSize) EsMemoryZero(data + currentSize, sizes[j] - currentSize);
|
||||||
|
currentSize = sizes[j];
|
||||||
|
CHECK(currentSize == EsFileReadSync(file.handle, 0, dataBytes, compare));
|
||||||
|
CHECK(0 == EsMemoryCompare(data, compare, currentSize));
|
||||||
|
|
||||||
|
for (uintptr_t k = 0; k < currentSize; k++) {
|
||||||
|
data[k] = EsRandomU8();
|
||||||
|
}
|
||||||
|
|
||||||
|
EsFileWriteSync(file.handle, 0, currentSize, data);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
EsHandleClose(file.handle);
|
||||||
|
EsHeapFree(data);
|
||||||
|
EsHeapFree(compare);
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
//////////////////////////////////////////////////////////////
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
const Test tests[] = {
|
const Test tests[] = {
|
||||||
|
@ -1237,6 +1297,7 @@ const Test tests[] = {
|
||||||
TEST(PipeTests, 60),
|
TEST(PipeTests, 60),
|
||||||
TEST(POSIXSubsystemTest, 60),
|
TEST(POSIXSubsystemTest, 60),
|
||||||
TEST(RestartTest, 600),
|
TEST(RestartTest, 600),
|
||||||
|
TEST(ResizeFileTest, 600),
|
||||||
};
|
};
|
||||||
|
|
||||||
#ifndef API_TESTS_FOR_RUNNER
|
#ifndef API_TESTS_FOR_RUNNER
|
||||||
|
|
Loading…
Reference in New Issue