blob: 474b3610ea90d33558de1b8bd9613676598001c4 [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
Shraddha Basantwanidbb0ed62022-11-17 20:32:18 +053017#include <aidl/Vintf.h>
Mikhail Naganov872d4a62023-03-09 18:19:01 -080018#define LOG_TAG "VtsHalEnvironmentalReverbTest"
19#include <android-base/logging.h>
20
Shraddha Basantwanidbb0ed62022-11-17 20:32:18 +053021#include "EffectHelper.h"
22
23using namespace android;
24
Shraddha Basantwanidbb0ed62022-11-17 20:32:18 +053025using aidl::android::hardware::audio::effect::Descriptor;
26using aidl::android::hardware::audio::effect::EnvironmentalReverb;
Shunkai Yaof8be1ac2023-03-06 18:41:27 +000027using aidl::android::hardware::audio::effect::getEffectTypeUuidEnvReverb;
Shraddha Basantwanidbb0ed62022-11-17 20:32:18 +053028using aidl::android::hardware::audio::effect::IEffect;
29using aidl::android::hardware::audio::effect::IFactory;
Shraddha Basantwanidbb0ed62022-11-17 20:32:18 +053030using aidl::android::hardware::audio::effect::Parameter;
Jaideep Sharma74498412023-09-13 15:25:25 +053031using android::hardware::audio::common::testing::detail::TestExecutionTracer;
Shraddha Basantwanidbb0ed62022-11-17 20:32:18 +053032
33/**
34 * Here we focus on specific parameter checking, general IEffect interfaces testing performed in
35 * VtsAudioEffectTargetTest.
36 * Testing parameter range, assuming the parameter supported by effect is in this range.
37 * This range is verified with IEffect.getDescriptor() and range defined in the documentation, for
38 * any index supported value test expects EX_NONE from IEffect.setParameter(), otherwise expects
39 * EX_ILLEGAL_ARGUMENT.
40 */
Shraddha Basantwanidbb0ed62022-11-17 20:32:18 +053041
42class EnvironmentalReverbHelper : public EffectHelper {
43 public:
44 EnvironmentalReverbHelper(std::pair<std::shared_ptr<IFactory>, Descriptor> pair) {
45 std::tie(mFactory, mDescriptor) = pair;
46 }
47
48 void SetUpReverb() {
49 ASSERT_NE(nullptr, mFactory);
50 ASSERT_NO_FATAL_FAILURE(create(mFactory, mEffect, mDescriptor));
51
52 Parameter::Specific specific = getDefaultParamSpecific();
53 Parameter::Common common = EffectHelper::createParamCommon(
54 0 /* session */, 1 /* ioHandle */, 44100 /* iSampleRate */, 44100 /* oSampleRate */,
55 kInputFrameCount /* iFrameCount */, kOutputFrameCount /* oFrameCount */);
56 IEffect::OpenEffectReturn ret;
57 ASSERT_NO_FATAL_FAILURE(open(mEffect, common, specific, &ret, EX_NONE));
58 ASSERT_NE(nullptr, mEffect);
59 }
60
61 void TearDownReverb() {
62 ASSERT_NO_FATAL_FAILURE(close(mEffect));
63 ASSERT_NO_FATAL_FAILURE(destroy(mFactory, mEffect));
64 }
65
66 Parameter::Specific getDefaultParamSpecific() {
Sham Rathode362a462023-01-05 18:46:21 +053067 EnvironmentalReverb er = EnvironmentalReverb::make<EnvironmentalReverb::roomLevelMb>(-6000);
Shraddha Basantwanidbb0ed62022-11-17 20:32:18 +053068 Parameter::Specific specific =
69 Parameter::Specific::make<Parameter::Specific::environmentalReverb>(er);
70 return specific;
71 }
72
73 static const long kInputFrameCount = 0x100, kOutputFrameCount = 0x100;
74 std::shared_ptr<IFactory> mFactory;
75 std::shared_ptr<IEffect> mEffect;
76 Descriptor mDescriptor;
Sham Rathode362a462023-01-05 18:46:21 +053077 int mRoomLevel = -6000;
78 int mRoomHfLevel = 0;
Shraddha Basantwanidbb0ed62022-11-17 20:32:18 +053079 int mDecayTime = 1000;
80 int mDecayHfRatio = 500;
Sham Rathode362a462023-01-05 18:46:21 +053081 int mLevel = -6000;
Shraddha Basantwanidbb0ed62022-11-17 20:32:18 +053082 int mDelay = 40;
Sham Rathode362a462023-01-05 18:46:21 +053083 int mDiffusion = 1000;
84 int mDensity = 1000;
Shraddha Basantwanidbb0ed62022-11-17 20:32:18 +053085 bool mBypass = false;
86
87 void SetAndGetReverbParameters() {
88 for (auto& it : mTags) {
89 auto& tag = it.first;
90 auto& er = it.second;
91
92 // validate parameter
93 Descriptor desc;
94 ASSERT_STATUS(EX_NONE, mEffect->getDescriptor(&desc));
Shunkai Yao0a0c45e2023-02-13 17:41:11 +000095 const bool valid = isParameterValid<EnvironmentalReverb, Range::environmentalReverb>(
96 it.second, desc);
Shraddha Basantwanidbb0ed62022-11-17 20:32:18 +053097 const binder_exception_t expected = valid ? EX_NONE : EX_ILLEGAL_ARGUMENT;
98
99 // set
100 Parameter expectParam;
101 Parameter::Specific specific;
102 specific.set<Parameter::Specific::environmentalReverb>(er);
103 expectParam.set<Parameter::specific>(specific);
104 EXPECT_STATUS(expected, mEffect->setParameter(expectParam)) << expectParam.toString();
105
106 // only get if parameter in range and set success
107 if (expected == EX_NONE) {
108 Parameter getParam;
109 Parameter::Id id;
110 EnvironmentalReverb::Id erId;
111 erId.set<EnvironmentalReverb::Id::commonTag>(tag);
112 id.set<Parameter::Id::environmentalReverbTag>(erId);
113 // if set success, then get should match
114 EXPECT_STATUS(expected, mEffect->getParameter(id, &getParam));
115 EXPECT_EQ(expectParam, getParam);
116 }
117 }
118 }
119
120 void addRoomLevelParam() {
121 EnvironmentalReverb er;
122 er.set<EnvironmentalReverb::roomLevelMb>(mRoomLevel);
123 mTags.push_back({EnvironmentalReverb::roomLevelMb, er});
124 }
125
126 void addRoomHfLevelParam(int roomHfLevel) {
127 EnvironmentalReverb er;
128 er.set<EnvironmentalReverb::roomHfLevelMb>(roomHfLevel);
129 mTags.push_back({EnvironmentalReverb::roomHfLevelMb, er});
130 }
131
132 void addDecayTimeParam(int decayTime) {
133 EnvironmentalReverb er;
134 er.set<EnvironmentalReverb::decayTimeMs>(decayTime);
135 mTags.push_back({EnvironmentalReverb::decayTimeMs, er});
136 }
137
138 void addDecayHfRatioParam(int decayHfRatio) {
139 EnvironmentalReverb er;
140 er.set<EnvironmentalReverb::decayHfRatioPm>(decayHfRatio);
141 mTags.push_back({EnvironmentalReverb::decayHfRatioPm, er});
142 }
143
144 void addLevelParam(int level) {
145 EnvironmentalReverb er;
146 er.set<EnvironmentalReverb::levelMb>(level);
147 mTags.push_back({EnvironmentalReverb::levelMb, er});
148 }
149
150 void addDelayParam(int delay) {
151 EnvironmentalReverb er;
152 er.set<EnvironmentalReverb::delayMs>(delay);
153 mTags.push_back({EnvironmentalReverb::delayMs, er});
154 }
155
156 void addDiffusionParam(int diffusion) {
157 EnvironmentalReverb er;
158 er.set<EnvironmentalReverb::diffusionPm>(diffusion);
159 mTags.push_back({EnvironmentalReverb::diffusionPm, er});
160 }
161
162 void addDensityParam(int density) {
163 EnvironmentalReverb er;
164 er.set<EnvironmentalReverb::densityPm>(density);
165 mTags.push_back({EnvironmentalReverb::densityPm, er});
166 }
167
168 void addBypassParam(bool bypass) {
169 EnvironmentalReverb er;
170 er.set<EnvironmentalReverb::bypass>(bypass);
171 mTags.push_back({EnvironmentalReverb::bypass, er});
172 }
173
Shraddha Basantwanidbb0ed62022-11-17 20:32:18 +0530174 private:
175 std::vector<std::pair<EnvironmentalReverb::Tag, EnvironmentalReverb>> mTags;
176 void CleanUp() { mTags.clear(); }
177};
178
179class EnvironmentalReverbRoomLevelTest
180 : public ::testing::TestWithParam<
181 std::tuple<std::pair<std::shared_ptr<IFactory>, Descriptor>, int>>,
182 public EnvironmentalReverbHelper {
183 public:
184 EnvironmentalReverbRoomLevelTest() : EnvironmentalReverbHelper(std::get<0>(GetParam())) {
185 mRoomLevel = std::get<1>(GetParam());
186 }
187
188 void SetUp() override { SetUpReverb(); }
189
190 void TearDown() override { TearDownReverb(); }
191};
192
193TEST_P(EnvironmentalReverbRoomLevelTest, SetAndGetRoomLevel) {
194 EXPECT_NO_FATAL_FAILURE(addRoomLevelParam());
195 SetAndGetReverbParameters();
196}
197
Shunkai Yao0a0c45e2023-02-13 17:41:11 +0000198std::vector<std::pair<std::shared_ptr<IFactory>, Descriptor>> kDescPair;
199
Shraddha Basantwanidbb0ed62022-11-17 20:32:18 +0530200INSTANTIATE_TEST_SUITE_P(
201 EnvironmentalReverbTest, EnvironmentalReverbRoomLevelTest,
Shunkai Yao0a0c45e2023-02-13 17:41:11 +0000202 ::testing::Combine(
203 testing::ValuesIn(kDescPair = EffectFactoryHelper::getAllEffectDescriptors(
Shunkai Yaof8be1ac2023-03-06 18:41:27 +0000204 IFactory::descriptor, getEffectTypeUuidEnvReverb())),
Shunkai Yao0a0c45e2023-02-13 17:41:11 +0000205 testing::ValuesIn(EffectHelper::getTestValueSet<EnvironmentalReverb, int,
206 Range::environmentalReverb,
207 EnvironmentalReverb::roomLevelMb>(
208 kDescPair, EffectHelper::expandTestValueBasic<int>))),
Shraddha Basantwanidbb0ed62022-11-17 20:32:18 +0530209 [](const testing::TestParamInfo<EnvironmentalReverbRoomLevelTest::ParamType>& info) {
210 auto descriptor = std::get<0>(info.param).second;
211 std::string roomLevel = std::to_string(std::get<1>(info.param));
212
Jaideep Sharmae4c7a962023-06-14 19:14:44 +0530213 std::string name = getPrefix(descriptor) + "_roomLevel" + roomLevel;
Shraddha Basantwanidbb0ed62022-11-17 20:32:18 +0530214 std::replace_if(
215 name.begin(), name.end(), [](const char c) { return !std::isalnum(c); }, '_');
216 return name;
217 });
218GTEST_ALLOW_UNINSTANTIATED_PARAMETERIZED_TEST(EnvironmentalReverbRoomLevelTest);
219
220class EnvironmentalReverbRoomHfLevelTest
221 : public ::testing::TestWithParam<
222 std::tuple<std::pair<std::shared_ptr<IFactory>, Descriptor>, int>>,
223 public EnvironmentalReverbHelper {
224 public:
225 EnvironmentalReverbRoomHfLevelTest() : EnvironmentalReverbHelper(std::get<0>(GetParam())) {
226 mRoomHfLevel = std::get<1>(GetParam());
227 }
228
229 void SetUp() override { SetUpReverb(); }
230
231 void TearDown() override { TearDownReverb(); }
232};
233
234TEST_P(EnvironmentalReverbRoomHfLevelTest, SetAndGetRoomHfLevel) {
235 EXPECT_NO_FATAL_FAILURE(addRoomHfLevelParam(mRoomHfLevel));
236 SetAndGetReverbParameters();
237}
238
239INSTANTIATE_TEST_SUITE_P(
240 EnvironmentalReverbTest, EnvironmentalReverbRoomHfLevelTest,
Shunkai Yaof8be1ac2023-03-06 18:41:27 +0000241 ::testing::Combine(testing::ValuesIn(EffectFactoryHelper::getAllEffectDescriptors(
242 IFactory::descriptor, getEffectTypeUuidEnvReverb())),
243 testing::ValuesIn(EffectHelper::getTestValueSet<
244 EnvironmentalReverb, int, Range::environmentalReverb,
245 EnvironmentalReverb::roomHfLevelMb>(
246 kDescPair, EffectHelper::expandTestValueBasic<int>))),
Shraddha Basantwanidbb0ed62022-11-17 20:32:18 +0530247 [](const testing::TestParamInfo<EnvironmentalReverbRoomHfLevelTest::ParamType>& info) {
248 auto descriptor = std::get<0>(info.param).second;
249 std::string roomHfLevel = std::to_string(std::get<1>(info.param));
250
251 std::string name = "Implementor_" + descriptor.common.implementor + "_name_" +
252 descriptor.common.name + "_UUID_" +
253 descriptor.common.id.uuid.toString() + "_roomHfLevel" + roomHfLevel;
254 std::replace_if(
255 name.begin(), name.end(), [](const char c) { return !std::isalnum(c); }, '_');
256 return name;
257 });
258GTEST_ALLOW_UNINSTANTIATED_PARAMETERIZED_TEST(EnvironmentalReverbRoomHfLevelTest);
259
260class EnvironmentalReverbDecayTimeTest
261 : public ::testing::TestWithParam<
262 std::tuple<std::pair<std::shared_ptr<IFactory>, Descriptor>, int>>,
263 public EnvironmentalReverbHelper {
264 public:
265 EnvironmentalReverbDecayTimeTest() : EnvironmentalReverbHelper(std::get<0>(GetParam())) {
266 mDecayTime = std::get<1>(GetParam());
267 }
268
269 void SetUp() override { SetUpReverb(); }
270
271 void TearDown() override { TearDownReverb(); }
272};
273
274TEST_P(EnvironmentalReverbDecayTimeTest, SetAndGetDecayTime) {
275 EXPECT_NO_FATAL_FAILURE(addDecayTimeParam(mDecayTime));
276 SetAndGetReverbParameters();
277}
278
279INSTANTIATE_TEST_SUITE_P(
280 EnvironmentalReverbTest, EnvironmentalReverbDecayTimeTest,
Shunkai Yaof8be1ac2023-03-06 18:41:27 +0000281 ::testing::Combine(testing::ValuesIn(EffectFactoryHelper::getAllEffectDescriptors(
282 IFactory::descriptor, getEffectTypeUuidEnvReverb())),
283 testing::ValuesIn(EffectHelper::getTestValueSet<
284 EnvironmentalReverb, int, Range::environmentalReverb,
285 EnvironmentalReverb::decayTimeMs>(
286 kDescPair, EffectHelper::expandTestValueBasic<int>))),
Shraddha Basantwanidbb0ed62022-11-17 20:32:18 +0530287 [](const testing::TestParamInfo<EnvironmentalReverbDecayTimeTest::ParamType>& info) {
288 auto descriptor = std::get<0>(info.param).second;
289 std::string decayTime = std::to_string(std::get<1>(info.param));
290
291 std::string name = "Implementor_" + descriptor.common.implementor + "_name_" +
292 descriptor.common.name + "_UUID_" +
293 descriptor.common.id.uuid.toString() + "_decayTime" + decayTime;
294 std::replace_if(
295 name.begin(), name.end(), [](const char c) { return !std::isalnum(c); }, '_');
296 return name;
297 });
298GTEST_ALLOW_UNINSTANTIATED_PARAMETERIZED_TEST(EnvironmentalReverbDecayTimeTest);
299
300class EnvironmentalReverbDecayHfRatioTest
301 : public ::testing::TestWithParam<
302 std::tuple<std::pair<std::shared_ptr<IFactory>, Descriptor>, int>>,
303 public EnvironmentalReverbHelper {
304 public:
305 EnvironmentalReverbDecayHfRatioTest() : EnvironmentalReverbHelper(std::get<0>(GetParam())) {
306 mDecayHfRatio = std::get<1>(GetParam());
307 }
308
309 void SetUp() override { SetUpReverb(); }
310
311 void TearDown() override { TearDownReverb(); }
312};
313
314TEST_P(EnvironmentalReverbDecayHfRatioTest, SetAndGetDecayHfRatio) {
315 EXPECT_NO_FATAL_FAILURE(addDecayHfRatioParam(mDecayHfRatio));
316 SetAndGetReverbParameters();
317}
318
319INSTANTIATE_TEST_SUITE_P(
320 EnvironmentalReverbTest, EnvironmentalReverbDecayHfRatioTest,
321 ::testing::Combine(testing::ValuesIn(EffectFactoryHelper::getAllEffectDescriptors(
Shunkai Yaof8be1ac2023-03-06 18:41:27 +0000322 IFactory::descriptor, getEffectTypeUuidEnvReverb())),
Shunkai Yao0a0c45e2023-02-13 17:41:11 +0000323 testing::ValuesIn(EffectHelper::getTestValueSet<
324 EnvironmentalReverb, int, Range::environmentalReverb,
325 EnvironmentalReverb::decayHfRatioPm>(
326 kDescPair, EffectHelper::expandTestValueBasic<int>))),
Shraddha Basantwanidbb0ed62022-11-17 20:32:18 +0530327 [](const testing::TestParamInfo<EnvironmentalReverbDecayHfRatioTest::ParamType>& info) {
328 auto descriptor = std::get<0>(info.param).second;
329 std::string decayHfRatio = std::to_string(std::get<1>(info.param));
330
331 std::string name = "Implementor_" + descriptor.common.implementor + "_name_" +
332 descriptor.common.name + "_UUID_" +
333 descriptor.common.id.uuid.toString() + "_decayHfRatio" +
334 decayHfRatio;
335 std::replace_if(
336 name.begin(), name.end(), [](const char c) { return !std::isalnum(c); }, '_');
337 return name;
338 });
339GTEST_ALLOW_UNINSTANTIATED_PARAMETERIZED_TEST(EnvironmentalReverbDecayHfRatioTest);
340
341class EnvironmentalReverbLevelTest
342 : public ::testing::TestWithParam<
343 std::tuple<std::pair<std::shared_ptr<IFactory>, Descriptor>, int>>,
344 public EnvironmentalReverbHelper {
345 public:
346 EnvironmentalReverbLevelTest() : EnvironmentalReverbHelper(std::get<0>(GetParam())) {
347 mLevel = std::get<1>(GetParam());
348 }
349
350 void SetUp() override { SetUpReverb(); }
351
352 void TearDown() override { TearDownReverb(); }
353};
354
355TEST_P(EnvironmentalReverbLevelTest, SetAndGetLevel) {
356 EXPECT_NO_FATAL_FAILURE(addLevelParam(mLevel));
357 SetAndGetReverbParameters();
358}
359
360INSTANTIATE_TEST_SUITE_P(
361 EnvironmentalReverbTest, EnvironmentalReverbLevelTest,
Shunkai Yaof8be1ac2023-03-06 18:41:27 +0000362 ::testing::Combine(testing::ValuesIn(EffectFactoryHelper::getAllEffectDescriptors(
363 IFactory::descriptor, getEffectTypeUuidEnvReverb())),
364 testing::ValuesIn(EffectHelper::getTestValueSet<
365 EnvironmentalReverb, int, Range::environmentalReverb,
366 EnvironmentalReverb::levelMb>(
367 kDescPair, EffectHelper::expandTestValueBasic<int>))),
Shraddha Basantwanidbb0ed62022-11-17 20:32:18 +0530368 [](const testing::TestParamInfo<EnvironmentalReverbDecayHfRatioTest::ParamType>& info) {
369 auto descriptor = std::get<0>(info.param).second;
370 std::string level = std::to_string(std::get<1>(info.param));
371
372 std::string name = "Implementor_" + descriptor.common.implementor + "_name_" +
373 descriptor.common.name + "_UUID_" +
374 descriptor.common.id.uuid.toString() + "_level" + level;
375 std::replace_if(
376 name.begin(), name.end(), [](const char c) { return !std::isalnum(c); }, '_');
377 return name;
378 });
379GTEST_ALLOW_UNINSTANTIATED_PARAMETERIZED_TEST(EnvironmentalReverbLevelTest);
380
381class EnvironmentalReverbDelayTest
382 : public ::testing::TestWithParam<
383 std::tuple<std::pair<std::shared_ptr<IFactory>, Descriptor>, int>>,
384 public EnvironmentalReverbHelper {
385 public:
386 EnvironmentalReverbDelayTest() : EnvironmentalReverbHelper(std::get<0>(GetParam())) {
387 mDelay = std::get<1>(GetParam());
388 }
389
390 void SetUp() override { SetUpReverb(); }
391
392 void TearDown() override { TearDownReverb(); }
393};
394
395TEST_P(EnvironmentalReverbDelayTest, SetAndGetDelay) {
396 EXPECT_NO_FATAL_FAILURE(addDelayParam(mDelay));
397 SetAndGetReverbParameters();
398}
399
400INSTANTIATE_TEST_SUITE_P(
401 EnvironmentalReverbTest, EnvironmentalReverbDelayTest,
Shunkai Yaof8be1ac2023-03-06 18:41:27 +0000402 ::testing::Combine(testing::ValuesIn(EffectFactoryHelper::getAllEffectDescriptors(
403 IFactory::descriptor, getEffectTypeUuidEnvReverb())),
404 testing::ValuesIn(EffectHelper::getTestValueSet<
405 EnvironmentalReverb, int, Range::environmentalReverb,
406 EnvironmentalReverb::delayMs>(
407 kDescPair, EffectHelper::expandTestValueBasic<int>))),
Shraddha Basantwanidbb0ed62022-11-17 20:32:18 +0530408 [](const testing::TestParamInfo<EnvironmentalReverbDelayTest::ParamType>& info) {
409 auto descriptor = std::get<0>(info.param).second;
410 std::string delay = std::to_string(std::get<1>(info.param));
411
412 std::string name = "Implementor_" + descriptor.common.implementor + "_name_" +
413 descriptor.common.name + "_UUID_" +
414 descriptor.common.id.uuid.toString() + "_delay" + delay;
415 std::replace_if(
416 name.begin(), name.end(), [](const char c) { return !std::isalnum(c); }, '_');
417 return name;
418 });
419GTEST_ALLOW_UNINSTANTIATED_PARAMETERIZED_TEST(EnvironmentalReverbDelayTest);
420
421class EnvironmentalReverbDiffusionTest
422 : public ::testing::TestWithParam<
423 std::tuple<std::pair<std::shared_ptr<IFactory>, Descriptor>, int>>,
424 public EnvironmentalReverbHelper {
425 public:
426 EnvironmentalReverbDiffusionTest() : EnvironmentalReverbHelper(std::get<0>(GetParam())) {
427 mDiffusion = std::get<1>(GetParam());
428 }
429
430 void SetUp() override { SetUpReverb(); }
431
432 void TearDown() override { TearDownReverb(); }
433};
434
435TEST_P(EnvironmentalReverbDiffusionTest, SetAndGetDiffusion) {
436 EXPECT_NO_FATAL_FAILURE(addDiffusionParam(mDiffusion));
437 SetAndGetReverbParameters();
438}
439
440INSTANTIATE_TEST_SUITE_P(
441 EnvironmentalReverbTest, EnvironmentalReverbDiffusionTest,
Shunkai Yaof8be1ac2023-03-06 18:41:27 +0000442 ::testing::Combine(testing::ValuesIn(EffectFactoryHelper::getAllEffectDescriptors(
443 IFactory::descriptor, getEffectTypeUuidEnvReverb())),
444 testing::ValuesIn(EffectHelper::getTestValueSet<
445 EnvironmentalReverb, int, Range::environmentalReverb,
446 EnvironmentalReverb::diffusionPm>(
447 kDescPair, EffectHelper::expandTestValueBasic<int>))),
Shraddha Basantwanidbb0ed62022-11-17 20:32:18 +0530448 [](const testing::TestParamInfo<EnvironmentalReverbDiffusionTest::ParamType>& info) {
449 auto descriptor = std::get<0>(info.param).second;
450 std::string diffusion = std::to_string(std::get<1>(info.param));
451
452 std::string name = "Implementor_" + descriptor.common.implementor + "_name_" +
453 descriptor.common.name + "_UUID_" +
454 descriptor.common.id.uuid.toString() + "_diffusion" + diffusion;
455 std::replace_if(
456 name.begin(), name.end(), [](const char c) { return !std::isalnum(c); }, '_');
457 return name;
458 });
459GTEST_ALLOW_UNINSTANTIATED_PARAMETERIZED_TEST(EnvironmentalReverbDiffusionTest);
460
461class EnvironmentalReverbDensityTest
462 : public ::testing::TestWithParam<
463 std::tuple<std::pair<std::shared_ptr<IFactory>, Descriptor>, int>>,
464 public EnvironmentalReverbHelper {
465 public:
466 EnvironmentalReverbDensityTest() : EnvironmentalReverbHelper(std::get<0>(GetParam())) {
467 mDensity = std::get<1>(GetParam());
468 }
469
470 void SetUp() override { SetUpReverb(); }
471
472 void TearDown() override { TearDownReverb(); }
473};
474
475TEST_P(EnvironmentalReverbDensityTest, SetAndGetDensity) {
476 EXPECT_NO_FATAL_FAILURE(addDensityParam(mDensity));
477 SetAndGetReverbParameters();
478}
479
480INSTANTIATE_TEST_SUITE_P(
481 EnvironmentalReverbTest, EnvironmentalReverbDensityTest,
Shunkai Yaof8be1ac2023-03-06 18:41:27 +0000482 ::testing::Combine(testing::ValuesIn(EffectFactoryHelper::getAllEffectDescriptors(
483 IFactory::descriptor, getEffectTypeUuidEnvReverb())),
484 testing::ValuesIn(EffectHelper::getTestValueSet<
485 EnvironmentalReverb, int, Range::environmentalReverb,
486 EnvironmentalReverb::densityPm>(
487 kDescPair, EffectHelper::expandTestValueBasic<int>))),
Shraddha Basantwanidbb0ed62022-11-17 20:32:18 +0530488 [](const testing::TestParamInfo<EnvironmentalReverbDensityTest::ParamType>& info) {
489 auto descriptor = std::get<0>(info.param).second;
490 std::string density = std::to_string(std::get<1>(info.param));
491
492 std::string name = "Implementor_" + descriptor.common.implementor + "_name_" +
493 descriptor.common.name + "_UUID_" +
494 descriptor.common.id.uuid.toString() + "_density" + density;
495 std::replace_if(
496 name.begin(), name.end(), [](const char c) { return !std::isalnum(c); }, '_');
497 return name;
498 });
499GTEST_ALLOW_UNINSTANTIATED_PARAMETERIZED_TEST(EnvironmentalReverbDensityTest);
500
501class EnvironmentalReverbBypassTest
502 : public ::testing::TestWithParam<
503 std::tuple<std::pair<std::shared_ptr<IFactory>, Descriptor>, bool>>,
504 public EnvironmentalReverbHelper {
505 public:
506 EnvironmentalReverbBypassTest() : EnvironmentalReverbHelper(std::get<0>(GetParam())) {
507 mBypass = std::get<1>(GetParam());
508 }
509
510 void SetUp() override { SetUpReverb(); }
511
512 void TearDown() override { TearDownReverb(); }
513};
514
515TEST_P(EnvironmentalReverbBypassTest, SetAndGetBypass) {
516 EXPECT_NO_FATAL_FAILURE(addBypassParam(mBypass));
517 SetAndGetReverbParameters();
518}
519
520INSTANTIATE_TEST_SUITE_P(
521 EnvironmentalReverbTest, EnvironmentalReverbBypassTest,
522 ::testing::Combine(testing::ValuesIn(EffectFactoryHelper::getAllEffectDescriptors(
Shunkai Yaof8be1ac2023-03-06 18:41:27 +0000523 IFactory::descriptor, getEffectTypeUuidEnvReverb())),
Shraddha Basantwanidbb0ed62022-11-17 20:32:18 +0530524 testing::Bool()),
525 [](const testing::TestParamInfo<EnvironmentalReverbBypassTest::ParamType>& info) {
526 auto descriptor = std::get<0>(info.param).second;
527 std::string bypass = std::to_string(std::get<1>(info.param));
528
529 std::string name = "Implementor_" + descriptor.common.implementor + "_name_" +
530 descriptor.common.name + "_UUID_" +
531 descriptor.common.id.uuid.toString() + "_bypass" + bypass;
532 std::replace_if(
533 name.begin(), name.end(), [](const char c) { return !std::isalnum(c); }, '_');
534 return name;
535 });
536GTEST_ALLOW_UNINSTANTIATED_PARAMETERIZED_TEST(EnvironmentalReverbBypassTest);
537
538int main(int argc, char** argv) {
539 ::testing::InitGoogleTest(&argc, argv);
Jaideep Sharma74498412023-09-13 15:25:25 +0530540 ::testing::UnitTest::GetInstance()->listeners().Append(new TestExecutionTracer());
Shraddha Basantwanidbb0ed62022-11-17 20:32:18 +0530541 ABinderProcess_setThreadPoolMaxThreadCount(1);
542 ABinderProcess_startThreadPool();
543 return RUN_ALL_TESTS();
544}