summaryrefslogtreecommitdiff
path: root/audio/common/all-versions/default/tests/hidlutils_tests.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'audio/common/all-versions/default/tests/hidlutils_tests.cpp')
-rw-r--r--audio/common/all-versions/default/tests/hidlutils_tests.cpp124
1 files changed, 98 insertions, 26 deletions
diff --git a/audio/common/all-versions/default/tests/hidlutils_tests.cpp b/audio/common/all-versions/default/tests/hidlutils_tests.cpp
index 642ece3255..40fc5c81c6 100644
--- a/audio/common/all-versions/default/tests/hidlutils_tests.cpp
+++ b/audio/common/all-versions/default/tests/hidlutils_tests.cpp
@@ -762,9 +762,7 @@ TEST(HidlUtils, ConvertInvalidOffloadInfo) {
TEST(HidlUtils, ConvertOffloadInfo) {
AudioOffloadInfo offloadInfo = {};
- offloadInfo.base.sampleRateHz = 44100;
- offloadInfo.base.channelMask = toString(xsd::AudioChannelMask::AUDIO_CHANNEL_OUT_STEREO);
- offloadInfo.base.format = toString(xsd::AudioFormat::AUDIO_FORMAT_PCM_16_BIT);
+ offloadInfo.base = generateValidConfigBase(false /*isInput*/);
offloadInfo.streamType = toString(xsd::AudioStreamType::AUDIO_STREAM_MUSIC);
offloadInfo.bitRatePerSecond = 320;
offloadInfo.durationMicroseconds = -1;
@@ -783,33 +781,76 @@ TEST(HidlUtils, ConvertOffloadInfo) {
TEST(HidlUtils, ConvertInvalidConfig) {
AudioConfig invalid;
- audio_config_t halInvalid = AUDIO_CONFIG_INITIALIZER;
- halInvalid.channel_mask = kInvalidHalChannelMask;
- halInvalid.format = kInvalidHalFormat;
- EXPECT_EQ(BAD_VALUE, HidlUtils::audioConfigFromHal(halInvalid, false /*isInput*/, &invalid));
- EXPECT_EQ(BAD_VALUE, HidlUtils::audioConfigFromHal(halInvalid, true /*isInput*/, &invalid));
- invalid.base.channelMask = "random string";
- invalid.base.format = "random string";
- EXPECT_EQ(BAD_VALUE, HidlUtils::audioConfigToHal(invalid, &halInvalid));
+ audio_config_t halInvalidChannelMask = AUDIO_CONFIG_INITIALIZER;
+ halInvalidChannelMask.channel_mask = kInvalidHalChannelMask;
+ EXPECT_EQ(BAD_VALUE,
+ HidlUtils::audioConfigFromHal(halInvalidChannelMask, false /*isInput*/, &invalid));
+ EXPECT_EQ(BAD_VALUE,
+ HidlUtils::audioConfigFromHal(halInvalidChannelMask, true /*isInput*/, &invalid));
+ audio_config_t halInvalidFormat = AUDIO_CONFIG_INITIALIZER;
+ halInvalidFormat.format = kInvalidHalFormat;
+ EXPECT_EQ(BAD_VALUE,
+ HidlUtils::audioConfigFromHal(halInvalidFormat, false /*isInput*/, &invalid));
+ EXPECT_EQ(BAD_VALUE,
+ HidlUtils::audioConfigFromHal(halInvalidFormat, true /*isInput*/, &invalid));
+
+ AudioConfig invalidChannelMask;
+ audio_config_t halInvalid;
+ invalidChannelMask.base.channelMask = "random string";
+ invalidChannelMask.base.format = toString(xsd::AudioFormat::AUDIO_FORMAT_DEFAULT);
+ EXPECT_EQ(BAD_VALUE, HidlUtils::audioConfigToHal(invalidChannelMask, &halInvalid));
+ AudioConfig invalidFormat;
+ invalidFormat.base.format = "random string";
+ invalidFormat.base.channelMask = toString(xsd::AudioChannelMask::AUDIO_CHANNEL_NONE);
+ EXPECT_EQ(BAD_VALUE, HidlUtils::audioConfigToHal(invalidFormat, &halInvalid));
+}
+
+TEST(HidlUtils, ConvertConfigDefault) {
+ audio_config_t halDefault = AUDIO_CONFIG_INITIALIZER;
+ AudioConfig defaultOut, defaultIn;
+ EXPECT_EQ(NO_ERROR, HidlUtils::audioConfigFromHal(halDefault, false /*isInput*/, &defaultOut));
+ EXPECT_EQ(NO_ERROR, HidlUtils::audioConfigFromHal(halDefault, true /*isInput*/, &defaultIn));
+ EXPECT_EQ(defaultOut, defaultIn);
+ EXPECT_EQ(NO_ERROR, HidlUtils::audioConfigToHal(defaultOut, &halDefault));
+
+ // Note: empty channel mask and config are not valid values.
+ AudioConfig defaultCfg{};
+ defaultCfg.base.channelMask = toString(xsd::AudioChannelMask::AUDIO_CHANNEL_NONE);
+ defaultCfg.base.format = toString(xsd::AudioFormat::AUDIO_FORMAT_DEFAULT);
+ audio_config_t halDefaultCfg;
+ EXPECT_EQ(NO_ERROR, HidlUtils::audioConfigToHal(defaultCfg, &halDefaultCfg));
+ AudioConfig defaultCfgBackOut, defaultCfgBackIn;
+ EXPECT_EQ(NO_ERROR,
+ HidlUtils::audioConfigFromHal(halDefaultCfg, false /*isInput*/, &defaultCfgBackOut));
+ EXPECT_EQ(NO_ERROR,
+ HidlUtils::audioConfigFromHal(halDefaultCfg, true /*isInput*/, &defaultCfgBackIn));
+ EXPECT_EQ(defaultCfgBackOut, defaultCfgBackIn);
+ EXPECT_EQ(defaultCfg, defaultCfgBackOut);
}
TEST(HidlUtils, ConvertConfig) {
- AudioConfig config = {};
- config.base.sampleRateHz = 44100;
- config.base.channelMask = toString(xsd::AudioChannelMask::AUDIO_CHANNEL_OUT_STEREO);
- config.base.format = toString(xsd::AudioFormat::AUDIO_FORMAT_PCM_16_BIT);
- audio_config_t halConfig;
- EXPECT_EQ(NO_ERROR, HidlUtils::audioConfigToHal(config, &halConfig));
- AudioConfig configBack;
- EXPECT_EQ(NO_ERROR, HidlUtils::audioConfigFromHal(halConfig, false /*isInput*/, &configBack));
- EXPECT_EQ(config, configBack);
+ AudioConfig configOut{};
+ configOut.base = generateValidConfigBase(false /*isInput*/);
+ audio_config_t halConfigOut;
+ EXPECT_EQ(NO_ERROR, HidlUtils::audioConfigToHal(configOut, &halConfigOut));
+ AudioConfig configOutBack;
+ EXPECT_EQ(NO_ERROR,
+ HidlUtils::audioConfigFromHal(halConfigOut, false /*isInput*/, &configOutBack));
+ EXPECT_EQ(configOut, configOutBack);
+
+ AudioConfig configIn{};
+ configIn.base = generateValidConfigBase(true /*isInput*/);
+ audio_config_t halConfigIn;
+ EXPECT_EQ(NO_ERROR, HidlUtils::audioConfigToHal(configIn, &halConfigIn));
+ AudioConfig configInBack;
+ EXPECT_EQ(NO_ERROR,
+ HidlUtils::audioConfigFromHal(halConfigIn, true /*isInput*/, &configInBack));
+ EXPECT_EQ(configIn, configInBack);
}
TEST(HidlUtils, ConvertConfigWithOffloadInfo) {
AudioConfig config = {};
- config.base.sampleRateHz = 44100;
- config.base.channelMask = toString(xsd::AudioChannelMask::AUDIO_CHANNEL_OUT_STEREO);
- config.base.format = toString(xsd::AudioFormat::AUDIO_FORMAT_PCM_16_BIT);
+ config.base = generateValidConfigBase(false /*isInput*/);
config.offloadInfo.info(
AudioOffloadInfo{.base = config.base,
.streamType = toString(xsd::AudioStreamType::AUDIO_STREAM_MUSIC),
@@ -952,20 +993,51 @@ TEST(HidlUtils, ConvertAudioTags) {
char halEmptyTags[AUDIO_ATTRIBUTES_TAGS_MAX_SIZE] = {};
EXPECT_EQ(NO_ERROR, HidlUtils::audioTagsToHal(emptyTags, halEmptyTags));
hidl_vec<AudioTag> emptyTagsBack;
- EXPECT_EQ(NO_ERROR, HidlUtils::audioTagsFromHal(halEmptyTags, &emptyTagsBack));
+ EXPECT_EQ(NO_ERROR,
+ HidlUtils::audioTagsFromHal(HidlUtils::splitAudioTags(halEmptyTags), &emptyTagsBack));
EXPECT_EQ(emptyTags, emptyTagsBack);
hidl_vec<AudioTag> oneTag = {{"VX_GOOGLE_VR"}};
char halOneTag[AUDIO_ATTRIBUTES_TAGS_MAX_SIZE] = {};
EXPECT_EQ(NO_ERROR, HidlUtils::audioTagsToHal(oneTag, halOneTag));
hidl_vec<AudioTag> oneTagBack;
- EXPECT_EQ(NO_ERROR, HidlUtils::audioTagsFromHal(halOneTag, &oneTagBack));
+ EXPECT_EQ(NO_ERROR,
+ HidlUtils::audioTagsFromHal(HidlUtils::splitAudioTags(halOneTag), &oneTagBack));
EXPECT_EQ(oneTag, oneTagBack);
hidl_vec<AudioTag> twoTags = {{"VX_GOOGLE_VR_42", "VX_GOOGLE_1E100"}};
char halTwoTags[AUDIO_ATTRIBUTES_TAGS_MAX_SIZE] = {};
EXPECT_EQ(NO_ERROR, HidlUtils::audioTagsToHal(twoTags, halTwoTags));
hidl_vec<AudioTag> twoTagsBack;
- EXPECT_EQ(NO_ERROR, HidlUtils::audioTagsFromHal(halTwoTags, &twoTagsBack));
+ EXPECT_EQ(NO_ERROR,
+ HidlUtils::audioTagsFromHal(HidlUtils::splitAudioTags(halTwoTags), &twoTagsBack));
EXPECT_EQ(twoTags, twoTagsBack);
}
+
+template <typename T>
+class FilterTest : public ::testing::Test {};
+using FilterTestTypeParams = ::testing::Types<hidl_vec<AudioTag>, std::vector<std::string>>;
+TYPED_TEST_SUITE(FilterTest, FilterTestTypeParams);
+
+TYPED_TEST(FilterTest, FilterOutNonVendorTags) {
+ TypeParam emptyTags;
+ EXPECT_EQ(emptyTags, HidlUtils::filterOutNonVendorTags(emptyTags));
+
+ TypeParam allVendorTags = {{"VX_GOOGLE_VR_42", "VX_GOOGLE_1E100"}};
+ EXPECT_EQ(allVendorTags, HidlUtils::filterOutNonVendorTags(allVendorTags));
+
+ TypeParam oneVendorTag = {{"", "VX_GOOGLE_VR", "random_string"}};
+ TypeParam oneVendorTagOnly = HidlUtils::filterOutNonVendorTags(oneVendorTag);
+ EXPECT_EQ(1, oneVendorTagOnly.size());
+ EXPECT_EQ(oneVendorTag[1], oneVendorTagOnly[0]);
+
+ // The vendor extension isn't valid, however it must not be filtered out
+ // so the converter can detect the issue.
+ TypeParam oneMaybeVendorTag = {{"", "random string", "VX_GOOGLE_$$"}};
+ TypeParam oneMaybeVendorTagOnly = HidlUtils::filterOutNonVendorTags(oneMaybeVendorTag);
+ EXPECT_EQ(1, oneMaybeVendorTagOnly.size());
+ EXPECT_EQ(oneMaybeVendorTag[2], oneMaybeVendorTagOnly[0]);
+
+ TypeParam noVendorTags = {{"", "random string", "V_"}};
+ EXPECT_EQ(emptyTags, HidlUtils::filterOutNonVendorTags(noVendorTags));
+}