blob: 05c2c5b5e6cac4888caff1bd678436a30bb5ba4e [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;
31
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
212 std::string name = "Implementor_" + descriptor.common.implementor + "_name_" +
213 descriptor.common.name + "_UUID_" +
214 descriptor.common.id.uuid.toString() + "_roomLevel" + roomLevel;
215 std::replace_if(
216 name.begin(), name.end(), [](const char c) { return !std::isalnum(c); }, '_');
217 return name;
218 });
219GTEST_ALLOW_UNINSTANTIATED_PARAMETERIZED_TEST(EnvironmentalReverbRoomLevelTest);
220
221class EnvironmentalReverbRoomHfLevelTest
222 : public ::testing::TestWithParam<
223 std::tuple<std::pair<std::shared_ptr<IFactory>, Descriptor>, int>>,
224 public EnvironmentalReverbHelper {
225 public:
226 EnvironmentalReverbRoomHfLevelTest() : EnvironmentalReverbHelper(std::get<0>(GetParam())) {
227 mRoomHfLevel = std::get<1>(GetParam());
228 }
229
230 void SetUp() override { SetUpReverb(); }
231
232 void TearDown() override { TearDownReverb(); }
233};
234
235TEST_P(EnvironmentalReverbRoomHfLevelTest, SetAndGetRoomHfLevel) {
236 EXPECT_NO_FATAL_FAILURE(addRoomHfLevelParam(mRoomHfLevel));
237 SetAndGetReverbParameters();
238}
239
240INSTANTIATE_TEST_SUITE_P(
241 EnvironmentalReverbTest, EnvironmentalReverbRoomHfLevelTest,
Shunkai Yaof8be1ac2023-03-06 18:41:27 +0000242 ::testing::Combine(testing::ValuesIn(EffectFactoryHelper::getAllEffectDescriptors(
243 IFactory::descriptor, getEffectTypeUuidEnvReverb())),
244 testing::ValuesIn(EffectHelper::getTestValueSet<
245 EnvironmentalReverb, int, Range::environmentalReverb,
246 EnvironmentalReverb::roomHfLevelMb>(
247 kDescPair, EffectHelper::expandTestValueBasic<int>))),
Shraddha Basantwanidbb0ed62022-11-17 20:32:18 +0530248 [](const testing::TestParamInfo<EnvironmentalReverbRoomHfLevelTest::ParamType>& info) {
249 auto descriptor = std::get<0>(info.param).second;
250 std::string roomHfLevel = std::to_string(std::get<1>(info.param));
251
252 std::string name = "Implementor_" + descriptor.common.implementor + "_name_" +
253 descriptor.common.name + "_UUID_" +
254 descriptor.common.id.uuid.toString() + "_roomHfLevel" + roomHfLevel;
255 std::replace_if(
256 name.begin(), name.end(), [](const char c) { return !std::isalnum(c); }, '_');
257 return name;
258 });
259GTEST_ALLOW_UNINSTANTIATED_PARAMETERIZED_TEST(EnvironmentalReverbRoomHfLevelTest);
260
261class EnvironmentalReverbDecayTimeTest
262 : public ::testing::TestWithParam<
263 std::tuple<std::pair<std::shared_ptr<IFactory>, Descriptor>, int>>,
264 public EnvironmentalReverbHelper {
265 public:
266 EnvironmentalReverbDecayTimeTest() : EnvironmentalReverbHelper(std::get<0>(GetParam())) {
267 mDecayTime = std::get<1>(GetParam());
268 }
269
270 void SetUp() override { SetUpReverb(); }
271
272 void TearDown() override { TearDownReverb(); }
273};
274
275TEST_P(EnvironmentalReverbDecayTimeTest, SetAndGetDecayTime) {
276 EXPECT_NO_FATAL_FAILURE(addDecayTimeParam(mDecayTime));
277 SetAndGetReverbParameters();
278}
279
280INSTANTIATE_TEST_SUITE_P(
281 EnvironmentalReverbTest, EnvironmentalReverbDecayTimeTest,
Shunkai Yaof8be1ac2023-03-06 18:41:27 +0000282 ::testing::Combine(testing::ValuesIn(EffectFactoryHelper::getAllEffectDescriptors(
283 IFactory::descriptor, getEffectTypeUuidEnvReverb())),
284 testing::ValuesIn(EffectHelper::getTestValueSet<
285 EnvironmentalReverb, int, Range::environmentalReverb,
286 EnvironmentalReverb::decayTimeMs>(
287 kDescPair, EffectHelper::expandTestValueBasic<int>))),
Shraddha Basantwanidbb0ed62022-11-17 20:32:18 +0530288 [](const testing::TestParamInfo<EnvironmentalReverbDecayTimeTest::ParamType>& info) {
289 auto descriptor = std::get<0>(info.param).second;
290 std::string decayTime = std::to_string(std::get<1>(info.param));
291
292 std::string name = "Implementor_" + descriptor.common.implementor + "_name_" +
293 descriptor.common.name + "_UUID_" +
294 descriptor.common.id.uuid.toString() + "_decayTime" + decayTime;
295 std::replace_if(
296 name.begin(), name.end(), [](const char c) { return !std::isalnum(c); }, '_');
297 return name;
298 });
299GTEST_ALLOW_UNINSTANTIATED_PARAMETERIZED_TEST(EnvironmentalReverbDecayTimeTest);
300
301class EnvironmentalReverbDecayHfRatioTest
302 : public ::testing::TestWithParam<
303 std::tuple<std::pair<std::shared_ptr<IFactory>, Descriptor>, int>>,
304 public EnvironmentalReverbHelper {
305 public:
306 EnvironmentalReverbDecayHfRatioTest() : EnvironmentalReverbHelper(std::get<0>(GetParam())) {
307 mDecayHfRatio = std::get<1>(GetParam());
308 }
309
310 void SetUp() override { SetUpReverb(); }
311
312 void TearDown() override { TearDownReverb(); }
313};
314
315TEST_P(EnvironmentalReverbDecayHfRatioTest, SetAndGetDecayHfRatio) {
316 EXPECT_NO_FATAL_FAILURE(addDecayHfRatioParam(mDecayHfRatio));
317 SetAndGetReverbParameters();
318}
319
320INSTANTIATE_TEST_SUITE_P(
321 EnvironmentalReverbTest, EnvironmentalReverbDecayHfRatioTest,
322 ::testing::Combine(testing::ValuesIn(EffectFactoryHelper::getAllEffectDescriptors(
Shunkai Yaof8be1ac2023-03-06 18:41:27 +0000323 IFactory::descriptor, getEffectTypeUuidEnvReverb())),
Shunkai Yao0a0c45e2023-02-13 17:41:11 +0000324 testing::ValuesIn(EffectHelper::getTestValueSet<
325 EnvironmentalReverb, int, Range::environmentalReverb,
326 EnvironmentalReverb::decayHfRatioPm>(
327 kDescPair, EffectHelper::expandTestValueBasic<int>))),
Shraddha Basantwanidbb0ed62022-11-17 20:32:18 +0530328 [](const testing::TestParamInfo<EnvironmentalReverbDecayHfRatioTest::ParamType>& info) {
329 auto descriptor = std::get<0>(info.param).second;
330 std::string decayHfRatio = std::to_string(std::get<1>(info.param));
331
332 std::string name = "Implementor_" + descriptor.common.implementor + "_name_" +
333 descriptor.common.name + "_UUID_" +
334 descriptor.common.id.uuid.toString() + "_decayHfRatio" +
335 decayHfRatio;
336 std::replace_if(
337 name.begin(), name.end(), [](const char c) { return !std::isalnum(c); }, '_');
338 return name;
339 });
340GTEST_ALLOW_UNINSTANTIATED_PARAMETERIZED_TEST(EnvironmentalReverbDecayHfRatioTest);
341
342class EnvironmentalReverbLevelTest
343 : public ::testing::TestWithParam<
344 std::tuple<std::pair<std::shared_ptr<IFactory>, Descriptor>, int>>,
345 public EnvironmentalReverbHelper {
346 public:
347 EnvironmentalReverbLevelTest() : EnvironmentalReverbHelper(std::get<0>(GetParam())) {
348 mLevel = std::get<1>(GetParam());
349 }
350
351 void SetUp() override { SetUpReverb(); }
352
353 void TearDown() override { TearDownReverb(); }
354};
355
356TEST_P(EnvironmentalReverbLevelTest, SetAndGetLevel) {
357 EXPECT_NO_FATAL_FAILURE(addLevelParam(mLevel));
358 SetAndGetReverbParameters();
359}
360
361INSTANTIATE_TEST_SUITE_P(
362 EnvironmentalReverbTest, EnvironmentalReverbLevelTest,
Shunkai Yaof8be1ac2023-03-06 18:41:27 +0000363 ::testing::Combine(testing::ValuesIn(EffectFactoryHelper::getAllEffectDescriptors(
364 IFactory::descriptor, getEffectTypeUuidEnvReverb())),
365 testing::ValuesIn(EffectHelper::getTestValueSet<
366 EnvironmentalReverb, int, Range::environmentalReverb,
367 EnvironmentalReverb::levelMb>(
368 kDescPair, EffectHelper::expandTestValueBasic<int>))),
Shraddha Basantwanidbb0ed62022-11-17 20:32:18 +0530369 [](const testing::TestParamInfo<EnvironmentalReverbDecayHfRatioTest::ParamType>& info) {
370 auto descriptor = std::get<0>(info.param).second;
371 std::string level = std::to_string(std::get<1>(info.param));
372
373 std::string name = "Implementor_" + descriptor.common.implementor + "_name_" +
374 descriptor.common.name + "_UUID_" +
375 descriptor.common.id.uuid.toString() + "_level" + level;
376 std::replace_if(
377 name.begin(), name.end(), [](const char c) { return !std::isalnum(c); }, '_');
378 return name;
379 });
380GTEST_ALLOW_UNINSTANTIATED_PARAMETERIZED_TEST(EnvironmentalReverbLevelTest);
381
382class EnvironmentalReverbDelayTest
383 : public ::testing::TestWithParam<
384 std::tuple<std::pair<std::shared_ptr<IFactory>, Descriptor>, int>>,
385 public EnvironmentalReverbHelper {
386 public:
387 EnvironmentalReverbDelayTest() : EnvironmentalReverbHelper(std::get<0>(GetParam())) {
388 mDelay = std::get<1>(GetParam());
389 }
390
391 void SetUp() override { SetUpReverb(); }
392
393 void TearDown() override { TearDownReverb(); }
394};
395
396TEST_P(EnvironmentalReverbDelayTest, SetAndGetDelay) {
397 EXPECT_NO_FATAL_FAILURE(addDelayParam(mDelay));
398 SetAndGetReverbParameters();
399}
400
401INSTANTIATE_TEST_SUITE_P(
402 EnvironmentalReverbTest, EnvironmentalReverbDelayTest,
Shunkai Yaof8be1ac2023-03-06 18:41:27 +0000403 ::testing::Combine(testing::ValuesIn(EffectFactoryHelper::getAllEffectDescriptors(
404 IFactory::descriptor, getEffectTypeUuidEnvReverb())),
405 testing::ValuesIn(EffectHelper::getTestValueSet<
406 EnvironmentalReverb, int, Range::environmentalReverb,
407 EnvironmentalReverb::delayMs>(
408 kDescPair, EffectHelper::expandTestValueBasic<int>))),
Shraddha Basantwanidbb0ed62022-11-17 20:32:18 +0530409 [](const testing::TestParamInfo<EnvironmentalReverbDelayTest::ParamType>& info) {
410 auto descriptor = std::get<0>(info.param).second;
411 std::string delay = std::to_string(std::get<1>(info.param));
412
413 std::string name = "Implementor_" + descriptor.common.implementor + "_name_" +
414 descriptor.common.name + "_UUID_" +
415 descriptor.common.id.uuid.toString() + "_delay" + delay;
416 std::replace_if(
417 name.begin(), name.end(), [](const char c) { return !std::isalnum(c); }, '_');
418 return name;
419 });
420GTEST_ALLOW_UNINSTANTIATED_PARAMETERIZED_TEST(EnvironmentalReverbDelayTest);
421
422class EnvironmentalReverbDiffusionTest
423 : public ::testing::TestWithParam<
424 std::tuple<std::pair<std::shared_ptr<IFactory>, Descriptor>, int>>,
425 public EnvironmentalReverbHelper {
426 public:
427 EnvironmentalReverbDiffusionTest() : EnvironmentalReverbHelper(std::get<0>(GetParam())) {
428 mDiffusion = std::get<1>(GetParam());
429 }
430
431 void SetUp() override { SetUpReverb(); }
432
433 void TearDown() override { TearDownReverb(); }
434};
435
436TEST_P(EnvironmentalReverbDiffusionTest, SetAndGetDiffusion) {
437 EXPECT_NO_FATAL_FAILURE(addDiffusionParam(mDiffusion));
438 SetAndGetReverbParameters();
439}
440
441INSTANTIATE_TEST_SUITE_P(
442 EnvironmentalReverbTest, EnvironmentalReverbDiffusionTest,
Shunkai Yaof8be1ac2023-03-06 18:41:27 +0000443 ::testing::Combine(testing::ValuesIn(EffectFactoryHelper::getAllEffectDescriptors(
444 IFactory::descriptor, getEffectTypeUuidEnvReverb())),
445 testing::ValuesIn(EffectHelper::getTestValueSet<
446 EnvironmentalReverb, int, Range::environmentalReverb,
447 EnvironmentalReverb::diffusionPm>(
448 kDescPair, EffectHelper::expandTestValueBasic<int>))),
Shraddha Basantwanidbb0ed62022-11-17 20:32:18 +0530449 [](const testing::TestParamInfo<EnvironmentalReverbDiffusionTest::ParamType>& info) {
450 auto descriptor = std::get<0>(info.param).second;
451 std::string diffusion = std::to_string(std::get<1>(info.param));
452
453 std::string name = "Implementor_" + descriptor.common.implementor + "_name_" +
454 descriptor.common.name + "_UUID_" +
455 descriptor.common.id.uuid.toString() + "_diffusion" + diffusion;
456 std::replace_if(
457 name.begin(), name.end(), [](const char c) { return !std::isalnum(c); }, '_');
458 return name;
459 });
460GTEST_ALLOW_UNINSTANTIATED_PARAMETERIZED_TEST(EnvironmentalReverbDiffusionTest);
461
462class EnvironmentalReverbDensityTest
463 : public ::testing::TestWithParam<
464 std::tuple<std::pair<std::shared_ptr<IFactory>, Descriptor>, int>>,
465 public EnvironmentalReverbHelper {
466 public:
467 EnvironmentalReverbDensityTest() : EnvironmentalReverbHelper(std::get<0>(GetParam())) {
468 mDensity = std::get<1>(GetParam());
469 }
470
471 void SetUp() override { SetUpReverb(); }
472
473 void TearDown() override { TearDownReverb(); }
474};
475
476TEST_P(EnvironmentalReverbDensityTest, SetAndGetDensity) {
477 EXPECT_NO_FATAL_FAILURE(addDensityParam(mDensity));
478 SetAndGetReverbParameters();
479}
480
481INSTANTIATE_TEST_SUITE_P(
482 EnvironmentalReverbTest, EnvironmentalReverbDensityTest,
Shunkai Yaof8be1ac2023-03-06 18:41:27 +0000483 ::testing::Combine(testing::ValuesIn(EffectFactoryHelper::getAllEffectDescriptors(
484 IFactory::descriptor, getEffectTypeUuidEnvReverb())),
485 testing::ValuesIn(EffectHelper::getTestValueSet<
486 EnvironmentalReverb, int, Range::environmentalReverb,
487 EnvironmentalReverb::densityPm>(
488 kDescPair, EffectHelper::expandTestValueBasic<int>))),
Shraddha Basantwanidbb0ed62022-11-17 20:32:18 +0530489 [](const testing::TestParamInfo<EnvironmentalReverbDensityTest::ParamType>& info) {
490 auto descriptor = std::get<0>(info.param).second;
491 std::string density = std::to_string(std::get<1>(info.param));
492
493 std::string name = "Implementor_" + descriptor.common.implementor + "_name_" +
494 descriptor.common.name + "_UUID_" +
495 descriptor.common.id.uuid.toString() + "_density" + density;
496 std::replace_if(
497 name.begin(), name.end(), [](const char c) { return !std::isalnum(c); }, '_');
498 return name;
499 });
500GTEST_ALLOW_UNINSTANTIATED_PARAMETERIZED_TEST(EnvironmentalReverbDensityTest);
501
502class EnvironmentalReverbBypassTest
503 : public ::testing::TestWithParam<
504 std::tuple<std::pair<std::shared_ptr<IFactory>, Descriptor>, bool>>,
505 public EnvironmentalReverbHelper {
506 public:
507 EnvironmentalReverbBypassTest() : EnvironmentalReverbHelper(std::get<0>(GetParam())) {
508 mBypass = std::get<1>(GetParam());
509 }
510
511 void SetUp() override { SetUpReverb(); }
512
513 void TearDown() override { TearDownReverb(); }
514};
515
516TEST_P(EnvironmentalReverbBypassTest, SetAndGetBypass) {
517 EXPECT_NO_FATAL_FAILURE(addBypassParam(mBypass));
518 SetAndGetReverbParameters();
519}
520
521INSTANTIATE_TEST_SUITE_P(
522 EnvironmentalReverbTest, EnvironmentalReverbBypassTest,
523 ::testing::Combine(testing::ValuesIn(EffectFactoryHelper::getAllEffectDescriptors(
Shunkai Yaof8be1ac2023-03-06 18:41:27 +0000524 IFactory::descriptor, getEffectTypeUuidEnvReverb())),
Shraddha Basantwanidbb0ed62022-11-17 20:32:18 +0530525 testing::Bool()),
526 [](const testing::TestParamInfo<EnvironmentalReverbBypassTest::ParamType>& info) {
527 auto descriptor = std::get<0>(info.param).second;
528 std::string bypass = std::to_string(std::get<1>(info.param));
529
530 std::string name = "Implementor_" + descriptor.common.implementor + "_name_" +
531 descriptor.common.name + "_UUID_" +
532 descriptor.common.id.uuid.toString() + "_bypass" + bypass;
533 std::replace_if(
534 name.begin(), name.end(), [](const char c) { return !std::isalnum(c); }, '_');
535 return name;
536 });
537GTEST_ALLOW_UNINSTANTIATED_PARAMETERIZED_TEST(EnvironmentalReverbBypassTest);
538
539int main(int argc, char** argv) {
540 ::testing::InitGoogleTest(&argc, argv);
541 ABinderProcess_setThreadPoolMaxThreadCount(1);
542 ABinderProcess_startThreadPool();
543 return RUN_ALL_TESTS();
544}