aboutsummaryrefslogtreecommitdiffstats
path: root/src/simple-test.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/simple-test.h')
-rw-r--r--src/simple-test.h101
1 files changed, 83 insertions, 18 deletions
diff --git a/src/simple-test.h b/src/simple-test.h
index 12401f5..d6656ab 100644
--- a/src/simple-test.h
+++ b/src/simple-test.h
@@ -18,6 +18,7 @@
****************************/
typedef enum {
+ SIMPLE_TEST_BOOL,
SIMPLE_TEST_INT,
SIMPLE_TEST_LINT,
SIMPLE_TEST_UINT,
@@ -129,6 +130,20 @@ void simple_test_get_escape_wide(wchar_t c, wchar_t *buf)
#define SIMPLE_TEST_LEN_DIFF(arg1, arg2) \
( simple_test_mbslen(arg1) - simple_test_mbslen(arg2) )
+#define SIMPLE_TEST_FAIL_ONE(summary, file, line, fmt, sarg, arg) \
+do { \
+ { \
+ printf("\e[1m :: "); \
+ printf(file); \
+ printf(":%i: \e[31;1mfail:\e[m ", line); \
+ printf(summary); \
+ printf("\e[m\n"); \
+ printf("\e[1m :: "); \
+ printf("%s == \e[m" fmt "\n", sarg, arg); \
+ exit(1); \
+ } \
+} while(0)
+
#define SIMPLE_TEST_FAIL(summary, file, line, fmt, sarg1, sarg2, arg1, arg2) \
do { \
{ \
@@ -156,6 +171,41 @@ do { \
exit(1); \
} while(0)
+void simple_test_assert_bool(char *sarg1, char *sarg2,
+ bool arg1, bool arg2,
+ const char *file, const int line, simple_test_cond_t cond)
+{
+ switch(cond) {
+ case SIMPLE_TEST_TRUE:
+ if(!(arg2))
+ SIMPLE_TEST_FAIL_ONE("unexpected false value", file, line,
+ "%s", sarg2, arg2 ? "true" : "false");
+ break;
+ case SIMPLE_TEST_EQ:
+ if(arg1 != arg2)
+ SIMPLE_TEST_FAIL("bool values do not match", file, line,
+ "%s", sarg1, sarg2,
+ arg1 ? "true" : "false", arg2 ? "true" : "false");
+ break;
+ case SIMPLE_TEST_NEQ:
+ if(arg1 == arg2)
+ SIMPLE_TEST_FAIL("bool values match", file, line,
+ "%s", sarg1, sarg2,
+ arg1 ? "true" : "false", arg2 ? "true" : "false");
+ break;
+ case SIMPLE_TEST_G:
+ SIMPLE_TEST_INTERN_ERR();
+ case SIMPLE_TEST_GEQ:
+ SIMPLE_TEST_INTERN_ERR();
+ case SIMPLE_TEST_L:
+ SIMPLE_TEST_INTERN_ERR();
+ case SIMPLE_TEST_LEQ:
+ SIMPLE_TEST_INTERN_ERR();
+ default:
+ SIMPLE_TEST_INTERN_ERR();
+ }
+}
+
void simple_test_assert_int(char *sarg1, char *sarg2,
intmax_t arg1, intmax_t arg2,
const char *file, const int line, simple_test_cond_t cond)
@@ -163,8 +213,8 @@ void simple_test_assert_int(char *sarg1, char *sarg2,
switch(cond) {
case SIMPLE_TEST_TRUE:
if(!(arg2))
- SIMPLE_TEST_FAIL("unexpected 0 value", file, line,
- "%" PRIiMAX, sarg1, sarg2, arg1, arg2);
+ SIMPLE_TEST_FAIL_ONE("unexpected 0 value", file, line,
+ "%" PRIiMAX, sarg2, arg2);
break;
case SIMPLE_TEST_EQ:
if(arg1 != arg2)
@@ -208,8 +258,8 @@ void simple_test_assert_uint(char *sarg1, char *sarg2,
switch(cond) {
case SIMPLE_TEST_TRUE:
if(!(arg2))
- SIMPLE_TEST_FAIL("unexpected 0 value", file, line,
- "%" PRIuMAX, sarg1, sarg2, arg1, arg2);
+ SIMPLE_TEST_FAIL_ONE("unexpected 0 value", file, line,
+ "%" PRIuMAX, sarg2, arg2);
break;
case SIMPLE_TEST_EQ:
if(arg1 != arg2)
@@ -253,8 +303,8 @@ void simple_test_assert_hex(char *sarg1, char *sarg2,
switch(cond) {
case SIMPLE_TEST_TRUE:
if(!(arg2))
- SIMPLE_TEST_FAIL("unexpected 0 value", file, line,
- "%" PRIxMAX, sarg1, sarg2, arg1, arg2);
+ SIMPLE_TEST_FAIL_ONE("unexpected 0 value", file, line,
+ "%" PRIxMAX, sarg2, arg2);
break;
case SIMPLE_TEST_EQ:
if(arg1 != arg2)
@@ -298,8 +348,8 @@ void simple_test_assert_float(char *sarg1, char *sarg2,
switch(cond) {
case SIMPLE_TEST_TRUE:
if(!(arg2))
- SIMPLE_TEST_FAIL("unexpected 0 value", file, line,
- "%Lg", sarg1, sarg2, arg1, arg2);
+ SIMPLE_TEST_FAIL_ONE("unexpected 0 value", file, line,
+ "%Lg", sarg2, arg2);
break;
case SIMPLE_TEST_EQ:
if(arg1 != arg2)
@@ -343,8 +393,8 @@ void simple_test_assert_ptr(char *sarg1, char *sarg2,
switch(cond) {
case SIMPLE_TEST_TRUE:
if(arg2 == NULL)
- SIMPLE_TEST_FAIL("unexpected NULL value", file, line,
- "%p", sarg1, sarg2, arg1, arg2);
+ SIMPLE_TEST_FAIL_ONE("unexpected NULL value", file, line,
+ "%p", sarg2, arg2);
break;
case SIMPLE_TEST_EQ:
if(arg1 != arg2)
@@ -392,8 +442,8 @@ void simple_test_assert_char(char *sarg1, char *sarg2,
switch(cond) {
case SIMPLE_TEST_TRUE:
if(arg2 == '\0')
- SIMPLE_TEST_FAIL("unexpected '\\0' value", file, line,
- "‘%s’", sarg1, sarg2, buf1, buf2);
+ SIMPLE_TEST_FAIL_ONE("unexpected '\\0' value", file, line,
+ "‘%s’", sarg2, buf2);
break;
case SIMPLE_TEST_EQ:
if(arg1 != arg2)
@@ -437,8 +487,8 @@ void simple_test_assert_str(char *sarg1, char *sarg2,
switch(cond) {
case SIMPLE_TEST_TRUE:
if(arg2 == NULL)
- SIMPLE_TEST_FAIL("unexpected NULL string", file, line,
- "‘%s’", sarg1, sarg2, arg1, arg2);
+ SIMPLE_TEST_FAIL_ONE("unexpected NULL string", file, line,
+ "‘%s’", sarg2, arg2);
break;
case SIMPLE_TEST_EQ:
if( strcmp(arg1, arg2) )
@@ -486,8 +536,8 @@ void simple_test_assert_wchar(char *sarg1, char *sarg2,
switch(cond) {
case SIMPLE_TEST_TRUE:
if(arg2 == L'\0')
- SIMPLE_TEST_FAIL("unexpected '\\0' value", file, line,
- "‘%ls’", sarg1, sarg2, buf1, buf2);
+ SIMPLE_TEST_FAIL_ONE("unexpected '\\0' value", file, line,
+ "‘%ls’", sarg2, buf2);
break;
case SIMPLE_TEST_EQ:
if(arg1 != arg2)
@@ -531,8 +581,8 @@ void simple_test_assert_wstr(char *sarg1, char *sarg2,
switch(cond) {
case SIMPLE_TEST_TRUE:
if(arg2 == NULL)
- SIMPLE_TEST_FAIL("unexpected NULL string", file, line,
- "‘%ls’", sarg1, sarg2, arg1, arg2);
+ SIMPLE_TEST_FAIL_ONE("unexpected NULL string", file, line,
+ "‘%ls’", sarg2, arg2);
break;
case SIMPLE_TEST_EQ:
if( wcscmp(arg1, arg2) )
@@ -675,6 +725,21 @@ do { \
* TYPE-SPECIFIC TESTS *
*************************/
+#define ASSERT_BOOL(arg) \
+ simple_test_assert_bool("false", #arg, \
+ false, (bool)(arg), \
+ __FILE__, __LINE__, SIMPLE_TEST_TRUE)
+
+#define ASSERT_BOOL_EQ(arg1, arg2) \
+ simple_test_assert_bool(#arg1, #arg2, \
+ (bool)(arg1), (bool)(arg2), \
+ __FILE__, __LINE__, SIMPLE_TEST_EQ)
+
+#define ASSERT_BOOL_NEQ(arg1, arg2) \
+ simple_test_assert_bool(#arg1, #arg2, \
+ (bool)(arg1), (bool)(arg2), \
+ __FILE__, __LINE__, SIMPLE_TEST_NEQ)
+
#define ASSERT_INT(arg) \
simple_test_assert_int("0", #arg, \
(intmax_t)0, (intmax_t)(arg), \