summaryrefslogtreecommitdiffstats
path: root/liblog_unmask_level.c
diff options
context:
space:
mode:
authorMattias Andrée <m@maandree.se>2025-02-09 15:04:27 +0100
committerMattias Andrée <m@maandree.se>2025-02-09 15:04:27 +0100
commited004cba0e8d1d383def76f795b1e63ba0aaa89a (patch)
treeb12e5f23329f631b66c19b932551e4dff5aa477f /liblog_unmask_level.c
downloadliblog-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_level.c')
-rw-r--r--liblog_unmask_level.c113
1 files changed, 113 insertions, 0 deletions
diff --git a/liblog_unmask_level.c b/liblog_unmask_level.c
new file mode 100644
index 0000000..9d3f691
--- /dev/null
+++ b/liblog_unmask_level.c
@@ -0,0 +1,113 @@
+/* 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