/* See LICENSE file for copyright and license details. */ #include "common.h" #ifndef TEST extern inline void liblog_unmask_level(struct liblog_context *, enum liblog_level); #else static void check_singletons(void) { struct liblog_context ctx; ctx.logmask = ~0U; liblog_unmask_level(&ctx, LIBLOG_EMERGENCY); ASSERT_EQ_UINT(ctx.logmask, ~0x0001U); ctx.logmask = ~0U; liblog_unmask_level(&ctx, LIBLOG_ALERT); ASSERT_EQ_UINT(ctx.logmask, ~0x0002U); ctx.logmask = ~0U; liblog_unmask_level(&ctx, LIBLOG_CRITICAL); ASSERT_EQ_UINT(ctx.logmask, ~0x0004U); ctx.logmask = ~0U; liblog_unmask_level(&ctx, LIBLOG_ERROR); ASSERT_EQ_UINT(ctx.logmask, ~0x0008U); ctx.logmask = ~0U; liblog_unmask_level(&ctx, LIBLOG_WARNING); ASSERT_EQ_UINT(ctx.logmask, ~0x0010U); ctx.logmask = ~0U; liblog_unmask_level(&ctx, LIBLOG_NOTICE); ASSERT_EQ_UINT(ctx.logmask, ~0x0020U); ctx.logmask = ~0U; liblog_unmask_level(&ctx, LIBLOG_INFO); ASSERT_EQ_UINT(ctx.logmask, ~0x0040U); ctx.logmask = ~0U; liblog_unmask_level(&ctx, LIBLOG_TRACE); ASSERT_EQ_UINT(ctx.logmask, ~0x0080U); ctx.logmask = ~0U; liblog_unmask_level(&ctx, LIBLOG_DEBUG); ASSERT_EQ_UINT(ctx.logmask, ~0x0100U); } static void check_custom(void) { struct liblog_context ctx; ctx.logmask = ~0U; liblog_unmask_level(&ctx, LIBLOG_NOTICE + 1); ASSERT_IS_TRUE(ctx.logmask == ~0x0020U || ctx.logmask == ~0x0040U); } static void check_negative(void) { struct liblog_context ctx; if ((enum liblog_level)-1 < 0) { ctx.logmask = ~0U; liblog_unmask_level(&ctx, (enum liblog_level)-10); ASSERT_EQ_UINT(ctx.logmask, ~1U); } } static void check_hyperverbose(void) { struct liblog_context ctx; ctx.logmask = ~0U; liblog_unmask_level(&ctx, (enum liblog_level)0x7FFF); ASSERT_EQ_UINT(ctx.logmask, ~0x0100U); } static void check_series(void) { struct liblog_context ctx; ctx.logmask = ~0U; liblog_unmask_level(&ctx, LIBLOG_EMERGENCY); ASSERT_EQ_UINT(ctx.logmask, ~0x0001U); liblog_unmask_level(&ctx, LIBLOG_EMERGENCY); ASSERT_EQ_UINT(ctx.logmask, ~0x0001U); liblog_unmask_level(&ctx, LIBLOG_DEBUG); ASSERT_EQ_UINT(ctx.logmask, ~0x0101U); liblog_unmask_level(&ctx, LIBLOG_ALERT); ASSERT_EQ_UINT(ctx.logmask, ~0x0103U); liblog_unmask_level(&ctx, LIBLOG_ALERT); ASSERT_EQ_UINT(ctx.logmask, ~0x0103U); } int main(void) { check_singletons(); check_custom(); check_negative(); check_hyperverbose(); check_series(); return 0; } #endif