diff options
Diffstat (limited to 'unit/src/Unit.c')
| -rwxr-xr-x | unit/src/Unit.c | 61 |
1 files changed, 61 insertions, 0 deletions
diff --git a/unit/src/Unit.c b/unit/src/Unit.c new file mode 100755 index 0000000..ead5449 --- /dev/null +++ b/unit/src/Unit.c @@ -0,0 +1,61 @@ +#include <BH/Unit.h> +#include <stdlib.h> + +typedef struct BH_Unit +{ + struct BH_Unit *next; + const char *name; + BH_UnitCallback cb; +} BH_Unit; + + +static BH_Unit *root = NULL; + + +void BH_UnitAdd(const char *name, BH_UnitCallback cb) +{ + BH_Unit *unit, *current; + + /* Allocate and fill new unit test entry */ + unit = malloc(sizeof(*unit)); + if (!unit) + return; + + unit->next = NULL; + unit->name = name; + unit->cb = cb; + + /* Append unit test entry */ + current = root; + while (current && current->next) + current = current->next; + + if (current) + current->next = unit; + else + root = unit; +} + + +int BH_UnitRun(void) +{ + BH_Unit *current; + printf("Running tests...\n"); + + current = root; + while (current) + { + printf("%s\n", current->name); + if (current->cb()) + { + printf("\tFAIL\n"); + return -1; + } + printf("\tPASS\n"); + fflush(stdout); + current = current->next; + } + + return 0; +} + |
