diff --git a/audio/common/all-versions/test/utility/include/utility/ValidateXml.h b/audio/common/all-versions/test/utility/include/utility/ValidateXml.h index 95080d1c4e..91adfc12c8 100644 --- a/audio/common/all-versions/test/utility/include/utility/ValidateXml.h +++ b/audio/common/all-versions/test/utility/include/utility/ValidateXml.h @@ -45,29 +45,37 @@ namespace utility { xmlFilePath, xsdFilePath) /** Validate an XML according to an xsd. - * The XML file must be in at least one of the provided locations. - * If multiple are found, all are validated. + * All file named xmlFileName in each xmlFileLocations folder must be valid if present. + * @tparam atLeastOneRequired If true, at least one file has to be found. + * If false, no found file is a success. */ +template ::testing::AssertionResult validateXmlMultipleLocations( const char* xmlFileNameExpr, const char* xmlFileLocationsExpr, const char* xsdFilePathExpr, const char* xmlFileName, std::vector xmlFileLocations, const char* xsdFilePath); -/** ASSERT that an XML is valid according to an xsd. - * The XML file must be in at least one of the provided locations. - * If multiple are found, all are validated. - */ -#define ASSERT_ONE_VALID_XML_MULTIPLE_LOCATIONS(xmlFileName, xmlFileLocations, xsdFilePath) \ - ASSERT_PRED_FORMAT3( \ - ::android::hardware::audio::common::test::utility::validateXmlMultipleLocations, \ +/** ASSERT that all found XML are valid according to an xsd. */ +#define ASSERT_VALID_XML_MULTIPLE_LOCATIONS(xmlFileName, xmlFileLocations, xsdFilePath) \ + ASSERT_PRED_FORMAT3( \ + ::android::hardware::audio::common::test::utility::validateXmlMultipleLocations, \ xmlFileName, xmlFileLocations, xsdFilePath) -/** EXPECT an XML to be valid according to an xsd. - * The XML file must be in at least one of the provided locations. - * If multiple are found, all are validated. - */ -#define EXPECT_ONE_VALID_XML_MULTIPLE_LOCATIONS(xmlFileName, xmlFileLocations, xsdFilePath) \ - EXPECT_PRED_FORMAT3( \ - ::android::hardware::audio::common::test::utility::validateXmlMultipleLocations, \ +/** EXPECT that all found XML are valid according to an xsd. */ +#define EXPECT_VALID_XML_MULTIPLE_LOCATIONS(xmlFileName, xmlFileLocations, xsdFilePath) \ + EXPECT_PRED_FORMAT3( \ + ::android::hardware::audio::common::test::utility::validateXmlMultipleLocations, \ + xmlFileName, xmlFileLocations, xsdFilePath) + +/** ASSERT that all found XML are valid according to an xsd. At least one must be found. */ +#define ASSERT_ONE_VALID_XML_MULTIPLE_LOCATIONS(xmlFileName, xmlFileLocations, xsdFilePath) \ + ASSERT_PRED_FORMAT3( \ + ::android::hardware::audio::common::test::utility::validateXmlMultipleLocations, \ + xmlFileName, xmlFileLocations, xsdFilePath) + +/** EXPECT that all found XML are valid according to an xsd. At least one must be found. */ +#define EXPECT_ONE_VALID_XML_MULTIPLE_LOCATIONS(xmlFileName, xmlFileLocations, xsdFilePath) \ + EXPECT_PRED_FORMAT3( \ + ::android::hardware::audio::common::test::utility::validateXmlMultipleLocations, \ xmlFileName, xmlFileLocations, xsdFilePath) } // namespace utility diff --git a/audio/common/all-versions/test/utility/src/ValidateXml.cpp b/audio/common/all-versions/test/utility/src/ValidateXml.cpp index 5030af5067..1a906d668b 100644 --- a/audio/common/all-versions/test/utility/src/ValidateXml.cpp +++ b/audio/common/all-versions/test/utility/src/ValidateXml.cpp @@ -129,6 +129,7 @@ struct Libxml2Global { return ::testing::AssertionSuccess(); } +template ::testing::AssertionResult validateXmlMultipleLocations( const char* xmlFileNameExpr, const char* xmlFileLocationsExpr, const char* xsdFilePathExpr, const char* xmlFileName, std::vector xmlFileLocations, const char* xsdFilePath) { @@ -150,7 +151,7 @@ struct Libxml2Global { } } - if (foundFiles.empty()) { + if (atLeastOneRequired && foundFiles.empty()) { errors.push_back("No xml file found in provided locations.\n"); } @@ -160,9 +161,20 @@ struct Libxml2Global { << " While validating all: " << xmlFileNameExpr << "\n Which is: " << xmlFileName << "\n In the following folders: " << xmlFileLocationsExpr - << "\n Which is: " << ::testing::PrintToString(xmlFileLocations); + << "\n Which is: " << ::testing::PrintToString(xmlFileLocations) + << (atLeastOneRequired ? "Where at least one file must be found." + : "Where no file might exist."); } +template ::testing::AssertionResult validateXmlMultipleLocations(const char*, const char*, + const char*, const char*, + std::vector, + const char*); +template ::testing::AssertionResult validateXmlMultipleLocations(const char*, const char*, + const char*, const char*, + std::vector, + const char*); + } // namespace utility } // namespace test } // namespace common diff --git a/audio/effect/2.0/vts/functional/ValidateAudioEffectsConfiguration.cpp b/audio/effect/2.0/vts/functional/ValidateAudioEffectsConfiguration.cpp index d0bc6908d6..bf080d3edc 100644 --- a/audio/effect/2.0/vts/functional/ValidateAudioEffectsConfiguration.cpp +++ b/audio/effect/2.0/vts/functional/ValidateAudioEffectsConfiguration.cpp @@ -27,6 +27,6 @@ TEST(CheckConfig, audioEffectsConfigurationValidation) { using namespace android::effectsConfig; std::vector locations(std::begin(DEFAULT_LOCATIONS), std::end(DEFAULT_LOCATIONS)); - EXPECT_ONE_VALID_XML_MULTIPLE_LOCATIONS(DEFAULT_NAME, locations, - "/data/local/tmp/audio_effects_conf_V2_0.xsd"); + EXPECT_VALID_XML_MULTIPLE_LOCATIONS(DEFAULT_NAME, locations, + "/data/local/tmp/audio_effects_conf_V2_0.xsd"); }