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