pw_assert: Add DCHECK*() assert macros

This extends the assert API to include debug variants, that are only
enabled when NDEBUG is defined. The macros do not evaluate their
argumetns when they are disabled.

Change-Id: I127175889ba7d93ec9881622c57eb897c9d29970
diff --git a/pw_assert/assert_backend_compile_test.cc b/pw_assert/assert_backend_compile_test.cc
index 49666eb..47df056 100644
--- a/pw_assert/assert_backend_compile_test.cc
+++ b/pw_assert/assert_backend_compile_test.cc
@@ -114,6 +114,20 @@
   PW_CHECK_UINT_GE(x_uint, y_uint, "UINT: " FAIL_IF_HIDDEN_ARGS, z);
 }
 
+TEST(Check, PtrComparison) {
+  MAYBE_SKIP_TEST;
+  void* x_ptr = reinterpret_cast<void*>(50);
+  void* y_ptr = reinterpret_cast<void*>(66);
+
+  PW_CHECK_PTR_EQ(x_ptr, y_ptr);
+  PW_CHECK_PTR_LE(x_ptr, y_ptr, "PTR: " FAIL_IF_DISPLAYED);
+  PW_CHECK_PTR_LE(x_ptr, y_ptr, "PTR: " FAIL_IF_DISPLAYED_ARGS, z);
+
+  PW_CHECK_PTR_GE(x_ptr, y_ptr);
+  PW_CHECK_PTR_GE(x_ptr, y_ptr, "PTR: " FAIL_IF_HIDDEN);
+  PW_CHECK_PTR_GE(x_ptr, y_ptr, "PTR: " FAIL_IF_HIDDEN_ARGS, z);
+}
+
 TEST(Check, FloatComparison) {
   MAYBE_SKIP_TEST;
   float x_float = 50.5;
@@ -128,6 +142,16 @@
   PW_CHECK_FLOAT_GE(x_float, y_float, "FLOAT: " FAIL_IF_HIDDEN_ARGS, z);
 }
 
+// Don't exhaustively test the DCHECKs but have a sampling of them.
+TEST(DCheck, Sampling) {
+  MAYBE_SKIP_TEST;
+  PW_DCHECK(5 == 10);
+  PW_DCHECK(5 == 10, "Message");
+  PW_DCHECK(5 == 10, "Message: %d", 5);
+  PW_DCHECK_INT_LE(5.4, 10.0);
+  PW_DCHECK_FLOAT_EQ(5.4, 10.0, "Message");
+}
+
 static int Add3(int a, int b, int c) { return a + b + c; }
 
 TEST(Check, ComparisonArgumentsWithCommas) {