CompatibilityMatrix::addAllXmlFilesAsOptional
Similar to addAllHalsAsOptional, addAllXmlFilesAsOptional
adds <xmlfile> entries from higher FCM Versions to
lower FCM Versions.
Test: libvintf_test
Change-Id: I0b5244d209eda2409f2a1a04dd84ce620abc0374
diff --git a/test/LibVintfTest.cpp b/test/LibVintfTest.cpp
index b33d0bc..8c07075 100644
--- a/test/LibVintfTest.cpp
+++ b/test/LibVintfTest.cpp
@@ -106,6 +106,10 @@
bool addAllHalsAsOptional(CompatibilityMatrix* cm1, CompatibilityMatrix* cm2, std::string* e) {
return cm1->addAllHalsAsOptional(cm2, e);
}
+ bool addAllXmlFilesAsOptional(CompatibilityMatrix* cm1, CompatibilityMatrix* cm2,
+ std::string* e) {
+ return cm1->addAllXmlFilesAsOptional(cm2, e);
+ }
std::map<std::string, HalInterface> testHalInterfaces() {
HalInterface intf;
@@ -2232,6 +2236,51 @@
"</compatibility-matrix>\n");
}
+TEST_F(LibVintfTest, AddOptionalXmlFile) {
+ CompatibilityMatrix cm1;
+ CompatibilityMatrix cm2;
+ std::string error;
+ std::string xml;
+
+ xml =
+ "<compatibility-matrix version=\"1.0\" type=\"framework\" level=\"1\">\n"
+ " <xmlfile format=\"xsd\" optional=\"true\">\n"
+ " <name>foo</name>\n"
+ " <version>1.0-2</version>\n"
+ " <path>/foo/bar/baz.xsd</path>\n"
+ " </xmlfile>\n"
+ "</compatibility-matrix>\n";
+ EXPECT_TRUE(gCompatibilityMatrixConverter(&cm1, xml))
+ << gCompatibilityMatrixConverter.lastError();
+
+ xml =
+ "<compatibility-matrix version=\"1.0\" type=\"framework\" level=\"2\">\n"
+ " <xmlfile format=\"xsd\" optional=\"true\">\n"
+ " <name>foo</name>\n"
+ " <version>1.1-3</version>\n"
+ " <path>/foo/bar/quux.xsd</path>\n"
+ " </xmlfile>\n"
+ "</compatibility-matrix>\n";
+ EXPECT_TRUE(gCompatibilityMatrixConverter(&cm2, xml))
+ << gCompatibilityMatrixConverter.lastError();
+
+ EXPECT_TRUE(addAllXmlFilesAsOptional(&cm1, &cm2, &error)) << error;
+ xml = gCompatibilityMatrixConverter(cm1, SerializeFlag::XMLFILES_ONLY);
+ EXPECT_EQ(xml,
+ "<compatibility-matrix version=\"1.0\" type=\"framework\" level=\"1\">\n"
+ " <xmlfile format=\"xsd\" optional=\"true\">\n"
+ " <name>foo</name>\n"
+ " <version>1.0-2</version>\n"
+ " <path>/foo/bar/baz.xsd</path>\n"
+ " </xmlfile>\n"
+ " <xmlfile format=\"xsd\" optional=\"true\">\n"
+ " <name>foo</name>\n"
+ " <version>1.1-3</version>\n"
+ " <path>/foo/bar/quux.xsd</path>\n"
+ " </xmlfile>\n"
+ "</compatibility-matrix>\n");
+}
+
} // namespace vintf
} // namespace android