From d3edca1670ffc448570745bcc060e8dcce7966c3 Mon Sep 17 00:00:00 2001 From: Jakob Kaivo Date: Tue, 1 Jan 2019 09:19:05 -0500 Subject: initial test types and output --- test.c | 68 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ test.h | 15 +++++++++++++++ 2 files changed, 83 insertions(+) create mode 100644 test.c create mode 100644 test.h diff --git a/test.c b/test.c new file mode 100644 index 0000000..43e9bf7 --- /dev/null +++ b/test.c @@ -0,0 +1,68 @@ +#include +#include + +typedef enum { + DEFAULT = 39, + RED = 31, + GREEN = 32, + YELLOW = 33, + BLUE = 34, + MAGENTA = 35 +} Color; + +static void set_output_color(Color c) +{ + printf("\033[%dm", c); +} + +static void print_result(int success, const char *format, ...) +{ + va_list ap; + Color color = GREEN; + char indicator = '+'; + + if (!success) { + color = RED; + indicator = '!'; + } + + set_output_color(color); + printf("%c ", indicator); + + va_start(ap, format); + vprintf(format, ap); + va_end(ap); + + printf("\n"); + set_output_color(DEFAULT); +} + +void testing_header(const char *header) +{ + printf("Testing header "); + set_output_color(MAGENTA); + printf("<%s>", header); + set_output_color(DEFAULT); + printf("\n"); +} + +void testing_comment(const char *comment) +{ + printf("- %s\n", comment); +} + +void test_int_equals_imp(const char *expression, int result, int expected) +{ + print_result(result == expected, "%s == %d", expression, expected); +} + +void test_void_imp(const char *expression) +{ + printf("? %s\n", expression); +} + +void test_bool_imp(const char *expression, int result, int expected) +{ + int success = (result && expected) || (!result && !expected); + print_result(success, "%s%s", expected ? "" : "!", expression); +} diff --git a/test.h b/test.h new file mode 100644 index 0000000..6eedc6f --- /dev/null +++ b/test.h @@ -0,0 +1,15 @@ +void testing_header(const char *); +void testing_comment(const char*); + +void test_int_equals_imp(const char*, int, int); +#define test_int_equals(expression, expected) test_int_equals_imp(#expression, expression, expected) + +void test_void_imp(const char*); +#define test_void(expression) test_void_imp(#expression); (void)expression + +void test_bool_imp(const char *, int, int); +#define test_false(expression) test_bool_imp(#expression, expression, 0) +#define test_true(expression) test_bool_imp(#expression, expression, 1) + +void test_assert(void); +void test_ctype(void); -- cgit v1.2.1