summaryrefslogtreecommitdiff
path: root/tools/aapt2/ResourceParser_test.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'tools/aapt2/ResourceParser_test.cpp')
-rw-r--r--tools/aapt2/ResourceParser_test.cpp25
1 files changed, 14 insertions, 11 deletions
diff --git a/tools/aapt2/ResourceParser_test.cpp b/tools/aapt2/ResourceParser_test.cpp
index 25b76b0c1fa0..251ca0c9256e 100644
--- a/tools/aapt2/ResourceParser_test.cpp
+++ b/tools/aapt2/ResourceParser_test.cpp
@@ -1195,27 +1195,26 @@ TEST_F(ResourceParserTest, ParseIdItem) {
}
TEST_F(ResourceParserTest, ParseCData) {
- std::string input = R"(
- <string name="foo"><![CDATA[some text and ' apostrophe]]></string>)";
-
+ // Double quotes should still change the state of whitespace processing
+ std::string input = R"(<string name="foo">Hello<![CDATA[ "</string>' ]]> World</string>)";
ASSERT_TRUE(TestParse(input));
- String* output = test::GetValue<String>(&table_, "string/foo");
+ auto output = test::GetValue<String>(&table_, "string/foo");
ASSERT_THAT(output, NotNull());
- EXPECT_THAT(*output, StrValueEq("some text and ' apostrophe"));
+ EXPECT_THAT(*output, StrValueEq(std::string("Hello </string>' World").data()));
- // Double quotes should not change the state of whitespace processing
- input = R"(<string name="foo2">Hello<![CDATA[ "</string>' ]]> World</string>)";
+ input = R"(<string name="foo2"><![CDATA[Hello
+ World]]></string>)";
ASSERT_TRUE(TestParse(input));
output = test::GetValue<String>(&table_, "string/foo2");
ASSERT_THAT(output, NotNull());
- EXPECT_THAT(*output, StrValueEq(std::string("Hello \"</string>' World").data()));
+ EXPECT_THAT(*output, StrValueEq(std::string("Hello World").data()));
- // Cdata blocks should not have their whitespace trimmed
+ // Cdata blocks should have their whitespace trimmed
input = R"(<string name="foo3"> <![CDATA[ text ]]> </string>)";
ASSERT_TRUE(TestParse(input));
output = test::GetValue<String>(&table_, "string/foo3");
ASSERT_THAT(output, NotNull());
- EXPECT_THAT(*output, StrValueEq(std::string(" text ").data()));
+ EXPECT_THAT(*output, StrValueEq(std::string("text").data()));
input = R"(<string name="foo4"> <![CDATA[]]> </string>)";
ASSERT_TRUE(TestParse(input));
@@ -1227,7 +1226,11 @@ TEST_F(ResourceParserTest, ParseCData) {
ASSERT_TRUE(TestParse(input));
output = test::GetValue<String>(&table_, "string/foo5");
ASSERT_THAT(output, NotNull());
- EXPECT_THAT(*output, StrValueEq(std::string(" ").data()));
+ EXPECT_THAT(*output, StrValueEq(std::string("").data()));
+
+ // Single quotes must still be escaped
+ input = R"(<string name="foo6"><![CDATA[some text and ' apostrophe]]></string>)";
+ ASSERT_FALSE(TestParse(input));
}
} // namespace aapt