diff --git a/tests/test.h b/tests/test.h index 359d42a..5e9af19 100644 --- a/tests/test.h +++ b/tests/test.h @@ -7,16 +7,20 @@ #define COSMS_CORE_TEST_FUNCTION_NAME(name) cosms_core_##name##_test #define COSMS_CORE_TEST_DEFINE(name) void cosms_core_##name##_test(void) -#define COSMS_CORE_TEST_TEST(name, implementation) void cosms_core_##name##_test(void) { \ - const char *cosms_core_test_name = #name; \ - printf("----------------------------------------\n%s\n----------------------------------------\n", cosms_core_test_name); \ - implementation \ +#define COSMS_CORE_TEST_TEST(name, implementation) void cosms_core_##name##_test(void) { \ + printf("----------------------------------------\n%s\n----------------------------------------\n", #name); \ + implementation \ } -#define COSMS_CORE_TEST_SUB_TEST(name, implementation) { \ - const char* cosms_core_sub_test_name = #name; \ - printf("[*] running test %s...\n", cosms_core_sub_test_name); \ - implementation \ +#define COSMS_CORE_TEST_SUB_TEST(name, implementation) { \ + const char *cosms_core_test_sub_test_error = NULL; \ + printf("[*] running test %s...\n", #name); \ + implementation \ + if (cosms_core_test_sub_test_error == NULL) { \ + printf("[+] test %s completed successfully!\n", #name); \ + } else { \ + printf("[-] test %s failed with error: %s\n", #name, cosms_core_test_sub_test_error); \ + } \ } #define COSMS_CORE_TEST_EXPORT(name, ...) static const cosms_core_test cosms_core_test_##name[] = { \ @@ -34,17 +38,6 @@ } \ } -#define COSMS_CORE_TEST_SUCCESS(test_name) printf("[+] test %s completed successfully!\n", test_name); - typedef void (*cosms_core_test)(); -static inline bool cosms_core_test_assert(const char *test_name, bool expression, const char *error_message) { - if (!expression) { - printf("[-] test %s failed with error: %s\n", test_name, error_message); - return false; - } - - return true; -} - #endif diff --git a/tests/unit/file.c b/tests/unit/file.c index 5fdee9b..3c418af 100644 --- a/tests/unit/file.c +++ b/tests/unit/file.c @@ -10,11 +10,13 @@ COSMS_CORE_TEST_TEST(file_read, unsigned long long file_size = 0; char *file_buffer = NULL; CosmsCoreFileError error = cosms_core_file_read("tests/data/small-file.txt", &file_buffer, &file_size); - if (cosms_core_test_assert(cosms_core_sub_test_name, error == COSMS_CORE_FILE_OK, cosms_core_file_error_string(error))) { + if (error == COSMS_CORE_FILE_OK) { const char *expected_result = "Hello, World!"; - if (cosms_core_test_assert(cosms_core_sub_test_name, file_size == strlen(expected_result) && strcmp(expected_result, file_buffer) == 0, "result does not match expected result")) { - COSMS_CORE_TEST_SUCCESS(cosms_core_sub_test_name); + if (file_size != strlen(expected_result) || strcmp(expected_result, file_buffer) != 0) { + cosms_core_test_sub_test_error = "result does not match expected result"; } + } else { + cosms_core_test_sub_test_error = cosms_core_file_error_string(error); } if (file_buffer != NULL) { @@ -26,7 +28,7 @@ COSMS_CORE_TEST_TEST(file_read, unsigned long long file_size = 0; char *file_buffer = NULL; CosmsCoreFileError error = cosms_core_file_read("tests/data/large-file.txt", &file_buffer, &file_size); - if (cosms_core_test_assert(cosms_core_sub_test_name, error == COSMS_CORE_FILE_OK, cosms_core_file_error_string(error))) { + if (error == COSMS_CORE_FILE_OK) { unsigned long long expected_size = 5242880000ULL; char *expected_result = (char*)malloc((expected_size + 1) * sizeof(char)); if (!expected_result) { @@ -38,11 +40,13 @@ COSMS_CORE_TEST_TEST(file_read, memset(expected_result, 'a', expected_size); expected_result[expected_size] = '\0'; - if (cosms_core_test_assert(cosms_core_sub_test_name, file_size == expected_size && strcmp(expected_result, file_buffer) == 0, "result does not match expected result")) { - COSMS_CORE_TEST_SUCCESS(cosms_core_sub_test_name); + if (file_size != expected_size || strcmp(expected_result, file_buffer) != 0) { + cosms_core_test_sub_test_error = "result does not match expected result"; } free(expected_result); + } else { + cosms_core_test_sub_test_error = cosms_core_file_error_string(error); } if (file_buffer != NULL) { @@ -54,8 +58,8 @@ COSMS_CORE_TEST_TEST(file_read, unsigned long long file_size = 0; char *file_buffer = NULL; CosmsCoreFileError error = cosms_core_file_read("non-existing-file.cosms", &file_buffer, &file_size); - if (cosms_core_test_assert(cosms_core_sub_test_name, error == COSMS_CORE_FILE_NOT_FOUND, cosms_core_file_error_string(error))) { - COSMS_CORE_TEST_SUCCESS(cosms_core_sub_test_name); + if (error != COSMS_CORE_FILE_NOT_FOUND) { + cosms_core_test_sub_test_error = cosms_core_file_error_string(error); } if (file_buffer != NULL) { @@ -68,18 +72,22 @@ COSMS_CORE_TEST_TEST(file_write, COSMS_CORE_TEST_SUB_TEST(writting small file, char *file_buffer = "Hello, World!"; CosmsCoreFileError error = cosms_core_file_write("tests/data/small-write-file.txt", file_buffer, strlen(file_buffer), true); - if (cosms_core_test_assert(cosms_core_sub_test_name, error == COSMS_CORE_FILE_OK, cosms_core_file_error_string(error))) { + if (error == COSMS_CORE_FILE_OK) { char *file_content = NULL; error = cosms_core_file_read("tests/data/small-write-file.txt", &file_content, NULL); - if (cosms_core_test_assert(cosms_core_sub_test_name, error == COSMS_CORE_FILE_OK, cosms_core_file_error_string(error))) { - if (cosms_core_test_assert(cosms_core_sub_test_name, strcmp(file_buffer, file_content) == 0, "file content not what was written")) { - COSMS_CORE_TEST_SUCCESS(cosms_core_sub_test_name); + if (error == COSMS_CORE_FILE_OK) { + if (strcmp(file_buffer, file_content) != 0) { + cosms_core_test_sub_test_error = "file content not what was written"; } + } else { + cosms_core_test_sub_test_error = cosms_core_file_error_string(error); } if (file_content != NULL) { free(file_content); } + } else { + cosms_core_test_sub_test_error = cosms_core_file_error_string(error); } ) @@ -96,18 +104,22 @@ COSMS_CORE_TEST_TEST(file_write, large_file_buffer[large_file_size] = '\0'; CosmsCoreFileError error = cosms_core_file_write("tests/data/large-write-file.txt", large_file_buffer, large_file_size, true); - if (cosms_core_test_assert(cosms_core_sub_test_name, error == COSMS_CORE_FILE_OK, cosms_core_file_error_string(error))) { + if (error == COSMS_CORE_FILE_OK) { char *file_content = NULL; error = cosms_core_file_read("tests/data/large-write-file.txt", &file_content, NULL); - if (cosms_core_test_assert(cosms_core_sub_test_name, error == COSMS_CORE_FILE_OK, cosms_core_file_error_string(error))) { - if (cosms_core_test_assert(cosms_core_sub_test_name, strcmp(large_file_buffer, file_content) == 0, "file content not what was written")) { - COSMS_CORE_TEST_SUCCESS(cosms_core_sub_test_name); + if (error == COSMS_CORE_FILE_OK) { + if (strcmp(large_file_buffer, file_content) != 0) { + cosms_core_test_sub_test_error = "file content not what was written"; } + } else { + cosms_core_test_sub_test_error = cosms_core_file_error_string(error); } if (file_content != NULL) { free(file_content); } + } else { + cosms_core_test_sub_test_error = cosms_core_file_error_string(error); } free(large_file_buffer); @@ -116,37 +128,45 @@ COSMS_CORE_TEST_TEST(file_write, COSMS_CORE_TEST_SUB_TEST(appending file, char *file_buffer = "Hello, World!"; CosmsCoreFileError error = cosms_core_file_write("tests/data/small-write-file.txt", file_buffer, strlen(file_buffer), false); - if (cosms_core_test_assert(cosms_core_sub_test_name, error == COSMS_CORE_FILE_OK, cosms_core_file_error_string(error))) { + if (error == COSMS_CORE_FILE_OK) { char *file_content = NULL; error = cosms_core_file_read("tests/data/small-write-file.txt", &file_content, NULL); - if (cosms_core_test_assert(cosms_core_sub_test_name, error == COSMS_CORE_FILE_OK, cosms_core_file_error_string(error))) { + if (error == COSMS_CORE_FILE_OK) { const char *expected_result = "Hello, World!Hello, World!"; - if (cosms_core_test_assert(cosms_core_sub_test_name, strcmp(expected_result, file_content) == 0, "file content not what was written")) { - COSMS_CORE_TEST_SUCCESS(cosms_core_sub_test_name); + if (strcmp(expected_result, file_content) != 0) { + cosms_core_test_sub_test_error = "file content not what was written"; } + } else { + cosms_core_test_sub_test_error = cosms_core_file_error_string(error); } if (file_content != NULL) { free(file_content); } + } else { + cosms_core_test_sub_test_error = cosms_core_file_error_string(error); } ) COSMS_CORE_TEST_SUB_TEST(appending to non existing file, char *file_buffer = "Hello, World!"; CosmsCoreFileError error = cosms_core_file_write("tests/data/append-write-file.txt", file_buffer, strlen(file_buffer), false); - if (cosms_core_test_assert(cosms_core_sub_test_name, error == COSMS_CORE_FILE_OK, cosms_core_file_error_string(error))) { + if (error == COSMS_CORE_FILE_OK) { char *file_content = NULL; error = cosms_core_file_read("tests/data/append-write-file.txt", &file_content, NULL); - if (cosms_core_test_assert(cosms_core_sub_test_name, error == COSMS_CORE_FILE_OK, cosms_core_file_error_string(error))) { - if (cosms_core_test_assert(cosms_core_sub_test_name, strcmp(file_buffer, file_content) == 0, "file content not what was written")) { - COSMS_CORE_TEST_SUCCESS(cosms_core_sub_test_name); + if (error == COSMS_CORE_FILE_OK) { + if (strcmp(file_buffer, file_content) != 0) { + cosms_core_test_sub_test_error = "file content not what was written"; } + } else { + cosms_core_test_sub_test_error = cosms_core_file_error_string(error); } if (file_content != NULL) { free(file_content); } + } else { + cosms_core_test_sub_test_error = cosms_core_file_error_string(error); } ) ) @@ -154,38 +174,42 @@ COSMS_CORE_TEST_TEST(file_write, COSMS_CORE_TEST_TEST(file_delete, COSMS_CORE_TEST_SUB_TEST(deleting small file, CosmsCoreFileError error = cosms_core_file_delete("tests/data/small-write-file.txt"); - if (cosms_core_test_assert(cosms_core_sub_test_name, error == COSMS_CORE_FILE_OK, cosms_core_file_error_string(error))) { + if (error == COSMS_CORE_FILE_OK) { char *file_content = NULL; error = cosms_core_file_read("tests/data/small-write-file.txt", &file_content, NULL); - if (cosms_core_test_assert(cosms_core_sub_test_name, error == COSMS_CORE_FILE_NOT_FOUND, cosms_core_file_error_string(error))) { - COSMS_CORE_TEST_SUCCESS(cosms_core_sub_test_name); + if (error != COSMS_CORE_FILE_NOT_FOUND) { + cosms_core_test_sub_test_error = cosms_core_file_error_string(error); } if (file_content != NULL) { free(file_content); } + } else { + cosms_core_test_sub_test_error = cosms_core_file_error_string(error); } ) COSMS_CORE_TEST_SUB_TEST(deleting large file, CosmsCoreFileError error = cosms_core_file_delete("tests/data/append-write-file.txt"); - if (cosms_core_test_assert(cosms_core_sub_test_name, error == COSMS_CORE_FILE_OK, cosms_core_file_error_string(error))) { + if (error == COSMS_CORE_FILE_OK) { char *file_content = NULL; error = cosms_core_file_read("tests/data/append-write-file.txt", &file_content, NULL); - if (cosms_core_test_assert(cosms_core_sub_test_name, error == COSMS_CORE_FILE_NOT_FOUND, cosms_core_file_error_string(error))) { - COSMS_CORE_TEST_SUCCESS(cosms_core_sub_test_name); + if (error != COSMS_CORE_FILE_NOT_FOUND) { + cosms_core_test_sub_test_error = cosms_core_file_error_string(error); } if (file_content != NULL) { free(file_content); } + } else { + cosms_core_test_sub_test_error = cosms_core_file_error_string(error); } ) COSMS_CORE_TEST_SUB_TEST(deleting non existing file, CosmsCoreFileError error = cosms_core_file_delete("non-existing-file.cosms"); - if (cosms_core_test_assert(cosms_core_sub_test_name, error == COSMS_CORE_FILE_NOT_FOUND, cosms_core_file_error_string(error))) { - COSMS_CORE_TEST_SUCCESS(cosms_core_sub_test_name); + if (error != COSMS_CORE_FILE_NOT_FOUND) { + cosms_core_test_sub_test_error = cosms_core_file_error_string(error); } ) )