diff options
Diffstat (limited to 'tools/aapt2/configuration/ConfigurationParser_test.cpp')
-rw-r--r-- | tools/aapt2/configuration/ConfigurationParser_test.cpp | 422 |
1 files changed, 242 insertions, 180 deletions
diff --git a/tools/aapt2/configuration/ConfigurationParser_test.cpp b/tools/aapt2/configuration/ConfigurationParser_test.cpp index da00511fd192..0329846a5bb5 100644 --- a/tools/aapt2/configuration/ConfigurationParser_test.cpp +++ b/tools/aapt2/configuration/ConfigurationParser_test.cpp @@ -30,11 +30,33 @@ namespace aapt { namespace configuration { void PrintTo(const AndroidSdk& sdk, std::ostream* os) { - *os << "SDK: min=" << sdk.min_sdk_version.value_or_default(-1) + *os << "SDK: min=" << sdk.min_sdk_version << ", target=" << sdk.target_sdk_version.value_or_default(-1) << ", max=" << sdk.max_sdk_version.value_or_default(-1); } +bool operator==(const ConfiguredArtifact& lhs, const ConfiguredArtifact& rhs) { + return lhs.name == rhs.name && lhs.abi_group == rhs.abi_group && + lhs.screen_density_group == rhs.screen_density_group && + lhs.locale_group == rhs.locale_group && lhs.android_sdk == rhs.android_sdk && + lhs.device_feature_group == rhs.device_feature_group && + lhs.gl_texture_group == rhs.gl_texture_group; +} + +std::ostream& operator<<(std::ostream& out, const Maybe<std::string>& value) { + PrintTo(value, &out); + return out; +} + +void PrintTo(const ConfiguredArtifact& artifact, std::ostream* os) { + *os << "\n{" + << "\n name: " << artifact.name << "\n sdk: " << artifact.android_sdk + << "\n abi: " << artifact.abi_group << "\n density: " << artifact.screen_density_group + << "\n locale: " << artifact.locale_group + << "\n features: " << artifact.device_feature_group + << "\n textures: " << artifact.gl_texture_group << "\n}\n"; +} + namespace handler { namespace { @@ -44,6 +66,7 @@ using ::aapt::configuration::AndroidManifest; using ::aapt::configuration::AndroidSdk; using ::aapt::configuration::ConfiguredArtifact; using ::aapt::configuration::DeviceFeature; +using ::aapt::configuration::ExtractConfiguration; using ::aapt::configuration::GlTexture; using ::aapt::configuration::Locale; using ::aapt::configuration::PostProcessingConfiguration; @@ -52,11 +75,13 @@ using ::aapt::xml::NodeCast; using ::android::ResTable_config; using ::android::base::StringPrintf; using ::testing::ElementsAre; +using ::testing::Eq; using ::testing::SizeIs; +using ::testing::StrEq; constexpr const char* kValidConfig = R"(<?xml version="1.0" encoding="utf-8" ?> <post-process xmlns="http://schemas.android.com/tools/aapt"> - <groups> + <abi-groups> <abi-group label="arm"> <abi>armeabi-v7a</abi> <abi>arm64-v8a</abi> @@ -65,6 +90,8 @@ constexpr const char* kValidConfig = R"(<?xml version="1.0" encoding="utf-8" ?> <abi>x86</abi> <abi>mips</abi> </abi-group> + </abi-groups> + <screen-density-groups> <screen-density-group label="large"> <screen-density>xhdpi</screen-density> <screen-density>xxhdpi</screen-density> @@ -78,6 +105,8 @@ constexpr const char* kValidConfig = R"(<?xml version="1.0" encoding="utf-8" ?> <screen-density>xxhdpi</screen-density> <screen-density>xxxhdpi</screen-density> </screen-density-group> + </screen-density-groups> + <locale-groups> <locale-group label="europe"> <locale>en</locale> <locale>es</locale> @@ -89,25 +118,30 @@ constexpr const char* kValidConfig = R"(<?xml version="1.0" encoding="utf-8" ?> <locale>es-rMX</locale> <locale>fr-rCA</locale> </locale-group> - <android-sdk-group label="v19"> - <android-sdk - minSdkVersion="19" - targetSdkVersion="24" - maxSdkVersion="25"> - <manifest> - <!--- manifest additions here XSLT? TODO --> - </manifest> - </android-sdk> - </android-sdk-group> + </locale-groups> + <android-sdks> + <android-sdk + label="v19" + minSdkVersion="19" + targetSdkVersion="24" + maxSdkVersion="25"> + <manifest> + <!--- manifest additions here XSLT? TODO --> + </manifest> + </android-sdk> + </android-sdks> + <gl-texture-groups> <gl-texture-group label="dxt1"> <gl-texture name="GL_EXT_texture_compression_dxt1"> <texture-path>assets/dxt1/*</texture-path> </gl-texture> </gl-texture-group> + </gl-texture-groups> + <device-feature-groups> <device-feature-group label="low-latency"> <supports-feature>android.hardware.audio.low_latency</supports-feature> </device-feature-group> - </groups> + </device-feature-groups> <artifacts> <artifact-format> ${base}.${abi}.${screen-density}.${locale}.${sdk}.${gl}.${feature}.release @@ -117,7 +151,7 @@ constexpr const char* kValidConfig = R"(<?xml version="1.0" encoding="utf-8" ?> abi-group="arm" screen-density-group="large" locale-group="europe" - android-sdk-group="v19" + android-sdk="v19" gl-texture-group="dxt1" device-feature-group="low-latency"/> <artifact @@ -125,7 +159,7 @@ constexpr const char* kValidConfig = R"(<?xml version="1.0" encoding="utf-8" ?> abi-group="other" screen-density-group="alldpi" locale-group="north-america" - android-sdk-group="v19" + android-sdk="v19" gl-texture-group="dxt1" device-feature-group="low-latency"/> </artifacts> @@ -134,7 +168,8 @@ constexpr const char* kValidConfig = R"(<?xml version="1.0" encoding="utf-8" ?> class ConfigurationParserTest : public ConfigurationParser, public ::testing::Test { public: - ConfigurationParserTest() : ConfigurationParser("") {} + ConfigurationParserTest() : ConfigurationParser("", "config.xml") { + } protected: StdErrDiagnostics diag_; @@ -145,8 +180,31 @@ TEST_F(ConfigurationParserTest, ForPath_NoFile) { EXPECT_FALSE(result); } +TEST_F(ConfigurationParserTest, ExtractConfiguration) { + Maybe<PostProcessingConfiguration> maybe_config = + ExtractConfiguration(kValidConfig, "dummy.xml", &diag_); + + PostProcessingConfiguration config = maybe_config.value(); + + auto& arm = config.abi_groups["arm"]; + auto& other = config.abi_groups["other"]; + EXPECT_EQ(arm.order, 1ul); + EXPECT_EQ(other.order, 2ul); + + auto& large = config.screen_density_groups["large"]; + auto& alldpi = config.screen_density_groups["alldpi"]; + EXPECT_EQ(large.order, 1ul); + EXPECT_EQ(alldpi.order, 2ul); + + auto& north_america = config.locale_groups["north-america"]; + auto& europe = config.locale_groups["europe"]; + // Checked in reverse to make sure access order does not matter. + EXPECT_EQ(north_america.order, 2ul); + EXPECT_EQ(europe.order, 1ul); +} + TEST_F(ConfigurationParserTest, ValidateFile) { - auto parser = ConfigurationParser::ForContents(kValidConfig).WithDiagnostics(&diag_); + auto parser = ConfigurationParser::ForContents(kValidConfig, "conf.xml").WithDiagnostics(&diag_); auto result = parser.Parse("test.apk"); ASSERT_TRUE(result); const std::vector<OutputArtifact>& value = result.value(); @@ -154,6 +212,7 @@ TEST_F(ConfigurationParserTest, ValidateFile) { const OutputArtifact& a1 = value[0]; EXPECT_EQ(a1.name, "art1.apk"); + EXPECT_EQ(a1.version, 1); EXPECT_THAT(a1.abis, ElementsAre(Abi::kArmV7a, Abi::kArm64V8a)); EXPECT_THAT(a1.screen_densities, ElementsAre(test::ParseConfigOrDie("xhdpi").CopyWithoutSdkVersion(), @@ -161,12 +220,15 @@ TEST_F(ConfigurationParserTest, ValidateFile) { test::ParseConfigOrDie("xxxhdpi").CopyWithoutSdkVersion())); EXPECT_THAT(a1.locales, ElementsAre(test::ParseConfigOrDie("en"), test::ParseConfigOrDie("es"), test::ParseConfigOrDie("fr"), test::ParseConfigOrDie("de"))); - EXPECT_EQ(a1.android_sdk.value().min_sdk_version.value(), 19l); + ASSERT_TRUE(a1.android_sdk); + ASSERT_TRUE(a1.android_sdk.value().min_sdk_version); + EXPECT_EQ(a1.android_sdk.value().min_sdk_version, 19l); EXPECT_THAT(a1.textures, SizeIs(1ul)); EXPECT_THAT(a1.features, SizeIs(1ul)); const OutputArtifact& a2 = value[1]; EXPECT_EQ(a2.name, "art2.apk"); + EXPECT_EQ(a2.version, 2); EXPECT_THAT(a2.abis, ElementsAre(Abi::kX86, Abi::kMips)); EXPECT_THAT(a2.screen_densities, ElementsAre(test::ParseConfigOrDie("ldpi").CopyWithoutSdkVersion(), @@ -178,124 +240,138 @@ TEST_F(ConfigurationParserTest, ValidateFile) { EXPECT_THAT(a2.locales, ElementsAre(test::ParseConfigOrDie("en"), test::ParseConfigOrDie("es-rMX"), test::ParseConfigOrDie("fr-rCA"))); - EXPECT_EQ(a2.android_sdk.value().min_sdk_version.value(), 19l); + ASSERT_TRUE(a2.android_sdk); + ASSERT_TRUE(a2.android_sdk.value().min_sdk_version); + EXPECT_EQ(a2.android_sdk.value().min_sdk_version, 19l); EXPECT_THAT(a2.textures, SizeIs(1ul)); EXPECT_THAT(a2.features, SizeIs(1ul)); } +TEST_F(ConfigurationParserTest, ConfiguredArtifactOrdering) { + // Create a base builder with the configuration groups but no artifacts to allow it to be copied. + test::PostProcessingConfigurationBuilder base_builder = test::PostProcessingConfigurationBuilder() + .AddAbiGroup("arm") + .AddAbiGroup("arm64") + .AddAndroidSdk("v23", 23) + .AddAndroidSdk("v19", 19); + + { + // Test version ordering. + ConfiguredArtifact v23; + v23.android_sdk = {"v23"}; + ConfiguredArtifact v19; + v19.android_sdk = {"v19"}; + + test::PostProcessingConfigurationBuilder builder = base_builder; + PostProcessingConfiguration config = builder.AddArtifact(v23).AddArtifact(v19).Build(); + + config.SortArtifacts(); + ASSERT_THAT(config.artifacts, SizeIs(2)); + EXPECT_THAT(config.artifacts[0], Eq(v19)); + EXPECT_THAT(config.artifacts[1], Eq(v23)); + } + + { + // Test ABI ordering. + ConfiguredArtifact arm; + arm.android_sdk = {"v19"}; + arm.abi_group = {"arm"}; + ConfiguredArtifact arm64; + arm64.android_sdk = {"v19"}; + arm64.abi_group = {"arm64"}; + + test::PostProcessingConfigurationBuilder builder = base_builder; + PostProcessingConfiguration config = builder.AddArtifact(arm64).AddArtifact(arm).Build(); + + config.SortArtifacts(); + ASSERT_THAT(config.artifacts, SizeIs(2)); + EXPECT_THAT(config.artifacts[0], Eq(arm)); + EXPECT_THAT(config.artifacts[1], Eq(arm64)); + } + + { + // Test Android SDK has precedence over ABI. + ConfiguredArtifact arm; + arm.android_sdk = {"v23"}; + arm.abi_group = {"arm"}; + ConfiguredArtifact arm64; + arm64.android_sdk = {"v19"}; + arm64.abi_group = {"arm64"}; + + test::PostProcessingConfigurationBuilder builder = base_builder; + PostProcessingConfiguration config = builder.AddArtifact(arm64).AddArtifact(arm).Build(); + + config.SortArtifacts(); + ASSERT_THAT(config.artifacts, SizeIs(2)); + EXPECT_THAT(config.artifacts[0], Eq(arm64)); + EXPECT_THAT(config.artifacts[1], Eq(arm)); + } + + { + // Test version is better than ABI. + ConfiguredArtifact arm; + arm.abi_group = {"arm"}; + ConfiguredArtifact v19; + v19.android_sdk = {"v19"}; + + test::PostProcessingConfigurationBuilder builder = base_builder; + PostProcessingConfiguration config = builder.AddArtifact(v19).AddArtifact(arm).Build(); + + config.SortArtifacts(); + ASSERT_THAT(config.artifacts, SizeIs(2)); + EXPECT_THAT(config.artifacts[0], Eq(arm)); + EXPECT_THAT(config.artifacts[1], Eq(v19)); + } + + { + // Test version is sorted higher than no version. + ConfiguredArtifact arm; + arm.abi_group = {"arm"}; + ConfiguredArtifact v19; + v19.abi_group = {"arm"}; + v19.android_sdk = {"v19"}; + + test::PostProcessingConfigurationBuilder builder = base_builder; + PostProcessingConfiguration config = builder.AddArtifact(v19).AddArtifact(arm).Build(); + + config.SortArtifacts(); + ASSERT_THAT(config.artifacts, SizeIs(2)); + EXPECT_THAT(config.artifacts[0], Eq(arm)); + EXPECT_THAT(config.artifacts[1], Eq(v19)); + } +} + TEST_F(ConfigurationParserTest, InvalidNamespace) { constexpr const char* invalid_ns = R"(<?xml version="1.0" encoding="utf-8" ?> - <post-process xmlns="http://schemas.android.com/tools/another-unknown-tool" />)"; + <post-process xmlns="http://schemas.android.com/tools/another-unknown-tool" />)"; - auto result = ConfigurationParser::ForContents(invalid_ns).Parse("test.apk"); + auto result = ConfigurationParser::ForContents(invalid_ns, "config.xml").Parse("test.apk"); ASSERT_FALSE(result); } TEST_F(ConfigurationParserTest, ArtifactAction) { PostProcessingConfiguration config; - { - const auto doc = test::BuildXmlDom(R"xml( + const auto doc = test::BuildXmlDom(R"xml( <artifact abi-group="arm" screen-density-group="large" locale-group="europe" - android-sdk-group="v19" + android-sdk="v19" gl-texture-group="dxt1" device-feature-group="low-latency"/>)xml"); - ASSERT_TRUE(ArtifactTagHandler(&config, NodeCast<Element>(doc->root.get()), &diag_)); + ASSERT_TRUE(ArtifactTagHandler(&config, NodeCast<Element>(doc->root.get()), &diag_)); - EXPECT_THAT(config.artifacts, SizeIs(1ul)); + EXPECT_THAT(config.artifacts, SizeIs(1ul)); - auto& artifact = config.artifacts.back(); - EXPECT_FALSE(artifact.name); // TODO: make this fail. - EXPECT_EQ(1, artifact.version); - EXPECT_EQ("arm", artifact.abi_group.value()); - EXPECT_EQ("large", artifact.screen_density_group.value()); - EXPECT_EQ("europe", artifact.locale_group.value()); - EXPECT_EQ("v19", artifact.android_sdk_group.value()); - EXPECT_EQ("dxt1", artifact.gl_texture_group.value()); - EXPECT_EQ("low-latency", artifact.device_feature_group.value()); - } - - { - // Perform a second action to ensure we get 2 artifacts. - const auto doc = test::BuildXmlDom(R"xml( - <artifact - abi-group="other" - screen-density-group="large" - locale-group="europe" - android-sdk-group="v19" - gl-texture-group="dxt1" - device-feature-group="low-latency"/>)xml"); - - ASSERT_TRUE(ArtifactTagHandler(&config, NodeCast<Element>(doc.get()->root.get()), &diag_)); - EXPECT_THAT(config.artifacts, SizeIs(2ul)); - EXPECT_EQ(2, config.artifacts.back().version); - } - - { - // Perform a third action with a set version code. - const auto doc = test::BuildXmlDom(R"xml( - <artifact - version="5" - abi-group="other" - screen-density-group="large" - locale-group="europe" - android-sdk-group="v19" - gl-texture-group="dxt1" - device-feature-group="low-latency"/>)xml"); - - ASSERT_TRUE(ArtifactTagHandler(&config, NodeCast<Element>(doc.get()->root.get()), &diag_)); - EXPECT_THAT(config.artifacts, SizeIs(3ul)); - EXPECT_EQ(5, config.artifacts.back().version); - } - - { - // Perform a fourth action to ensure the version code still increments. - const auto doc = test::BuildXmlDom(R"xml( - <artifact - abi-group="other" - screen-density-group="large" - locale-group="europe" - android-sdk-group="v19" - gl-texture-group="dxt1" - device-feature-group="low-latency"/>)xml"); - - ASSERT_TRUE(ArtifactTagHandler(&config, NodeCast<Element>(doc.get()->root.get()), &diag_)); - EXPECT_THAT(config.artifacts, SizeIs(4ul)); - EXPECT_EQ(6, config.artifacts.back().version); - } -} - -TEST_F(ConfigurationParserTest, DuplicateArtifactVersion) { - static constexpr const char* configuration = R"xml(<?xml version="1.0" encoding="utf-8" ?> - <pst-process xmlns="http://schemas.android.com/tools/aapt">> - <artifacts> - <artifact-format> - ${base}.${abi}.${screen-density}.${locale}.${sdk}.${gl}.${feature}.release - </artifact-format> - <artifact - name="art1" - abi-group="arm" - screen-density-group="large" - locale-group="europe" - android-sdk-group="v19" - gl-texture-group="dxt1" - device-feature-group="low-latency"/> - <artifact - name="art2" - version = "1" - abi-group="other" - screen-density-group="alldpi" - locale-group="north-america" - android-sdk-group="v19" - gl-texture-group="dxt1" - device-feature-group="low-latency"/> - </artifacts> - </post-process>)xml"; - auto result = ConfigurationParser::ForContents(configuration).Parse("test.apk"); - ASSERT_FALSE(result); + auto& artifact = config.artifacts.back(); + EXPECT_FALSE(artifact.name); // TODO: make this fail. + EXPECT_EQ("arm", artifact.abi_group.value()); + EXPECT_EQ("large", artifact.screen_density_group.value()); + EXPECT_EQ("europe", artifact.locale_group.value()); + EXPECT_EQ("v19", artifact.android_sdk.value()); + EXPECT_EQ("dxt1", artifact.gl_texture_group.value()); + EXPECT_EQ("low-latency", artifact.device_feature_group.value()); } TEST_F(ConfigurationParserTest, ArtifactFormatAction) { @@ -334,7 +410,7 @@ TEST_F(ConfigurationParserTest, AbiGroupAction) { EXPECT_THAT(config.abi_groups, SizeIs(1ul)); ASSERT_EQ(1u, config.abi_groups.count("arm")); - auto& out = config.abi_groups["arm"]; + auto& out = config.abi_groups["arm"].entry; ASSERT_THAT(out, ElementsAre(Abi::kArmV7a, Abi::kArm64V8a)); } @@ -350,7 +426,7 @@ TEST_F(ConfigurationParserTest, AbiGroupAction_EmptyGroup) { EXPECT_THAT(config.abi_groups, SizeIs(1ul)); ASSERT_EQ(1u, config.abi_groups.count("arm64-v8a")); - auto& out = config.abi_groups["arm64-v8a"]; + auto& out = config.abi_groups["arm64-v8a"].entry; ASSERT_THAT(out, ElementsAre(Abi::kArm64V8a)); } @@ -390,7 +466,7 @@ TEST_F(ConfigurationParserTest, ScreenDensityGroupAction) { ConfigDescription xxxhdpi; xxxhdpi.density = ResTable_config::DENSITY_XXXHIGH; - auto& out = config.screen_density_groups["large"]; + auto& out = config.screen_density_groups["large"].entry; ASSERT_THAT(out, ElementsAre(xhdpi, xxhdpi, xxxhdpi)); } @@ -409,7 +485,7 @@ TEST_F(ConfigurationParserTest, ScreenDensityGroupAction_EmtpyGroup) { ConfigDescription xhdpi; xhdpi.density = ResTable_config::DENSITY_XHIGH; - auto& out = config.screen_density_groups["xhdpi"]; + auto& out = config.screen_density_groups["xhdpi"].entry; ASSERT_THAT(out, ElementsAre(xhdpi)); } @@ -441,7 +517,7 @@ TEST_F(ConfigurationParserTest, LocaleGroupAction) { ASSERT_EQ(1ul, config.locale_groups.size()); ASSERT_EQ(1u, config.locale_groups.count("europe")); - const auto& out = config.locale_groups["europe"]; + const auto& out = config.locale_groups["europe"].entry; ConfigDescription en = test::ParseConfigOrDie("en"); ConfigDescription es = test::ParseConfigOrDie("es"); @@ -463,7 +539,7 @@ TEST_F(ConfigurationParserTest, LocaleGroupAction_EmtpyGroup) { ASSERT_EQ(1ul, config.locale_groups.size()); ASSERT_EQ(1u, config.locale_groups.count("en")); - const auto& out = config.locale_groups["en"]; + const auto& out = config.locale_groups["en"].entry; ConfigDescription en = test::ParseConfigOrDie("en"); @@ -482,27 +558,25 @@ TEST_F(ConfigurationParserTest, LocaleGroupAction_InvalidEmtpyGroup) { TEST_F(ConfigurationParserTest, AndroidSdkGroupAction) { static constexpr const char* xml = R"xml( - <android-sdk-group label="v19"> - <android-sdk + <android-sdk label="v19" minSdkVersion="19" targetSdkVersion="24" maxSdkVersion="25"> <manifest> <!--- manifest additions here XSLT? TODO --> </manifest> - </android-sdk> - </android-sdk-group>)xml"; + </android-sdk>)xml"; auto doc = test::BuildXmlDom(xml); PostProcessingConfiguration config; - bool ok = AndroidSdkGroupTagHandler(&config, NodeCast<Element>(doc.get()->root.get()), &diag_); + bool ok = AndroidSdkTagHandler(&config, NodeCast<Element>(doc.get()->root.get()), &diag_); ASSERT_TRUE(ok); - ASSERT_EQ(1ul, config.android_sdk_groups.size()); - ASSERT_EQ(1u, config.android_sdk_groups.count("v19")); + ASSERT_EQ(1ul, config.android_sdks.size()); + ASSERT_EQ(1u, config.android_sdks.count("v19")); - auto& out = config.android_sdk_groups["v19"]; + auto& out = config.android_sdks["v19"]; AndroidSdk sdk; sdk.min_sdk_version = 19; @@ -515,98 +589,86 @@ TEST_F(ConfigurationParserTest, AndroidSdkGroupAction) { TEST_F(ConfigurationParserTest, AndroidSdkGroupAction_SingleVersion) { { - static constexpr const char* xml = R"xml( - <android-sdk-group label="v19"> - <android-sdk minSdkVersion="19"></android-sdk> - </android-sdk-group>)xml"; - + const char* xml = "<android-sdk label='v19' minSdkVersion='19'></android-sdk>"; auto doc = test::BuildXmlDom(xml); PostProcessingConfiguration config; - bool ok = AndroidSdkGroupTagHandler(&config, NodeCast<Element>(doc.get()->root.get()), &diag_); + bool ok = AndroidSdkTagHandler(&config, NodeCast<Element>(doc.get()->root.get()), &diag_); ASSERT_TRUE(ok); - ASSERT_EQ(1ul, config.android_sdk_groups.size()); - ASSERT_EQ(1u, config.android_sdk_groups.count("v19")); + ASSERT_EQ(1ul, config.android_sdks.size()); + ASSERT_EQ(1u, config.android_sdks.count("v19")); - auto& out = config.android_sdk_groups["v19"]; - EXPECT_EQ(19, out.min_sdk_version.value()); + auto& out = config.android_sdks["v19"]; + EXPECT_EQ(19, out.min_sdk_version); EXPECT_FALSE(out.max_sdk_version); EXPECT_FALSE(out.target_sdk_version); } { - static constexpr const char* xml = R"xml( - <android-sdk-group label="v19"> - <android-sdk maxSdkVersion="19"></android-sdk> - </android-sdk-group>)xml"; - + const char* xml = + "<android-sdk label='v19' minSdkVersion='19' maxSdkVersion='19'></android-sdk>"; auto doc = test::BuildXmlDom(xml); PostProcessingConfiguration config; - bool ok = AndroidSdkGroupTagHandler(&config, NodeCast<Element>(doc.get()->root.get()), &diag_); + bool ok = AndroidSdkTagHandler(&config, NodeCast<Element>(doc.get()->root.get()), &diag_); ASSERT_TRUE(ok); - ASSERT_EQ(1ul, config.android_sdk_groups.size()); - ASSERT_EQ(1u, config.android_sdk_groups.count("v19")); + ASSERT_EQ(1ul, config.android_sdks.size()); + ASSERT_EQ(1u, config.android_sdks.count("v19")); - auto& out = config.android_sdk_groups["v19"]; + auto& out = config.android_sdks["v19"]; EXPECT_EQ(19, out.max_sdk_version.value()); - EXPECT_FALSE(out.min_sdk_version); + EXPECT_EQ(19, out.min_sdk_version); EXPECT_FALSE(out.target_sdk_version); } { - static constexpr const char* xml = R"xml( - <android-sdk-group label="v19"> - <android-sdk targetSdkVersion="19"></android-sdk> - </android-sdk-group>)xml"; - + const char* xml = + "<android-sdk label='v19' minSdkVersion='19' targetSdkVersion='19'></android-sdk>"; auto doc = test::BuildXmlDom(xml); PostProcessingConfiguration config; - bool ok = AndroidSdkGroupTagHandler(&config, NodeCast<Element>(doc.get()->root.get()), &diag_); + bool ok = AndroidSdkTagHandler(&config, NodeCast<Element>(doc.get()->root.get()), &diag_); ASSERT_TRUE(ok); - ASSERT_EQ(1ul, config.android_sdk_groups.size()); - ASSERT_EQ(1u, config.android_sdk_groups.count("v19")); + ASSERT_EQ(1ul, config.android_sdks.size()); + ASSERT_EQ(1u, config.android_sdks.count("v19")); - auto& out = config.android_sdk_groups["v19"]; + auto& out = config.android_sdks["v19"]; EXPECT_EQ(19, out.target_sdk_version.value()); - EXPECT_FALSE(out.min_sdk_version); + EXPECT_EQ(19, out.min_sdk_version); EXPECT_FALSE(out.max_sdk_version); } } TEST_F(ConfigurationParserTest, AndroidSdkGroupAction_InvalidVersion) { static constexpr const char* xml = R"xml( - <android-sdk-group label="v19"> - <android-sdk - minSdkVersion="v19" - targetSdkVersion="v24" - maxSdkVersion="v25"> - <manifest> - <!--- manifest additions here XSLT? TODO --> - </manifest> - </android-sdk> - </android-sdk-group>)xml"; + <android-sdk + label="v19" + minSdkVersion="v19" + targetSdkVersion="v24" + maxSdkVersion="v25"> + <manifest> + <!--- manifest additions here XSLT? TODO --> + </manifest> + </android-sdk>)xml"; auto doc = test::BuildXmlDom(xml); PostProcessingConfiguration config; - bool ok = AndroidSdkGroupTagHandler(&config, NodeCast<Element>(doc.get()->root.get()), &diag_); + bool ok = AndroidSdkTagHandler(&config, NodeCast<Element>(doc.get()->root.get()), &diag_); ASSERT_FALSE(ok); } TEST_F(ConfigurationParserTest, AndroidSdkGroupAction_NonNumeric) { static constexpr const char* xml = R"xml( - <android-sdk-group label="P"> <android-sdk + label="P" minSdkVersion="25" targetSdkVersion="%s" maxSdkVersion="%s"> - </android-sdk> - </android-sdk-group>)xml"; + </android-sdk>)xml"; const auto& dev_sdk = GetDevelopmentSdkCodeNameAndVersion(); const char* codename = dev_sdk.first.data(); @@ -615,13 +677,13 @@ TEST_F(ConfigurationParserTest, AndroidSdkGroupAction_NonNumeric) { auto doc = test::BuildXmlDom(StringPrintf(xml, codename, codename)); PostProcessingConfiguration config; - bool ok = AndroidSdkGroupTagHandler(&config, NodeCast<Element>(doc.get()->root.get()), &diag_); + bool ok = AndroidSdkTagHandler(&config, NodeCast<Element>(doc.get()->root.get()), &diag_); ASSERT_TRUE(ok); - ASSERT_EQ(1ul, config.android_sdk_groups.size()); - ASSERT_EQ(1u, config.android_sdk_groups.count("P")); + ASSERT_EQ(1ul, config.android_sdks.size()); + ASSERT_EQ(1u, config.android_sdks.count("P")); - auto& out = config.android_sdk_groups["P"]; + auto& out = config.android_sdks["P"]; AndroidSdk sdk; sdk.min_sdk_version = 25; @@ -651,7 +713,7 @@ TEST_F(ConfigurationParserTest, GlTextureGroupAction) { EXPECT_THAT(config.gl_texture_groups, SizeIs(1ul)); ASSERT_EQ(1u, config.gl_texture_groups.count("dxt1")); - auto& out = config.gl_texture_groups["dxt1"]; + auto& out = config.gl_texture_groups["dxt1"].entry; GlTexture texture{ std::string("GL_EXT_texture_compression_dxt1"), @@ -680,7 +742,7 @@ TEST_F(ConfigurationParserTest, DeviceFeatureGroupAction) { EXPECT_THAT(config.device_feature_groups, SizeIs(1ul)); ASSERT_EQ(1u, config.device_feature_groups.count("low-latency")); - auto& out = config.device_feature_groups["low-latency"]; + auto& out = config.device_feature_groups["low-latency"].entry; DeviceFeature low_latency = "android.hardware.audio.low_latency"; DeviceFeature pro = "android.hardware.audio.pro"; @@ -734,7 +796,7 @@ TEST(ArtifactTest, Complex) { artifact.device_feature_group = {"df1"}; artifact.gl_texture_group = {"glx1"}; artifact.locale_group = {"en-AU"}; - artifact.android_sdk_group = {"v26"}; + artifact.android_sdk = {"v26"}; { auto result = artifact.ToArtifactName( |