mirror of
https://github.com/Evolution-X/hardware_interfaces
synced 2026-02-01 16:50:18 +00:00
Merge "Add VTS for setAudioPortConfig with invalid gain" into main
This commit is contained in:
@@ -87,6 +87,7 @@ using aidl::android::media::audio::common::AudioDeviceDescription;
|
||||
using aidl::android::media::audio::common::AudioDeviceType;
|
||||
using aidl::android::media::audio::common::AudioDualMonoMode;
|
||||
using aidl::android::media::audio::common::AudioFormatType;
|
||||
using aidl::android::media::audio::common::AudioGainConfig;
|
||||
using aidl::android::media::audio::common::AudioInputFlags;
|
||||
using aidl::android::media::audio::common::AudioIoFlags;
|
||||
using aidl::android::media::audio::common::AudioLatencyMode;
|
||||
@@ -450,6 +451,7 @@ class AudioCoreModuleBase {
|
||||
// This is implemented by the 'StreamFixture' utility class.
|
||||
static constexpr int kNegativeTestBufferSizeFrames = 256;
|
||||
static constexpr int kDefaultLargeBufferSizeFrames = 48000;
|
||||
static constexpr int32_t kAidlVersion3 = 3;
|
||||
|
||||
void SetUpImpl(const std::string& moduleName, bool setUpDebug = true) {
|
||||
ASSERT_NO_FATAL_FAILURE(ConnectToService(moduleName, setUpDebug));
|
||||
@@ -478,6 +480,7 @@ class AudioCoreModuleBase {
|
||||
if (setUpDebug) {
|
||||
ASSERT_NO_FATAL_FAILURE(SetUpDebug());
|
||||
}
|
||||
ASSERT_TRUE(module->getInterfaceVersion(&aidlVersion).isOk());
|
||||
}
|
||||
|
||||
void RestartService() {
|
||||
@@ -490,6 +493,7 @@ class AudioCoreModuleBase {
|
||||
if (setUpDebug) {
|
||||
ASSERT_NO_FATAL_FAILURE(SetUpDebug());
|
||||
}
|
||||
ASSERT_TRUE(module->getInterfaceVersion(&aidlVersion).isOk());
|
||||
}
|
||||
|
||||
void SetUpDebug() {
|
||||
@@ -577,6 +581,7 @@ class AudioCoreModuleBase {
|
||||
std::unique_ptr<WithDebugFlags> debug;
|
||||
std::vector<AudioPort> initialPorts;
|
||||
std::vector<AudioRoute> initialRoutes;
|
||||
int32_t aidlVersion;
|
||||
};
|
||||
|
||||
class WithDevicePortConnectedState {
|
||||
@@ -1821,6 +1826,46 @@ TEST_P(AudioCoreModule, SetAudioPortConfigInvalidPortConfigId) {
|
||||
}
|
||||
}
|
||||
|
||||
TEST_P(AudioCoreModule, SetAudioPortConfigInvalidPortAudioGain) {
|
||||
if (aidlVersion < kAidlVersion3) {
|
||||
GTEST_SKIP() << "Skip for audio HAL version lower than " << kAidlVersion3;
|
||||
}
|
||||
std::vector<AudioPort> ports;
|
||||
ASSERT_IS_OK(module->getAudioPorts(&ports));
|
||||
bool atLeastOnePortWithNonemptyGain = false;
|
||||
for (const auto port : ports) {
|
||||
AudioPortConfig portConfig;
|
||||
portConfig.portId = port.id;
|
||||
if (port.gains.empty()) {
|
||||
continue;
|
||||
}
|
||||
atLeastOnePortWithNonemptyGain = true;
|
||||
int index = 0;
|
||||
ASSERT_NE(0, port.gains[index].stepValue) << "Invalid audio port config gain step 0";
|
||||
portConfig.gain->index = index;
|
||||
AudioGainConfig invalidGainConfig;
|
||||
|
||||
int invalidGain = port.gains[index].maxValue + port.gains[index].stepValue;
|
||||
invalidGainConfig.values.push_back(invalidGain);
|
||||
portConfig.gain.emplace(invalidGainConfig);
|
||||
bool applied = true;
|
||||
AudioPortConfig suggestedConfig;
|
||||
EXPECT_STATUS(EX_ILLEGAL_ARGUMENT,
|
||||
module->setAudioPortConfig(portConfig, &suggestedConfig, &applied))
|
||||
<< "invalid port gain " << invalidGain << " lower than min gain";
|
||||
|
||||
invalidGain = port.gains[index].minValue - port.gains[index].stepValue;
|
||||
invalidGainConfig.values[0] = invalidGain;
|
||||
portConfig.gain.emplace(invalidGainConfig);
|
||||
EXPECT_STATUS(EX_ILLEGAL_ARGUMENT,
|
||||
module->setAudioPortConfig(portConfig, &suggestedConfig, &applied))
|
||||
<< "invalid port gain " << invalidGain << "higher than max gain";
|
||||
}
|
||||
if (!atLeastOnePortWithNonemptyGain) {
|
||||
GTEST_SKIP() << "No audio port contains non-empty gain configuration";
|
||||
}
|
||||
}
|
||||
|
||||
TEST_P(AudioCoreModule, TryConnectMissingDevice) {
|
||||
// Limit checks to connection types that are known to be detectable by HAL implementations.
|
||||
static const std::set<std::string> kCheckedConnectionTypes{
|
||||
|
||||
Reference in New Issue
Block a user