diff options
author | Ryan Mitchell <rtmitchell@google.com> | 2018-12-13 15:44:29 -0800 |
---|---|---|
committer | Ryan Mitchell <rtmitchell@google.com> | 2018-12-13 16:05:10 -0800 |
commit | 54237ffed4e63279042084968b77cc17e13c84a8 (patch) | |
tree | 4fa2731f7d0174066653690725f68377895b0b05 /tools/aapt2/ResourceTable_test.cpp | |
parent | 066f0314793d7beac785d0bd736eb01de88c3f97 (diff) |
Add actor and name parsing for overlayable
Add parsing of two overlayable attributes:
name : The unnique identifying name of the overlayable set of resources
actor: The component responsible for enabling and disabling overlays
targeting the specified set of resources
Bug: 110869880
Bug: 119390855
Test: m -j aapt2_tests
Change-Id: Id42463e2b92b69034fb39cd29bc8606affb61ba7
Diffstat (limited to 'tools/aapt2/ResourceTable_test.cpp')
-rw-r--r-- | tools/aapt2/ResourceTable_test.cpp | 90 |
1 files changed, 66 insertions, 24 deletions
diff --git a/tools/aapt2/ResourceTable_test.cpp b/tools/aapt2/ResourceTable_test.cpp index 31095c4d88c8..a733134f123c 100644 --- a/tools/aapt2/ResourceTable_test.cpp +++ b/tools/aapt2/ResourceTable_test.cpp @@ -244,48 +244,90 @@ TEST(ResourceTableTest, SetAllowNew) { TEST(ResourceTableTest, SetOverlayable) { ResourceTable table; - Overlayable overlayable{}; - overlayable.policies |= Overlayable::Policy::kProduct; - overlayable.policies |= Overlayable::Policy::kProductServices; - overlayable.comment = "comment"; + auto overlayable = std::make_shared<Overlayable>("Name", "overlay://theme", + Source("res/values/overlayable.xml", 40)); + OverlayableItem overlayable_item(overlayable); + overlayable_item.policies |= OverlayableItem::Policy::kProduct; + overlayable_item.policies |= OverlayableItem::Policy::kProductServices; + overlayable_item.comment = "comment"; + overlayable_item.source = Source("res/values/overlayable.xml", 42); const ResourceName name = test::ParseNameOrDie("android:string/foo"); - ASSERT_TRUE(table.SetOverlayable(name, overlayable, test::GetDiagnostics())); + ASSERT_TRUE(table.SetOverlayable(name, overlayable_item, test::GetDiagnostics())); Maybe<ResourceTable::SearchResult> search_result = table.FindResource(name); ASSERT_TRUE(search_result); - ASSERT_TRUE(search_result.value().entry->overlayable); + ASSERT_TRUE(search_result.value().entry->overlayable_item); + + OverlayableItem& result_overlayable_item = search_result.value().entry->overlayable_item.value(); + EXPECT_THAT(result_overlayable_item.overlayable->name, Eq("Name")); + EXPECT_THAT(result_overlayable_item.overlayable->actor, Eq("overlay://theme")); + EXPECT_THAT(result_overlayable_item.overlayable->source.path, Eq("res/values/overlayable.xml")); + EXPECT_THAT(result_overlayable_item.overlayable->source.line, 40); + EXPECT_THAT(result_overlayable_item.policies, Eq(OverlayableItem::Policy::kProduct + | OverlayableItem::Policy::kProductServices)); + ASSERT_THAT(result_overlayable_item.comment, StrEq("comment")); + EXPECT_THAT(result_overlayable_item.source.path, Eq("res/values/overlayable.xml")); + EXPECT_THAT(result_overlayable_item.source.line, 42); +} + +TEST(ResourceTableTest, SetMultipleOverlayableResources) { + ResourceTable table; + + const ResourceName foo = test::ParseNameOrDie("android:string/foo"); + auto group = std::make_shared<Overlayable>("Name", "overlay://theme"); + OverlayableItem overlayable(group); + overlayable.policies = OverlayableItem::Policy::kProduct; + ASSERT_TRUE(table.SetOverlayable(foo, overlayable, test::GetDiagnostics())); + + const ResourceName bar = test::ParseNameOrDie("android:string/bar"); + OverlayableItem overlayable2(group); + overlayable2.policies = OverlayableItem::Policy::kProduct; + ASSERT_TRUE(table.SetOverlayable(bar, overlayable2, test::GetDiagnostics())); + + const ResourceName baz = test::ParseNameOrDie("android:string/baz"); + OverlayableItem overlayable3(group); + overlayable3.policies = OverlayableItem::Policy::kVendor; + ASSERT_TRUE(table.SetOverlayable(baz, overlayable3, test::GetDiagnostics())); +} + +TEST(ResourceTableTest, SetOverlayableDifferentResourcesDifferentName) { + ResourceTable table; + + const ResourceName foo = test::ParseNameOrDie("android:string/foo"); + OverlayableItem overlayable_item(std::make_shared<Overlayable>("Name", "overlay://theme")); + overlayable_item.policies = OverlayableItem::Policy::kProduct; + ASSERT_TRUE(table.SetOverlayable(foo, overlayable_item, test::GetDiagnostics())); - Overlayable& result_overlayable = search_result.value().entry->overlayable.value(); - ASSERT_THAT(result_overlayable.comment, StrEq("comment")); - EXPECT_THAT(result_overlayable.policies, Eq(Overlayable::Policy::kProduct - | Overlayable::Policy::kProductServices)); + const ResourceName bar = test::ParseNameOrDie("android:string/bar"); + OverlayableItem overlayable_item2(std::make_shared<Overlayable>("Name2", "overlay://theme")); + overlayable_item2.policies = OverlayableItem::Policy::kProduct; + ASSERT_TRUE(table.SetOverlayable(bar, overlayable_item2, test::GetDiagnostics())); } -TEST(ResourceTableTest, AddDuplicateOverlayableSamePolicyFail) { +TEST(ResourceTableTest, SetOverlayableSameResourcesFail) { ResourceTable table; const ResourceName name = test::ParseNameOrDie("android:string/foo"); - Overlayable overlayable{}; - overlayable.policies = Overlayable::Policy::kProduct; - ASSERT_TRUE(table.SetOverlayable(name, overlayable, test::GetDiagnostics())); + auto overlayable = std::make_shared<Overlayable>("Name", "overlay://theme"); + OverlayableItem overlayable_item(overlayable); + ASSERT_TRUE(table.SetOverlayable(name, overlayable_item, test::GetDiagnostics())); - Overlayable overlayable2{}; - overlayable2.policies = Overlayable::Policy::kProduct; - ASSERT_FALSE(table.SetOverlayable(name, overlayable2, test::GetDiagnostics())); + OverlayableItem overlayable_item2(overlayable); + ASSERT_FALSE(table.SetOverlayable(name, overlayable_item2, test::GetDiagnostics())); } -TEST(ResourceTableTest, AddDuplicateOverlayableDifferentPolicyFail) { +TEST(ResourceTableTest, SetOverlayableSameResourcesDifferentNameFail) { ResourceTable table; const ResourceName name = test::ParseNameOrDie("android:string/foo"); - Overlayable overlayable{}; - overlayable.policies = Overlayable::Policy::kProduct; - ASSERT_TRUE(table.SetOverlayable(name, overlayable, test::GetDiagnostics())); + auto overlayable = std::make_shared<Overlayable>("Name", "overlay://theme"); + OverlayableItem overlayable_item(overlayable); + ASSERT_TRUE(table.SetOverlayable(name, overlayable_item, test::GetDiagnostics())); - Overlayable overlayable2{}; - overlayable2.policies = Overlayable::Policy::kVendor; - ASSERT_FALSE(table.SetOverlayable(name, overlayable2, test::GetDiagnostics())); + auto overlayable2 = std::make_shared<Overlayable>("Other", "overlay://theme"); + OverlayableItem overlayable_item2(overlayable2); + ASSERT_FALSE(table.SetOverlayable(name, overlayable_item2, test::GetDiagnostics())); } TEST(ResourceTableTest, AllowDuplictaeResourcesNames) { |