blob: f641fa5f375398daddc144b79974ebd65d26df10 [file] [log] [blame]
Shraddha Basantwanidbb0ed62022-11-17 20:32:18 +05301/*
2 * Copyright (C) 2022 The Android Open Source Project
3 *
4 * Licensed under the Apache License, Version 2.0 (the "License");
5 * you may not use this file except in compliance with the License.
6 * You may obtain a copy of the License at
7 *
8 * http://www.apache.org/licenses/LICENSE-2.0
9 *
10 * Unless required by applicable law or agreed to in writing, software
11 * distributed under the License is distributed on an "AS IS" BASIS,
12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 * See the License for the specific language governing permissions and
14 * limitations under the License.
15 */
16
Mikhail Naganov872d4a62023-03-09 18:19:01 -080017#define LOG_TAG "VtsHalEnvironmentalReverbTest"
18#include <android-base/logging.h>
19
Shraddha Basantwanidbb0ed62022-11-17 20:32:18 +053020#include "EffectHelper.h"
21
22using namespace android;
23
Shraddha Basantwanidbb0ed62022-11-17 20:32:18 +053024using aidl::android::hardware::audio::effect::Descriptor;
25using aidl::android::hardware::audio::effect::EnvironmentalReverb;
Shunkai Yaof8be1ac2023-03-06 18:41:27 +000026using aidl::android::hardware::audio::effect::getEffectTypeUuidEnvReverb;
Shraddha Basantwanidbb0ed62022-11-17 20:32:18 +053027using aidl::android::hardware::audio::effect::IEffect;
28using aidl::android::hardware::audio::effect::IFactory;
Shraddha Basantwanidbb0ed62022-11-17 20:32:18 +053029using aidl::android::hardware::audio::effect::Parameter;
Jaideep Sharma74498412023-09-13 15:25:25 +053030using android::hardware::audio::common::testing::detail::TestExecutionTracer;
Shraddha Basantwanidbb0ed62022-11-17 20:32:18 +053031
32/**
33 * Here we focus on specific parameter checking, general IEffect interfaces testing performed in
34 * VtsAudioEffectTargetTest.
35 * Testing parameter range, assuming the parameter supported by effect is in this range.
36 * This range is verified with IEffect.getDescriptor() and range defined in the documentation, for
37 * any index supported value test expects EX_NONE from IEffect.setParameter(), otherwise expects
38 * EX_ILLEGAL_ARGUMENT.
39 */
Shraddha Basantwanidbb0ed62022-11-17 20:32:18 +053040
41class EnvironmentalReverbHelper : public EffectHelper {
42 public:
43 EnvironmentalReverbHelper(std::pair<std::shared_ptr<IFactory>, Descriptor> pair) {
44 std::tie(mFactory, mDescriptor) = pair;
45 }
46
47 void SetUpReverb() {
48 ASSERT_NE(nullptr, mFactory);
49 ASSERT_NO_FATAL_FAILURE(create(mFactory, mEffect, mDescriptor));
50
51 Parameter::Specific specific = getDefaultParamSpecific();
52 Parameter::Common common = EffectHelper::createParamCommon(
53 0 /* session */, 1 /* ioHandle */, 44100 /* iSampleRate */, 44100 /* oSampleRate */,
54 kInputFrameCount /* iFrameCount */, kOutputFrameCount /* oFrameCount */);
55 IEffect::OpenEffectReturn ret;
56 ASSERT_NO_FATAL_FAILURE(open(mEffect, common, specific, &ret, EX_NONE));
57 ASSERT_NE(nullptr, mEffect);
58 }
59
60 void TearDownReverb() {
61 ASSERT_NO_FATAL_FAILURE(close(mEffect));
62 ASSERT_NO_FATAL_FAILURE(destroy(mFactory, mEffect));
63 }
64
65 Parameter::Specific getDefaultParamSpecific() {
Sham Rathode362a462023-01-05 18:46:21 +053066 EnvironmentalReverb er = EnvironmentalReverb::make<EnvironmentalReverb::roomLevelMb>(-6000);
Shraddha Basantwanidbb0ed62022-11-17 20:32:18 +053067 Parameter::Specific specific =
68 Parameter::Specific::make<Parameter::Specific::environmentalReverb>(er);
69 return specific;
70 }
71
72 static const long kInputFrameCount = 0x100, kOutputFrameCount = 0x100;
73 std::shared_ptr<IFactory> mFactory;
74 std::shared_ptr<IEffect> mEffect;
75 Descriptor mDescriptor;
Sham Rathode362a462023-01-05 18:46:21 +053076 int mRoomLevel = -6000;
77 int mRoomHfLevel = 0;
Shraddha Basantwanidbb0ed62022-11-17 20:32:18 +053078 int mDecayTime = 1000;
79 int mDecayHfRatio = 500;
Sham Rathode362a462023-01-05 18:46:21 +053080 int mLevel = -6000;
Shraddha Basantwanidbb0ed62022-11-17 20:32:18 +053081 int mDelay = 40;
Sham Rathode362a462023-01-05 18:46:21 +053082 int mDiffusion = 1000;
83 int mDensity = 1000;
Shraddha Basantwanidbb0ed62022-11-17 20:32:18 +053084 bool mBypass = false;
85
86 void SetAndGetReverbParameters() {
87 for (auto& it : mTags) {
88 auto& tag = it.first;
89 auto& er = it.second;
90
91 // validate parameter
92 Descriptor desc;
93 ASSERT_STATUS(EX_NONE, mEffect->getDescriptor(&desc));
Shunkai Yao0a0c45e2023-02-13 17:41:11 +000094 const bool valid = isParameterValid<EnvironmentalReverb, Range::environmentalReverb>(
95 it.second, desc);
Shraddha Basantwanidbb0ed62022-11-17 20:32:18 +053096 const binder_exception_t expected = valid ? EX_NONE : EX_ILLEGAL_ARGUMENT;
97
98 // set
99 Parameter expectParam;
100 Parameter::Specific specific;
101 specific.set<Parameter::Specific::environmentalReverb>(er);
102 expectParam.set<Parameter::specific>(specific);
103 EXPECT_STATUS(expected, mEffect->setParameter(expectParam)) << expectParam.toString();
104
105 // only get if parameter in range and set success
106 if (expected == EX_NONE) {
107 Parameter getParam;
108 Parameter::Id id;
109 EnvironmentalReverb::Id erId;
110 erId.set<EnvironmentalReverb::Id::commonTag>(tag);
111 id.set<Parameter::Id::environmentalReverbTag>(erId);
112 // if set success, then get should match
113 EXPECT_STATUS(expected, mEffect->getParameter(id, &getParam));
114 EXPECT_EQ(expectParam, getParam);
115 }
116 }
117 }
118
119 void addRoomLevelParam() {
120 EnvironmentalReverb er;
121 er.set<EnvironmentalReverb::roomLevelMb>(mRoomLevel);
122 mTags.push_back({EnvironmentalReverb::roomLevelMb, er});
123 }
124
125 void addRoomHfLevelParam(int roomHfLevel) {
126 EnvironmentalReverb er;
127 er.set<EnvironmentalReverb::roomHfLevelMb>(roomHfLevel);
128 mTags.push_back({EnvironmentalReverb::roomHfLevelMb, er});
129 }
130
131 void addDecayTimeParam(int decayTime) {
132 EnvironmentalReverb er;
133 er.set<EnvironmentalReverb::decayTimeMs>(decayTime);
134 mTags.push_back({EnvironmentalReverb::decayTimeMs, er});
135 }
136
137 void addDecayHfRatioParam(int decayHfRatio) {
138 EnvironmentalReverb er;
139 er.set<EnvironmentalReverb::decayHfRatioPm>(decayHfRatio);
140 mTags.push_back({EnvironmentalReverb::decayHfRatioPm, er});
141 }
142
143 void addLevelParam(int level) {
144 EnvironmentalReverb er;
145 er.set<EnvironmentalReverb::levelMb>(level);
146 mTags.push_back({EnvironmentalReverb::levelMb, er});
147 }
148
149 void addDelayParam(int delay) {
150 EnvironmentalReverb er;
151 er.set<EnvironmentalReverb::delayMs>(delay);
152 mTags.push_back({EnvironmentalReverb::delayMs, er});
153 }
154
155 void addDiffusionParam(int diffusion) {
156 EnvironmentalReverb er;
157 er.set<EnvironmentalReverb::diffusionPm>(diffusion);
158 mTags.push_back({EnvironmentalReverb::diffusionPm, er});
159 }
160
161 void addDensityParam(int density) {
162 EnvironmentalReverb er;
163 er.set<EnvironmentalReverb::densityPm>(density);
164 mTags.push_back({EnvironmentalReverb::densityPm, er});
165 }
166
167 void addBypassParam(bool bypass) {
168 EnvironmentalReverb er;
169 er.set<EnvironmentalReverb::bypass>(bypass);
170 mTags.push_back({EnvironmentalReverb::bypass, er});
171 }
172
Shraddha Basantwanidbb0ed62022-11-17 20:32:18 +0530173 private:
174 std::vector<std::pair<EnvironmentalReverb::Tag, EnvironmentalReverb>> mTags;
175 void CleanUp() { mTags.clear(); }
176};
177
178class EnvironmentalReverbRoomLevelTest
179 : public ::testing::TestWithParam<
180 std::tuple<std::pair<std::shared_ptr<IFactory>, Descriptor>, int>>,
181 public EnvironmentalReverbHelper {
182 public:
183 EnvironmentalReverbRoomLevelTest() : EnvironmentalReverbHelper(std::get<0>(GetParam())) {
184 mRoomLevel = std::get<1>(GetParam());
185 }
186
187 void SetUp() override { SetUpReverb(); }
188
189 void TearDown() override { TearDownReverb(); }
190};
191
192TEST_P(EnvironmentalReverbRoomLevelTest, SetAndGetRoomLevel) {
193 EXPECT_NO_FATAL_FAILURE(addRoomLevelParam());
194 SetAndGetReverbParameters();
195}
196
Shunkai Yao0a0c45e2023-02-13 17:41:11 +0000197std::vector<std::pair<std::shared_ptr<IFactory>, Descriptor>> kDescPair;
198
Shraddha Basantwanidbb0ed62022-11-17 20:32:18 +0530199INSTANTIATE_TEST_SUITE_P(
200 EnvironmentalReverbTest, EnvironmentalReverbRoomLevelTest,
Shunkai Yao0a0c45e2023-02-13 17:41:11 +0000201 ::testing::Combine(
202 testing::ValuesIn(kDescPair = EffectFactoryHelper::getAllEffectDescriptors(
Shunkai Yaof8be1ac2023-03-06 18:41:27 +0000203 IFactory::descriptor, getEffectTypeUuidEnvReverb())),
Shunkai Yao0a0c45e2023-02-13 17:41:11 +0000204 testing::ValuesIn(EffectHelper::getTestValueSet<EnvironmentalReverb, int,
205 Range::environmentalReverb,
206 EnvironmentalReverb::roomLevelMb>(
207 kDescPair, EffectHelper::expandTestValueBasic<int>))),
Shraddha Basantwanidbb0ed62022-11-17 20:32:18 +0530208 [](const testing::TestParamInfo<EnvironmentalReverbRoomLevelTest::ParamType>& info) {
209 auto descriptor = std::get<0>(info.param).second;
210 std::string roomLevel = std::to_string(std::get<1>(info.param));
211
Jaideep Sharmae4c7a962023-06-14 19:14:44 +0530212 std::string name = getPrefix(descriptor) + "_roomLevel" + roomLevel;
Shraddha Basantwanidbb0ed62022-11-17 20:32:18 +0530213 std::replace_if(
214 name.begin(), name.end(), [](const char c) { return !std::isalnum(c); }, '_');
215 return name;
216 });
217GTEST_ALLOW_UNINSTANTIATED_PARAMETERIZED_TEST(EnvironmentalReverbRoomLevelTest);
218
219class EnvironmentalReverbRoomHfLevelTest
220 : public ::testing::TestWithParam<
221 std::tuple<std::pair<std::shared_ptr<IFactory>, Descriptor>, int>>,
222 public EnvironmentalReverbHelper {
223 public:
224 EnvironmentalReverbRoomHfLevelTest() : EnvironmentalReverbHelper(std::get<0>(GetParam())) {
225 mRoomHfLevel = std::get<1>(GetParam());
226 }
227
228 void SetUp() override { SetUpReverb(); }
229
230 void TearDown() override { TearDownReverb(); }
231};
232
233TEST_P(EnvironmentalReverbRoomHfLevelTest, SetAndGetRoomHfLevel) {
234 EXPECT_NO_FATAL_FAILURE(addRoomHfLevelParam(mRoomHfLevel));
235 SetAndGetReverbParameters();
236}
237
238INSTANTIATE_TEST_SUITE_P(
239 EnvironmentalReverbTest, EnvironmentalReverbRoomHfLevelTest,
Shunkai Yaof8be1ac2023-03-06 18:41:27 +0000240 ::testing::Combine(testing::ValuesIn(EffectFactoryHelper::getAllEffectDescriptors(
241 IFactory::descriptor, getEffectTypeUuidEnvReverb())),
242 testing::ValuesIn(EffectHelper::getTestValueSet<
243 EnvironmentalReverb, int, Range::environmentalReverb,
244 EnvironmentalReverb::roomHfLevelMb>(
245 kDescPair, EffectHelper::expandTestValueBasic<int>))),
Shraddha Basantwanidbb0ed62022-11-17 20:32:18 +0530246 [](const testing::TestParamInfo<EnvironmentalReverbRoomHfLevelTest::ParamType>& info) {
247 auto descriptor = std::get<0>(info.param).second;
248 std::string roomHfLevel = std::to_string(std::get<1>(info.param));
249
250 std::string name = "Implementor_" + descriptor.common.implementor + "_name_" +
251 descriptor.common.name + "_UUID_" +
Shunkai Yaofb8f3942024-03-29 18:45:30 +0000252 toString(descriptor.common.id.uuid) + "_roomHfLevel" + roomHfLevel;
Shraddha Basantwanidbb0ed62022-11-17 20:32:18 +0530253 std::replace_if(
254 name.begin(), name.end(), [](const char c) { return !std::isalnum(c); }, '_');
255 return name;
256 });
257GTEST_ALLOW_UNINSTANTIATED_PARAMETERIZED_TEST(EnvironmentalReverbRoomHfLevelTest);
258
259class EnvironmentalReverbDecayTimeTest
260 : public ::testing::TestWithParam<
261 std::tuple<std::pair<std::shared_ptr<IFactory>, Descriptor>, int>>,
262 public EnvironmentalReverbHelper {
263 public:
264 EnvironmentalReverbDecayTimeTest() : EnvironmentalReverbHelper(std::get<0>(GetParam())) {
265 mDecayTime = std::get<1>(GetParam());
266 }
267
268 void SetUp() override { SetUpReverb(); }
269
270 void TearDown() override { TearDownReverb(); }
271};
272
273TEST_P(EnvironmentalReverbDecayTimeTest, SetAndGetDecayTime) {
274 EXPECT_NO_FATAL_FAILURE(addDecayTimeParam(mDecayTime));
275 SetAndGetReverbParameters();
276}
277
278INSTANTIATE_TEST_SUITE_P(
279 EnvironmentalReverbTest, EnvironmentalReverbDecayTimeTest,
Shunkai Yaof8be1ac2023-03-06 18:41:27 +0000280 ::testing::Combine(testing::ValuesIn(EffectFactoryHelper::getAllEffectDescriptors(
281 IFactory::descriptor, getEffectTypeUuidEnvReverb())),
282 testing::ValuesIn(EffectHelper::getTestValueSet<
283 EnvironmentalReverb, int, Range::environmentalReverb,
284 EnvironmentalReverb::decayTimeMs>(
285 kDescPair, EffectHelper::expandTestValueBasic<int>))),
Shraddha Basantwanidbb0ed62022-11-17 20:32:18 +0530286 [](const testing::TestParamInfo<EnvironmentalReverbDecayTimeTest::ParamType>& info) {
287 auto descriptor = std::get<0>(info.param).second;
288 std::string decayTime = std::to_string(std::get<1>(info.param));
289
290 std::string name = "Implementor_" + descriptor.common.implementor + "_name_" +
291 descriptor.common.name + "_UUID_" +
Shunkai Yaofb8f3942024-03-29 18:45:30 +0000292 toString(descriptor.common.id.uuid) + "_decayTime" + decayTime;
Shraddha Basantwanidbb0ed62022-11-17 20:32:18 +0530293 std::replace_if(
294 name.begin(), name.end(), [](const char c) { return !std::isalnum(c); }, '_');
295 return name;
296 });
297GTEST_ALLOW_UNINSTANTIATED_PARAMETERIZED_TEST(EnvironmentalReverbDecayTimeTest);
298
299class EnvironmentalReverbDecayHfRatioTest
300 : public ::testing::TestWithParam<
301 std::tuple<std::pair<std::shared_ptr<IFactory>, Descriptor>, int>>,
302 public EnvironmentalReverbHelper {
303 public:
304 EnvironmentalReverbDecayHfRatioTest() : EnvironmentalReverbHelper(std::get<0>(GetParam())) {
305 mDecayHfRatio = std::get<1>(GetParam());
306 }
307
308 void SetUp() override { SetUpReverb(); }
309
310 void TearDown() override { TearDownReverb(); }
311};
312
313TEST_P(EnvironmentalReverbDecayHfRatioTest, SetAndGetDecayHfRatio) {
314 EXPECT_NO_FATAL_FAILURE(addDecayHfRatioParam(mDecayHfRatio));
315 SetAndGetReverbParameters();
316}
317
318INSTANTIATE_TEST_SUITE_P(
319 EnvironmentalReverbTest, EnvironmentalReverbDecayHfRatioTest,
320 ::testing::Combine(testing::ValuesIn(EffectFactoryHelper::getAllEffectDescriptors(
Shunkai Yaof8be1ac2023-03-06 18:41:27 +0000321 IFactory::descriptor, getEffectTypeUuidEnvReverb())),
Shunkai Yao0a0c45e2023-02-13 17:41:11 +0000322 testing::ValuesIn(EffectHelper::getTestValueSet<
323 EnvironmentalReverb, int, Range::environmentalReverb,
324 EnvironmentalReverb::decayHfRatioPm>(
325 kDescPair, EffectHelper::expandTestValueBasic<int>))),
Shraddha Basantwanidbb0ed62022-11-17 20:32:18 +0530326 [](const testing::TestParamInfo<EnvironmentalReverbDecayHfRatioTest::ParamType>& info) {
327 auto descriptor = std::get<0>(info.param).second;
328 std::string decayHfRatio = std::to_string(std::get<1>(info.param));
329
330 std::string name = "Implementor_" + descriptor.common.implementor + "_name_" +
331 descriptor.common.name + "_UUID_" +
Shunkai Yaofb8f3942024-03-29 18:45:30 +0000332 toString(descriptor.common.id.uuid) + "_decayHfRatio" + decayHfRatio;
Shraddha Basantwanidbb0ed62022-11-17 20:32:18 +0530333 std::replace_if(
334 name.begin(), name.end(), [](const char c) { return !std::isalnum(c); }, '_');
335 return name;
336 });
337GTEST_ALLOW_UNINSTANTIATED_PARAMETERIZED_TEST(EnvironmentalReverbDecayHfRatioTest);
338
339class EnvironmentalReverbLevelTest
340 : public ::testing::TestWithParam<
341 std::tuple<std::pair<std::shared_ptr<IFactory>, Descriptor>, int>>,
342 public EnvironmentalReverbHelper {
343 public:
344 EnvironmentalReverbLevelTest() : EnvironmentalReverbHelper(std::get<0>(GetParam())) {
345 mLevel = std::get<1>(GetParam());
346 }
347
348 void SetUp() override { SetUpReverb(); }
349
350 void TearDown() override { TearDownReverb(); }
351};
352
353TEST_P(EnvironmentalReverbLevelTest, SetAndGetLevel) {
354 EXPECT_NO_FATAL_FAILURE(addLevelParam(mLevel));
355 SetAndGetReverbParameters();
356}
357
358INSTANTIATE_TEST_SUITE_P(
359 EnvironmentalReverbTest, EnvironmentalReverbLevelTest,
Shunkai Yaof8be1ac2023-03-06 18:41:27 +0000360 ::testing::Combine(testing::ValuesIn(EffectFactoryHelper::getAllEffectDescriptors(
361 IFactory::descriptor, getEffectTypeUuidEnvReverb())),
362 testing::ValuesIn(EffectHelper::getTestValueSet<
363 EnvironmentalReverb, int, Range::environmentalReverb,
364 EnvironmentalReverb::levelMb>(
365 kDescPair, EffectHelper::expandTestValueBasic<int>))),
Shraddha Basantwanidbb0ed62022-11-17 20:32:18 +0530366 [](const testing::TestParamInfo<EnvironmentalReverbDecayHfRatioTest::ParamType>& info) {
367 auto descriptor = std::get<0>(info.param).second;
368 std::string level = std::to_string(std::get<1>(info.param));
369
370 std::string name = "Implementor_" + descriptor.common.implementor + "_name_" +
371 descriptor.common.name + "_UUID_" +
Shunkai Yaofb8f3942024-03-29 18:45:30 +0000372 toString(descriptor.common.id.uuid) + "_level" + level;
Shraddha Basantwanidbb0ed62022-11-17 20:32:18 +0530373 std::replace_if(
374 name.begin(), name.end(), [](const char c) { return !std::isalnum(c); }, '_');
375 return name;
376 });
377GTEST_ALLOW_UNINSTANTIATED_PARAMETERIZED_TEST(EnvironmentalReverbLevelTest);
378
379class EnvironmentalReverbDelayTest
380 : public ::testing::TestWithParam<
381 std::tuple<std::pair<std::shared_ptr<IFactory>, Descriptor>, int>>,
382 public EnvironmentalReverbHelper {
383 public:
384 EnvironmentalReverbDelayTest() : EnvironmentalReverbHelper(std::get<0>(GetParam())) {
385 mDelay = std::get<1>(GetParam());
386 }
387
388 void SetUp() override { SetUpReverb(); }
389
390 void TearDown() override { TearDownReverb(); }
391};
392
393TEST_P(EnvironmentalReverbDelayTest, SetAndGetDelay) {
394 EXPECT_NO_FATAL_FAILURE(addDelayParam(mDelay));
395 SetAndGetReverbParameters();
396}
397
398INSTANTIATE_TEST_SUITE_P(
399 EnvironmentalReverbTest, EnvironmentalReverbDelayTest,
Shunkai Yaof8be1ac2023-03-06 18:41:27 +0000400 ::testing::Combine(testing::ValuesIn(EffectFactoryHelper::getAllEffectDescriptors(
401 IFactory::descriptor, getEffectTypeUuidEnvReverb())),
402 testing::ValuesIn(EffectHelper::getTestValueSet<
403 EnvironmentalReverb, int, Range::environmentalReverb,
404 EnvironmentalReverb::delayMs>(
405 kDescPair, EffectHelper::expandTestValueBasic<int>))),
Shraddha Basantwanidbb0ed62022-11-17 20:32:18 +0530406 [](const testing::TestParamInfo<EnvironmentalReverbDelayTest::ParamType>& info) {
407 auto descriptor = std::get<0>(info.param).second;
408 std::string delay = std::to_string(std::get<1>(info.param));
409
410 std::string name = "Implementor_" + descriptor.common.implementor + "_name_" +
411 descriptor.common.name + "_UUID_" +
Shunkai Yaofb8f3942024-03-29 18:45:30 +0000412 toString(descriptor.common.id.uuid) + "_delay" + delay;
Shraddha Basantwanidbb0ed62022-11-17 20:32:18 +0530413 std::replace_if(
414 name.begin(), name.end(), [](const char c) { return !std::isalnum(c); }, '_');
415 return name;
416 });
417GTEST_ALLOW_UNINSTANTIATED_PARAMETERIZED_TEST(EnvironmentalReverbDelayTest);
418
419class EnvironmentalReverbDiffusionTest
420 : public ::testing::TestWithParam<
421 std::tuple<std::pair<std::shared_ptr<IFactory>, Descriptor>, int>>,
422 public EnvironmentalReverbHelper {
423 public:
424 EnvironmentalReverbDiffusionTest() : EnvironmentalReverbHelper(std::get<0>(GetParam())) {
425 mDiffusion = std::get<1>(GetParam());
426 }
427
428 void SetUp() override { SetUpReverb(); }
429
430 void TearDown() override { TearDownReverb(); }
431};
432
433TEST_P(EnvironmentalReverbDiffusionTest, SetAndGetDiffusion) {
434 EXPECT_NO_FATAL_FAILURE(addDiffusionParam(mDiffusion));
435 SetAndGetReverbParameters();
436}
437
438INSTANTIATE_TEST_SUITE_P(
439 EnvironmentalReverbTest, EnvironmentalReverbDiffusionTest,
Shunkai Yaof8be1ac2023-03-06 18:41:27 +0000440 ::testing::Combine(testing::ValuesIn(EffectFactoryHelper::getAllEffectDescriptors(
441 IFactory::descriptor, getEffectTypeUuidEnvReverb())),
442 testing::ValuesIn(EffectHelper::getTestValueSet<
443 EnvironmentalReverb, int, Range::environmentalReverb,
444 EnvironmentalReverb::diffusionPm>(
445 kDescPair, EffectHelper::expandTestValueBasic<int>))),
Shraddha Basantwanidbb0ed62022-11-17 20:32:18 +0530446 [](const testing::TestParamInfo<EnvironmentalReverbDiffusionTest::ParamType>& info) {
447 auto descriptor = std::get<0>(info.param).second;
448 std::string diffusion = std::to_string(std::get<1>(info.param));
449
450 std::string name = "Implementor_" + descriptor.common.implementor + "_name_" +
451 descriptor.common.name + "_UUID_" +
Shunkai Yaofb8f3942024-03-29 18:45:30 +0000452 toString(descriptor.common.id.uuid) + "_diffusion" + diffusion;
Shraddha Basantwanidbb0ed62022-11-17 20:32:18 +0530453 std::replace_if(
454 name.begin(), name.end(), [](const char c) { return !std::isalnum(c); }, '_');
455 return name;
456 });
457GTEST_ALLOW_UNINSTANTIATED_PARAMETERIZED_TEST(EnvironmentalReverbDiffusionTest);
458
459class EnvironmentalReverbDensityTest
460 : public ::testing::TestWithParam<
461 std::tuple<std::pair<std::shared_ptr<IFactory>, Descriptor>, int>>,
462 public EnvironmentalReverbHelper {
463 public:
464 EnvironmentalReverbDensityTest() : EnvironmentalReverbHelper(std::get<0>(GetParam())) {
465 mDensity = std::get<1>(GetParam());
466 }
467
468 void SetUp() override { SetUpReverb(); }
469
470 void TearDown() override { TearDownReverb(); }
471};
472
473TEST_P(EnvironmentalReverbDensityTest, SetAndGetDensity) {
474 EXPECT_NO_FATAL_FAILURE(addDensityParam(mDensity));
475 SetAndGetReverbParameters();
476}
477
478INSTANTIATE_TEST_SUITE_P(
479 EnvironmentalReverbTest, EnvironmentalReverbDensityTest,
Shunkai Yaof8be1ac2023-03-06 18:41:27 +0000480 ::testing::Combine(testing::ValuesIn(EffectFactoryHelper::getAllEffectDescriptors(
481 IFactory::descriptor, getEffectTypeUuidEnvReverb())),
482 testing::ValuesIn(EffectHelper::getTestValueSet<
483 EnvironmentalReverb, int, Range::environmentalReverb,
484 EnvironmentalReverb::densityPm>(
485 kDescPair, EffectHelper::expandTestValueBasic<int>))),
Shraddha Basantwanidbb0ed62022-11-17 20:32:18 +0530486 [](const testing::TestParamInfo<EnvironmentalReverbDensityTest::ParamType>& info) {
487 auto descriptor = std::get<0>(info.param).second;
488 std::string density = std::to_string(std::get<1>(info.param));
489
490 std::string name = "Implementor_" + descriptor.common.implementor + "_name_" +
491 descriptor.common.name + "_UUID_" +
Shunkai Yaofb8f3942024-03-29 18:45:30 +0000492 toString(descriptor.common.id.uuid) + "_density" + density;
Shraddha Basantwanidbb0ed62022-11-17 20:32:18 +0530493 std::replace_if(
494 name.begin(), name.end(), [](const char c) { return !std::isalnum(c); }, '_');
495 return name;
496 });
497GTEST_ALLOW_UNINSTANTIATED_PARAMETERIZED_TEST(EnvironmentalReverbDensityTest);
498
499class EnvironmentalReverbBypassTest
500 : public ::testing::TestWithParam<
501 std::tuple<std::pair<std::shared_ptr<IFactory>, Descriptor>, bool>>,
502 public EnvironmentalReverbHelper {
503 public:
504 EnvironmentalReverbBypassTest() : EnvironmentalReverbHelper(std::get<0>(GetParam())) {
505 mBypass = std::get<1>(GetParam());
506 }
507
508 void SetUp() override { SetUpReverb(); }
509
510 void TearDown() override { TearDownReverb(); }
511};
512
513TEST_P(EnvironmentalReverbBypassTest, SetAndGetBypass) {
514 EXPECT_NO_FATAL_FAILURE(addBypassParam(mBypass));
515 SetAndGetReverbParameters();
516}
517
518INSTANTIATE_TEST_SUITE_P(
519 EnvironmentalReverbTest, EnvironmentalReverbBypassTest,
520 ::testing::Combine(testing::ValuesIn(EffectFactoryHelper::getAllEffectDescriptors(
Shunkai Yaof8be1ac2023-03-06 18:41:27 +0000521 IFactory::descriptor, getEffectTypeUuidEnvReverb())),
Shraddha Basantwanidbb0ed62022-11-17 20:32:18 +0530522 testing::Bool()),
523 [](const testing::TestParamInfo<EnvironmentalReverbBypassTest::ParamType>& info) {
524 auto descriptor = std::get<0>(info.param).second;
525 std::string bypass = std::to_string(std::get<1>(info.param));
526
527 std::string name = "Implementor_" + descriptor.common.implementor + "_name_" +
528 descriptor.common.name + "_UUID_" +
Shunkai Yaofb8f3942024-03-29 18:45:30 +0000529 toString(descriptor.common.id.uuid) + "_bypass" + bypass;
Shraddha Basantwanidbb0ed62022-11-17 20:32:18 +0530530 std::replace_if(
531 name.begin(), name.end(), [](const char c) { return !std::isalnum(c); }, '_');
532 return name;
533 });
534GTEST_ALLOW_UNINSTANTIATED_PARAMETERIZED_TEST(EnvironmentalReverbBypassTest);
535
536int main(int argc, char** argv) {
537 ::testing::InitGoogleTest(&argc, argv);
Jaideep Sharma74498412023-09-13 15:25:25 +0530538 ::testing::UnitTest::GetInstance()->listeners().Append(new TestExecutionTracer());
Shraddha Basantwanidbb0ed62022-11-17 20:32:18 +0530539 ABinderProcess_setThreadPoolMaxThreadCount(1);
540 ABinderProcess_startThreadPool();
541 return RUN_ALL_TESTS();
542}