ucx/test.h

Sat, 18 Feb 2012 15:50:43 +0100

author
Mike Becker <universe@uap-core.de>
date
Sat, 18 Feb 2012 15:50:43 +0100
changeset 26
59f147baea31
child 27
22644e2572bc
permissions
-rw-r--r--

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

mercurial