From: Michael D. Lowis Date: Mon, 28 Jul 2014 20:34:01 +0000 (-0400) Subject: Add first crack at ATF X-Git-Url: https://git.mdlowis.com/?a=commitdiff_plain;h=d574f279082a0964f61ec30a27bc4440da9471b9;p=projs%2Fatf.git Add first crack at ATF --- diff --git a/source/atf.c b/source/atf.c new file mode 100755 index 0000000..14a972a --- /dev/null +++ b/source/atf.c @@ -0,0 +1,38 @@ +/** + @file atf.c + @brief See header for details + $Revision$ + $HeadURL$ + */ +#include "atf.h" + +char* Curr_Test = NULL; +static unsigned int Total = 0; +static unsigned int Failed = 0; + +void atf_run_suite(suite_t suite) { + suite(); +} + +void atf_test_start(char* p_test_name) { + Curr_Test = p_test_name; + Total++; +} + +void atf_test_fail(char* expr, char* file, int line) { + Failed++; + printf("%s:%d:0:%s:FAIL\n\t%s\n", file, line, Curr_Test, expr); \ +} + +int atf_print_results(void) { + static const char* results_string = + "\nUnit Test Summary" + "\n-----------------" + "\nTotal: %d" + "\nPassed: %d" + "\nFailed: %d" + "\n\n"; + printf(results_string, Total, Total - Failed, Failed); + return Failed; +} + diff --git a/source/atf.h b/source/atf.h new file mode 100755 index 0000000..f24b31a --- /dev/null +++ b/source/atf.h @@ -0,0 +1,40 @@ +/** + @file test.h + @brief TODO: Describe this file + $Revision$ + $HeadURL$ + */ +#ifndef TEST_H +#define TEST_H + +#include + +#define CHECK(expr) \ + if (!(expr)) { atf_test_fail(#expr,__FILE__,__LINE__-1); break; } + +#define TEST_SUITE(name) void name(void) + +#define TEST(desc) \ + for(atf_test_start(#desc); Curr_Test != NULL; Curr_Test = NULL) + +#define RUN_EXTERN_TEST_SUITE(name) \ + do { extern TEST_SUITE(name); atf_run_suite(&name); } while(0) + +#define RUN_TEST_SUITE(name) \ + do { atf_run_suite(&name) } while(0) + +#define PRINT_TEST_RESULTS atf_print_results + +typedef void (*suite_t)(void); + +extern char* Curr_Test; + +void atf_run_suite(suite_t suite); + +void atf_test_start(char* p_test_name); + +void atf_test_fail(char* expr, char* file, int line); + +int atf_print_results(void); + +#endif /* TEST_H */