blob: f2ef185950c100798be844377137c259f26794a6 [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
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_" +
252 descriptor.common.id.uuid.toString() + "_roomHfLevel" + roomHfLevel;
253 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_" +
292 descriptor.common.id.uuid.toString() + "_decayTime" + decayTime;
293 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_" +
332 descriptor.common.id.uuid.toString() + "_decayHfRatio" +
333 decayHfRatio;
334 std::replace_if(
335 name.begin(), name.end(), [](const char c) { return !std::isalnum(c); }, '_');
336 return name;
337 });
338GTEST_ALLOW_UNINSTANTIATED_PARAMETERIZED_TEST(EnvironmentalReverbDecayHfRatioTest);
339
340class EnvironmentalReverbLevelTest
341 : public ::testing::TestWithParam<
342 std::tuple<std::pair<std::shared_ptr<IFactory>, Descriptor>, int>>,
343 public EnvironmentalReverbHelper {
344 public:
345 EnvironmentalReverbLevelTest() : EnvironmentalReverbHelper(std::get<0>(GetParam())) {
346 mLevel = std::get<1>(GetParam());
347 }
348
349 void SetUp() override { SetUpReverb(); }
350
351 void TearDown() override { TearDownReverb(); }
352};
353
354TEST_P(EnvironmentalReverbLevelTest, SetAndGetLevel) {
355 EXPECT_NO_FATAL_FAILURE(addLevelParam(mLevel));
356 SetAndGetReverbParameters();
357}
358
359INSTANTIATE_TEST_SUITE_P(
360 EnvironmentalReverbTest, EnvironmentalReverbLevelTest,
Shunkai Yaof8be1ac2023-03-06 18:41:27 +0000361 ::testing::Combine(testing::ValuesIn(EffectFactoryHelper::getAllEffectDescriptors(
362 IFactory::descriptor, getEffectTypeUuidEnvReverb())),
363 testing::ValuesIn(EffectHelper::getTestValueSet<
364 EnvironmentalReverb, int, Range::environmentalReverb,
365 EnvironmentalReverb::levelMb>(
366 kDescPair, EffectHelper::expandTestValueBasic<int>))),
Shraddha Basantwanidbb0ed62022-11-17 20:32:18 +0530367 [](const testing::TestParamInfo<EnvironmentalReverbDecayHfRatioTest::ParamType>& info) {
368 auto descriptor = std::get<0>(info.param).second;
369 std::string level = std::to_string(std::get<1>(info.param));
370
371 std::string name = "Implementor_" + descriptor.common.implementor + "_name_" +
372 descriptor.common.name + "_UUID_" +
373 descriptor.common.id.uuid.toString() + "_level" + level;
374 std::replace_if(
375 name.begin(), name.end(), [](const char c) { return !std::isalnum(c); }, '_');
376 return name;
377 });
378GTEST_ALLOW_UNINSTANTIATED_PARAMETERIZED_TEST(EnvironmentalReverbLevelTest);
379
380class EnvironmentalReverbDelayTest
381 : public ::testing::TestWithParam<
382 std::tuple<std::pair<std::shared_ptr<IFactory>, Descriptor>, int>>,
383 public EnvironmentalReverbHelper {
384 public:
385 EnvironmentalReverbDelayTest() : EnvironmentalReverbHelper(std::get<0>(GetParam())) {
386 mDelay = std::get<1>(GetParam());
387 }
388
389 void SetUp() override { SetUpReverb(); }
390
391 void TearDown() override { TearDownReverb(); }
392};
393
394TEST_P(EnvironmentalReverbDelayTest, SetAndGetDelay) {
395 EXPECT_NO_FATAL_FAILURE(addDelayParam(mDelay));
396 SetAndGetReverbParameters();
397}
398
399INSTANTIATE_TEST_SUITE_P(
400 EnvironmentalReverbTest, EnvironmentalReverbDelayTest,
Shunkai Yaof8be1ac2023-03-06 18:41:27 +0000401 ::testing::Combine(testing::ValuesIn(EffectFactoryHelper::getAllEffectDescriptors(
402 IFactory::descriptor, getEffectTypeUuidEnvReverb())),
403 testing::ValuesIn(EffectHelper::getTestValueSet<
404 EnvironmentalReverb, int, Range::environmentalReverb,
405 EnvironmentalReverb::delayMs>(
406 kDescPair, EffectHelper::expandTestValueBasic<int>))),
Shraddha Basantwanidbb0ed62022-11-17 20:32:18 +0530407 [](const testing::TestParamInfo<EnvironmentalReverbDelayTest::ParamType>& info) {
408 auto descriptor = std::get<0>(info.param).second;
409 std::string delay = std::to_string(std::get<1>(info.param));
410
411 std::string name = "Implementor_" + descriptor.common.implementor + "_name_" +
412 descriptor.common.name + "_UUID_" +
413 descriptor.common.id.uuid.toString() + "_delay" + delay;
414 std::replace_if(
415 name.begin(), name.end(), [](const char c) { return !std::isalnum(c); }, '_');
416 return name;
417 });
418GTEST_ALLOW_UNINSTANTIATED_PARAMETERIZED_TEST(EnvironmentalReverbDelayTest);
419
420class EnvironmentalReverbDiffusionTest
421 : public ::testing::TestWithParam<
422 std::tuple<std::pair<std::shared_ptr<IFactory>, Descriptor>, int>>,
423 public EnvironmentalReverbHelper {
424 public:
425 EnvironmentalReverbDiffusionTest() : EnvironmentalReverbHelper(std::get<0>(GetParam())) {
426 mDiffusion = std::get<1>(GetParam());
427 }
428
429 void SetUp() override { SetUpReverb(); }
430
431 void TearDown() override { TearDownReverb(); }
432};
433
434TEST_P(EnvironmentalReverbDiffusionTest, SetAndGetDiffusion) {
435 EXPECT_NO_FATAL_FAILURE(addDiffusionParam(mDiffusion));
436 SetAndGetReverbParameters();
437}
438
439INSTANTIATE_TEST_SUITE_P(
440 EnvironmentalReverbTest, EnvironmentalReverbDiffusionTest,
Shunkai Yaof8be1ac2023-03-06 18:41:27 +0000441 ::testing::Combine(testing::ValuesIn(EffectFactoryHelper::getAllEffectDescriptors(
442 IFactory::descriptor, getEffectTypeUuidEnvReverb())),
443 testing::ValuesIn(EffectHelper::getTestValueSet<
444 EnvironmentalReverb, int, Range::environmentalReverb,
445 EnvironmentalReverb::diffusionPm>(
446 kDescPair, EffectHelper::expandTestValueBasic<int>))),
Shraddha Basantwanidbb0ed62022-11-17 20:32:18 +0530447 [](const testing::TestParamInfo<EnvironmentalReverbDiffusionTest::ParamType>& info) {
448 auto descriptor = std::get<0>(info.param).second;
449 std::string diffusion = std::to_string(std::get<1>(info.param));
450
451 std::string name = "Implementor_" + descriptor.common.implementor + "_name_" +
452 descriptor.common.name + "_UUID_" +
453 descriptor.common.id.uuid.toString() + "_diffusion" + diffusion;
454 std::replace_if(
455 name.begin(), name.end(), [](const char c) { return !std::isalnum(c); }, '_');
456 return name;
457 });
458GTEST_ALLOW_UNINSTANTIATED_PARAMETERIZED_TEST(EnvironmentalReverbDiffusionTest);
459
460class EnvironmentalReverbDensityTest
461 : public ::testing::TestWithParam<
462 std::tuple<std::pair<std::shared_ptr<IFactory>, Descriptor>, int>>,
463 public EnvironmentalReverbHelper {
464 public:
465 EnvironmentalReverbDensityTest() : EnvironmentalReverbHelper(std::get<0>(GetParam())) {
466 mDensity = std::get<1>(GetParam());
467 }
468
469 void SetUp() override { SetUpReverb(); }
470
471 void TearDown() override { TearDownReverb(); }
472};
473
474TEST_P(EnvironmentalReverbDensityTest, SetAndGetDensity) {
475 EXPECT_NO_FATAL_FAILURE(addDensityParam(mDensity));
476 SetAndGetReverbParameters();
477}
478
479INSTANTIATE_TEST_SUITE_P(
480 EnvironmentalReverbTest, EnvironmentalReverbDensityTest,
Shunkai Yaof8be1ac2023-03-06 18:41:27 +0000481 ::testing::Combine(testing::ValuesIn(EffectFactoryHelper::getAllEffectDescriptors(
482 IFactory::descriptor, getEffectTypeUuidEnvReverb())),
483 testing::ValuesIn(EffectHelper::getTestValueSet<
484 EnvironmentalReverb, int, Range::environmentalReverb,
485 EnvironmentalReverb::densityPm>(
486 kDescPair, EffectHelper::expandTestValueBasic<int>))),
Shraddha Basantwanidbb0ed62022-11-17 20:32:18 +0530487 [](const testing::TestParamInfo<EnvironmentalReverbDensityTest::ParamType>& info) {
488 auto descriptor = std::get<0>(info.param).second;
489 std::string density = std::to_string(std::get<1>(info.param));
490
491 std::string name = "Implementor_" + descriptor.common.implementor + "_name_" +
492 descriptor.common.name + "_UUID_" +
493 descriptor.common.id.uuid.toString() + "_density" + density;
494 std::replace_if(
495 name.begin(), name.end(), [](const char c) { return !std::isalnum(c); }, '_');
496 return name;
497 });
498GTEST_ALLOW_UNINSTANTIATED_PARAMETERIZED_TEST(EnvironmentalReverbDensityTest);
499
500class EnvironmentalReverbBypassTest
501 : public ::testing::TestWithParam<
502 std::tuple<std::pair<std::shared_ptr<IFactory>, Descriptor>, bool>>,
503 public EnvironmentalReverbHelper {
504 public:
505 EnvironmentalReverbBypassTest() : EnvironmentalReverbHelper(std::get<0>(GetParam())) {
506 mBypass = std::get<1>(GetParam());
507 }
508
509 void SetUp() override { SetUpReverb(); }
510
511 void TearDown() override { TearDownReverb(); }
512};
513
514TEST_P(EnvironmentalReverbBypassTest, SetAndGetBypass) {
515 EXPECT_NO_FATAL_FAILURE(addBypassParam(mBypass));
516 SetAndGetReverbParameters();
517}
518
519INSTANTIATE_TEST_SUITE_P(
520 EnvironmentalReverbTest, EnvironmentalReverbBypassTest,
521 ::testing::Combine(testing::ValuesIn(EffectFactoryHelper::getAllEffectDescriptors(
Shunkai Yaof8be1ac2023-03-06 18:41:27 +0000522 IFactory::descriptor, getEffectTypeUuidEnvReverb())),
Shraddha Basantwanidbb0ed62022-11-17 20:32:18 +0530523 testing::Bool()),
524 [](const testing::TestParamInfo<EnvironmentalReverbBypassTest::ParamType>& info) {
525 auto descriptor = std::get<0>(info.param).second;
526 std::string bypass = std::to_string(std::get<1>(info.param));
527
528 std::string name = "Implementor_" + descriptor.common.implementor + "_name_" +
529 descriptor.common.name + "_UUID_" +
530 descriptor.common.id.uuid.toString() + "_bypass" + bypass;
531 std::replace_if(
532 name.begin(), name.end(), [](const char c) { return !std::isalnum(c); }, '_');
533 return name;
534 });
535GTEST_ALLOW_UNINSTANTIATED_PARAMETERIZED_TEST(EnvironmentalReverbBypassTest);
536
537int main(int argc, char** argv) {
538 ::testing::InitGoogleTest(&argc, argv);
539 ABinderProcess_setThreadPoolMaxThreadCount(1);
540 ABinderProcess_startThreadPool();
541 return RUN_ALL_TESTS();
542}