Merge "Add macros to check for successful Result" am: 4df09e4685 am: 45f0c06c58 am: e94afa096e

Change-Id: I5d9b8b06b123d32f640611695d372a07a0dac612
diff --git a/base/include/android-base/result.h b/base/include/android-base/result.h
index b6d26e7..52fb6e7 100644
--- a/base/include/android-base/result.h
+++ b/base/include/android-base/result.h
@@ -204,5 +204,28 @@
 template <typename T>
 using Result = android::base::expected<T, ResultError>;
 
+// Macros for testing the results of functions that return android::base::Result.
+// These also work with base::android::expected.
+
+#define CHECK_RESULT_OK(stmt)       \
+  do {                              \
+    const auto& tmp = (stmt);       \
+    CHECK(tmp.ok()) << tmp.error(); \
+  } while (0)
+
+#define ASSERT_RESULT_OK(stmt)            \
+  do {                                    \
+    const auto& tmp = (stmt);             \
+    ASSERT_TRUE(tmp.ok()) << tmp.error(); \
+  } while (0)
+
+#define EXPECT_RESULT_OK(stmt)            \
+  do {                                    \
+    auto tmp = (stmt);                    \
+    EXPECT_TRUE(tmp.ok()) << tmp.error(); \
+  } while (0)
+
+// TODO: Maybe add RETURN_IF_ERROR() and ASSIGN_OR_RETURN()
+
 }  // namespace base
 }  // namespace android