From da39940e9a49016a32ba4f206b63f7045158d54c Mon Sep 17 00:00:00 2001
From: sanine <sanine.not@pm.me>
Date: Sun, 26 Dec 2021 00:02:04 -0600
Subject: add test for basic assert

---
 CMakeLists.txt     |  1 +
 lily-test.c        |  6 ++++++
 lily-test.h        | 13 +++++++++++--
 tests/assertions.c | 30 ++++++++++++++++++++++++++++++
 tests/main.c       |  1 +
 tests/tests.h      |  1 +
 6 files changed, 50 insertions(+), 2 deletions(-)

diff --git a/CMakeLists.txt b/CMakeLists.txt
index e209e55..d36e1b3 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -10,6 +10,7 @@ add_definitions("-DSOURCE_PATH_SIZE=${SOURCE_PATH_SIZE}")
 include_directories(${CMAKE_SOURCE_DIR})
 set (TEST_SRC ${CMAKE_SOURCE_DIR}/tests)
 add_executable(lily-metatest
+  ${CMAKE_SOURCE_DIR}/lily-test.c
   ${TEST_SRC}/main.c
   ${TEST_SRC}/helpers.c
   ${TEST_SRC}/assertions.c
diff --git a/lily-test.c b/lily-test.c
index 3dd0c4b..a3f30a2 100644
--- a/lily-test.c
+++ b/lily-test.c
@@ -1,2 +1,8 @@
 #include "lily-test.h"
 
+struct lily_globals_t _lily_globals;
+
+void lily_assert_msg(bool statement, const char *location,
+		     const char *format_string, ...)
+{
+}
diff --git a/lily-test.h b/lily-test.h
index c2f1b8b..ee37ed5 100644
--- a/lily-test.h
+++ b/lily-test.h
@@ -4,6 +4,7 @@
 #include <stdbool.h>
 #include <stddef.h>
 #include <stdint.h>
+#include <setjmp.h>
 
 #define STR_IMP(x) #x
 #define STR(x) STR_IMP(x)
@@ -15,7 +16,15 @@
 #define LILY_LOCATION ((__FILE__ ":" STR(__LINE__)) + SOURCE_PATH_SIZE)
 #endif
 
-void lily_assert_printf(bool statement, const char *location,
-			const char *format_string, ...);
+struct lily_globals_t {
+   jmp_buf env;
+   char *error_msg;
+   const char *error_location;
+};
+
+extern struct lily_globals_t _lily_globals;
+
+void lily_assert_msg(bool statement, const char *location,
+		     const char *format_string, ...);
 
 #endif
diff --git a/tests/assertions.c b/tests/assertions.c
index 5fb5e8d..baa0045 100644
--- a/tests/assertions.c
+++ b/tests/assertions.c
@@ -14,3 +14,33 @@ const char *test_LILY_LOCATION()
 
    return 0;
 }
+
+
+const char *test_assert_msg()
+{
+   int val = setjmp(_lily_globals.env);
+   if (val != 0)
+      return "true assertion failed incorrectly!";
+
+   lily_assert_msg(true, LILY_LOCATION, "should not fail!");
+
+   int passed_thru = 0;
+   _lily_globals.error_msg = NULL;
+   _lily_globals.error_location = "";
+   val = setjmp(_lily_globals.env);
+   
+   if (passed_thru == 0) {
+      passed_thru = 1;
+      // another line that you SHOULD NOT MOVE!
+      lily_assert_msg(false, LILY_LOCATION, "%s %s!", "should", "fail");
+      return "false assertion incorrectly succeeded!";
+   }
+   else {
+      if (strcmp(_lily_globals.error_msg, "should fail!") != 0)
+	 return "false assertion produced incorrect error message!";
+      if (strcmp(_lily_globals.error_location, "tests/assertions.c:35"))
+	 return "false assertion produced incorrect error location!";
+   }
+
+   return 0;
+}
diff --git a/tests/main.c b/tests/main.c
index 0659713..dbb813c 100644
--- a/tests/main.c
+++ b/tests/main.c
@@ -9,6 +9,7 @@
 int main()
 {
    run_test(test_LILY_LOCATION);
+   run_test(test_assert_msg);
    
    return 0;
 }
diff --git a/tests/tests.h b/tests/tests.h
index eab0115..7889445 100644
--- a/tests/tests.h
+++ b/tests/tests.h
@@ -8,5 +8,6 @@ int validate_message(const char* received, const char* expected,
 
 // test cases
 const char* test_LILY_LOCATION();
+const char* test_assert_msg();
 
 #endif
-- 
cgit v1.2.1