diff --git a/9unit.c b/9unit.c index da658e5..b5c0b90 100644 --- a/9unit.c +++ b/9unit.c @@ -19,6 +19,7 @@ */ #include +#include #include "9unit.h" @@ -27,8 +28,8 @@ initTestState(TestState *s) { if (!s) return; s->run = 0; - s->success = 0; - s->failure = 0; + s->passed = 0; + s->failed = 0; s->postponed = 0; } @@ -40,10 +41,10 @@ runTest(TestState *s, TestResult (*t)(void)) switch ((*t)()) { case test_success: - s->success++; + s->passed++; break; case test_failure: - s->failure++; + s->failed++; break; case test_postponed: s->postponed++; @@ -51,4 +52,17 @@ runTest(TestState *s, TestResult (*t)(void)) } } +void +runTests(void (*tests)(TestState *)) +{ + if(!tests) return; + TestState s; + initTestState(&s); + (*tests)(&s); + printf("Tests run: %d\n", s.run); + printf("Tests passed: %d\n", s.passed); + printf("Tests failed: %d\n", s.failed); + printf("Tests postponed: %d\n", s.postponed); +} + //jl diff --git a/9unit.h b/9unit.h index 500f86a..22ff7fc 100644 --- a/9unit.h +++ b/9unit.h @@ -22,11 +22,12 @@ typedef struct TestState { int run; // number of tests run - int success; // number of successful tests - int failure; // number of failed tests + int passed; // number of successful tests + int failed; // number of failed tests int postponed; // number of postponed tests } TestState; +// Possible results of running a single test typedef enum TestResult { test_success, @@ -34,8 +35,20 @@ typedef enum TestResult test_postponed } TestResult; +// Initializes a TestState value extern void initTestState(TestState *); -extern void runTest(TestState *, TestResult (*)(void)); +// Runs a single test +extern void runTest( + TestState *, // the TestState data + TestResult (*)(void) // the test to run +); + +// Runs multiple tests +extern void runTests( + // function that runs the tests and updates the provided TestState + void (*)(TestState *) +); + //jl