diff options
-rw-r--r-- | lily-test.h | 6 | ||||
-rw-r--r-- | tests/assertions.c | 30 | ||||
-rw-r--r-- | tests/tests.h | 1 |
3 files changed, 37 insertions, 0 deletions
diff --git a/lily-test.h b/lily-test.h index c26237a..6aafb8f 100644 --- a/lily-test.h +++ b/lily-test.h @@ -160,6 +160,12 @@ void lily_check(int x, const char *location, const char *fmt, ...); xstr, ystr, xstr, x, ystr, y, lily_g.epsilon) #define CHECK_EQF(x, y, fmt) LILY_CHECK_EQF(x, y, #x, #y, fmt) +#define LILY_CHECK_EQS(x, y, xstr, ystr) \ + lily_check(strcmp(x, y) == 0, LILY_LOCATION, \ + "CHECK failed: %s == %s\n %s = \"%s\"\n %s = \"%s\"", \ + xstr, ystr, xstr, x, ystr, y) +#define CHECK_EQS(x, y) LILY_CHECK_EQS(x, y, #x, #y) + void lily_require(int x, const char *location, const char *fmt, ...); #define LILY_REQUIRE_(str, x, location) \ diff --git a/tests/assertions.c b/tests/assertions.c index 6d0c0e1..e79ae44 100644 --- a/tests/assertions.c +++ b/tests/assertions.c @@ -122,6 +122,36 @@ const char * test_CHECK_EQF() } +const char * test_CHECK_EQS() +{ + lily_g.HEAD.next = NULL; + lily_g.TAIL = &(lily_g.HEAD); + lily_g.failed = 0; + + const char *a = "hi"; + const char *b = "bye"; + CHECK_EQS(a, b); + CHECK_EQS("hi hi"+3, a); + + if (lily_g.HEAD.next == NULL) + return "CHECK_EQS did not append any failure message"; + + if (lily_g.HEAD.next->next != NULL) + return "CHECK_EQS appended more than one message"; + + if (strcmp( + lily_g.HEAD.next->msg, + "CHECK failed: a == b\n a = \"hi\"\n b = \"bye\"" + ) != 0) + return "incorrect message"; + + lily_msg_destroy(lily_g.HEAD.next); + return 0; +} + + + + int aR, bR; static void f_test_REQUIRE() { diff --git a/tests/tests.h b/tests/tests.h index 631044e..d6d95d1 100644 --- a/tests/tests.h +++ b/tests/tests.h @@ -16,6 +16,7 @@ int validate_message(const char* received, const char* expected, X(test_CHECK) \ X(test_CHECK_EQ) \ X(test_CHECK_EQF) \ + X(test_CHECK_EQS) \ X(test_REQUIRE) \ X(test_REQUIRE_EQ) \ |