libhidl: add withDefault
Shorthand way to provide default values for HIDL calls.
Fixes: 37088970
Test: libhidl_test
Change-Id: If91cfb774fa76314aeec334fbc2b18ea790912c4
diff --git a/test_main.cpp b/test_main.cpp
index 4be2eb9..bce9294 100644
--- a/test_main.cpp
+++ b/test_main.cpp
@@ -363,6 +363,29 @@
ret.isOk();
}
+TEST_F(LibHidlTest, ReturnTest) {
+ using ::android::DEAD_OBJECT;
+ using ::android::hardware::Return;
+ using ::android::hardware::Status;
+ using ::android::hardware::hidl_string;
+
+ EXPECT_FALSE(Return<void>(Status::fromStatusT(DEAD_OBJECT)).isOk());
+ EXPECT_TRUE(Return<void>(Status::ok()).isOk());
+
+ hidl_string one = "1";
+ hidl_string two = "2";
+ Return<hidl_string> ret = Return<hidl_string>(Status::fromStatusT(DEAD_OBJECT));
+
+ EXPECT_EQ(one, Return<hidl_string>(one).withDefault(two));
+ EXPECT_EQ(two, ret.withDefault(two));
+
+ hidl_string&& moved = ret.withDefault(std::move(two));
+ EXPECT_EQ("2", moved);
+
+ const hidl_string three = "3";
+ EXPECT_EQ(three, ret.withDefault(three));
+}
+
std::string toString(const ::android::hardware::Status &s) {
using ::android::hardware::operator<<;
std::ostringstream oss;