diff options
| author | Mattias Andrée <m@maandree.se> | 2025-02-09 15:04:27 +0100 |
|---|---|---|
| committer | Mattias Andrée <m@maandree.se> | 2025-02-09 15:04:27 +0100 |
| commit | ed004cba0e8d1d383def76f795b1e63ba0aaa89a (patch) | |
| tree | b12e5f23329f631b66c19b932551e4dff5aa477f /liblog_unmask_range.c | |
| download | liblog-ed004cba0e8d1d383def76f795b1e63ba0aaa89a.tar.gz liblog-ed004cba0e8d1d383def76f795b1e63ba0aaa89a.tar.bz2 liblog-ed004cba0e8d1d383def76f795b1e63ba0aaa89a.tar.xz | |
First commit (everything was written 2024)
Signed-off-by: Mattias Andrée <m@maandree.se>
Diffstat (limited to 'liblog_unmask_range.c')
| -rw-r--r-- | liblog_unmask_range.c | 412 |
1 files changed, 412 insertions, 0 deletions
diff --git a/liblog_unmask_range.c b/liblog_unmask_range.c new file mode 100644 index 0000000..62b7895 --- /dev/null +++ b/liblog_unmask_range.c @@ -0,0 +1,412 @@ +/* See LICENSE file for copyright and license details. */ +#include "common.h" +#ifndef TEST + +extern inline void liblog_unmask_range(struct liblog_context *, enum liblog_level, enum liblog_level); + +#else + +static void +check_singletons(void) +{ + struct liblog_context ctx; + + ctx.logmask = ~0U; + liblog_unmask_range(&ctx, LIBLOG_EMERGENCY, LIBLOG_EMERGENCY); + ASSERT_EQ_UINT(ctx.logmask, ~0x0001U); + + ctx.logmask = ~0U; + liblog_unmask_range(&ctx, LIBLOG_ALERT, LIBLOG_ALERT); + ASSERT_EQ_UINT(ctx.logmask, ~0x0002U); + + ctx.logmask = ~0U; + liblog_unmask_range(&ctx, LIBLOG_CRITICAL, LIBLOG_CRITICAL); + ASSERT_EQ_UINT(ctx.logmask, ~0x0004U); + + ctx.logmask = ~0U; + liblog_unmask_range(&ctx, LIBLOG_ERROR, LIBLOG_ERROR); + ASSERT_EQ_UINT(ctx.logmask, ~0x0008U); + + ctx.logmask = ~0U; + liblog_unmask_range(&ctx, LIBLOG_WARNING, LIBLOG_WARNING); + ASSERT_EQ_UINT(ctx.logmask, ~0x0010U); + + ctx.logmask = ~0U; + liblog_unmask_range(&ctx, LIBLOG_NOTICE, LIBLOG_NOTICE); + ASSERT_EQ_UINT(ctx.logmask, ~0x0020U); + + ctx.logmask = ~0U; + liblog_unmask_range(&ctx, LIBLOG_INFO, LIBLOG_INFO); + ASSERT_EQ_UINT(ctx.logmask, ~0x0040U); + + ctx.logmask = ~0U; + liblog_unmask_range(&ctx, LIBLOG_TRACE, LIBLOG_TRACE); + ASSERT_EQ_UINT(ctx.logmask, ~0x0080U); + + ctx.logmask = ~0U; + liblog_unmask_range(&ctx, LIBLOG_DEBUG, LIBLOG_DEBUG); + ASSERT_EQ_UINT(ctx.logmask, ~0x0100U); +} + +static void +check_custom(void) +{ + struct liblog_context ctx; + + ctx.logmask = ~0U; + liblog_unmask_range(&ctx, LIBLOG_NOTICE + 1, LIBLOG_NOTICE + 1); + ASSERT_IS_TRUE(ctx.logmask == ~0x0020U || ctx.logmask == ~0x0040U); +} + +static void +check_from_emergency(void) +{ + struct liblog_context ctx; + + ctx.logmask = ~0U; + liblog_unmask_range(&ctx, LIBLOG_EMERGENCY, LIBLOG_ALERT); + ASSERT_EQ_UINT(ctx.logmask, ~0x0003U); + + ctx.logmask = ~0U; + liblog_unmask_range(&ctx, LIBLOG_EMERGENCY, LIBLOG_CRITICAL); + ASSERT_EQ_UINT(ctx.logmask, ~0x0007U); + + ctx.logmask = ~0U; + liblog_unmask_range(&ctx, LIBLOG_EMERGENCY, LIBLOG_ERROR); + ASSERT_EQ_UINT(ctx.logmask, ~0x000FU); + + ctx.logmask = ~0U; + liblog_unmask_range(&ctx, LIBLOG_EMERGENCY, LIBLOG_WARNING); + ASSERT_EQ_UINT(ctx.logmask, ~0x001FU); + + ctx.logmask = ~0U; + liblog_unmask_range(&ctx, LIBLOG_EMERGENCY, LIBLOG_NOTICE); + ASSERT_EQ_UINT(ctx.logmask, ~0x003FU); + + ctx.logmask = ~0U; + liblog_unmask_range(&ctx, LIBLOG_EMERGENCY, LIBLOG_INFO); + ASSERT_EQ_UINT(ctx.logmask, ~0x007FU); + + ctx.logmask = ~0U; + liblog_unmask_range(&ctx, LIBLOG_EMERGENCY, LIBLOG_TRACE); + ASSERT_EQ_UINT(ctx.logmask, ~0x00FFU); + + ctx.logmask = ~0U; + liblog_unmask_range(&ctx, LIBLOG_EMERGENCY, LIBLOG_DEBUG); + ASSERT_EQ_UINT(ctx.logmask, ~0x01FFU); +} + +static void +check_from_alert(void) +{ + struct liblog_context ctx; + + ctx.logmask = ~0U; + liblog_unmask_range(&ctx, LIBLOG_ALERT, LIBLOG_EMERGENCY); + ASSERT_EQ_UINT(ctx.logmask, ~0U); + + ctx.logmask = ~0U; + liblog_unmask_range(&ctx, LIBLOG_ALERT, LIBLOG_CRITICAL); + ASSERT_EQ_UINT(ctx.logmask, ~0x0006U); + + ctx.logmask = ~0U; + liblog_unmask_range(&ctx, LIBLOG_ALERT, LIBLOG_ERROR); + ASSERT_EQ_UINT(ctx.logmask, ~0x000EU); + + ctx.logmask = ~0U; + liblog_unmask_range(&ctx, LIBLOG_ALERT, LIBLOG_WARNING); + ASSERT_EQ_UINT(ctx.logmask, ~0x001EU); + + ctx.logmask = ~0U; + liblog_unmask_range(&ctx, LIBLOG_ALERT, LIBLOG_NOTICE); + ASSERT_EQ_UINT(ctx.logmask, ~0x003EU); + + ctx.logmask = ~0U; + liblog_unmask_range(&ctx, LIBLOG_ALERT, LIBLOG_INFO); + ASSERT_EQ_UINT(ctx.logmask, ~0x007EU); + + ctx.logmask = ~0U; + liblog_unmask_range(&ctx, LIBLOG_ALERT, LIBLOG_TRACE); + ASSERT_EQ_UINT(ctx.logmask, ~0x00FEU); + + ctx.logmask = ~0U; + liblog_unmask_range(&ctx, LIBLOG_ALERT, LIBLOG_DEBUG); + ASSERT_EQ_UINT(ctx.logmask, ~0x01FEU); +} + +static void +check_from_critical(void) +{ + struct liblog_context ctx; + + ctx.logmask = ~0U; + liblog_unmask_range(&ctx, LIBLOG_CRITICAL, LIBLOG_EMERGENCY); + ASSERT_EQ_UINT(ctx.logmask, ~0U); + liblog_unmask_range(&ctx, LIBLOG_CRITICAL, LIBLOG_ALERT); + ASSERT_EQ_UINT(ctx.logmask, ~0U); + + ctx.logmask = ~0U; + liblog_unmask_range(&ctx, LIBLOG_CRITICAL, LIBLOG_ERROR); + ASSERT_EQ_UINT(ctx.logmask, ~0x000CU); + + ctx.logmask = ~0U; + liblog_unmask_range(&ctx, LIBLOG_CRITICAL, LIBLOG_WARNING); + ASSERT_EQ_UINT(ctx.logmask, ~0x001CU); + + ctx.logmask = ~0U; + liblog_unmask_range(&ctx, LIBLOG_CRITICAL, LIBLOG_NOTICE); + ASSERT_EQ_UINT(ctx.logmask, ~0x003CU); + + ctx.logmask = ~0U; + liblog_unmask_range(&ctx, LIBLOG_CRITICAL, LIBLOG_INFO); + ASSERT_EQ_UINT(ctx.logmask, ~0x007CU); + + ctx.logmask = ~0U; + liblog_unmask_range(&ctx, LIBLOG_CRITICAL, LIBLOG_TRACE); + ASSERT_EQ_UINT(ctx.logmask, ~0x00FCU); + + ctx.logmask = ~0U; + liblog_unmask_range(&ctx, LIBLOG_CRITICAL, LIBLOG_DEBUG); + ASSERT_EQ_UINT(ctx.logmask, ~0x01FCU); +} + +static void +check_from_error(void) +{ + struct liblog_context ctx; + + ctx.logmask = ~0U; + liblog_unmask_range(&ctx, LIBLOG_ERROR, LIBLOG_EMERGENCY); + ASSERT_EQ_UINT(ctx.logmask, ~0U); + liblog_unmask_range(&ctx, LIBLOG_ERROR, LIBLOG_ALERT); + ASSERT_EQ_UINT(ctx.logmask, ~0U); + liblog_unmask_range(&ctx, LIBLOG_ERROR, LIBLOG_CRITICAL); + ASSERT_EQ_UINT(ctx.logmask, ~0U); + + ctx.logmask = ~0U; + liblog_unmask_range(&ctx, LIBLOG_ERROR, LIBLOG_WARNING); + ASSERT_EQ_UINT(ctx.logmask, ~0x0018U); + + ctx.logmask = ~0U; + liblog_unmask_range(&ctx, LIBLOG_ERROR, LIBLOG_NOTICE); + ASSERT_EQ_UINT(ctx.logmask, ~0x0038U); + + ctx.logmask = ~0U; + liblog_unmask_range(&ctx, LIBLOG_ERROR, LIBLOG_INFO); + ASSERT_EQ_UINT(ctx.logmask, ~0x0078U); + + ctx.logmask = ~0U; + liblog_unmask_range(&ctx, LIBLOG_ERROR, LIBLOG_TRACE); + ASSERT_EQ_UINT(ctx.logmask, ~0x00F8U); + + ctx.logmask = ~0U; + liblog_unmask_range(&ctx, LIBLOG_ERROR, LIBLOG_DEBUG); + ASSERT_EQ_UINT(ctx.logmask, ~0x01F8U); +} + +static void +check_from_warning(void) +{ + struct liblog_context ctx; + + ctx.logmask = ~0U; + liblog_unmask_range(&ctx, LIBLOG_WARNING, LIBLOG_EMERGENCY); + ASSERT_EQ_UINT(ctx.logmask, ~0U); + liblog_unmask_range(&ctx, LIBLOG_WARNING, LIBLOG_ALERT); + ASSERT_EQ_UINT(ctx.logmask, ~0U); + liblog_unmask_range(&ctx, LIBLOG_WARNING, LIBLOG_CRITICAL); + ASSERT_EQ_UINT(ctx.logmask, ~0U); + liblog_unmask_range(&ctx, LIBLOG_WARNING, LIBLOG_ERROR); + ASSERT_EQ_UINT(ctx.logmask, ~0U); + + ctx.logmask = ~0U; + liblog_unmask_range(&ctx, LIBLOG_WARNING, LIBLOG_NOTICE); + ASSERT_EQ_UINT(ctx.logmask, ~0x0030U); + + ctx.logmask = ~0U; + liblog_unmask_range(&ctx, LIBLOG_WARNING, LIBLOG_INFO); + ASSERT_EQ_UINT(ctx.logmask, ~0x0070U); + + ctx.logmask = ~0U; + liblog_unmask_range(&ctx, LIBLOG_WARNING, LIBLOG_TRACE); + ASSERT_EQ_UINT(ctx.logmask, ~0x00F0U); + + ctx.logmask = ~0U; + liblog_unmask_range(&ctx, LIBLOG_WARNING, LIBLOG_DEBUG); + ASSERT_EQ_UINT(ctx.logmask, ~0x01F0U); +} + +static void +check_from_notice(void) +{ + struct liblog_context ctx; + + ctx.logmask = ~0U; + liblog_unmask_range(&ctx, LIBLOG_NOTICE, LIBLOG_EMERGENCY); + ASSERT_EQ_UINT(ctx.logmask, ~0U); + liblog_unmask_range(&ctx, LIBLOG_NOTICE, LIBLOG_ALERT); + ASSERT_EQ_UINT(ctx.logmask, ~0U); + liblog_unmask_range(&ctx, LIBLOG_NOTICE, LIBLOG_CRITICAL); + ASSERT_EQ_UINT(ctx.logmask, ~0U); + liblog_unmask_range(&ctx, LIBLOG_NOTICE, LIBLOG_ERROR); + ASSERT_EQ_UINT(ctx.logmask, ~0U); + liblog_unmask_range(&ctx, LIBLOG_NOTICE, LIBLOG_WARNING); + ASSERT_EQ_UINT(ctx.logmask, ~0U); + + ctx.logmask = ~0U; + liblog_unmask_range(&ctx, LIBLOG_NOTICE, LIBLOG_INFO); + ASSERT_EQ_UINT(ctx.logmask, ~0x0060U); + + ctx.logmask = ~0U; + liblog_unmask_range(&ctx, LIBLOG_NOTICE, LIBLOG_TRACE); + ASSERT_EQ_UINT(ctx.logmask, ~0x00E0U); + + ctx.logmask = ~0U; + liblog_unmask_range(&ctx, LIBLOG_NOTICE, LIBLOG_DEBUG); + ASSERT_EQ_UINT(ctx.logmask, ~0x01E0U); +} + +static void +check_from_info(void) +{ + struct liblog_context ctx; + + ctx.logmask = ~0U; + liblog_unmask_range(&ctx, LIBLOG_INFO, LIBLOG_EMERGENCY); + ASSERT_EQ_UINT(ctx.logmask, ~0U); + liblog_unmask_range(&ctx, LIBLOG_INFO, LIBLOG_ALERT); + ASSERT_EQ_UINT(ctx.logmask, ~0U); + liblog_unmask_range(&ctx, LIBLOG_INFO, LIBLOG_CRITICAL); + ASSERT_EQ_UINT(ctx.logmask, ~0U); + liblog_unmask_range(&ctx, LIBLOG_INFO, LIBLOG_ERROR); + ASSERT_EQ_UINT(ctx.logmask, ~0U); + liblog_unmask_range(&ctx, LIBLOG_INFO, LIBLOG_WARNING); + ASSERT_EQ_UINT(ctx.logmask, ~0U); + liblog_unmask_range(&ctx, LIBLOG_INFO, LIBLOG_NOTICE); + ASSERT_EQ_UINT(ctx.logmask, ~0U); + + ctx.logmask = ~0U; + liblog_unmask_range(&ctx, LIBLOG_INFO, LIBLOG_TRACE); + ASSERT_EQ_UINT(ctx.logmask, ~0x00C0U); + + ctx.logmask = ~0U; + liblog_unmask_range(&ctx, LIBLOG_INFO, LIBLOG_DEBUG); + ASSERT_EQ_UINT(ctx.logmask, ~0x01C0U); +} + +static void +check_from_trace(void) +{ + struct liblog_context ctx; + + ctx.logmask = ~0U; + liblog_unmask_range(&ctx, LIBLOG_TRACE, LIBLOG_EMERGENCY); + ASSERT_EQ_UINT(ctx.logmask, ~0U); + liblog_unmask_range(&ctx, LIBLOG_TRACE, LIBLOG_ALERT); + ASSERT_EQ_UINT(ctx.logmask, ~0U); + liblog_unmask_range(&ctx, LIBLOG_TRACE, LIBLOG_CRITICAL); + ASSERT_EQ_UINT(ctx.logmask, ~0U); + liblog_unmask_range(&ctx, LIBLOG_TRACE, LIBLOG_ERROR); + ASSERT_EQ_UINT(ctx.logmask, ~0U); + liblog_unmask_range(&ctx, LIBLOG_TRACE, LIBLOG_WARNING); + ASSERT_EQ_UINT(ctx.logmask, ~0U); + liblog_unmask_range(&ctx, LIBLOG_TRACE, LIBLOG_NOTICE); + ASSERT_EQ_UINT(ctx.logmask, ~0U); + liblog_unmask_range(&ctx, LIBLOG_TRACE, LIBLOG_INFO); + ASSERT_EQ_UINT(ctx.logmask, ~0U); + + ctx.logmask = ~0U; + liblog_unmask_range(&ctx, LIBLOG_TRACE, LIBLOG_DEBUG); + ASSERT_EQ_UINT(ctx.logmask, ~0x0180U); +} + +static void +check_from_debug(void) +{ + struct liblog_context ctx; + + ctx.logmask = ~0U; + liblog_unmask_range(&ctx, LIBLOG_DEBUG, LIBLOG_EMERGENCY); + ASSERT_EQ_UINT(ctx.logmask, ~0U); + liblog_unmask_range(&ctx, LIBLOG_DEBUG, LIBLOG_ALERT); + ASSERT_EQ_UINT(ctx.logmask, ~0U); + liblog_unmask_range(&ctx, LIBLOG_DEBUG, LIBLOG_CRITICAL); + ASSERT_EQ_UINT(ctx.logmask, ~0U); + liblog_unmask_range(&ctx, LIBLOG_DEBUG, LIBLOG_ERROR); + ASSERT_EQ_UINT(ctx.logmask, ~0U); + liblog_unmask_range(&ctx, LIBLOG_DEBUG, LIBLOG_WARNING); + ASSERT_EQ_UINT(ctx.logmask, ~0U); + liblog_unmask_range(&ctx, LIBLOG_DEBUG, LIBLOG_NOTICE); + ASSERT_EQ_UINT(ctx.logmask, ~0U); + liblog_unmask_range(&ctx, LIBLOG_DEBUG, LIBLOG_INFO); + ASSERT_EQ_UINT(ctx.logmask, ~0U); + liblog_unmask_range(&ctx, LIBLOG_DEBUG, LIBLOG_TRACE); + ASSERT_EQ_UINT(ctx.logmask, ~0U); +} + +static void +check_negative(void) +{ + struct liblog_context ctx; + + if ((enum liblog_level)-1 < 0) { + ctx.logmask = ~0U; + liblog_unmask_range(&ctx, (enum liblog_level)-10, (enum liblog_level)-10); + ASSERT_EQ_UINT(ctx.logmask, ~1U); + } +} + +static void +check_hyperverbose(void) +{ + struct liblog_context ctx; + + ctx.logmask = ~0U; + liblog_unmask_range(&ctx, (enum liblog_level)0x7FFF, (enum liblog_level)0x7FFF); + ASSERT_EQ_UINT(ctx.logmask, ~0x0100U); + + ctx.logmask = ~0U; + liblog_unmask_range(&ctx, (enum liblog_level)0, (enum liblog_level)0x7FFF); + ASSERT_EQ_UINT(ctx.logmask, ~0x01FFU); +} + +static void +check_series(void) +{ + struct liblog_context ctx; + + ctx.logmask = ~0U; + + liblog_unmask_range(&ctx, LIBLOG_EMERGENCY, LIBLOG_EMERGENCY); + ASSERT_EQ_UINT(ctx.logmask, ~0x0001U); + liblog_unmask_range(&ctx, LIBLOG_TRACE, LIBLOG_DEBUG); + ASSERT_EQ_UINT(ctx.logmask, ~0x0181U); + liblog_unmask_range(&ctx, LIBLOG_EMERGENCY, LIBLOG_ALERT); + ASSERT_EQ_UINT(ctx.logmask, ~0x0183U); + liblog_unmask_range(&ctx, LIBLOG_DEBUG, LIBLOG_EMERGENCY); + ASSERT_EQ_UINT(ctx.logmask, ~0x0183U); + liblog_unmask_range(&ctx, LIBLOG_EMERGENCY, LIBLOG_DEBUG); + ASSERT_EQ_UINT(ctx.logmask, ~0x01FFU); +} + +int +main(void) +{ + check_singletons(); + check_custom(); + check_from_emergency(); + check_from_alert(); + check_from_critical(); + check_from_error(); + check_from_warning(); + check_from_notice(); + check_from_info(); + check_from_trace(); + check_from_debug(); + check_negative(); + check_hyperverbose(); + check_series(); + return 0; +} + +#endif |
