From b8c647c9250b514a5daa11ea731691b19944aa4e Mon Sep 17 00:00:00 2001 From: sanine Date: Fri, 30 Dec 2022 14:03:26 -0600 Subject: add CHECK and REQUIRE comparison assertions --- tests/assertions.c | 37 +++++++++++++++++++++++++++++++++++++ tests/tests.h | 1 + 2 files changed, 38 insertions(+) (limited to 'tests') diff --git a/tests/assertions.c b/tests/assertions.c index 5a32854..39db7bd 100644 --- a/tests/assertions.c +++ b/tests/assertions.c @@ -135,3 +135,40 @@ const char * test_REQUIRE() return "test function did not longjump!"; } } + + +void f_test_REQUIRE_EQ() +{ + REQUIRE_EQ(2, 2, "%d"); + REQUIRE_EQ(2, 4, "%d"); + REQUIRE_EQ(2, 1, "%d"); +} + +const char * test_REQUIRE_EQ() +{ + lily_g.HEAD.next = NULL; + lily_g.TAIL = &(lily_g.HEAD); + lily_g.failed = 0; + int test_failed = setjmp(lily_g.env); + + if (test_failed) { + if (!lily_g.failed) + return "test did not mark itself as failed"; + + if (lily_g.HEAD.next == NULL) + return "test did not generate any messages"; + + if (strcmp(lily_g.HEAD.next->msg, "REQUIRE failed: 2 == 4 (2 == 4)") != 0) + return "test generated incorrect message"; + + if (lily_g.HEAD.next->next != NULL) + return "test generated too many messages"; + + lily_msg_destroy(lily_g.HEAD.next); + return 0; + } + else { + f_test_REQUIRE_EQ(); + return "test function did not longjump!"; + } +} diff --git a/tests/tests.h b/tests/tests.h index 393da87..c450e13 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_REQUIRE) \ + X(test_REQUIRE_EQ) \ #define X(test) const char * test(); TESTS -- cgit v1.2.1