diff --git a/audio/aidl/vts/VtsHalVisualizerTargetTest.cpp b/audio/aidl/vts/VtsHalVisualizerTargetTest.cpp index f89cb4016b..a0e43bc37e 100644 --- a/audio/aidl/vts/VtsHalVisualizerTargetTest.cpp +++ b/audio/aidl/vts/VtsHalVisualizerTargetTest.cpp @@ -48,27 +48,23 @@ using VisualizerParamTestParam = std::tuple, Descriptor>, int, Visualizer::ScalingMode, Visualizer::MeasurementMode, int>; -class VisualizerParamTest : public ::testing::TestWithParam, - public EffectHelper { +class VisualizerTestHelper : public EffectHelper { public: - VisualizerParamTest() - : mCaptureSize(std::get(GetParam())), - mScalingMode(std::get(GetParam())), - mMeasurementMode(std::get(GetParam())), - mLatency(std::get(GetParam())) { - std::tie(mFactory, mDescriptor) = std::get(GetParam()); - - size_t channelCount = - getChannelCount(AudioChannelLayout::make( - AudioChannelLayout::LAYOUT_STEREO)); - mBufferSizeInFrames = kInputFrameCount * channelCount; - mInputBuffer.resize(mBufferSizeInFrames); - generateInputBuffer(mInputBuffer, 0, true, channelCount, kMaxAudioSampleValue); - - mOutputBuffer.resize(mBufferSizeInFrames); + VisualizerTestHelper( + std::pair, Descriptor> descPair = {}, int captureSize = 128, + int latency = 0, + Visualizer::ScalingMode scalingMode = Visualizer::ScalingMode::NORMALIZED, + Visualizer::MeasurementMode measurementMode = Visualizer::MeasurementMode::NONE) + : mCaptureSize(captureSize), + mLatency(latency), + mScalingMode(scalingMode), + mMeasurementMode(measurementMode), + mInputBuffer(mBufferSizeInFrames), + mOutputBuffer(mBufferSizeInFrames) { + std::tie(mFactory, mDescriptor) = descPair; } - void SetUp() override { + void SetUpVisualizer() { ASSERT_NE(nullptr, mFactory); ASSERT_NO_FATAL_FAILURE(create(mFactory, mEffect, mDescriptor)); @@ -80,28 +76,14 @@ class VisualizerParamTest : public ::testing::TestWithParam mFactory; - std::shared_ptr mEffect; - Descriptor mDescriptor; - int mCaptureSize; - Visualizer::ScalingMode mScalingMode = Visualizer::ScalingMode::NORMALIZED; - Visualizer::MeasurementMode mMeasurementMode = Visualizer::MeasurementMode::NONE; - int mLatency = 0; - int mVersion = 0; - std::vector mInputBuffer; - std::vector mOutputBuffer; - size_t mBufferSizeInFrames; - IEffect::OpenEffectReturn mOpenEffectReturn; - bool mAllParamsValid = true; - - void SetAndGetParameters() { + void SetAndGetParameters(bool* allParamsValid = nullptr) { + if (allParamsValid != nullptr) *allParamsValid = true; for (auto& it : mCommonTags) { auto& tag = it.first; auto& vs = it.second; @@ -111,7 +93,9 @@ class VisualizerParamTest : public ::testing::TestWithParamgetDescriptor(&desc)); const bool valid = isParameterValid(vs, desc); const binder_exception_t expected = valid ? EX_NONE : EX_ILLEGAL_ARGUMENT; - if (expected == EX_ILLEGAL_ARGUMENT) mAllParamsValid = false; + if (expected == EX_ILLEGAL_ARGUMENT && allParamsValid != nullptr) { + *allParamsValid = false; + } // set parameter Parameter expectParam; @@ -155,6 +139,44 @@ class VisualizerParamTest : public ::testing::TestWithParam(latency)}); } + static constexpr long kInputFrameCount = 0x100, kOutputFrameCount = 0x100; + const size_t mChannelCount = + getChannelCount(AudioChannelLayout::make( + AudioChannelLayout::LAYOUT_STEREO)); + const size_t mBufferSizeInFrames = kInputFrameCount * mChannelCount; + const int mCaptureSize; + const int mLatency; + const Visualizer::ScalingMode mScalingMode; + const Visualizer::MeasurementMode mMeasurementMode; + int mVersion; + std::vector mInputBuffer; + std::vector mOutputBuffer; + std::shared_ptr mEffect; + std::shared_ptr mFactory; + Descriptor mDescriptor; + IEffect::OpenEffectReturn mOpenEffectReturn; + + private: + std::vector> mCommonTags; + void CleanUp() { mCommonTags.clear(); } +}; + +class VisualizerParamTest : public ::testing::TestWithParam, + public VisualizerTestHelper { + public: + VisualizerParamTest() + : VisualizerTestHelper(std::get(GetParam()), + std::get(GetParam()), + std::get(GetParam()), + std::get(GetParam()), + std::get(GetParam())) { + generateInputBuffer(mInputBuffer, 0, true, mChannelCount, kMaxAudioSampleValue); + } + + void SetUp() override { SetUpVisualizer(); } + + void TearDown() override { TearDownVisualizer(); } + static std::unordered_set getMeasurementModeValues() { return {ndk::enum_range().begin(), ndk::enum_range().end()}; @@ -164,10 +186,6 @@ class VisualizerParamTest : public ::testing::TestWithParam().begin(), ndk::enum_range().end()}; } - - private: - std::vector> mCommonTags; - void CleanUp() { mCommonTags.clear(); } }; TEST_P(VisualizerParamTest, SetAndGetCaptureSize) { @@ -192,11 +210,13 @@ TEST_P(VisualizerParamTest, SetAndGetLatency) { TEST_P(VisualizerParamTest, testCaptureSampleBufferSizeAndOutput) { SKIP_TEST_IF_DATA_UNSUPPORTED(mDescriptor.common.flags); + + bool allParamsValid = true; ASSERT_NO_FATAL_FAILURE(addCaptureSizeParam(mCaptureSize)); ASSERT_NO_FATAL_FAILURE(addScalingModeParam(mScalingMode)); ASSERT_NO_FATAL_FAILURE(addMeasurementModeParam(mMeasurementMode)); ASSERT_NO_FATAL_FAILURE(addLatencyParam(mLatency)); - ASSERT_NO_FATAL_FAILURE(SetAndGetParameters()); + ASSERT_NO_FATAL_FAILURE(SetAndGetParameters(&allParamsValid)); Parameter getParam; Parameter::Id id; @@ -209,7 +229,7 @@ TEST_P(VisualizerParamTest, testCaptureSampleBufferSizeAndOutput) { &mOpenEffectReturn, mVersion)); ASSERT_EQ(mInputBuffer, mOutputBuffer); - if (mAllParamsValid) { + if (allParamsValid) { std::vector captureBuffer = getParam.get() .get() .get();