diff options
author | Xin Li <delphij@google.com> | 2017-12-06 23:18:26 +0000 |
---|---|---|
committer | Gerrit Code Review <noreply-gerritcodereview@google.com> | 2017-12-06 23:18:26 +0000 |
commit | d18ed49f9dba09b85782c83999a9103dec015bf2 (patch) | |
tree | 379823ce960e903a2ba0313591c947ee2d595cf7 /tools/aapt2/java/JavaClassGenerator_test.cpp | |
parent | 8ab47567b2140da30257bc4e3b70495c8f17281e (diff) | |
parent | 5364be50cd0431c3b323fd8a3725df5146d01e99 (diff) |
Merge "DO NOT MERGE: Merge Oreo MR1 into master"
Diffstat (limited to 'tools/aapt2/java/JavaClassGenerator_test.cpp')
-rw-r--r-- | tools/aapt2/java/JavaClassGenerator_test.cpp | 49 |
1 files changed, 49 insertions, 0 deletions
diff --git a/tools/aapt2/java/JavaClassGenerator_test.cpp b/tools/aapt2/java/JavaClassGenerator_test.cpp index 271279ff5e92..84bf04134ad9 100644 --- a/tools/aapt2/java/JavaClassGenerator_test.cpp +++ b/tools/aapt2/java/JavaClassGenerator_test.cpp @@ -23,6 +23,8 @@ #include "util/Util.h" using android::StringPiece; +using ::testing::Lt; +using ::testing::Ne; namespace aapt { @@ -329,6 +331,53 @@ TEST(JavaClassGeneratorTest, CommentsForStyleablesAndNestedAttributesArePresent) EXPECT_NE(std::string::npos, actual.find(styleable.GetComment().data())); } +TEST(JavaClassGeneratorTest, StyleableAndIndicesAreColocated) { + std::unique_ptr<ResourceTable> table = + test::ResourceTableBuilder() + .SetPackageId("android", 0x01) + .AddValue("android:attr/layout_gravity", util::make_unique<Attribute>()) + .AddValue("android:attr/background", util::make_unique<Attribute>()) + .AddValue("android:styleable/ActionBar", + test::StyleableBuilder() + .AddItem("android:attr/background", ResourceId(0x01010000)) + .Build()) + .AddValue("android:styleable/ActionBar.LayoutParams", + test::StyleableBuilder() + .AddItem("android:attr/layout_gravity", ResourceId(0x01010001)) + .Build()) + .Build(); + + std::unique_ptr<IAaptContext> context = + test::ContextBuilder() + .AddSymbolSource(util::make_unique<ResourceTableSymbolSource>(table.get())) + .SetNameManglerPolicy(NameManglerPolicy{"android"}) + .Build(); + + JavaClassGeneratorOptions options; + JavaClassGenerator generator(context.get(), table.get(), {}); + std::stringstream out; + ASSERT_TRUE(generator.Generate("android", &out)); + std::string output = out.str(); + + std::string::size_type actionbar_pos = output.find("int[] ActionBar"); + ASSERT_THAT(actionbar_pos, Ne(std::string::npos)); + + std::string::size_type actionbar_background_pos = output.find("int ActionBar_background"); + ASSERT_THAT(actionbar_background_pos, Ne(std::string::npos)); + + std::string::size_type actionbar_layout_params_pos = output.find("int[] ActionBar_LayoutParams"); + ASSERT_THAT(actionbar_layout_params_pos, Ne(std::string::npos)); + + std::string::size_type actionbar_layout_params_layout_gravity_pos = + output.find("int ActionBar_LayoutParams_layout_gravity"); + ASSERT_THAT(actionbar_layout_params_layout_gravity_pos, Ne(std::string::npos)); + + EXPECT_THAT(actionbar_pos, Lt(actionbar_background_pos)); + EXPECT_THAT(actionbar_pos, Lt(actionbar_layout_params_pos)); + EXPECT_THAT(actionbar_background_pos, Lt(actionbar_layout_params_pos)); + EXPECT_THAT(actionbar_layout_params_pos, Lt(actionbar_layout_params_layout_gravity_pos)); +} + TEST(JavaClassGeneratorTest, CommentsForRemovedAttributesAreNotPresentInClass) { Attribute attr(false); attr.SetComment(StringPiece("removed")); |