#ifndef __TEST__H__ #define __TEST__H__ #include unsigned int successes = 0; unsigned int failures = 0; #define TEST_SUCCEED(description, ...) \ successes++; \ #define TEST_FAIL(description, ...) \ failures++; \ fprintf(stderr, "Failure on line %d, file %s: ", __LINE__, __FILE__); \ fprintf(stderr, description, ## __VA_ARGS__); \ fprintf(stderr, "\n"); #define TEST_EQUAL(x, y, description, ...) \ if (x == y) { \ TEST_SUCCEED(description, ## __VA_ARGS__); \ } else { \ TEST_FAIL(description, ## __VA_ARGS__); \ } #define TEST_NOT_EQUAL(x, y, description, ...) \ if (x != y) { \ TEST_SUCCEED(description, ## __VA_ARGS__); \ } else { \ TEST_FAIL(description, ## __VA_ARGS__); \ } #define OUTPUT_TEST_RESULTS \ fprintf(stderr, "-----\n"); \ fprintf(stderr, "%d tests run:\n", successes + failures); \ fprintf(stderr, "%d passed\n", successes); \ fprintf(stderr, "%d failed\n", failures); #endif