diff options
author | Mikhail Naganov <mnaganov@google.com> | 2020-12-17 15:01:54 -0800 |
---|---|---|
committer | Mikhail Naganov <mnaganov@google.com> | 2021-01-07 10:32:06 -0800 |
commit | 3f1457b9537b1ff23704e17be7588dadf1e2884e (patch) | |
tree | 82878ed14f6c3b93734a211ffbaa75c5fd0aad32 /audio/common/all-versions/default/tests/hidlutils_tests.cpp | |
parent | daedb0dc2e582d6db90793045759a7acef6f1096 (diff) |
Audio: Add VTS tests for invalid enum-strings, Part 1
Add tests that try passing invalid enum-string values to HAL
methods taking enum-strings. Fix issues found in the default
wrapper.
Interface updates:
- Update AudioConfig structure to indicate whether
AudioOffloadInfo is specified.
- Add return value to IStreamIn.updateSinkMetadata
and IStreamOut.updateSourceMetadata to provide indication
of invalid arguments.
- Specify the behavior of IDevice.open{Input|Output}Stream
in the case of invalid arguments vs. rejected config.
Bug: 142480271
Test: atest VtsHalAudioV6_0TargetTest
Test: atest VtsHalAudioV7_0TargetTest
with side-loaded V7 default wrapper
Change-Id: I6bd7be3869cc7a8d5d00506565bbf0b3a050b630
Diffstat (limited to 'audio/common/all-versions/default/tests/hidlutils_tests.cpp')
-rw-r--r-- | audio/common/all-versions/default/tests/hidlutils_tests.cpp | 73 |
1 files changed, 63 insertions, 10 deletions
diff --git a/audio/common/all-versions/default/tests/hidlutils_tests.cpp b/audio/common/all-versions/default/tests/hidlutils_tests.cpp index 22571c0411..fef88b450b 100644 --- a/audio/common/all-versions/default/tests/hidlutils_tests.cpp +++ b/audio/common/all-versions/default/tests/hidlutils_tests.cpp @@ -589,16 +589,29 @@ TEST(HidlUtils, ConvertConfig) { 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.offloadInfo.base = config.base; - config.offloadInfo.streamType = toString(xsd::AudioStreamType::AUDIO_STREAM_MUSIC); - config.offloadInfo.bitRatePerSecond = 320; - config.offloadInfo.durationMicroseconds = -1; - config.offloadInfo.bitWidth = 16; - config.offloadInfo.bufferSize = 1024; - config.offloadInfo.usage = toString(xsd::AudioUsage::AUDIO_USAGE_MEDIA); - config.offloadInfo.encapsulationMode = AudioEncapsulationMode::ELEMENTARY_STREAM; - config.offloadInfo.contentId = 42; - config.offloadInfo.syncId = 13; + 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); +} + +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.offloadInfo.info( + AudioOffloadInfo{.base = config.base, + .streamType = toString(xsd::AudioStreamType::AUDIO_STREAM_MUSIC), + .bitRatePerSecond = 320, + .durationMicroseconds = -1, + .bitWidth = 16, + .bufferSize = 1024, + .usage = toString(xsd::AudioUsage::AUDIO_USAGE_MEDIA), + .encapsulationMode = AudioEncapsulationMode::ELEMENTARY_STREAM, + .contentId = 42, + .syncId = 13}); audio_config_t halConfig; EXPECT_EQ(NO_ERROR, HidlUtils::audioConfigToHal(config, &halConfig)); AudioConfig configBack; @@ -707,3 +720,43 @@ TEST(HidlUtils, ConvertAudioPort) { EXPECT_EQ(NO_ERROR, HidlUtils::audioPortToHal(portBack, &halPortBack)); EXPECT_TRUE(audio_ports_v7_are_equal(&halPort, &halPortBack)); } + +TEST(HidlUtils, ConvertInvalidAudioTags) { + char halTag[AUDIO_ATTRIBUTES_TAGS_MAX_SIZE] = {}; + + hidl_vec<AudioTag> emptyTag = {{""}}; + EXPECT_EQ(BAD_VALUE, HidlUtils::audioTagsToHal(emptyTag, halTag)); + + hidl_vec<AudioTag> longTag = {{std::string(AUDIO_ATTRIBUTES_TAGS_MAX_SIZE + 1, 'A')}}; + EXPECT_EQ(BAD_VALUE, HidlUtils::audioTagsToHal(longTag, halTag)); + + hidl_vec<AudioTag> tagSeparator = { + {std::string(AUDIO_ATTRIBUTES_TAGS_MAX_SIZE - 1, HidlUtils::sAudioTagSeparator)}}; + EXPECT_EQ(BAD_VALUE, HidlUtils::audioTagsToHal(tagSeparator, halTag)); + + hidl_vec<AudioTag> notExtensions = {{"random string", "VX_", "VX_GOOGLE_$$"}}; + EXPECT_EQ(BAD_VALUE, HidlUtils::audioTagsToHal(notExtensions, halTag)); +} + +TEST(HidlUtils, ConvertAudioTags) { + hidl_vec<AudioTag> emptyTags; + 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(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(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(twoTags, twoTagsBack); +} |