Loading tools/aapt2/ResourceValues_test.cpp +51 −1 Original line number Diff line number Diff line Loading @@ -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 tools/aapt2/link/TableMerger_test.cpp +0 −48 Original line number Diff line number Diff line Loading @@ -408,54 +408,6 @@ TEST_F(TableMergerTest, FailToOverrideConflictingAttributeFormatsWithOverlay) { ASSERT_FALSE(merger.Merge({}, overlay.get(), true /*overlay*/)); } TEST_F(TableMergerTest, FailToOverrideConflictingFlagsAndEnumsWithOverlay) { std::unique_ptr<ResourceTable> base = test::ResourceTableBuilder() .SetPackageId("", 0x7f) .AddValue("attr/foo", test::AttributeBuilder() .SetTypeMask(android::ResTable_map::TYPE_FLAGS) .Build()) .Build(); std::unique_ptr<ResourceTable> 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<ResourceTable> table_a = test::ResourceTableBuilder().SetPackageId("", 0x7f).Build(); Loading Loading
tools/aapt2/ResourceValues_test.cpp +51 −1 Original line number Diff line number Diff line Loading @@ -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
tools/aapt2/link/TableMerger_test.cpp +0 −48 Original line number Diff line number Diff line Loading @@ -408,54 +408,6 @@ TEST_F(TableMergerTest, FailToOverrideConflictingAttributeFormatsWithOverlay) { ASSERT_FALSE(merger.Merge({}, overlay.get(), true /*overlay*/)); } TEST_F(TableMergerTest, FailToOverrideConflictingFlagsAndEnumsWithOverlay) { std::unique_ptr<ResourceTable> base = test::ResourceTableBuilder() .SetPackageId("", 0x7f) .AddValue("attr/foo", test::AttributeBuilder() .SetTypeMask(android::ResTable_map::TYPE_FLAGS) .Build()) .Build(); std::unique_ptr<ResourceTable> 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<ResourceTable> table_a = test::ResourceTableBuilder().SetPackageId("", 0x7f).Build(); Loading