Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 90909c32 authored by Kevin Rocard's avatar Kevin Rocard Committed by Android (Google) Code Review
Browse files

Merge changes Id207ae31,Ib18c6d2e,I4af19080,I03686e55,Iea1d7d22, ...

* changes:
  Audio HAL VTS: Add tests for IStreamIn
  Audio HAL VTS: Add at least negative tests for IStream
  Audio HAL VTS: Test IStream::debugDump
  Audio HAL VTS: Split big test for better traceability
  Audio hal VTS: pretty print AudioDevice and ChannelMask
  Audio Hal VTS: Refactor ASSERT_RESULT helper
  Audio hal VTS: generate names for parametrized tests
  Audio hal VTS: factorize master volume test
  Fix potentiel deadlock in audio VTS
parents cd7bc8ff c9963526
Loading
Loading
Loading
Loading
+340 −149

File changed.

Preview size limit exceeded, changes collapsed.

+35 −14
Original line number Diff line number Diff line
@@ -13,38 +13,59 @@
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

#include <vector>
#include <algorithm>

#include <hidl/Status.h>

namespace detail {

inline void assertOk(::android::hardware::Return<void> 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<Result> ret) {
    ASSERT_TRUE(ret.isOk());
    Result result = ret;
    assertResult(expected, result);
}

inline void assertOk(::android::hardware::audio::V2_0::Result result) {
    ASSERT_EQ(decltype(result)::OK, result);
inline void assertResult(std::vector<Result> 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 assertOk(::android::hardware::Return<::android::hardware::audio::V2_0::Result> ret) {
inline void assertResult(std::vector<Result> expected, Return<Result> ret) {
    ASSERT_TRUE(ret.isOk());
    ::android::hardware::audio::V2_0::Result result = ret;
    assertOk(result);
    Result result = ret;
    assertResult(expected, result);
}

inline void assertInvalidArguments(::android::hardware::audio::V2_0::Result result) {
    ASSERT_EQ(decltype(result)::INVALID_ARGUMENTS, result);
inline void assertOk(Return<void> ret) {
    ASSERT_TRUE(ret.isOk());
}

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);
inline void assertOk(Result result) {
    assertResult(Result::OK, result);
}

inline void assertOk(Return<Result> ret) {
    assertResult(Result::OK, std::move(ret));
}

}

// 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 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))
+31 −4
Original line number Diff line number Diff line
@@ -13,23 +13,50 @@
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */
#include <type_traits>

/** @file Use HIDL generated toString methods to pretty print gtest errors */

namespace detail {

// Print the value of an enum as hex
template <class Enum>
inline void printUnderlyingValue(Enum value, ::std::ostream* os) {
    *os << std::hex << " (0x" << static_cast<std::underlying_type_t<Enum>>(value) << ")";
}

} // namespace detail

// Use HIDL generated toString methods to pretty print gtest errors
namespace android {
namespace hardware {
namespace audio {
namespace V2_0 {

inline void PrintTo(const Result& result, ::std::ostream* os) {
    *os << toString(result);
    detail::printUnderlyingValue(result, os);
}

} // namespace V2_0
namespace common {
namespace V2_0 {

inline void PrintTo(const AudioConfig& config, ::std::ostream* os) {
    *os << toString(config);
}
} // namespace V2_0
} // namespace common
}

inline void PrintTo(const AudioDevice& device, ::std::ostream* os) {
    *os << toString(device);
    detail::printUnderlyingValue(device, os);
}

inline void PrintTo(const AudioChannelMask& channelMask, ::std::ostream* os) {
    *os << toString(channelMask);
    detail::printUnderlyingValue(channelMask, os);
}

} // namespace V2_0
} // namespace common
} // namespace audio
} // namespace hardware
} // namespace android