diff --git a/audio/2.0/vts/functional/AudioPrimaryHidlHalTest.cpp b/audio/2.0/vts/functional/AudioPrimaryHidlHalTest.cpp index 74a72aa48c..30f5b30aee 100644 --- a/audio/2.0/vts/functional/AudioPrimaryHidlHalTest.cpp +++ b/audio/2.0/vts/functional/AudioPrimaryHidlHalTest.cpp @@ -217,7 +217,7 @@ protected: for (Property invalidValue : invalidValues) { SCOPED_TRACE("Try to set " + propertyName + " with the invalid value " + testing::PrintToString(invalidValue)); - EXPECT_INVALID_ARGUMENTS((device.get()->*setter)(invalidValue)); + EXPECT_RESULT(Result::INVALID_ARGUMENTS, (device.get()->*setter)(invalidValue)); } ASSERT_OK((device.get()->*setter)(initialValue)); // restore initial value @@ -714,7 +714,7 @@ TEST_F(AudioPrimaryHidlTest, setVoiceVolume) { SCOPED_TRACE("volume=" + to_string(volume)); // FIXME: NAN should never be accepted // FIXME: Missing api doc. What should the impl do if the volume is outside [0,1] ? - ASSERT_INVALID_ARGUMENTS(device->setVoiceVolume(volume)); + ASSERT_RESULT(Result::INVALID_ARGUMENTS, device->setVoiceVolume(volume)); } } @@ -728,7 +728,7 @@ TEST_F(AudioPrimaryHidlTest, setMode) { } // FIXME: Missing api doc. What should the impl do if the mode is invalid ? - ASSERT_INVALID_ARGUMENTS(device->setMode(AudioMode::INVALID)); + ASSERT_RESULT(Result::INVALID_ARGUMENTS, device->setMode(AudioMode::INVALID)); } diff --git a/audio/2.0/vts/functional/utility/AssertOk.h b/audio/2.0/vts/functional/utility/AssertOk.h index 63d37fd822..39c9a1d4cf 100644 --- a/audio/2.0/vts/functional/utility/AssertOk.h +++ b/audio/2.0/vts/functional/utility/AssertOk.h @@ -13,39 +13,59 @@ * See the License for the specific language governing permissions and * limitations under the License. */ + +#include +#include + #include namespace detail { -inline void assertOk(::android::hardware::Return ret) { +// This is a detail namespace, thus it is OK to import a class as nobody else is allowed to use it +using ::android::hardware::Return; +using ::android::hardware::audio::V2_0::Result; + +inline void assertResult(Result expected, Result result) { + ASSERT_EQ(expected, result); +} + +inline void assertResult(Result expected, Return ret) { + ASSERT_TRUE(ret.isOk()); + Result result = ret; + assertResult(expected, result); +} + +inline void assertResult(std::vector expected, Result result) { + if (std::find(expected.begin(), expected.end(), result) != expected.end()) { + return; // result is in expected + } + FAIL() << "Expected result " << ::testing::PrintToString(result) + << " to be one of " << ::testing::PrintToString(expected); +} + +inline void assertResult(std::vector expected, Return ret) { + ASSERT_TRUE(ret.isOk()); + Result result = ret; + assertResult(expected, result); +} + +inline void assertOk(Return ret) { ASSERT_TRUE(ret.isOk()); } -inline void assertOk(::android::hardware::audio::V2_0::Result result) { - ASSERT_EQ(decltype(result)::OK, result); +inline void assertOk(Result result) { + assertResult(Result::OK, result); } -inline void assertOk(::android::hardware::Return<::android::hardware::audio::V2_0::Result> ret) { - ASSERT_TRUE(ret.isOk()); - ::android::hardware::audio::V2_0::Result result = ret; - assertOk(result); +inline void assertOk(Return ret) { + assertResult(Result::OK, std::move(ret)); } -inline void assertInvalidArguments(::android::hardware::audio::V2_0::Result result) { - ASSERT_EQ(decltype(result)::INVALID_ARGUMENTS, result); -} - -inline void assertInvalidArguments( - ::android::hardware::Return<::android::hardware::audio::V2_0::Result> ret) { - ASSERT_TRUE(ret.isOk()); - ::android::hardware::audio::V2_0::Result result = ret; - assertInvalidArguments(result); -} } // Test anything provided is and contains only OK #define ASSERT_OK(ret) ASSERT_NO_FATAL_FAILURE(detail::assertOk(ret)) #define EXPECT_OK(ret) EXPECT_NO_FATAL_FAILURE(detail::assertOk(ret)) -#define ASSERT_INVALID_ARGUMENTS(ret) ASSERT_NO_FATAL_FAILURE(detail::assertInvalidArguments(ret)) -#define EXPECT_INVALID_ARGUMENTS(ret) EXPECT_NO_FATAL_FAILURE(detail::assertInvalidArguments(ret)) +#define ASSERT_RESULT(expected, ret) ASSERT_NO_FATAL_FAILURE(detail::assertResult(expected, ret)) +#define EXPECT_RESULT(expected, ret) ASSERT_NO_FATAL_FAILURE(detail::assertResult(expected, ret))