Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit bfdebbbd authored by Ryan Mitchell's avatar Ryan Mitchell Committed by android-build-merger
Browse files

Merge "DO NOT MERGE: Fixed broken aapt2 tests" into qt-dev

am: cbe933a4

Change-Id: Ic0da145919936b8427ba9c6504606f1708832631
parents aad720ee cbe933a4
Loading
Loading
Loading
Loading
+51 −1
Original line number Diff line number Diff line
@@ -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
+0 −48
Original line number Diff line number Diff line
@@ -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();