From d76cfad42a29b94c129c8e48b145e61ebd03b183 Mon Sep 17 00:00:00 2001 From: Tobias Klauser Date: Tue, 9 Mar 2010 12:19:59 +0100 Subject: Add unittest module --- unittest/unittest.h | 40 ++++++++++++++++++++++++++++++++++++++++ 1 file changed, 40 insertions(+) create mode 100644 unittest/unittest.h (limited to 'unittest/unittest.h') diff --git a/unittest/unittest.h b/unittest/unittest.h new file mode 100644 index 0000000..0ed005f --- /dev/null +++ b/unittest/unittest.h @@ -0,0 +1,40 @@ +#ifndef _UNITTEST_H_ +#define _UNITTEST_H_ + +#include +#include +#include "stringify.h" + +#define TEST_PASS 0 +#define TEST_FAIL 1 + +#define assert_err(fmt, args...) \ + fprintf(stderr, "%s:%d: Assertion error: " fmt, __FILE__, __LINE__, ##args) + +/* Assert the expression 'expr' */ +#define test_assert(expr) ({if (!(expr)) { \ + assert_err(__stringify(expr) "\n"); \ + exit(TEST_FAIL); \ + }}) + +/* Assert the expression 'expr' and print 'msg' on fail */ +#define test_assert_msg(expr, msg) ({if (!(expr)) { \ + assert_err(msg "\n"); \ + exit(TEST_FAIL); \ + }}) + +/* Assert that a == b */ +#define test_assert_eq(a, b) ({ \ + if ((a) != (b)) { \ + assert_err(__stringify(a) " != " __stringify(b) "\n"); \ + exit(TEST_FAIL); \ + }}) + +/* Assert that a != b */ +#define test_assert_neq(a, b) ({ \ + if ((a) == (b)) { \ + assert_err(__stringify(a) " != " __stringify(b) "\n"); \ + exit(TEST_FAIL); \ + }}) + +#endif /* _UNITTEST_H_ */ -- cgit v1.2.3-54-g00ecf From 098c2b10024f57666e381889438e5250ef882a44 Mon Sep 17 00:00:00 2001 From: Tobias Klauser Date: Thu, 28 Oct 2010 09:27:36 +0200 Subject: unittest: Add test_print and some more assert functions, correct message --- unittest/unittest.h | 36 ++++++++++++++++++++++++++++++++++-- 1 file changed, 34 insertions(+), 2 deletions(-) (limited to 'unittest/unittest.h') diff --git a/unittest/unittest.h b/unittest/unittest.h index 0ed005f..2350f55 100644 --- a/unittest/unittest.h +++ b/unittest/unittest.h @@ -3,13 +3,18 @@ #include #include +#include + #include "stringify.h" #define TEST_PASS 0 #define TEST_FAIL 1 +#define test_print(fmt, args...) \ + fprintf(stderr, "%s:%d:" fmt, __FILE__, __LINE__, ##args) + #define assert_err(fmt, args...) \ - fprintf(stderr, "%s:%d: Assertion error: " fmt, __FILE__, __LINE__, ##args) + test_print("Assertion error: " fmt, ##args) /* Assert the expression 'expr' */ #define test_assert(expr) ({if (!(expr)) { \ @@ -33,7 +38,34 @@ /* Assert that a != b */ #define test_assert_neq(a, b) ({ \ if ((a) == (b)) { \ - assert_err(__stringify(a) " != " __stringify(b) "\n"); \ + assert_err(__stringify(a) " == " __stringify(b) "\n"); \ + exit(TEST_FAIL); \ + }}) + +/* Assert that a is NULL */ +#define test_assert_null(a) ({ \ + if ((a) != NULL) { \ + assert_err(__stringify(a) " not NULL\n"); \ + exit(TEST_FAIL); \ + }}) + +/* Assert that a is not NULL */ +#define test_assert_not_null(a) ({ \ + if ((a) == NULL) { \ + assert_err(__stringify(a) " is NULL\n"); \ + exit(TEST_FAIL); \ + }}) + +static inline int __xstrmatch(const char *ctx, const char *arg) +{ + size_t len = strlen(ctx); + return (strlen(arg) == len && strncmp(arg, ctx, len) == 0); +} + +/* Assert that string a matches string b */ +#define test_assert_str_eq(a, b) ({ \ + if (!__xstrmatch((a), (b))) { \ + assert_err(__stringify(a) " does not match " __stringify(b) "\n"); \ exit(TEST_FAIL); \ }}) -- cgit v1.2.3-54-g00ecf