LONGBOW_TEST_CASE(Object, parcRandomAccessFile_Read) { char *fname = "tmpfile"; PARCFile *file = parcFile_Create(fname); parcFile_CreateNewFile(file); FILE *fp = fopen(fname, "w"); fseek(fp, 0, SEEK_SET); uint8_t data[128]; for (int i = 0; i < 128; i++) { data[i] = i; } fwrite(data, 1, 128, fp); fclose(fp); PARCRandomAccessFile *instance = parcRandomAccessFile_Open(file); parcFile_Release(&file); PARCBuffer *buffer = parcBuffer_Allocate(128); size_t numBytes = parcRandomAccessFile_Read(instance, buffer); assertTrue(numBytes == 128, "Expected 128 bytes to be read, but got %zu", numBytes); parcBuffer_Flip(buffer); uint8_t *bytes = parcBuffer_Overlay(buffer, parcBuffer_Remaining(buffer)); assertTrue(memcmp(data, bytes, 128) == 0, "Expected buffers to be equal"); parcBuffer_Release(&buffer); parcRandomAccessFile_Close(instance); parcRandomAccessFile_Release(&instance); }
LONGBOW_TEST_CASE(Object, parcRandomAccessFile_Write) { char *fname = "tmpfile"; PARCFile *file = parcFile_Create(fname); parcFile_CreateNewFile(file); uint8_t data[128]; for (int i = 0; i < 128; i++) { data[i] = i; } PARCRandomAccessFile *instance = parcRandomAccessFile_Open(file); PARCBuffer *buffer = parcBuffer_Allocate(128); parcBuffer_PutArray(buffer, 128, data); parcBuffer_Flip(buffer); size_t numBytes = parcRandomAccessFile_Write(instance, buffer); assertTrue(numBytes == 128, "Expected 128 bytes to be read, but got %zu", numBytes); parcBuffer_Release(&buffer); parcRandomAccessFile_Close(instance); parcRandomAccessFile_Release(&instance); uint8_t bytes[128]; FILE *fp = fopen(fname, "r"); numBytes = fread(bytes, 1, 128, fp); assertTrue(numBytes == 128, "Expected 128 bytes to be read, but got %zu", numBytes); fclose(fp); assertTrue(memcmp(data, bytes, 128) == 0, "Expected buffers to be equal"); parcFile_Release(&file); }
LONGBOW_TEST_CASE(Object, parcRandomAccessFile_IsValid) { PARCFile *file = parcFile_Create("/tmp/tmpfile"); parcFile_CreateNewFile(file); PARCRandomAccessFile *instance = parcRandomAccessFile_Open(file); parcFile_Release(&file); assertTrue(parcRandomAccessFile_IsValid(instance), "Expected parcRandomAccessFile_Create to result in a valid instance."); parcRandomAccessFile_Release(&instance); assertFalse(parcRandomAccessFile_IsValid(instance), "Expected parcRandomAccessFile_Release to result in an invalid instance."); }
LONGBOW_TEST_CASE(Global, parcFile_CreateDeleteNewFile) { char *name = "/tmp/test_parc_File"; PARCFile *file = parcFile_Create(name); parcFile_CreateNewFile(file); bool actual = parcFile_Delete(file); assertTrue(actual, "Expected parcFile_Delete to return true."); parcFile_Release(&file); }
/** * Write the input buffer to the specified file. * * @param [in] outFile Name of the file to which the buffer will be written. * @param [in] data A `PARCBuffer` instance which stores the data to be written. */ static void _ccnxFileRepoClient_AppendBufferToFile(char *outFile, PARCBuffer *data, size_t offset) { PARCFile *out = parcFile_Create(outFile); parcFile_CreateNewFile(out); PARCRandomAccessFile *fout = parcRandomAccessFile_Open(out); parcRandomAccessFile_Seek(fout, offset, PARCRandomAccessFilePosition_Start); parcRandomAccessFile_Write(fout, data); parcRandomAccessFile_Close(fout); parcRandomAccessFile_Release(&fout); parcFile_Release(&out); }
LONGBOW_TEST_CASE(Global, parcFile_Exists) { char *root = "/tmp"; PARCFile *parent = parcFile_Create(root); char *child = "foo"; PARCFile *file = parcFile_CreateChild(parent, child); parcFile_CreateNewFile(file); bool actual = parcFile_Exists(file); assertTrue(actual, "Expected the file to exist."); parcFile_Release(&file); parcFile_Release(&parent); }
LONGBOW_TEST_CASE(Global, parcFile_CreateDelete_Directory) { char *name = "/tmp/test_parc_File_directory"; PARCFile *directory = parcFile_Create(name); parcFile_Mkdir(directory); char *fileName = "foo"; PARCFile *file = parcFile_CreateChild(directory, fileName); bool success = parcFile_CreateNewFile(file); assertTrue(success, "Expected parcFile_CreateNewFile success"); bool actual = parcFile_Delete(directory); assertTrue(actual, "Expected parcFile_Delete to return true."); parcFile_Release(&file); parcFile_Release(&directory); }
LONGBOW_TEST_CASE(Object, parcRandomAccessFile_Seek) { char *fname = "tmpfile"; PARCFile *file = parcFile_Create(fname); parcFile_CreateNewFile(file); FILE *fp = fopen(fname, "w"); fseek(fp, 0, SEEK_SET); uint8_t data[128]; for (int i = 0; i < 128; i++) { data[i] = i; } fwrite(data, 1, 128, fp); fclose(fp); PARCRandomAccessFile *instance = parcRandomAccessFile_Open(file); PARCBuffer *buffer = parcBuffer_Allocate(128); parcRandomAccessFile_Seek(instance, 64, PARCRandomAccessFilePosition_Start); size_t numBytes = parcRandomAccessFile_Read(instance, buffer); assertTrue(numBytes == 64, "Expected 64 bytes to be read, but got %zu", numBytes); parcRandomAccessFile_Seek(instance, 0, PARCRandomAccessFilePosition_End); parcBuffer_Flip(buffer); numBytes = parcRandomAccessFile_Read(instance, buffer); assertTrue(numBytes == 0, "Expected 0 bytes to be read, but got %zu", numBytes); parcRandomAccessFile_Seek(instance, 0, PARCRandomAccessFilePosition_Start); parcBuffer_Flip(buffer); numBytes = parcRandomAccessFile_Read(instance, buffer); assertTrue(numBytes == 128, "Expected 128 bytes to be read, but got %zu", numBytes); parcBuffer_Release(&buffer); parcRandomAccessFile_Close(instance); parcRandomAccessFile_Release(&instance); parcFile_Release(&file); }