#include "file.h" #include "../test.h" //#include #include "../../include/cosms-core/file.h" #include #include void cosms_file_read_test() { COSMS_TEST_HEADER("file read"); const char *current_test_name = "reading small file"; COSMS_TEST_START(current_test_name); unsigned long long file_size; char *file_buffer; CosmsFileError error = cosms_core_file_read("tests/data/small-file.txt", &file_buffer, &file_size); if (error != COSMS_FILE_OK) { COSMS_TEST_FAIL(current_test_name, cosms_core_file_error_string(error)); } else { const char *expected_result = "Hello, World!"; if (file_size != strlen(expected_result) || strcmp(expected_result, file_buffer)) { COSMS_TEST_FAIL(current_test_name, "result does not match expected result"); } else { COSMS_TEST_SUCCESS(current_test_name); } } free(file_buffer); current_test_name = "reading large file"; COSMS_TEST_START(current_test_name); file_size = 0; file_buffer = NULL; error = cosms_core_file_read("tests/data/large-file.txt", &file_buffer, &file_size); if (error != COSMS_FILE_OK) { COSMS_TEST_FAIL(current_test_name, cosms_core_file_error_string(error)); } else { unsigned long long expected_size = 5242880000ULL; char *expected_result = (char*)malloc((expected_size + 1) * sizeof(char)); if (!expected_result) { printf("[-] failed to allocate memory for test aborting file read tests...\n"); free(file_buffer); return; } memset(expected_result, 'a', expected_size); expected_result[expected_size] = '\0'; if (file_size != expected_size || strcmp(expected_result, file_buffer)) { COSMS_TEST_FAIL(current_test_name, "result does not match expected result"); } else { COSMS_TEST_SUCCESS(current_test_name); } free(expected_result); } free(file_buffer); current_test_name = "reading non existing file"; COSMS_TEST_START(current_test_name); file_size = 0; file_buffer = NULL; error = cosms_core_file_read("non-existing-file.cosms", &file_buffer, &file_size); if (error == COSMS_FILE_NOT_FOUND) { COSMS_TEST_SUCCESS(current_test_name); } else { COSMS_TEST_FAIL(current_test_name, cosms_core_file_error_string(error)); } free(file_buffer); }