diff options
Diffstat (limited to 'src/logging/logging.test.c')
-rw-r--r-- | src/logging/logging.test.c | 215 |
1 files changed, 215 insertions, 0 deletions
diff --git a/src/logging/logging.test.c b/src/logging/logging.test.c new file mode 100644 index 0000000..e267b5d --- /dev/null +++ b/src/logging/logging.test.c @@ -0,0 +1,215 @@ +#include <stdio.h> +#include <stdlib.h> + +#include "test/minunit.h" +#include "test/suites.h" + +#include "logging/logging.h" + + +/* test declarations */ + +mu_test test_log_get_level(); +mu_test test_log_set_defaults(); +mu_test test_log_debug(); +mu_test test_log_info(); +mu_test test_log_warn(); +mu_test test_log_error(); +mu_test test_log_fatal(); + + +/* main suite */ + +void honey_logging_tests() +{ + mu_run_test("get log level strings", test_log_get_level); + mu_run_test("print debug message", test_log_debug); + mu_run_test("print info message", test_log_info); + mu_run_test("print warning message", test_log_warn); + mu_run_test("print error message", test_log_error); + mu_run_test("print fatal error message", test_log_fatal); +} + + +/* ~~~~~~~~ test definitions ~~~~~~~~ */ + +mu_test test_log_get_level() +{ + honey_log_set_level(DEBUG); + mu_assert_equal(DEBUG, honey_log_get_level()); + mu_assert_streq("DEBUG", honey_log_level_str()); + + honey_log_set_level(INFO); + mu_assert_equal(INFO, honey_log_get_level()); + mu_assert_streq("INFO", honey_log_level_str()); + + honey_log_set_level(WARN); + mu_assert_equal(WARN, honey_log_get_level()); + mu_assert_streq("WARN", honey_log_level_str()); + + honey_log_set_level(ERROR); + mu_assert_equal(ERROR, honey_log_get_level()); + mu_assert_streq("ERROR", honey_log_level_str()); + + honey_log_set_level(FATAL); + mu_assert_equal(FATAL, honey_log_get_level()); + mu_assert_streq("FATAL", honey_log_level_str()); + + return 0; +} + + +mu_test test_log_debug() +{ + FILE *stream; + char *buffer; + size_t len; + + stream = open_memstream(&buffer, &len); + mu_assert_unequal(stream, NULL); + + honey_log_set_file(stream); + mu_assert_equal(honey_log_get_file(), stream); + + honey_log_set_level(FATAL); + mu_assert_equal(honey_log_get_level(), FATAL); + + honey_debug("hello, %s!", "world"); + fflush(stream); + mu_assert_streq(buffer, ""); + + honey_log_set_level(DEBUG); + mu_assert_equal(honey_log_get_level(), DEBUG); + + honey_debug("hello, %s!", "world"); + fclose(stream); + mu_assert_streq(buffer, "[DEBUG] hello, world!"); + free(buffer); + + return 0; +} + + +mu_test test_log_info() +{ + FILE *stream; + char *buffer; + size_t len; + + stream = open_memstream(&buffer, &len); + mu_assert_unequal(stream, NULL); + + honey_log_set_file(stream); + mu_assert_equal(honey_log_get_file(), stream); + + honey_log_set_level(FATAL); + mu_assert_equal(honey_log_get_level(), FATAL); + + honey_info("hello, %s!", "world"); + fflush(stream); + mu_assert_streq(buffer, ""); + + honey_log_set_level(INFO); + mu_assert_equal(honey_log_get_level(), INFO); + + honey_info("hello, %s!", "world"); + fclose(stream); + mu_assert_streq(buffer, "[INFO] hello, world!"); + free(buffer); + + return 0; +} + + +mu_test test_log_warn() +{ + FILE *stream; + char *buffer; + size_t len; + + stream = open_memstream(&buffer, &len); + mu_assert_unequal(stream, NULL); + + honey_log_set_file(stream); + mu_assert_equal(honey_log_get_file(), stream); + + honey_log_set_level(FATAL); + mu_assert_equal(honey_log_get_level(), FATAL); + + honey_warn("hello, %s!", "world"); + fflush(stream); + mu_assert_streq(buffer, ""); + + honey_log_set_level(WARN); + mu_assert_equal(honey_log_get_level(), WARN); + + honey_warn("hello, %s!", "world"); + fclose(stream); + mu_assert_streq(buffer, "[WARN] hello, world!"); + free(buffer); + + return 0; +} + + +mu_test test_log_error() +{ + FILE *stream; + char *buffer; + size_t len; + + stream = open_memstream(&buffer, &len); + mu_assert_unequal(stream, NULL); + + honey_log_set_file(stream); + mu_assert_equal(honey_log_get_file(), stream); + + honey_log_set_level(FATAL); + mu_assert_equal(honey_log_get_level(), FATAL); + + honey_error("hello, %s!", "world"); + fflush(stream); + mu_assert_streq(buffer, ""); + + honey_log_set_level(ERROR); + mu_assert_equal(honey_log_get_level(), ERROR); + + honey_error("hello, %s!", "world"); + fclose(stream); + mu_assert_streq(buffer, "[ERROR] hello, world!"); + free(buffer); + + return 0; +} + + +mu_test test_log_fatal() +{ + FILE *stream; + char *buffer; + size_t len; + + stream = open_memstream(&buffer, &len); + mu_assert_unequal(stream, NULL); + + honey_log_set_file(stream); + mu_assert_equal(honey_log_get_file(), stream); + + honey_log_set_level(-1); + mu_assert_equal(honey_log_get_level(), -1); + + honey_fatal("hello, %s!", "world"); + fflush(stream); + // all error levels will print fatal messagesf + mu_assert_streq(buffer, "[FATAL] hello, world!"); + + honey_log_set_level(FATAL); + mu_assert_equal(honey_log_get_level(), FATAL); + + honey_fatal("hello, %s!", "world"); + fclose(stream); + mu_assert_streq(buffer, "[FATAL] hello, world![FATAL] hello, world!"); + free(buffer); + + return 0; +} |