#include #include #include "lily-test.h" #include "tests.h" const char *test_LILY_LOCATION() { // if you move this line, you MUST update the expected string! const char *location = LILY_LOCATION; int diff = strcmp(location, "tests/assertions.c:10"); if (diff != 0) return "LILY_LOCATION did not resolve correctly!"; 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; } const char *test_assert_true() { int val = setjmp(_lily_globals.env); if (val != 0) return "true assertion failed incorrectly!"; lily_assert_true(true); 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; lily_assert_true(false); return "false assertion incorrectly succeeded!"; } else { if (strcmp(_lily_globals.error_msg, "false is not true") != 0) return "false assertion produced incorrect error message!"; if (strcmp(_lily_globals.error_location, "tests/assertions.c:64") != 0) return "false assertion produced incorrect error location!"; } return 0; } const char *test_assert_false() { int val = setjmp(_lily_globals.env); if (val != 0) return "true assertion failed incorrectly!"; lily_assert_false(false); 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; lily_assert_false(true); return "false assertion incorrectly succeeded!"; } else { if (strcmp(_lily_globals.error_msg, "true is not false") != 0) return "false assertion produced incorrect error message!"; if (strcmp(_lily_globals.error_location, "tests/assertions.c:93") != 0) return "false assertion produced incorrect error location!"; } return 0; } const char *test_assert_not_null() { int a = 5; int val = setjmp(_lily_globals.env); if (val != 0) return "true assertion failed incorrectly!"; lily_assert_not_null(&a); int passed_thru = 0; _lily_globals.error_msg = NULL; _lily_globals.error_location = ""; val = setjmp(_lily_globals.env); int *ptr = NULL; if (passed_thru == 0) { passed_thru = 1; lily_assert_not_null(ptr); return "false assertion incorrectly succeeded!"; } else { if (strcmp(_lily_globals.error_msg, "ptr is NULL") != 0) return "false assertion produced incorrect error message!"; if (strcmp(_lily_globals.error_location, "tests/assertions.c:126") != 0) return "false assertion produced incorrect error location!"; } return 0; }