summaryrefslogtreecommitdiffstats
path: root/liblog_mask_level.c
diff options
context:
space:
mode:
Diffstat (limited to 'liblog_mask_level.c')
-rw-r--r--liblog_mask_level.c113
1 files changed, 113 insertions, 0 deletions
diff --git a/liblog_mask_level.c b/liblog_mask_level.c
new file mode 100644
index 0000000..5989f7d
--- /dev/null
+++ b/liblog_mask_level.c
@@ -0,0 +1,113 @@
+/* See LICENSE file for copyright and license details. */
+#include "common.h"
+#ifndef TEST
+
+extern inline void liblog_mask_level(struct liblog_context *, enum liblog_level);
+
+#else
+
+static void
+check_singletons(void)
+{
+ struct liblog_context ctx;
+
+ ctx.logmask = 0U;
+ liblog_mask_level(&ctx, LIBLOG_EMERGENCY);
+ ASSERT_EQ_UINT(ctx.logmask, 0x0001U);
+
+ ctx.logmask = 0U;
+ liblog_mask_level(&ctx, LIBLOG_ALERT);
+ ASSERT_EQ_UINT(ctx.logmask, 0x0002U);
+
+ ctx.logmask = 0U;
+ liblog_mask_level(&ctx, LIBLOG_CRITICAL);
+ ASSERT_EQ_UINT(ctx.logmask, 0x0004U);
+
+ ctx.logmask = 0U;
+ liblog_mask_level(&ctx, LIBLOG_ERROR);
+ ASSERT_EQ_UINT(ctx.logmask, 0x0008U);
+
+ ctx.logmask = 0U;
+ liblog_mask_level(&ctx, LIBLOG_WARNING);
+ ASSERT_EQ_UINT(ctx.logmask, 0x0010U);
+
+ ctx.logmask = 0U;
+ liblog_mask_level(&ctx, LIBLOG_NOTICE);
+ ASSERT_EQ_UINT(ctx.logmask, 0x0020U);
+
+ ctx.logmask = 0U;
+ liblog_mask_level(&ctx, LIBLOG_INFO);
+ ASSERT_EQ_UINT(ctx.logmask, 0x0040U);
+
+ ctx.logmask = 0U;
+ liblog_mask_level(&ctx, LIBLOG_TRACE);
+ ASSERT_EQ_UINT(ctx.logmask, 0x0080U);
+
+ ctx.logmask = 0U;
+ liblog_mask_level(&ctx, LIBLOG_DEBUG);
+ ASSERT_EQ_UINT(ctx.logmask, 0x0100U);
+}
+
+static void
+check_custom(void)
+{
+ struct liblog_context ctx;
+
+ ctx.logmask = 0U;
+ liblog_mask_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_mask_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_mask_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_mask_level(&ctx, LIBLOG_EMERGENCY);
+ ASSERT_EQ_UINT(ctx.logmask, 0x0001U);
+ liblog_mask_level(&ctx, LIBLOG_EMERGENCY);
+ ASSERT_EQ_UINT(ctx.logmask, 0x0001U);
+ liblog_mask_level(&ctx, LIBLOG_DEBUG);
+ ASSERT_EQ_UINT(ctx.logmask, 0x0101U);
+ liblog_mask_level(&ctx, LIBLOG_ALERT);
+ ASSERT_EQ_UINT(ctx.logmask, 0x0103U);
+ liblog_mask_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