pw_assert: Add short name option
This adds a flag PW_ASSERT_USE_SHORT_NAMES to enable raw CHECK and CRASH
macros without the PW_ prefix.
Change-Id: I1337b6edaa8b8cd834a02fd87c5a1419e84902b5
diff --git a/pw_assert/assert_test.cc b/pw_assert/assert_test.cc
index 89cd39b..5532f2e 100644
--- a/pw_assert/assert_test.cc
+++ b/pw_assert/assert_test.cc
@@ -19,6 +19,7 @@
// TODO(pwbug/88): Add verification of the actually logged statements.
// clang-format off
+#define PW_ASSERT_USE_SHORT_NAMES 1
#include "pw_assert/assert.h"
// clang-format on
@@ -166,4 +167,31 @@
EXPECT_EQ(global_state_for_multi_evaluate_test, 2);
}
+// Note: This requires enabling PW_ASSERT_USE_SHORT_NAMES 1 above.
+TEST(Check, ShortNamesWork) {
+ MAYBE_SKIP_TEST;
+
+ // Crash
+ CRASH(FAIL_IF_HIDDEN);
+ CRASH(FAIL_IF_HIDDEN_ARGS, z);
+
+ // Check
+ CHECK(true, FAIL_IF_DISPLAYED);
+ CHECK(true, FAIL_IF_DISPLAYED_ARGS, z);
+ CHECK(false, FAIL_IF_HIDDEN);
+ CHECK(false, FAIL_IF_HIDDEN_ARGS, z);
+
+ // Check with binary comparison
+ int x_int = 50;
+ int y_int = 66;
+
+ CHECK_INT_LE(Add3(1, 2, 3), y_int);
+ CHECK_INT_LE(x_int, Add3(1, 2, 3));
+
+ CHECK_INT_LE(Add3(1, 2, 3), y_int, FAIL_IF_DISPLAYED);
+ CHECK_INT_LE(x_int, Add3(1, 2, 3), FAIL_IF_DISPLAYED_ARGS, z);
+
+ CHECK_INT_LE(Add3(1, 2, 3), Add3(1, 2, 3), "INT: " FAIL_IF_DISPLAYED);
+ CHECK_INT_LE(x_int, y_int, "INT: " FAIL_IF_DISPLAYED_ARGS, z);
+}
} // namespace
diff --git a/pw_assert/public/pw_assert/assert.h b/pw_assert/public/pw_assert/assert.h
index f1a4d07..f878bd0 100644
--- a/pw_assert/public/pw_assert/assert.h
+++ b/pw_assert/public/pw_assert/assert.h
@@ -221,7 +221,7 @@
argument_b_str, \
argument_b_val, \
type_fmt, \
- __VA_ARGS__);
+ __VA_ARGS__)
// For the binary assertions, this private macro is re-used for all the
// variants. Due to limitations of C formatting, it is necessary to have
@@ -247,3 +247,34 @@
__VA_ARGS__); \
} \
} while (0)
+
+// Define short, usable names if requested. Note that the CHECK() macro will
+// conflict with Google Log, which expects stream style logs.
+//
+// TODO(pwbug/17): Convert this to the config system when available.
+#ifndef PW_ASSERT_USE_SHORT_NAMES
+#define PW_ASSERT_USE_SHORT_NAMES 0
+#endif
+
+// clang-format off
+#if PW_ASSERT_USE_SHORT_NAMES
+#define CRASH PW_CRASH
+#define CHECK PW_CHECK
+#define CHECK PW_CHECK
+#define CHECK_INT_LE PW_CHECK_INT_LE
+#define CHECK_INT_LT PW_CHECK_INT_LT
+#define CHECK_INT_GE PW_CHECK_INT_GE
+#define CHECK_INT_GT PW_CHECK_INT_GT
+#define CHECK_INT_EQ PW_CHECK_INT_EQ
+#define CHECK_UINT_LE PW_CHECK_UINT_LE
+#define CHECK_UINT_LT PW_CHECK_UINT_LT
+#define CHECK_UINT_GE PW_CHECK_UINT_GE
+#define CHECK_UINT_GT PW_CHECK_UINT_GT
+#define CHECK_UINT_EQ PW_CHECK_UINT_EQ
+#define CHECK_FLOAT_LE PW_CHECK_FLOAT_LE
+#define CHECK_FLOAT_LT PW_CHECK_FLOAT_LT
+#define CHECK_FLOAT_GE PW_CHECK_FLOAT_GE
+#define CHECK_FLOAT_GT PW_CHECK_FLOAT_GT
+#define CHECK_FLOAT_EQ PW_CHECK_FLOAT_EQ
+#endif // PW_ASSERT_SHORT_NAMES
+// clang-format on