Introduce ResourceNamedType that represents pair of name + ResourceType.
This type will be used as part of ResourceName to support types with
custom names inside aapt2.
DD: go/custom-resource-types-in-aapt2
Bug: b/215108200
Test: Resource_test.cpp
Change-Id: Ib09776e6b2f69fefb9724136a345dc25bea42573
diff --git a/tools/aapt2/Resource_test.cpp b/tools/aapt2/Resource_test.cpp
index c557f3c..2c55d1d 100644
--- a/tools/aapt2/Resource_test.cpp
+++ b/tools/aapt2/Resource_test.cpp
@@ -18,6 +18,9 @@
#include "test/Test.h"
+using ::testing::Eq;
+using ::testing::Optional;
+
namespace aapt {
TEST(ResourceTypeTest, ParseResourceTypes) {
@@ -125,4 +128,104 @@
EXPECT_EQ(type, nullptr);
}
+TEST(ResourceTypeTest, ParseResourceNamedType) {
+ auto type = ParseResourceNamedType("anim");
+ EXPECT_THAT(type, Optional(Eq(ResourceNamedType("anim", ResourceType::kAnim))));
+
+ type = ParseResourceNamedType("layout");
+ EXPECT_THAT(type, Optional(Eq(ResourceNamedType("layout", ResourceType::kLayout))));
+
+ type = ParseResourceNamedType("layout:2");
+ EXPECT_THAT(type, Optional(Eq(ResourceNamedType("layout:2", ResourceType::kLayout))));
+
+ type = ParseResourceNamedType("layout:another");
+ EXPECT_THAT(type, Optional(Eq(ResourceNamedType("layout:another", ResourceType::kLayout))));
+
+ type = ParseResourceNamedType("layout:");
+ EXPECT_THAT(type, Eq(std::nullopt));
+
+ type = ParseResourceNamedType("layout2");
+ EXPECT_THAT(type, Eq(std::nullopt));
+
+ type = ParseResourceNamedType("blahaha");
+ EXPECT_THAT(type, Eq(std::nullopt));
+}
+
+TEST(ResourceTypeTest, ResourceNamedTypeWithDefaultName) {
+ auto type = ResourceNamedTypeWithDefaultName(ResourceType::kAnim);
+ EXPECT_THAT(type, Eq(ResourceNamedType("anim", ResourceType::kAnim)));
+
+ type = ResourceNamedTypeWithDefaultName(ResourceType::kAnimator);
+ EXPECT_THAT(type, Eq(ResourceNamedType("animator", ResourceType::kAnimator)));
+
+ type = ResourceNamedTypeWithDefaultName(ResourceType::kArray);
+ EXPECT_THAT(type, Eq(ResourceNamedType("array", ResourceType::kArray)));
+
+ type = ResourceNamedTypeWithDefaultName(ResourceType::kAttr);
+ EXPECT_THAT(type, Eq(ResourceNamedType("attr", ResourceType::kAttr)));
+
+ type = ResourceNamedTypeWithDefaultName(ResourceType::kAttrPrivate);
+ EXPECT_THAT(type, Eq(ResourceNamedType("^attr-private", ResourceType::kAttrPrivate)));
+
+ type = ResourceNamedTypeWithDefaultName(ResourceType::kBool);
+ EXPECT_THAT(type, Eq(ResourceNamedType("bool", ResourceType::kBool)));
+
+ type = ResourceNamedTypeWithDefaultName(ResourceType::kColor);
+ EXPECT_THAT(type, Eq(ResourceNamedType("color", ResourceType::kColor)));
+
+ type = ResourceNamedTypeWithDefaultName(ResourceType::kConfigVarying);
+ EXPECT_THAT(type, Eq(ResourceNamedType("configVarying", ResourceType::kConfigVarying)));
+
+ type = ResourceNamedTypeWithDefaultName(ResourceType::kDimen);
+ EXPECT_THAT(type, Eq(ResourceNamedType("dimen", ResourceType::kDimen)));
+
+ type = ResourceNamedTypeWithDefaultName(ResourceType::kDrawable);
+ EXPECT_THAT(type, Eq(ResourceNamedType("drawable", ResourceType::kDrawable)));
+
+ type = ResourceNamedTypeWithDefaultName(ResourceType::kFont);
+ EXPECT_THAT(type, Eq(ResourceNamedType("font", ResourceType::kFont)));
+
+ type = ResourceNamedTypeWithDefaultName(ResourceType::kFraction);
+ EXPECT_THAT(type, Eq(ResourceNamedType("fraction", ResourceType::kFraction)));
+
+ type = ResourceNamedTypeWithDefaultName(ResourceType::kId);
+ EXPECT_THAT(type, Eq(ResourceNamedType("id", ResourceType::kId)));
+
+ type = ResourceNamedTypeWithDefaultName(ResourceType::kInteger);
+ EXPECT_THAT(type, Eq(ResourceNamedType("integer", ResourceType::kInteger)));
+
+ type = ResourceNamedTypeWithDefaultName(ResourceType::kInterpolator);
+ EXPECT_THAT(type, Eq(ResourceNamedType("interpolator", ResourceType::kInterpolator)));
+
+ type = ResourceNamedTypeWithDefaultName(ResourceType::kLayout);
+ EXPECT_THAT(type, Eq(ResourceNamedType("layout", ResourceType::kLayout)));
+
+ type = ResourceNamedTypeWithDefaultName(ResourceType::kMenu);
+ EXPECT_THAT(type, Eq(ResourceNamedType("menu", ResourceType::kMenu)));
+
+ type = ResourceNamedTypeWithDefaultName(ResourceType::kMipmap);
+ EXPECT_THAT(type, Eq(ResourceNamedType("mipmap", ResourceType::kMipmap)));
+
+ type = ResourceNamedTypeWithDefaultName(ResourceType::kNavigation);
+ EXPECT_THAT(type, Eq(ResourceNamedType("navigation", ResourceType::kNavigation)));
+
+ type = ResourceNamedTypeWithDefaultName(ResourceType::kPlurals);
+ EXPECT_THAT(type, Eq(ResourceNamedType("plurals", ResourceType::kPlurals)));
+
+ type = ResourceNamedTypeWithDefaultName(ResourceType::kRaw);
+ EXPECT_THAT(type, Eq(ResourceNamedType("raw", ResourceType::kRaw)));
+
+ type = ResourceNamedTypeWithDefaultName(ResourceType::kString);
+ EXPECT_THAT(type, Eq(ResourceNamedType("string", ResourceType::kString)));
+
+ type = ResourceNamedTypeWithDefaultName(ResourceType::kStyle);
+ EXPECT_THAT(type, Eq(ResourceNamedType("style", ResourceType::kStyle)));
+
+ type = ResourceNamedTypeWithDefaultName(ResourceType::kTransition);
+ EXPECT_THAT(type, Eq(ResourceNamedType("transition", ResourceType::kTransition)));
+
+ type = ResourceNamedTypeWithDefaultName(ResourceType::kXml);
+ EXPECT_THAT(type, Eq(ResourceNamedType("xml", ResourceType::kXml)));
+}
+
} // namespace aapt