diff options
Diffstat (limited to 'tools/aapt2/ResourceParser_test.cpp')
-rw-r--r-- | tools/aapt2/ResourceParser_test.cpp | 25 |
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 |