/* See LICENSE file for copyright and license details. */ #include "common.h" #ifndef TEST extern inline void liblog_mask_verbose(struct liblog_context *, enum liblog_level); #else static void check_singletons(void) { struct liblog_context ctx; ctx.logmask = 0U; liblog_mask_verbose(&ctx, LIBLOG_EMERGENCY); ASSERT_EQ_UINT(ctx.logmask, 0x01FFU); ctx.logmask = 0U; liblog_mask_verbose(&ctx, LIBLOG_ALERT); ASSERT_EQ_UINT(ctx.logmask, 0x01FEU); ctx.logmask = 0U; liblog_mask_verbose(&ctx, LIBLOG_CRITICAL); ASSERT_EQ_UINT(ctx.logmask, 0x01FCU); ctx.logmask = 0U; liblog_mask_verbose(&ctx, LIBLOG_ERROR); ASSERT_EQ_UINT(ctx.logmask, 0x01F8U); ctx.logmask = 0U; liblog_mask_verbose(&ctx, LIBLOG_WARNING); ASSERT_EQ_UINT(ctx.logmask, 0x01F0U); ctx.logmask = 0U; liblog_mask_verbose(&ctx, LIBLOG_NOTICE); ASSERT_EQ_UINT(ctx.logmask, 0x01E0U); ctx.logmask = 0U; liblog_mask_verbose(&ctx, LIBLOG_INFO); ASSERT_EQ_UINT(ctx.logmask, 0x01C0U); ctx.logmask = 0U; liblog_mask_verbose(&ctx, LIBLOG_TRACE); ASSERT_EQ_UINT(ctx.logmask, 0x0180U); ctx.logmask = 0U; liblog_mask_verbose(&ctx, LIBLOG_DEBUG); ASSERT_EQ_UINT(ctx.logmask, 0x0100U); } static void check_custom(void) { struct liblog_context ctx; ctx.logmask = 0U; liblog_mask_verbose(&ctx, LIBLOG_NOTICE + 1); ASSERT_IS_TRUE(ctx.logmask == 0x01E0U || ctx.logmask == 0x01C0U); } static void check_negative(void) { struct liblog_context ctx; if ((enum liblog_level)-1 < 0) { ctx.logmask = 0U; liblog_mask_verbose(&ctx, (enum liblog_level)-10); ASSERT_EQ_UINT(ctx.logmask, 0x01FFU); } } static void check_hyperverbose(void) { struct liblog_context ctx; ctx.logmask = 0U; liblog_mask_verbose(&ctx, (enum liblog_level)0x7FFF); ASSERT_EQ_UINT(ctx.logmask, 0x0100U); } static void check_series(void) { struct liblog_context ctx; ctx.logmask = 0U; liblog_mask_verbose(&ctx, LIBLOG_DEBUG); ASSERT_EQ_UINT(ctx.logmask, 0x0100U); liblog_mask_verbose(&ctx, LIBLOG_ERROR); ASSERT_EQ_UINT(ctx.logmask, 0x01F8U); liblog_mask_verbose(&ctx, LIBLOG_INFO); ASSERT_EQ_UINT(ctx.logmask, 0x01F8U); liblog_mask_verbose(&ctx, LIBLOG_DEBUG); ASSERT_EQ_UINT(ctx.logmask, 0x01F8U); } int main(void) { check_singletons(); check_custom(); check_negative(); check_hyperverbose(); check_series(); return 0; } #endif