From ac3bfcfc2aab6cc47a6119323f12e0b9354c05fe Mon Sep 17 00:00:00 2001 From: Ryan Mitchell Date: Mon, 6 May 2019 13:02:38 -0700 Subject: [PATCH] DO NOT MERGE: Fixed broken aapt2 tests Some tests starting failing when b435101ec8aa827375e837c4843f6444145e1f4c was merged. It seems on qt-dev aapt2_host_unit_tests does not run while it does on master. Bug: 131762014 Bug: 129146717 Test: aapt2_tests Change-Id: I701b275989c908acb78190be0930785712cb5686 --- tools/aapt2/ResourceValues_test.cpp | 52 ++++++++++++++++++++++++++++++++++- tools/aapt2/link/TableMerger_test.cpp | 48 -------------------------------- 2 files changed, 51 insertions(+), 49 deletions(-) diff --git a/tools/aapt2/ResourceValues_test.cpp b/tools/aapt2/ResourceValues_test.cpp index c4a1108ac62a..dbf51143f720 100644 --- a/tools/aapt2/ResourceValues_test.cpp +++ b/tools/aapt2/ResourceValues_test.cpp @@ -284,8 +284,58 @@ TEST(ResourcesValuesTest, AttributeIsCompatible) { EXPECT_FALSE(attr_three.IsCompatibleWith(attr_one)); EXPECT_FALSE(attr_three.IsCompatibleWith(attr_two)); - EXPECT_FALSE(attr_three.IsCompatibleWith(attr_three)); + EXPECT_TRUE(attr_three.IsCompatibleWith(attr_three)); EXPECT_FALSE(attr_three.IsCompatibleWith(attr_four)); + + EXPECT_FALSE(attr_four.IsCompatibleWith(attr_one)); + EXPECT_FALSE(attr_four.IsCompatibleWith(attr_two)); + EXPECT_FALSE(attr_four.IsCompatibleWith(attr_three)); + EXPECT_TRUE(attr_four.IsCompatibleWith(attr_four)); +} + +TEST(ResourcesValuesTest, AttributeEnumIsCompatible) { + Attribute attr_one(TYPE_ENUM); + attr_one.symbols.push_back( + Attribute::Symbol{Reference(test::ParseNameOrDie("android:id/foo")), 0x01u}); + attr_one.symbols.push_back( + Attribute::Symbol{Reference(test::ParseNameOrDie("android:id/bar")), 0x07u}); + + Attribute attr_two(TYPE_ENUM); + attr_two.symbols.push_back( + Attribute::Symbol{Reference(test::ParseNameOrDie("android:id/foo")), 0x01u}); + attr_two.symbols.push_back( + Attribute::Symbol{Reference(test::ParseNameOrDie("android:id/bar")), 0x07u}); + EXPECT_TRUE(attr_one.IsCompatibleWith(attr_two)); +} + +TEST(ResourcesValuesTest, DifferentAttributeEnumDifferentNameIsNotCompatible) { + Attribute attr_one(TYPE_ENUM); + attr_one.symbols.push_back( + Attribute::Symbol{Reference(test::ParseNameOrDie("android:id/foo")), 0x01u}); + attr_one.symbols.push_back( + Attribute::Symbol{Reference(test::ParseNameOrDie("android:id/bar")), 0x07u}); + + Attribute attr_two(TYPE_ENUM); + attr_two.symbols.push_back( + Attribute::Symbol{Reference(test::ParseNameOrDie("android:id/foo")), 0x01u}); + attr_one.symbols.push_back( + Attribute::Symbol{Reference(test::ParseNameOrDie("android:id/baz")), 0x07u}); + EXPECT_FALSE(attr_one.IsCompatibleWith(attr_two)); +} + +TEST(ResourcesValuesTest, DifferentAttributeEnumDifferentValueIsNotCompatible) { + Attribute attr_one(TYPE_ENUM); + attr_one.symbols.push_back( + Attribute::Symbol{Reference(test::ParseNameOrDie("android:id/foo")), 0x01u}); + attr_one.symbols.push_back( + Attribute::Symbol{Reference(test::ParseNameOrDie("android:id/bar")), 0x07u}); + + Attribute attr_two(TYPE_ENUM); + attr_two.symbols.push_back( + Attribute::Symbol{Reference(test::ParseNameOrDie("android:id/foo")), 0x01u}); + attr_two.symbols.push_back( + Attribute::Symbol{Reference(test::ParseNameOrDie("android:id/bar")), 0x09u}); + EXPECT_FALSE(attr_one.IsCompatibleWith(attr_two)); } } // namespace aapt diff --git a/tools/aapt2/link/TableMerger_test.cpp b/tools/aapt2/link/TableMerger_test.cpp index be9c84b3f8a6..78d42a160e21 100644 --- a/tools/aapt2/link/TableMerger_test.cpp +++ b/tools/aapt2/link/TableMerger_test.cpp @@ -408,54 +408,6 @@ TEST_F(TableMergerTest, FailToOverrideConflictingAttributeFormatsWithOverlay) { ASSERT_FALSE(merger.Merge({}, overlay.get(), true /*overlay*/)); } -TEST_F(TableMergerTest, FailToOverrideConflictingFlagsAndEnumsWithOverlay) { - std::unique_ptr base = - test::ResourceTableBuilder() - .SetPackageId("", 0x7f) - .AddValue("attr/foo", test::AttributeBuilder() - .SetTypeMask(android::ResTable_map::TYPE_FLAGS) - .Build()) - .Build(); - - std::unique_ptr overlay = - test::ResourceTableBuilder() - .SetPackageId("", 0x7f) - .AddValue("attr/foo", test::AttributeBuilder() - .SetTypeMask(android::ResTable_map::TYPE_FLAGS) - .SetWeak(false) - .Build()) - .Build(); - - ResourceTable final_table; - TableMergerOptions options; - options.auto_add_overlay = false; - TableMerger merger(context_.get(), &final_table, options); - - ASSERT_TRUE(merger.Merge({}, base.get(), false /*overlay*/)); - ASSERT_FALSE(merger.Merge({}, overlay.get(), true /*overlay*/)); - - base = test::ResourceTableBuilder() - .SetPackageId("", 0x7f) - .AddValue("attr/foo", test::AttributeBuilder() - .SetTypeMask(android::ResTable_map::TYPE_ENUM) - .Build()) - .Build(); - - overlay = test::ResourceTableBuilder() - .SetPackageId("", 0x7f) - .AddValue("attr/foo", test::AttributeBuilder() - .SetTypeMask(android::ResTable_map::TYPE_ENUM) - .SetWeak(false) - .Build()) - .Build(); - - ResourceTable final_table2; - TableMerger merger2(context_.get(), &final_table2, options); - - ASSERT_TRUE(merger2.Merge({}, base.get(), false /*overlay*/)); - ASSERT_FALSE(merger2.Merge({}, overlay.get(), true /*overlay*/)); -} - TEST_F(TableMergerTest, FailToMergeNewResourceWithoutAutoAddOverlay) { std::unique_ptr table_a = test::ResourceTableBuilder().SetPackageId("", 0x7f).Build(); -- 2.11.0