diff options
author | Adam Lesinski <adamlesinski@google.com> | 2018-02-21 15:55:58 -0800 |
---|---|---|
committer | Adam Lesinski <adamlesinski@google.com> | 2018-02-27 11:39:10 -0800 |
commit | 2eed52ecc0c2fa3e96530e4b5556eaa82f7c2dfc (patch) | |
tree | 4e0a49770f684a2ca823d958c0f1a2b3adabcab9 /tools/aapt2/ResourceParser_test.cpp | |
parent | e1094a2e232277a719025aa5c97c492502c34f5b (diff) |
AAPT2: Fix styled string whitespace processing
Change styled string whitespace processing to be like AAPT's was.
Main changes:
- whitespace around tags is preserved.
- tags start exactly where they are supposed to, not off by one.
Bug: 72406283
Test: make aapt2_tests
Change-Id: I4d12728c493efd8c978e2e3d2718b56534ff52ef
Diffstat (limited to 'tools/aapt2/ResourceParser_test.cpp')
-rw-r--r-- | tools/aapt2/ResourceParser_test.cpp | 62 |
1 files changed, 45 insertions, 17 deletions
diff --git a/tools/aapt2/ResourceParser_test.cpp b/tools/aapt2/ResourceParser_test.cpp index 618c8ed4afd1..c98c0b95b69b 100644 --- a/tools/aapt2/ResourceParser_test.cpp +++ b/tools/aapt2/ResourceParser_test.cpp @@ -95,6 +95,16 @@ TEST_F(ResourceParserTest, ParseQuotedString) { ASSERT_THAT(str, NotNull()); EXPECT_THAT(*str, StrValueEq(" hey there ")); EXPECT_THAT(str->untranslatable_sections, IsEmpty()); + + ASSERT_TRUE(TestParse(R"(<string name="bar">Isn\'t it cool?</string>)")); + str = test::GetValue<String>(&table_, "string/bar"); + ASSERT_THAT(str, NotNull()); + EXPECT_THAT(*str, StrValueEq("Isn't it cool?")); + + ASSERT_TRUE(TestParse(R"(<string name="baz">"Isn't it cool?"</string>)")); + str = test::GetValue<String>(&table_, "string/baz"); + ASSERT_THAT(str, NotNull()); + EXPECT_THAT(*str, StrValueEq("Isn't it cool?")); } TEST_F(ResourceParserTest, ParseEscapedString) { @@ -126,16 +136,16 @@ TEST_F(ResourceParserTest, ParseStyledString) { StyledString* str = test::GetValue<StyledString>(&table_, "string/foo"); ASSERT_THAT(str, NotNull()); - EXPECT_THAT(str->value->value, Eq("This is my aunt\u2019s fickle string")); + EXPECT_THAT(str->value->value, StrEq("This is my aunt\u2019s fickle string")); EXPECT_THAT(str->value->spans, SizeIs(2)); EXPECT_THAT(str->untranslatable_sections, IsEmpty()); - EXPECT_THAT(*str->value->spans[0].name, Eq("b")); - EXPECT_THAT(str->value->spans[0].first_char, Eq(17u)); + EXPECT_THAT(*str->value->spans[0].name, StrEq("b")); + EXPECT_THAT(str->value->spans[0].first_char, Eq(18u)); EXPECT_THAT(str->value->spans[0].last_char, Eq(30u)); - EXPECT_THAT(*str->value->spans[1].name, Eq("small")); - EXPECT_THAT(str->value->spans[1].first_char, Eq(24u)); + EXPECT_THAT(*str->value->spans[1].name, StrEq("small")); + EXPECT_THAT(str->value->spans[1].first_char, Eq(25u)); EXPECT_THAT(str->value->spans[1].last_char, Eq(30u)); } @@ -144,7 +154,7 @@ TEST_F(ResourceParserTest, ParseStringWithWhitespace) { String* str = test::GetValue<String>(&table_, "string/foo"); ASSERT_THAT(str, NotNull()); - EXPECT_THAT(*str->value, Eq("This is what I think")); + EXPECT_THAT(*str->value, StrEq("This is what I think")); EXPECT_THAT(str->untranslatable_sections, IsEmpty()); ASSERT_TRUE(TestParse(R"(<string name="foo2">" This is what I think "</string>)")); @@ -154,6 +164,25 @@ TEST_F(ResourceParserTest, ParseStringWithWhitespace) { EXPECT_THAT(*str, StrValueEq(" This is what I think ")); } +TEST_F(ResourceParserTest, ParseStyledStringWithWhitespace) { + std::string input = R"(<string name="foo"> <b> My <i> favorite</i> string </b> </string>)"; + ASSERT_TRUE(TestParse(input)); + + StyledString* str = test::GetValue<StyledString>(&table_, "string/foo"); + ASSERT_THAT(str, NotNull()); + EXPECT_THAT(str->value->value, StrEq(" My favorite string ")); + EXPECT_THAT(str->untranslatable_sections, IsEmpty()); + + ASSERT_THAT(str->value->spans, SizeIs(2u)); + EXPECT_THAT(*str->value->spans[0].name, StrEq("b")); + EXPECT_THAT(str->value->spans[0].first_char, Eq(1u)); + EXPECT_THAT(str->value->spans[0].last_char, Eq(21u)); + + EXPECT_THAT(*str->value->spans[1].name, StrEq("i")); + EXPECT_THAT(str->value->spans[1].first_char, Eq(5u)); + EXPECT_THAT(str->value->spans[1].last_char, Eq(13u)); +} + TEST_F(ResourceParserTest, IgnoreXliffTagsOtherThanG) { std::string input = R"( <string name="foo" xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> @@ -182,12 +211,9 @@ TEST_F(ResourceParserTest, RecordUntranslateableXliffSectionsInString) { String* str = test::GetValue<String>(&table_, "string/foo"); ASSERT_THAT(str, NotNull()); EXPECT_THAT(*str, StrValueEq("There are %1$d apples")); - ASSERT_THAT(str->untranslatable_sections, SizeIs(1)); - // We expect indices and lengths that span to include the whitespace - // before %1$d. This is due to how the StringBuilder withholds whitespace unless - // needed (to deal with line breaks, etc.). - EXPECT_THAT(str->untranslatable_sections[0].start, Eq(9u)); + ASSERT_THAT(str->untranslatable_sections, SizeIs(1)); + EXPECT_THAT(str->untranslatable_sections[0].start, Eq(10u)); EXPECT_THAT(str->untranslatable_sections[0].end, Eq(14u)); } @@ -199,14 +225,16 @@ TEST_F(ResourceParserTest, RecordUntranslateableXliffSectionsInStyledString) { StyledString* str = test::GetValue<StyledString>(&table_, "string/foo"); ASSERT_THAT(str, NotNull()); - EXPECT_THAT(str->value->value, Eq("There are %1$d apples")); + EXPECT_THAT(str->value->value, Eq(" There are %1$d apples")); + ASSERT_THAT(str->untranslatable_sections, SizeIs(1)); + EXPECT_THAT(str->untranslatable_sections[0].start, Eq(11u)); + EXPECT_THAT(str->untranslatable_sections[0].end, Eq(15u)); - // We expect indices and lengths that span to include the whitespace - // before %1$d. This is due to how the StringBuilder withholds whitespace unless - // needed (to deal with line breaks, etc.). - EXPECT_THAT(str->untranslatable_sections[0].start, Eq(9u)); - EXPECT_THAT(str->untranslatable_sections[0].end, Eq(14u)); + ASSERT_THAT(str->value->spans, SizeIs(1u)); + EXPECT_THAT(*str->value->spans[0].name, StrEq("b")); + EXPECT_THAT(str->value->spans[0].first_char, Eq(11u)); + EXPECT_THAT(str->value->spans[0].last_char, Eq(14u)); } TEST_F(ResourceParserTest, ParseNull) { |