AAPT2: Respect format attr in <array> resource

Bug: 38152130
Test: make aapt2_tests
Change-Id: I84f352afb1a8fd2f329354f789aaa36c5ef88e47
This commit is contained in:
Adam Lesinski
2017-05-16 12:18:08 -07:00
parent 4b2cecbb53
commit d5fd76a2ff
2 changed files with 71 additions and 46 deletions

View File

@@ -571,14 +571,39 @@ TEST_F(ResourceParserTest, ParseArray) {
}
TEST_F(ResourceParserTest, ParseStringArray) {
std::string input =
"<string-array name=\"foo\">\n"
" <item>\"Werk\"</item>\n"
"</string-array>\n";
std::string input = R"EOF(
<string-array name="foo">
<item>"Werk"</item>"
</string-array>)EOF";
ASSERT_TRUE(TestParse(input));
EXPECT_NE(nullptr, test::GetValue<Array>(&table_, "array/foo"));
}
TEST_F(ResourceParserTest, ParseArrayWithFormat) {
std::string input = R"EOF(
<array name="foo" format="string">
<item>100</item>
</array>)EOF";
ASSERT_TRUE(TestParse(input));
Array* array = test::GetValue<Array>(&table_, "array/foo");
ASSERT_NE(nullptr, array);
ASSERT_EQ(1u, array->items.size());
String* str = ValueCast<String>(array->items[0].get());
ASSERT_NE(nullptr, str);
EXPECT_EQ(std::string("100"), *str->value);
}
TEST_F(ResourceParserTest, ParseArrayWithBadFormat) {
std::string input = R"EOF(
<array name="foo" format="integer">
<item>Hi</item>
</array>)EOF";
ASSERT_FALSE(TestParse(input));
}
TEST_F(ResourceParserTest, ParsePlural) {
std::string input =
"<plurals name=\"foo\">\n"