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