/* See LICENSE file for copyright and license details. */ #include "common.h" #ifndef TEST extern inline struct liblog_output *liblog_use_stderr_for_range(struct liblog_context *, const char *, int, enum liblog_level, enum liblog_level); #else int main(void) { struct liblog_context ctx; struct liblog_output *output; ASSERT_ZERO(liblog_init_context(&ctx)); errno = 0; ASSERT_IS_NULL(liblog_use_stderr_for_range(NULL, NULL, 0, LIBLOG_CRITICAL, LIBLOG_INFO)); ASSERT_EQ_INT(errno, EINVAL); output = liblog_use_stderr_for_range(&ctx, "prefix", 1, LIBLOG_CRITICAL, LIBLOG_INFO); ASSERT_NOT_NULL(output); ASSERT_NOT_NULL(output->prefixfmt); ASSERT_EQ_STR(output->prefixfmt, "prefix"); ASSERT_EQ_UINT(output->lowest_verbosity_unlimited, 0); ASSERT_EQ_UINT(output->highest_verbosity_unlimited, 0); ASSERT_EQ_ENUM(output->lowest_verbosity, LIBLOG_CRITICAL); ASSERT_EQ_ENUM(output->highest_verbosity, LIBLOG_INFO); ASSERT_EQ_UINT(output->use_backtrace, 1); ASSERT_EQ_ENUM(output->sink_type, LIBLOG_FILE); ASSERT_EQ_INT(output->sink.file.fd, STDERR_FILENO); ASSERT_EQ_INT(output->sink.file.owns_fd, 0); ASSERT_EQ_UINT(ctx.noutputs, 1); ASSERT_NOT_NULL(ctx.outputs); output = liblog_use_stderr_for_range(&ctx, NULL, 0, LIBLOG_ERROR, LIBLOG_TRACE); ASSERT_NOT_NULL(output); ASSERT_NOT_NULL(output->prefixfmt); ASSERT_EQ_STR(output->prefixfmt, DEFAULT_PREFIXFMT); ASSERT_EQ_UINT(output->lowest_verbosity_unlimited, 0); ASSERT_EQ_UINT(output->highest_verbosity_unlimited, 0); ASSERT_EQ_ENUM(output->lowest_verbosity, LIBLOG_ERROR); ASSERT_EQ_ENUM(output->highest_verbosity, LIBLOG_TRACE); ASSERT_EQ_UINT(output->use_backtrace, 0); ASSERT_EQ_ENUM(output->sink_type, LIBLOG_FILE); ASSERT_EQ_INT(output->sink.file.fd, STDERR_FILENO); ASSERT_EQ_INT(output->sink.file.owns_fd, 0); ASSERT_EQ_UINT(ctx.noutputs, 2); ASSERT_NOT_NULL(ctx.outputs); liblog_destroy_context(&ctx); return 0; } #endif