From efa5598e5ebd5a372c5740b99608ca82e299fda6 Mon Sep 17 00:00:00 2001 From: Riccardo Schirone Date: Wed, 14 Dec 2022 23:54:52 +0100 Subject: [PATCH] test/unit: Add small unit test for rz_log --- test/unit/meson.build | 1 + test/unit/test_log.c | 49 +++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 50 insertions(+) create mode 100644 test/unit/test_log.c diff --git a/test/unit/meson.build b/test/unit/meson.build index ec1f864e1c..ecb16293c4 100644 --- a/test/unit/meson.build +++ b/test/unit/meson.build @@ -68,6 +68,7 @@ if get_option('enable_tests') 'itv', 'json', 'list', + 'log', 'lzma', 'ovf', 'pj', diff --git a/test/unit/test_log.c b/test/unit/test_log.c new file mode 100644 index 0000000000..00052bbc5e --- /dev/null +++ b/test/unit/test_log.c @@ -0,0 +1,49 @@ +// SPDX-FileCopyrightText: 2022 Riccardo Schirone +// SPDX-License-Identifier: LGPL-3.0-only + +#include +#include "minunit.h" + +static int small_check(const char *output, const char *funcname, const char *filename, + ut32 lineno, RzLogLevel level, const char *tag, const char *fmtstr, ...) { + mu_assert_streq(output, "ERROR: 3", "small check msg should be correct"); + return 0; +} + +static int large_check(const char *output, const char *funcname, const char *filename, + ut32 lineno, RzLogLevel level, const char *tag, const char *fmtstr, ...) { + char *exp_msg = RZ_NEWS0(char, 2000); + strcpy(exp_msg, "ERROR: "); + for (size_t i = 0; i < 999; i++) { + exp_msg[strlen("ERROR: ") + i] = 'A'; + } + mu_assert_streq(output, exp_msg, "large check msg should be correct"); + free(exp_msg); + return 0; +} + +bool test_log_small(void) { + rz_log_del_callback((RzLogCallback)large_check); + rz_log_add_callback((RzLogCallback)small_check); + rz_log("func", "file", 1, RZ_LOGLVL_ERROR, NULL, "%d", 3); + mu_end; +} + +bool test_log_large(void) { + rz_log_del_callback((RzLogCallback)small_check); + rz_log_add_callback((RzLogCallback)large_check); + char *buf = RZ_NEWS(char, 1000); + memset(buf, 0x41, 999); + buf[999] = '\0'; + rz_log("func", "file", 1, RZ_LOGLVL_ERROR, NULL, "%s", buf); + free(buf); + mu_end; +} + +bool all_tests() { + mu_run_test(test_log_small); + mu_run_test(test_log_large); + return tests_passed != tests_run; +} + +mu_main(all_tests)