summaryrefslogtreecommitdiffstats
path: root/liblog_unmask_verbose.c
diff options
context:
space:
mode:
Diffstat (limited to 'liblog_unmask_verbose.c')
-rw-r--r--liblog_unmask_verbose.c111
1 files changed, 111 insertions, 0 deletions
diff --git a/liblog_unmask_verbose.c b/liblog_unmask_verbose.c
new file mode 100644
index 0000000..67ac221
--- /dev/null
+++ b/liblog_unmask_verbose.c
@@ -0,0 +1,111 @@
+/* See LICENSE file for copyright and license details. */
+#include "common.h"
+#ifndef TEST
+
+extern inline void liblog_unmask_verbose(struct liblog_context *, enum liblog_level);
+
+#else
+
+static void
+check_singletons(void)
+{
+ struct liblog_context ctx;
+
+ ctx.logmask = ~0U;
+ liblog_unmask_verbose(&ctx, LIBLOG_EMERGENCY);
+ ASSERT_EQ_UINT(ctx.logmask, ~0x01FFU);
+
+ ctx.logmask = ~0U;
+ liblog_unmask_verbose(&ctx, LIBLOG_ALERT);
+ ASSERT_EQ_UINT(ctx.logmask, ~0x01FEU);
+
+ ctx.logmask = ~0U;
+ liblog_unmask_verbose(&ctx, LIBLOG_CRITICAL);
+ ASSERT_EQ_UINT(ctx.logmask, ~0x01FCU);
+
+ ctx.logmask = ~0U;
+ liblog_unmask_verbose(&ctx, LIBLOG_ERROR);
+ ASSERT_EQ_UINT(ctx.logmask, ~0x01F8U);
+
+ ctx.logmask = ~0U;
+ liblog_unmask_verbose(&ctx, LIBLOG_WARNING);
+ ASSERT_EQ_UINT(ctx.logmask, ~0x01F0U);
+
+ ctx.logmask = ~0U;
+ liblog_unmask_verbose(&ctx, LIBLOG_NOTICE);
+ ASSERT_EQ_UINT(ctx.logmask, ~0x01E0U);
+
+ ctx.logmask = ~0U;
+ liblog_unmask_verbose(&ctx, LIBLOG_INFO);
+ ASSERT_EQ_UINT(ctx.logmask, ~0x01C0U);
+
+ ctx.logmask = ~0U;
+ liblog_unmask_verbose(&ctx, LIBLOG_TRACE);
+ ASSERT_EQ_UINT(ctx.logmask, ~0x0180U);
+
+ ctx.logmask = ~0U;
+ liblog_unmask_verbose(&ctx, LIBLOG_DEBUG);
+ ASSERT_EQ_UINT(ctx.logmask, ~0x0100U);
+}
+
+static void
+check_custom(void)
+{
+ struct liblog_context ctx;
+
+ ctx.logmask = ~0U;
+ liblog_unmask_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_unmask_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_unmask_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_unmask_verbose(&ctx, LIBLOG_DEBUG);
+ ASSERT_EQ_UINT(ctx.logmask, ~0x0100U);
+ liblog_unmask_verbose(&ctx, LIBLOG_ERROR);
+ ASSERT_EQ_UINT(ctx.logmask, ~0x01F8U);
+ liblog_unmask_verbose(&ctx, LIBLOG_INFO);
+ ASSERT_EQ_UINT(ctx.logmask, ~0x01F8U);
+ liblog_unmask_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