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