Implement FCM Version in matrices / manifests.
"level" is an attribute on compatibility matrices / manifests
to specify the FCM Version they declare / implement. Value can
be "legacy" or a positive number, or empty (for old files).
Test: libvintf_test
Test: Built manifests / matrices has not changed (because
value is "unspecified").
Bug: 69854976 device manfiest must specify FCM Version
Bug: 69636193 all matrices should be installed to system image
Bug: 64720381 deprecation schedule
Change-Id: I15d34343fae4ad79d86bd50e9de8c4f6ac09fdfd
Merged-In: I15d34343fae4ad79d86bd50e9de8c4f6ac09fdfd
diff --git a/test/main.cpp b/test/main.cpp
index 8ec02a8..b8a25a2 100644
--- a/test/main.cpp
+++ b/test/main.cpp
@@ -2047,6 +2047,43 @@
INSTANTIATE_TEST_CASE_P(KernelConfigParser, KernelConfigParserInvalidTest, ::testing::Bool());
+TEST_F(LibVintfTest, MatrixLevel) {
+ CompatibilityMatrix cm;
+ std::string xml;
+
+ xml = "<compatibility-matrix version=\"1.0\" type=\"framework\"/>";
+ EXPECT_TRUE(gCompatibilityMatrixConverter(&cm, xml))
+ << gCompatibilityMatrixConverter.lastError();
+ EXPECT_EQ(Level::UNSPECIFIED, cm.level());
+
+ xml = "<compatibility-matrix version=\"1.0\" type=\"framework\" level=\"legacy\"/>";
+ EXPECT_TRUE(gCompatibilityMatrixConverter(&cm, xml))
+ << gCompatibilityMatrixConverter.lastError();
+ EXPECT_EQ(Level::LEGACY, cm.level());
+
+ xml = "<compatibility-matrix version=\"1.0\" type=\"framework\" level=\"1\"/>";
+ EXPECT_TRUE(gCompatibilityMatrixConverter(&cm, xml))
+ << gCompatibilityMatrixConverter.lastError();
+ EXPECT_EQ(1u, cm.level());
+}
+
+TEST_F(LibVintfTest, ManifestLevel) {
+ HalManifest manifest;
+ std::string xml;
+
+ xml = "<manifest version=\"1.0\" type=\"device\"/>";
+ EXPECT_TRUE(gHalManifestConverter(&manifest, xml)) << gHalManifestConverter.lastError();
+ EXPECT_EQ(Level::UNSPECIFIED, manifest.level());
+
+ xml = "<manifest version=\"1.0\" type=\"device\" target-level=\"legacy\"/>";
+ EXPECT_TRUE(gHalManifestConverter(&manifest, xml)) << gHalManifestConverter.lastError();
+ EXPECT_EQ(Level::LEGACY, manifest.level());
+
+ xml = "<manifest version=\"1.0\" type=\"device\" target-level=\"1\"/>";
+ EXPECT_TRUE(gHalManifestConverter(&manifest, xml)) << gHalManifestConverter.lastError();
+ EXPECT_EQ(1u, manifest.level());
+}
+
} // namespace vintf
} // namespace android