Sat, 18 Feb 2012 15:50:43 +0100
added test framework and foreach macro
universe@26 | 1 | /* |
universe@26 | 2 | * File: test.h |
universe@26 | 3 | * Author: Mike |
universe@26 | 4 | * |
universe@26 | 5 | * Created on 18. Februar 2012, 14:15 |
universe@26 | 6 | */ |
universe@26 | 7 | |
universe@26 | 8 | #ifndef TEST_H |
universe@26 | 9 | #define TEST_H |
universe@26 | 10 | |
universe@26 | 11 | #include <stdio.h> |
universe@26 | 12 | #include <string.h> |
universe@26 | 13 | #include "list.h" |
universe@26 | 14 | |
universe@26 | 15 | #ifdef __cplusplus |
universe@26 | 16 | extern "C" { |
universe@26 | 17 | #endif |
universe@26 | 18 | |
universe@26 | 19 | typedef struct { |
universe@26 | 20 | unsigned int success; |
universe@26 | 21 | unsigned int failure; |
universe@26 | 22 | UcxList *tests; |
universe@26 | 23 | } UcxTestSuite; |
universe@26 | 24 | |
universe@26 | 25 | typedef void(*UcxTest)(UcxTestSuite*,FILE*); |
universe@26 | 26 | |
universe@26 | 27 | UcxTestSuite* ucx_test_suite_new(); |
universe@26 | 28 | void ucx_test_suite_free(UcxTestSuite*); |
universe@26 | 29 | |
universe@26 | 30 | void ucx_test_register(UcxTestSuite*, UcxTest); |
universe@26 | 31 | void ucx_test_run(UcxTestSuite*, FILE*); |
universe@26 | 32 | |
universe@26 | 33 | #define UCX_TEST_BEGIN(name) void name(UcxTestSuite* _suite_,FILE *_output_) {\ |
universe@26 | 34 | fwrite("Running "#name"... ", 1, 12+strlen(#name), _output_); |
universe@26 | 35 | |
universe@26 | 36 | #define UCX_TEST_ASSERT(condition,message) if (!(condition)) { \ |
universe@26 | 37 | fwrite(message".\n", 1, 2+strlen(message), _output_); \ |
universe@26 | 38 | _suite_->failure++; \ |
universe@26 | 39 | return;\ |
universe@26 | 40 | } |
universe@26 | 41 | |
universe@26 | 42 | #define UCX_TEST_END } fwrite("success.\n", 1, 9, _output_); _suite_->success++; |
universe@26 | 43 | |
universe@26 | 44 | #ifdef __cplusplus |
universe@26 | 45 | } |
universe@26 | 46 | #endif |
universe@26 | 47 | |
universe@26 | 48 | #endif /* TEST_H */ |
universe@26 | 49 |