| Index: third_party/WebKit/Source/core/editing/EditingUtilitiesTest.cpp
|
| diff --git a/third_party/WebKit/Source/core/editing/EditingUtilitiesTest.cpp b/third_party/WebKit/Source/core/editing/EditingUtilitiesTest.cpp
|
| index 43b15b2826ceeedf74ad2ff5011b1c8978d5a806..8de74316815e99b17f1f95166e135fb74f5c84b6 100644
|
| --- a/third_party/WebKit/Source/core/editing/EditingUtilitiesTest.cpp
|
| +++ b/third_party/WebKit/Source/core/editing/EditingUtilitiesTest.cpp
|
| @@ -204,42 +204,42 @@ TEST_F(EditingUtilitiesTest, uncheckedPreviousNextOffset_FirstLetter)
|
| {
|
| setBodyContent("<style>p::first-letter {color:red;}</style><p id='target'>abc</p>");
|
| Node* node = document().getElementById("target")->firstChild();
|
| - EXPECT_EQ(2, uncheckedPreviousOffset(node, 3));
|
| - EXPECT_EQ(1, uncheckedPreviousOffset(node, 2));
|
| - EXPECT_EQ(0, uncheckedPreviousOffset(node, 1));
|
| - EXPECT_EQ(1, uncheckedNextOffset(node, 0));
|
| - EXPECT_EQ(2, uncheckedNextOffset(node, 1));
|
| - EXPECT_EQ(3, uncheckedNextOffset(node, 2));
|
| + EXPECT_EQ(2, previousGraphemeBoundaryOf(node, 3));
|
| + EXPECT_EQ(1, previousGraphemeBoundaryOf(node, 2));
|
| + EXPECT_EQ(0, previousGraphemeBoundaryOf(node, 1));
|
| + EXPECT_EQ(1, nextGraphemeBoundaryOf(node, 0));
|
| + EXPECT_EQ(2, nextGraphemeBoundaryOf(node, 1));
|
| + EXPECT_EQ(3, nextGraphemeBoundaryOf(node, 2));
|
|
|
| updateLayoutAndStyleForPainting();
|
| EXPECT_NE(nullptr, node->layoutObject());
|
| - EXPECT_EQ(2, uncheckedPreviousOffset(node, 3));
|
| - EXPECT_EQ(1, uncheckedPreviousOffset(node, 2));
|
| - EXPECT_EQ(0, uncheckedPreviousOffset(node, 1));
|
| - EXPECT_EQ(1, uncheckedNextOffset(node, 0));
|
| - EXPECT_EQ(2, uncheckedNextOffset(node, 1));
|
| - EXPECT_EQ(3, uncheckedNextOffset(node, 2));
|
| + EXPECT_EQ(2, previousGraphemeBoundaryOf(node, 3));
|
| + EXPECT_EQ(1, previousGraphemeBoundaryOf(node, 2));
|
| + EXPECT_EQ(0, previousGraphemeBoundaryOf(node, 1));
|
| + EXPECT_EQ(1, nextGraphemeBoundaryOf(node, 0));
|
| + EXPECT_EQ(2, nextGraphemeBoundaryOf(node, 1));
|
| + EXPECT_EQ(3, nextGraphemeBoundaryOf(node, 2));
|
| }
|
|
|
| TEST_F(EditingUtilitiesTest, uncheckedPreviousNextOffset_textTransform)
|
| {
|
| setBodyContent("<style>p {text-transform:uppercase}</style><p id='target'>abc</p>");
|
| Node* node = document().getElementById("target")->firstChild();
|
| - EXPECT_EQ(2, uncheckedPreviousOffset(node, 3));
|
| - EXPECT_EQ(1, uncheckedPreviousOffset(node, 2));
|
| - EXPECT_EQ(0, uncheckedPreviousOffset(node, 1));
|
| - EXPECT_EQ(1, uncheckedNextOffset(node, 0));
|
| - EXPECT_EQ(2, uncheckedNextOffset(node, 1));
|
| - EXPECT_EQ(3, uncheckedNextOffset(node, 2));
|
| + EXPECT_EQ(2, previousGraphemeBoundaryOf(node, 3));
|
| + EXPECT_EQ(1, previousGraphemeBoundaryOf(node, 2));
|
| + EXPECT_EQ(0, previousGraphemeBoundaryOf(node, 1));
|
| + EXPECT_EQ(1, nextGraphemeBoundaryOf(node, 0));
|
| + EXPECT_EQ(2, nextGraphemeBoundaryOf(node, 1));
|
| + EXPECT_EQ(3, nextGraphemeBoundaryOf(node, 2));
|
|
|
| updateLayoutAndStyleForPainting();
|
| EXPECT_NE(nullptr, node->layoutObject());
|
| - EXPECT_EQ(2, uncheckedPreviousOffset(node, 3));
|
| - EXPECT_EQ(1, uncheckedPreviousOffset(node, 2));
|
| - EXPECT_EQ(0, uncheckedPreviousOffset(node, 1));
|
| - EXPECT_EQ(1, uncheckedNextOffset(node, 0));
|
| - EXPECT_EQ(2, uncheckedNextOffset(node, 1));
|
| - EXPECT_EQ(3, uncheckedNextOffset(node, 2));
|
| + EXPECT_EQ(2, previousGraphemeBoundaryOf(node, 3));
|
| + EXPECT_EQ(1, previousGraphemeBoundaryOf(node, 2));
|
| + EXPECT_EQ(0, previousGraphemeBoundaryOf(node, 1));
|
| + EXPECT_EQ(1, nextGraphemeBoundaryOf(node, 0));
|
| + EXPECT_EQ(2, nextGraphemeBoundaryOf(node, 1));
|
| + EXPECT_EQ(3, nextGraphemeBoundaryOf(node, 2));
|
| }
|
|
|
| // Following breaking rules come from http://unicode.org/reports/tr29/
|
| @@ -250,50 +250,50 @@ TEST_F(EditingUtilitiesTest, uncheckedPreviousNextOffset)
|
| // GB1: Break at the start of text.
|
| setBodyContent("<p id='target'>a</p>");
|
| Node* node = document().getElementById("target")->firstChild();
|
| - EXPECT_EQ(0, uncheckedPreviousOffset(node, 1));
|
| + EXPECT_EQ(0, previousGraphemeBoundaryOf(node, 1));
|
|
|
| // GB2: Break at the end of text.
|
| setBodyContent("<p id='target'>a</p>");
|
| node = document().getElementById("target")->firstChild();
|
| - EXPECT_EQ(1, uncheckedNextOffset(node, 0));
|
| + EXPECT_EQ(1, nextGraphemeBoundaryOf(node, 0));
|
|
|
| // GB3: Do not break between CR and LF.
|
| setBodyContent("<p id='target'>a
b</p>");
|
| node = document().getElementById("target")->firstChild();
|
| - EXPECT_EQ(3, uncheckedPreviousOffset(node, 4));
|
| + EXPECT_EQ(3, previousGraphemeBoundaryOf(node, 4));
|
| // TODO(nona) : Enable following expectation.
|
| - // EXPECT_EQ(1, uncheckedPreviousOffset(node, 3));
|
| - EXPECT_EQ(0, uncheckedPreviousOffset(node, 1));
|
| - EXPECT_EQ(1, uncheckedNextOffset(node, 0));
|
| + // EXPECT_EQ(1, previousGraphemeBoundaryOf(node, 3));
|
| + EXPECT_EQ(0, previousGraphemeBoundaryOf(node, 1));
|
| + EXPECT_EQ(1, nextGraphemeBoundaryOf(node, 0));
|
| // TODO(nona) : Enable following expectation.
|
| - // EXPECT_EQ(3, uncheckedNextOffset(node, 1));
|
| - EXPECT_EQ(4, uncheckedNextOffset(node, 3));
|
| + // EXPECT_EQ(3, nextGraphemeBoundaryOf(node, 1));
|
| + EXPECT_EQ(4, nextGraphemeBoundaryOf(node, 3));
|
|
|
| // GB4,GB5: Break before and after CR/LF/Control.
|
| setBodyContent("<p id='target'>a
b</p>"); // CR
|
| node = document().getElementById("target")->firstChild();
|
| - EXPECT_EQ(2, uncheckedPreviousOffset(node, 3));
|
| - EXPECT_EQ(1, uncheckedPreviousOffset(node, 2));
|
| - EXPECT_EQ(0, uncheckedPreviousOffset(node, 1));
|
| - EXPECT_EQ(1, uncheckedNextOffset(node, 0));
|
| - EXPECT_EQ(2, uncheckedNextOffset(node, 1));
|
| - EXPECT_EQ(3, uncheckedNextOffset(node, 2));
|
| + EXPECT_EQ(2, previousGraphemeBoundaryOf(node, 3));
|
| + EXPECT_EQ(1, previousGraphemeBoundaryOf(node, 2));
|
| + EXPECT_EQ(0, previousGraphemeBoundaryOf(node, 1));
|
| + EXPECT_EQ(1, nextGraphemeBoundaryOf(node, 0));
|
| + EXPECT_EQ(2, nextGraphemeBoundaryOf(node, 1));
|
| + EXPECT_EQ(3, nextGraphemeBoundaryOf(node, 2));
|
| setBodyContent("<p id='target'>a
b</p>"); // LF
|
| node = document().getElementById("target")->firstChild();
|
| - EXPECT_EQ(2, uncheckedPreviousOffset(node, 3));
|
| - EXPECT_EQ(1, uncheckedPreviousOffset(node, 2));
|
| - EXPECT_EQ(0, uncheckedPreviousOffset(node, 1));
|
| - EXPECT_EQ(1, uncheckedNextOffset(node, 0));
|
| - EXPECT_EQ(2, uncheckedNextOffset(node, 1));
|
| - EXPECT_EQ(3, uncheckedNextOffset(node, 2));
|
| + EXPECT_EQ(2, previousGraphemeBoundaryOf(node, 3));
|
| + EXPECT_EQ(1, previousGraphemeBoundaryOf(node, 2));
|
| + EXPECT_EQ(0, previousGraphemeBoundaryOf(node, 1));
|
| + EXPECT_EQ(1, nextGraphemeBoundaryOf(node, 0));
|
| + EXPECT_EQ(2, nextGraphemeBoundaryOf(node, 1));
|
| + EXPECT_EQ(3, nextGraphemeBoundaryOf(node, 2));
|
| setBodyContent("<p id='target'>a­b</p>"); // U+00AD(SOFT HYPHEN) has Control property.
|
| node = document().getElementById("target")->firstChild();
|
| - EXPECT_EQ(2, uncheckedPreviousOffset(node, 3));
|
| - EXPECT_EQ(1, uncheckedPreviousOffset(node, 2));
|
| - EXPECT_EQ(0, uncheckedPreviousOffset(node, 1));
|
| - EXPECT_EQ(1, uncheckedNextOffset(node, 0));
|
| - EXPECT_EQ(2, uncheckedNextOffset(node, 1));
|
| - EXPECT_EQ(3, uncheckedNextOffset(node, 2));
|
| + EXPECT_EQ(2, previousGraphemeBoundaryOf(node, 3));
|
| + EXPECT_EQ(1, previousGraphemeBoundaryOf(node, 2));
|
| + EXPECT_EQ(0, previousGraphemeBoundaryOf(node, 1));
|
| + EXPECT_EQ(1, nextGraphemeBoundaryOf(node, 0));
|
| + EXPECT_EQ(2, nextGraphemeBoundaryOf(node, 1));
|
| + EXPECT_EQ(3, nextGraphemeBoundaryOf(node, 2));
|
|
|
| // GB6: Don't break Hangul sequence.
|
| const std::string L = "ᄀ"; // U+1100 (HANGUL CHOSEONG KIYEOK) has L property.
|
| @@ -303,88 +303,88 @@ TEST_F(EditingUtilitiesTest, uncheckedPreviousNextOffset)
|
| const std::string T = "ᆨ"; // U+11A8 (HANGUL JONGSEONG KIYEOK) has T property.
|
| setBodyContent("<p id='target'>a" + L + L + "b</p>"); // L x L
|
| node = document().getElementById("target")->firstChild();
|
| - EXPECT_EQ(3, uncheckedPreviousOffset(node, 4));
|
| - EXPECT_EQ(1, uncheckedPreviousOffset(node, 3));
|
| - EXPECT_EQ(0, uncheckedPreviousOffset(node, 1));
|
| - EXPECT_EQ(1, uncheckedNextOffset(node, 0));
|
| - EXPECT_EQ(3, uncheckedNextOffset(node, 1));
|
| - EXPECT_EQ(4, uncheckedNextOffset(node, 3));
|
| + EXPECT_EQ(3, previousGraphemeBoundaryOf(node, 4));
|
| + EXPECT_EQ(1, previousGraphemeBoundaryOf(node, 3));
|
| + EXPECT_EQ(0, previousGraphemeBoundaryOf(node, 1));
|
| + EXPECT_EQ(1, nextGraphemeBoundaryOf(node, 0));
|
| + EXPECT_EQ(3, nextGraphemeBoundaryOf(node, 1));
|
| + EXPECT_EQ(4, nextGraphemeBoundaryOf(node, 3));
|
| setBodyContent("<p id='target'>a" + L + V +"b</p>"); // L x V
|
| node = document().getElementById("target")->firstChild();
|
| - EXPECT_EQ(3, uncheckedPreviousOffset(node, 4));
|
| - EXPECT_EQ(1, uncheckedPreviousOffset(node, 3));
|
| - EXPECT_EQ(0, uncheckedPreviousOffset(node, 1));
|
| - EXPECT_EQ(1, uncheckedNextOffset(node, 0));
|
| - EXPECT_EQ(3, uncheckedNextOffset(node, 1));
|
| - EXPECT_EQ(4, uncheckedNextOffset(node, 3));
|
| + EXPECT_EQ(3, previousGraphemeBoundaryOf(node, 4));
|
| + EXPECT_EQ(1, previousGraphemeBoundaryOf(node, 3));
|
| + EXPECT_EQ(0, previousGraphemeBoundaryOf(node, 1));
|
| + EXPECT_EQ(1, nextGraphemeBoundaryOf(node, 0));
|
| + EXPECT_EQ(3, nextGraphemeBoundaryOf(node, 1));
|
| + EXPECT_EQ(4, nextGraphemeBoundaryOf(node, 3));
|
| setBodyContent("<p id='target'>a" + L + LV + "b</p>"); // L x LV
|
| node = document().getElementById("target")->firstChild();
|
| - EXPECT_EQ(3, uncheckedPreviousOffset(node, 4));
|
| - EXPECT_EQ(1, uncheckedPreviousOffset(node, 3));
|
| - EXPECT_EQ(0, uncheckedPreviousOffset(node, 1));
|
| - EXPECT_EQ(1, uncheckedNextOffset(node, 0));
|
| - EXPECT_EQ(3, uncheckedNextOffset(node, 1));
|
| - EXPECT_EQ(4, uncheckedNextOffset(node, 3));
|
| + EXPECT_EQ(3, previousGraphemeBoundaryOf(node, 4));
|
| + EXPECT_EQ(1, previousGraphemeBoundaryOf(node, 3));
|
| + EXPECT_EQ(0, previousGraphemeBoundaryOf(node, 1));
|
| + EXPECT_EQ(1, nextGraphemeBoundaryOf(node, 0));
|
| + EXPECT_EQ(3, nextGraphemeBoundaryOf(node, 1));
|
| + EXPECT_EQ(4, nextGraphemeBoundaryOf(node, 3));
|
| setBodyContent("<p id='target'>a" + L + LVT + "b</p>"); // L x LVT
|
| node = document().getElementById("target")->firstChild();
|
| - EXPECT_EQ(3, uncheckedPreviousOffset(node, 4));
|
| - EXPECT_EQ(1, uncheckedPreviousOffset(node, 3));
|
| - EXPECT_EQ(0, uncheckedPreviousOffset(node, 1));
|
| - EXPECT_EQ(1, uncheckedNextOffset(node, 0));
|
| - EXPECT_EQ(3, uncheckedNextOffset(node, 1));
|
| - EXPECT_EQ(4, uncheckedNextOffset(node, 3));
|
| + EXPECT_EQ(3, previousGraphemeBoundaryOf(node, 4));
|
| + EXPECT_EQ(1, previousGraphemeBoundaryOf(node, 3));
|
| + EXPECT_EQ(0, previousGraphemeBoundaryOf(node, 1));
|
| + EXPECT_EQ(1, nextGraphemeBoundaryOf(node, 0));
|
| + EXPECT_EQ(3, nextGraphemeBoundaryOf(node, 1));
|
| + EXPECT_EQ(4, nextGraphemeBoundaryOf(node, 3));
|
|
|
| // GB7: Don't break Hangul sequence.
|
| setBodyContent("<p id='target'>a" + LV + V + "b</p>"); // LV x V
|
| node = document().getElementById("target")->firstChild();
|
| - EXPECT_EQ(3, uncheckedPreviousOffset(node, 4));
|
| - EXPECT_EQ(1, uncheckedPreviousOffset(node, 3));
|
| - EXPECT_EQ(0, uncheckedPreviousOffset(node, 1));
|
| - EXPECT_EQ(1, uncheckedNextOffset(node, 0));
|
| - EXPECT_EQ(3, uncheckedNextOffset(node, 1));
|
| - EXPECT_EQ(4, uncheckedNextOffset(node, 3));
|
| + EXPECT_EQ(3, previousGraphemeBoundaryOf(node, 4));
|
| + EXPECT_EQ(1, previousGraphemeBoundaryOf(node, 3));
|
| + EXPECT_EQ(0, previousGraphemeBoundaryOf(node, 1));
|
| + EXPECT_EQ(1, nextGraphemeBoundaryOf(node, 0));
|
| + EXPECT_EQ(3, nextGraphemeBoundaryOf(node, 1));
|
| + EXPECT_EQ(4, nextGraphemeBoundaryOf(node, 3));
|
| setBodyContent("<p id='target'>a" + LV + T + "b</p>"); // LV x T
|
| node = document().getElementById("target")->firstChild();
|
| - EXPECT_EQ(3, uncheckedPreviousOffset(node, 4));
|
| - EXPECT_EQ(1, uncheckedPreviousOffset(node, 3));
|
| - EXPECT_EQ(0, uncheckedPreviousOffset(node, 1));
|
| - EXPECT_EQ(1, uncheckedNextOffset(node, 0));
|
| - EXPECT_EQ(3, uncheckedNextOffset(node, 1));
|
| - EXPECT_EQ(4, uncheckedNextOffset(node, 3));
|
| + EXPECT_EQ(3, previousGraphemeBoundaryOf(node, 4));
|
| + EXPECT_EQ(1, previousGraphemeBoundaryOf(node, 3));
|
| + EXPECT_EQ(0, previousGraphemeBoundaryOf(node, 1));
|
| + EXPECT_EQ(1, nextGraphemeBoundaryOf(node, 0));
|
| + EXPECT_EQ(3, nextGraphemeBoundaryOf(node, 1));
|
| + EXPECT_EQ(4, nextGraphemeBoundaryOf(node, 3));
|
| setBodyContent("<p id='target'>a" + V + V + "b</p>"); // V x V
|
| node = document().getElementById("target")->firstChild();
|
| - EXPECT_EQ(3, uncheckedPreviousOffset(node, 4));
|
| - EXPECT_EQ(1, uncheckedPreviousOffset(node, 3));
|
| - EXPECT_EQ(0, uncheckedPreviousOffset(node, 1));
|
| - EXPECT_EQ(1, uncheckedNextOffset(node, 0));
|
| - EXPECT_EQ(3, uncheckedNextOffset(node, 1));
|
| - EXPECT_EQ(4, uncheckedNextOffset(node, 3));
|
| + EXPECT_EQ(3, previousGraphemeBoundaryOf(node, 4));
|
| + EXPECT_EQ(1, previousGraphemeBoundaryOf(node, 3));
|
| + EXPECT_EQ(0, previousGraphemeBoundaryOf(node, 1));
|
| + EXPECT_EQ(1, nextGraphemeBoundaryOf(node, 0));
|
| + EXPECT_EQ(3, nextGraphemeBoundaryOf(node, 1));
|
| + EXPECT_EQ(4, nextGraphemeBoundaryOf(node, 3));
|
| setBodyContent("<p id='target'>a" + V + T + "b</p>"); // V x T
|
| node = document().getElementById("target")->firstChild();
|
| - EXPECT_EQ(3, uncheckedPreviousOffset(node, 4));
|
| - EXPECT_EQ(1, uncheckedPreviousOffset(node, 3));
|
| - EXPECT_EQ(0, uncheckedPreviousOffset(node, 1));
|
| - EXPECT_EQ(1, uncheckedNextOffset(node, 0));
|
| - EXPECT_EQ(3, uncheckedNextOffset(node, 1));
|
| - EXPECT_EQ(4, uncheckedNextOffset(node, 3));
|
| + EXPECT_EQ(3, previousGraphemeBoundaryOf(node, 4));
|
| + EXPECT_EQ(1, previousGraphemeBoundaryOf(node, 3));
|
| + EXPECT_EQ(0, previousGraphemeBoundaryOf(node, 1));
|
| + EXPECT_EQ(1, nextGraphemeBoundaryOf(node, 0));
|
| + EXPECT_EQ(3, nextGraphemeBoundaryOf(node, 1));
|
| + EXPECT_EQ(4, nextGraphemeBoundaryOf(node, 3));
|
|
|
| // GB8: Don't break Hangul sequence.
|
| setBodyContent("<p id='target'>a" + LVT + T + "b</p>"); // LVT x T
|
| node = document().getElementById("target")->firstChild();
|
| - EXPECT_EQ(3, uncheckedPreviousOffset(node, 4));
|
| - EXPECT_EQ(1, uncheckedPreviousOffset(node, 3));
|
| - EXPECT_EQ(0, uncheckedPreviousOffset(node, 1));
|
| - EXPECT_EQ(1, uncheckedNextOffset(node, 0));
|
| - EXPECT_EQ(3, uncheckedNextOffset(node, 1));
|
| - EXPECT_EQ(4, uncheckedNextOffset(node, 3));
|
| + EXPECT_EQ(3, previousGraphemeBoundaryOf(node, 4));
|
| + EXPECT_EQ(1, previousGraphemeBoundaryOf(node, 3));
|
| + EXPECT_EQ(0, previousGraphemeBoundaryOf(node, 1));
|
| + EXPECT_EQ(1, nextGraphemeBoundaryOf(node, 0));
|
| + EXPECT_EQ(3, nextGraphemeBoundaryOf(node, 1));
|
| + EXPECT_EQ(4, nextGraphemeBoundaryOf(node, 3));
|
| setBodyContent("<p id='target'>a" + T + T + "b</p>"); // T x T
|
| node = document().getElementById("target")->firstChild();
|
| - EXPECT_EQ(3, uncheckedPreviousOffset(node, 4));
|
| - EXPECT_EQ(1, uncheckedPreviousOffset(node, 3));
|
| - EXPECT_EQ(0, uncheckedPreviousOffset(node, 1));
|
| - EXPECT_EQ(1, uncheckedNextOffset(node, 0));
|
| - EXPECT_EQ(3, uncheckedNextOffset(node, 1));
|
| - EXPECT_EQ(4, uncheckedNextOffset(node, 3));
|
| + EXPECT_EQ(3, previousGraphemeBoundaryOf(node, 4));
|
| + EXPECT_EQ(1, previousGraphemeBoundaryOf(node, 3));
|
| + EXPECT_EQ(0, previousGraphemeBoundaryOf(node, 1));
|
| + EXPECT_EQ(1, nextGraphemeBoundaryOf(node, 0));
|
| + EXPECT_EQ(3, nextGraphemeBoundaryOf(node, 1));
|
| + EXPECT_EQ(4, nextGraphemeBoundaryOf(node, 3));
|
|
|
| // Break other Hangul syllable combination. See test of GB999.
|
|
|
| @@ -394,101 +394,101 @@ TEST_F(EditingUtilitiesTest, uncheckedPreviousNextOffset)
|
| const std::string flag = "🇺🇸"; // US flag.
|
| setBodyContent("<p id='target'>" + flag + flag + flag + flag + "a</p>"); // ^(RI RI)* RI x RI
|
| node = document().getElementById("target")->firstChild();
|
| - EXPECT_EQ(16, uncheckedPreviousOffset(node, 17));
|
| - EXPECT_EQ(12, uncheckedPreviousOffset(node, 16));
|
| + EXPECT_EQ(16, previousGraphemeBoundaryOf(node, 17));
|
| + EXPECT_EQ(12, previousGraphemeBoundaryOf(node, 16));
|
| // TODO(nona): Enable following expectations.
|
| - // EXPECT_EQ(8, uncheckedPreviousOffset(node, 12));
|
| - // EXPECT_EQ(4, uncheckedPreviousOffset(node, 8));
|
| - // EXPECT_EQ(0, uncheckedPreviousOffset(node, 4));
|
| - // EXPECT_EQ(4, uncheckedNextOffset(node, 0));
|
| - // EXPECT_EQ(8, uncheckedNextOffset(node, 4));
|
| - EXPECT_EQ(12, uncheckedNextOffset(node, 8));
|
| - EXPECT_EQ(16, uncheckedNextOffset(node, 12));
|
| - EXPECT_EQ(17, uncheckedNextOffset(node, 16));
|
| + // EXPECT_EQ(8, previousGraphemeBoundaryOf(node, 12));
|
| + // EXPECT_EQ(4, previousGraphemeBoundaryOf(node, 8));
|
| + // EXPECT_EQ(0, previousGraphemeBoundaryOf(node, 4));
|
| + // EXPECT_EQ(4, nextGraphemeBoundaryOf(node, 0));
|
| + // EXPECT_EQ(8, nextGraphemeBoundaryOf(node, 4));
|
| + EXPECT_EQ(12, nextGraphemeBoundaryOf(node, 8));
|
| + EXPECT_EQ(16, nextGraphemeBoundaryOf(node, 12));
|
| + EXPECT_EQ(17, nextGraphemeBoundaryOf(node, 16));
|
|
|
| // GB8c: Don't break between regional indicator if there are even numbered regional indicator symbols before.
|
| setBodyContent("<p id='target'>a" + flag + flag + flag + flag + "b</p>"); // [^RI] (RI RI)* RI x RI
|
| node = document().getElementById("target")->firstChild();
|
| - EXPECT_EQ(17, uncheckedPreviousOffset(node, 18));
|
| - EXPECT_EQ(13, uncheckedPreviousOffset(node, 17));
|
| + EXPECT_EQ(17, previousGraphemeBoundaryOf(node, 18));
|
| + EXPECT_EQ(13, previousGraphemeBoundaryOf(node, 17));
|
| // TODO(nona): Enable following expectations.
|
| - // EXPECT_EQ(9, uncheckedPreviousOffset(node, 13));
|
| - // EXPECT_EQ(5, uncheckedPreviousOffset(node, 9));
|
| - EXPECT_EQ(1, uncheckedPreviousOffset(node, 5));
|
| - EXPECT_EQ(0, uncheckedPreviousOffset(node, 1));
|
| - EXPECT_EQ(1, uncheckedNextOffset(node, 0));
|
| + // EXPECT_EQ(9, previousGraphemeBoundaryOf(node, 13));
|
| + // EXPECT_EQ(5, previousGraphemeBoundaryOf(node, 9));
|
| + EXPECT_EQ(1, previousGraphemeBoundaryOf(node, 5));
|
| + EXPECT_EQ(0, previousGraphemeBoundaryOf(node, 1));
|
| + EXPECT_EQ(1, nextGraphemeBoundaryOf(node, 0));
|
| // TODO(nona): Enable following expectations.
|
| - // EXPECT_EQ(5, uncheckedNextOffset(node, 1));
|
| - // EXPECT_EQ(9, uncheckedNextOffset(node, 5));
|
| - EXPECT_EQ(13, uncheckedNextOffset(node, 9));
|
| - EXPECT_EQ(17, uncheckedNextOffset(node, 13));
|
| - EXPECT_EQ(18, uncheckedNextOffset(node, 17));
|
| + // EXPECT_EQ(5, nextGraphemeBoundaryOf(node, 1));
|
| + // EXPECT_EQ(9, nextGraphemeBoundaryOf(node, 5));
|
| + EXPECT_EQ(13, nextGraphemeBoundaryOf(node, 9));
|
| + EXPECT_EQ(17, nextGraphemeBoundaryOf(node, 13));
|
| + EXPECT_EQ(18, nextGraphemeBoundaryOf(node, 17));
|
|
|
| // GB8c: Break if there is an odd number of regional indicator symbols before.
|
| setBodyContent("<p id='target'>a" + flag + flag + flag + flag + "🇸b</p>"); // RI รท RI
|
| node = document().getElementById("target")->firstChild();
|
| - EXPECT_EQ(19, uncheckedPreviousOffset(node, 20));
|
| + EXPECT_EQ(19, previousGraphemeBoundaryOf(node, 20));
|
| // TODO(nona): Enable following expectations.
|
| - // EXPECT_EQ(17, uncheckedPreviousOffset(node, 19));
|
| - // EXPECT_EQ(13, uncheckedPreviousOffset(node, 17));
|
| - // EXPECT_EQ(9, uncheckedPreviousOffset(node, 13));
|
| - // EXPECT_EQ(5, uncheckedPreviousOffset(node, 9));
|
| - EXPECT_EQ(1, uncheckedPreviousOffset(node, 5));
|
| - EXPECT_EQ(0, uncheckedPreviousOffset(node, 1));
|
| - EXPECT_EQ(1, uncheckedNextOffset(node, 0));
|
| + // EXPECT_EQ(17, previousGraphemeBoundaryOf(node, 19));
|
| + // EXPECT_EQ(13, previousGraphemeBoundaryOf(node, 17));
|
| + // EXPECT_EQ(9, previousGraphemeBoundaryOf(node, 13));
|
| + // EXPECT_EQ(5, previousGraphemeBoundaryOf(node, 9));
|
| + EXPECT_EQ(1, previousGraphemeBoundaryOf(node, 5));
|
| + EXPECT_EQ(0, previousGraphemeBoundaryOf(node, 1));
|
| + EXPECT_EQ(1, nextGraphemeBoundaryOf(node, 0));
|
| // TODO(nona): Enable following expectations.
|
| - // EXPECT_EQ(5, uncheckedNextOffset(node, 1));
|
| - // EXPECT_EQ(9, uncheckedNextOffset(node, 5));
|
| - // EXPECT_EQ(13, uncheckedNextOffset(node, 9));
|
| - EXPECT_EQ(17, uncheckedNextOffset(node, 13));
|
| - EXPECT_EQ(19, uncheckedNextOffset(node, 17));
|
| - EXPECT_EQ(20, uncheckedNextOffset(node, 19));
|
| + // EXPECT_EQ(5, nextGraphemeBoundaryOf(node, 1));
|
| + // EXPECT_EQ(9, nextGraphemeBoundaryOf(node, 5));
|
| + // EXPECT_EQ(13, nextGraphemeBoundaryOf(node, 9));
|
| + EXPECT_EQ(17, nextGraphemeBoundaryOf(node, 13));
|
| + EXPECT_EQ(19, nextGraphemeBoundaryOf(node, 17));
|
| + EXPECT_EQ(20, nextGraphemeBoundaryOf(node, 19));
|
|
|
| // GB9: Do not break before extending characters or ZWJ.
|
| // U+0300(COMBINING GRAVE ACCENT) has Extend property.
|
| setBodyContent("<p id='target'>àb</p>"); // x Extend
|
| node = document().getElementById("target")->firstChild();
|
| - EXPECT_EQ(2, uncheckedPreviousOffset(node, 3));
|
| - EXPECT_EQ(0, uncheckedPreviousOffset(node, 2));
|
| - EXPECT_EQ(2, uncheckedNextOffset(node, 0));
|
| - EXPECT_EQ(3, uncheckedNextOffset(node, 2));
|
| + EXPECT_EQ(2, previousGraphemeBoundaryOf(node, 3));
|
| + EXPECT_EQ(0, previousGraphemeBoundaryOf(node, 2));
|
| + EXPECT_EQ(2, nextGraphemeBoundaryOf(node, 0));
|
| + EXPECT_EQ(3, nextGraphemeBoundaryOf(node, 2));
|
| // U+200D is ZERO WIDTH JOINER.
|
| setBodyContent("<p id='target'>a‍b</p>"); // x ZWJ
|
| node = document().getElementById("target")->firstChild();
|
| - EXPECT_EQ(2, uncheckedPreviousOffset(node, 3));
|
| - EXPECT_EQ(0, uncheckedPreviousOffset(node, 2));
|
| - EXPECT_EQ(2, uncheckedNextOffset(node, 0));
|
| - EXPECT_EQ(3, uncheckedNextOffset(node, 2));
|
| + EXPECT_EQ(2, previousGraphemeBoundaryOf(node, 3));
|
| + EXPECT_EQ(0, previousGraphemeBoundaryOf(node, 2));
|
| + EXPECT_EQ(2, nextGraphemeBoundaryOf(node, 0));
|
| + EXPECT_EQ(3, nextGraphemeBoundaryOf(node, 2));
|
|
|
| // GB9a: Do not break before SpacingMarks.
|
| // U+0903(DEVANAGARI SIGN VISARGA) has SpacingMark property.
|
| setBodyContent("<p id='target'>aःb</p>"); // x SpacingMark
|
| node = document().getElementById("target")->firstChild();
|
| - EXPECT_EQ(2, uncheckedPreviousOffset(node, 3));
|
| - EXPECT_EQ(0, uncheckedPreviousOffset(node, 2));
|
| - EXPECT_EQ(2, uncheckedNextOffset(node, 0));
|
| - EXPECT_EQ(3, uncheckedNextOffset(node, 2));
|
| + EXPECT_EQ(2, previousGraphemeBoundaryOf(node, 3));
|
| + EXPECT_EQ(0, previousGraphemeBoundaryOf(node, 2));
|
| + EXPECT_EQ(2, nextGraphemeBoundaryOf(node, 0));
|
| + EXPECT_EQ(3, nextGraphemeBoundaryOf(node, 2));
|
|
|
| // GB9b: Do not break after Prepend but Blink breaks after Prepend char to address Bug 24342.
|
| // U+0600(ARABIC NUMBER SIGN) has Prepend property.
|
| setBodyContent("<p id='target'>a؀b</p>"); // Prepend x
|
| node = document().getElementById("target")->firstChild();
|
| - EXPECT_EQ(2, uncheckedPreviousOffset(node, 3));
|
| - EXPECT_EQ(1, uncheckedPreviousOffset(node, 2));
|
| - EXPECT_EQ(0, uncheckedPreviousOffset(node, 1));
|
| - EXPECT_EQ(1, uncheckedNextOffset(node, 0));
|
| - EXPECT_EQ(2, uncheckedNextOffset(node, 1));
|
| - EXPECT_EQ(3, uncheckedNextOffset(node, 2));
|
| + EXPECT_EQ(2, previousGraphemeBoundaryOf(node, 3));
|
| + EXPECT_EQ(1, previousGraphemeBoundaryOf(node, 2));
|
| + EXPECT_EQ(0, previousGraphemeBoundaryOf(node, 1));
|
| + EXPECT_EQ(1, nextGraphemeBoundaryOf(node, 0));
|
| + EXPECT_EQ(2, nextGraphemeBoundaryOf(node, 1));
|
| + EXPECT_EQ(3, nextGraphemeBoundaryOf(node, 2));
|
|
|
| // Blink customization: Don't break before Japanese half-width katakana voiced marks.
|
| setBodyContent("<p id='target'>aガb</p>");
|
| node = document().getElementById("target")->firstChild();
|
| - EXPECT_EQ(3, uncheckedPreviousOffset(node, 4));
|
| - EXPECT_EQ(1, uncheckedPreviousOffset(node, 3));
|
| - EXPECT_EQ(0, uncheckedPreviousOffset(node, 1));
|
| - EXPECT_EQ(1, uncheckedNextOffset(node, 0));
|
| - EXPECT_EQ(3, uncheckedNextOffset(node, 1));
|
| - EXPECT_EQ(4, uncheckedNextOffset(node, 3));
|
| + EXPECT_EQ(3, previousGraphemeBoundaryOf(node, 4));
|
| + EXPECT_EQ(1, previousGraphemeBoundaryOf(node, 3));
|
| + EXPECT_EQ(0, previousGraphemeBoundaryOf(node, 1));
|
| + EXPECT_EQ(1, nextGraphemeBoundaryOf(node, 0));
|
| + EXPECT_EQ(3, nextGraphemeBoundaryOf(node, 1));
|
| + EXPECT_EQ(4, nextGraphemeBoundaryOf(node, 3));
|
|
|
| // Additional rule for Virama: Do not break after Virama except for Tamil.
|
| // See http://www.unicode.org/Public/9.0.0/ucd/IndicSyllabicCategory-9.0.0d2.txt
|
| @@ -497,25 +497,25 @@ TEST_F(EditingUtilitiesTest, uncheckedPreviousNextOffset)
|
| // U+0915 is DEVANAGARI LETTER KA.
|
| setBodyContent("<p id='target'>aअ्कb</p>");
|
| node = document().getElementById("target")->firstChild();
|
| - EXPECT_EQ(4, uncheckedPreviousOffset(node, 5));
|
| - EXPECT_EQ(1, uncheckedPreviousOffset(node, 4));
|
| - EXPECT_EQ(0, uncheckedPreviousOffset(node, 1));
|
| - EXPECT_EQ(1, uncheckedNextOffset(node, 0));
|
| - EXPECT_EQ(4, uncheckedNextOffset(node, 1));
|
| - EXPECT_EQ(5, uncheckedNextOffset(node, 4));
|
| + EXPECT_EQ(4, previousGraphemeBoundaryOf(node, 5));
|
| + EXPECT_EQ(1, previousGraphemeBoundaryOf(node, 4));
|
| + EXPECT_EQ(0, previousGraphemeBoundaryOf(node, 1));
|
| + EXPECT_EQ(1, nextGraphemeBoundaryOf(node, 0));
|
| + EXPECT_EQ(4, nextGraphemeBoundaryOf(node, 1));
|
| + EXPECT_EQ(5, nextGraphemeBoundaryOf(node, 4));
|
| // U+0B85 is TAMIL LETTER A. This has Extend property.
|
| // U+0BCD is TAMIL SIGN VIRAMA. This has Virama property.
|
| // U+0B95 is TAMIL LETTER KA.
|
| setBodyContent("<p id='target'>aஅ்கb</p>");
|
| node = document().getElementById("target")->firstChild();
|
| - EXPECT_EQ(4, uncheckedPreviousOffset(node, 5));
|
| - EXPECT_EQ(3, uncheckedPreviousOffset(node, 4));
|
| - EXPECT_EQ(1, uncheckedPreviousOffset(node, 3));
|
| - EXPECT_EQ(0, uncheckedPreviousOffset(node, 1));
|
| - EXPECT_EQ(1, uncheckedNextOffset(node, 0));
|
| - EXPECT_EQ(3, uncheckedNextOffset(node, 1));
|
| - EXPECT_EQ(4, uncheckedNextOffset(node, 3));
|
| - EXPECT_EQ(5, uncheckedNextOffset(node, 4));
|
| + EXPECT_EQ(4, previousGraphemeBoundaryOf(node, 5));
|
| + EXPECT_EQ(3, previousGraphemeBoundaryOf(node, 4));
|
| + EXPECT_EQ(1, previousGraphemeBoundaryOf(node, 3));
|
| + EXPECT_EQ(0, previousGraphemeBoundaryOf(node, 1));
|
| + EXPECT_EQ(1, nextGraphemeBoundaryOf(node, 0));
|
| + EXPECT_EQ(3, nextGraphemeBoundaryOf(node, 1));
|
| + EXPECT_EQ(4, nextGraphemeBoundaryOf(node, 3));
|
| + EXPECT_EQ(5, nextGraphemeBoundaryOf(node, 4));
|
| // TODO(nona): Consider to add Sinhala, Balinese, etc.
|
|
|
| // GB10: Do not break within emoji modifier.
|
| @@ -523,123 +523,123 @@ TEST_F(EditingUtilitiesTest, uncheckedPreviousNextOffset)
|
| // U+1F3FB(EMOJI MODIFIER FITZPATRICK TYPE-1-2) has E_Modifier property.
|
| setBodyContent("<p id='target'>a🎅🏻b</p>"); // E_Base x E_Modifier
|
| node = document().getElementById("target")->firstChild();
|
| - EXPECT_EQ(5, uncheckedPreviousOffset(node, 6));
|
| + EXPECT_EQ(5, previousGraphemeBoundaryOf(node, 6));
|
| // TODO(nona): Enable following expectation.
|
| - // EXPECT_EQ(1, uncheckedPreviousOffset(node, 5));
|
| - EXPECT_EQ(0, uncheckedPreviousOffset(node, 1));
|
| - EXPECT_EQ(1, uncheckedNextOffset(node, 0));
|
| + // EXPECT_EQ(1, previousGraphemeBoundaryOf(node, 5));
|
| + EXPECT_EQ(0, previousGraphemeBoundaryOf(node, 1));
|
| + EXPECT_EQ(1, nextGraphemeBoundaryOf(node, 0));
|
| // TODO(nona): Enable following expectation.
|
| - // EXPECT_EQ(5, uncheckedNextOffset(node, 1));
|
| - EXPECT_EQ(6, uncheckedNextOffset(node, 5));
|
| + // EXPECT_EQ(5, nextGraphemeBoundaryOf(node, 1));
|
| + EXPECT_EQ(6, nextGraphemeBoundaryOf(node, 5));
|
| // U+1F466(BOY) has EBG property.
|
| setBodyContent("<p id='target'>a👦🏻b</p>"); // EBG x E_Modifier
|
| node = document().getElementById("target")->firstChild();
|
| - EXPECT_EQ(5, uncheckedPreviousOffset(node, 6));
|
| + EXPECT_EQ(5, previousGraphemeBoundaryOf(node, 6));
|
| // TODO(nona): Enable following expectation.
|
| - // EXPECT_EQ(1, uncheckedPreviousOffset(node, 5));
|
| - EXPECT_EQ(0, uncheckedPreviousOffset(node, 1));
|
| - EXPECT_EQ(1, uncheckedNextOffset(node, 0));
|
| + // EXPECT_EQ(1, previousGraphemeBoundaryOf(node, 5));
|
| + EXPECT_EQ(0, previousGraphemeBoundaryOf(node, 1));
|
| + EXPECT_EQ(1, nextGraphemeBoundaryOf(node, 0));
|
| // TODO(nona): Enable following expectation.
|
| - // EXPECT_EQ(5, uncheckedNextOffset(node, 1));
|
| - EXPECT_EQ(6, uncheckedNextOffset(node, 5));
|
| + // EXPECT_EQ(5, nextGraphemeBoundaryOf(node, 1));
|
| + EXPECT_EQ(6, nextGraphemeBoundaryOf(node, 5));
|
|
|
| // GB11: Do not break within ZWJ emoji sequence.
|
| // U+2764(HEAVY BLACK HEART) has Glue_After_Zwj property.
|
| setBodyContent("<p id='target'>a‍❤b</p>"); // ZWJ x Glue_After_Zwj
|
| node = document().getElementById("target")->firstChild();
|
| - EXPECT_EQ(3, uncheckedPreviousOffset(node, 4));
|
| + EXPECT_EQ(3, previousGraphemeBoundaryOf(node, 4));
|
| // TODO(nona): Enable following expectation.
|
| - // EXPECT_EQ(0, uncheckedPreviousOffset(node, 3));
|
| - // EXPECT_EQ(3, uncheckedNextOffset(node, 0));
|
| - EXPECT_EQ(4, uncheckedNextOffset(node, 3));
|
| + // EXPECT_EQ(0, previousGraphemeBoundaryOf(node, 3));
|
| + // EXPECT_EQ(3, nextGraphemeBoundaryOf(node, 0));
|
| + EXPECT_EQ(4, nextGraphemeBoundaryOf(node, 3));
|
| setBodyContent("<p id='target'>a‍👦b</p>"); // ZWJ x EBG
|
| node = document().getElementById("target")->firstChild();
|
| - EXPECT_EQ(4, uncheckedPreviousOffset(node, 5));
|
| + EXPECT_EQ(4, previousGraphemeBoundaryOf(node, 5));
|
| // TODO(nona): Enable following expectation.
|
| - // EXPECT_EQ(0, uncheckedPreviousOffset(node, 4));
|
| - // EXPECT_EQ(4, uncheckedNextOffset(node, 0));
|
| - EXPECT_EQ(5, uncheckedNextOffset(node, 4));
|
| + // EXPECT_EQ(0, previousGraphemeBoundaryOf(node, 4));
|
| + // EXPECT_EQ(4, nextGraphemeBoundaryOf(node, 0));
|
| + EXPECT_EQ(5, nextGraphemeBoundaryOf(node, 4));
|
|
|
| // GB999: Otherwise break everywhere.
|
| // Breaks between Hangul syllable except for GB6, GB7, GB8.
|
| setBodyContent("<p id='target'>" + L + T + "</p>");
|
| node = document().getElementById("target")->firstChild();
|
| - EXPECT_EQ(1, uncheckedPreviousOffset(node, 2));
|
| - EXPECT_EQ(1, uncheckedNextOffset(node, 0));
|
| + EXPECT_EQ(1, previousGraphemeBoundaryOf(node, 2));
|
| + EXPECT_EQ(1, nextGraphemeBoundaryOf(node, 0));
|
| setBodyContent("<p id='target'>" + V + L + "</p>");
|
| node = document().getElementById("target")->firstChild();
|
| - EXPECT_EQ(1, uncheckedPreviousOffset(node, 2));
|
| - EXPECT_EQ(1, uncheckedNextOffset(node, 0));
|
| + EXPECT_EQ(1, previousGraphemeBoundaryOf(node, 2));
|
| + EXPECT_EQ(1, nextGraphemeBoundaryOf(node, 0));
|
| setBodyContent("<p id='target'>" + V + LV + "</p>");
|
| node = document().getElementById("target")->firstChild();
|
| - EXPECT_EQ(1, uncheckedPreviousOffset(node, 2));
|
| - EXPECT_EQ(1, uncheckedNextOffset(node, 0));
|
| + EXPECT_EQ(1, previousGraphemeBoundaryOf(node, 2));
|
| + EXPECT_EQ(1, nextGraphemeBoundaryOf(node, 0));
|
| setBodyContent("<p id='target'>" + V + LVT + "</p>");
|
| node = document().getElementById("target")->firstChild();
|
| - EXPECT_EQ(1, uncheckedPreviousOffset(node, 2));
|
| - EXPECT_EQ(1, uncheckedNextOffset(node, 0));
|
| + EXPECT_EQ(1, previousGraphemeBoundaryOf(node, 2));
|
| + EXPECT_EQ(1, nextGraphemeBoundaryOf(node, 0));
|
| setBodyContent("<p id='target'>" + LV + L + "</p>");
|
| node = document().getElementById("target")->firstChild();
|
| - EXPECT_EQ(1, uncheckedPreviousOffset(node, 2));
|
| - EXPECT_EQ(1, uncheckedNextOffset(node, 0));
|
| + EXPECT_EQ(1, previousGraphemeBoundaryOf(node, 2));
|
| + EXPECT_EQ(1, nextGraphemeBoundaryOf(node, 0));
|
| setBodyContent("<p id='target'>" + LV + LV + "</p>");
|
| node = document().getElementById("target")->firstChild();
|
| - EXPECT_EQ(1, uncheckedPreviousOffset(node, 2));
|
| - EXPECT_EQ(1, uncheckedNextOffset(node, 0));
|
| + EXPECT_EQ(1, previousGraphemeBoundaryOf(node, 2));
|
| + EXPECT_EQ(1, nextGraphemeBoundaryOf(node, 0));
|
| setBodyContent("<p id='target'>" + LV + LVT + "</p>");
|
| node = document().getElementById("target")->firstChild();
|
| - EXPECT_EQ(1, uncheckedPreviousOffset(node, 2));
|
| - EXPECT_EQ(1, uncheckedNextOffset(node, 0));
|
| + EXPECT_EQ(1, previousGraphemeBoundaryOf(node, 2));
|
| + EXPECT_EQ(1, nextGraphemeBoundaryOf(node, 0));
|
| setBodyContent("<p id='target'>" + LVT + L + "</p>");
|
| node = document().getElementById("target")->firstChild();
|
| - EXPECT_EQ(1, uncheckedPreviousOffset(node, 2));
|
| - EXPECT_EQ(1, uncheckedNextOffset(node, 0));
|
| + EXPECT_EQ(1, previousGraphemeBoundaryOf(node, 2));
|
| + EXPECT_EQ(1, nextGraphemeBoundaryOf(node, 0));
|
| setBodyContent("<p id='target'>" + LVT + V + "</p>");
|
| node = document().getElementById("target")->firstChild();
|
| - EXPECT_EQ(1, uncheckedPreviousOffset(node, 2));
|
| - EXPECT_EQ(1, uncheckedNextOffset(node, 0));
|
| + EXPECT_EQ(1, previousGraphemeBoundaryOf(node, 2));
|
| + EXPECT_EQ(1, nextGraphemeBoundaryOf(node, 0));
|
| setBodyContent("<p id='target'>" + LVT + LV + "</p>");
|
| node = document().getElementById("target")->firstChild();
|
| - EXPECT_EQ(1, uncheckedPreviousOffset(node, 2));
|
| - EXPECT_EQ(1, uncheckedNextOffset(node, 0));
|
| + EXPECT_EQ(1, previousGraphemeBoundaryOf(node, 2));
|
| + EXPECT_EQ(1, nextGraphemeBoundaryOf(node, 0));
|
| setBodyContent("<p id='target'>" + LVT + LVT + "</p>");
|
| node = document().getElementById("target")->firstChild();
|
| - EXPECT_EQ(1, uncheckedPreviousOffset(node, 2));
|
| - EXPECT_EQ(1, uncheckedNextOffset(node, 0));
|
| + EXPECT_EQ(1, previousGraphemeBoundaryOf(node, 2));
|
| + EXPECT_EQ(1, nextGraphemeBoundaryOf(node, 0));
|
| setBodyContent("<p id='target'>" + T + L + "</p>");
|
| node = document().getElementById("target")->firstChild();
|
| - EXPECT_EQ(1, uncheckedPreviousOffset(node, 2));
|
| - EXPECT_EQ(1, uncheckedNextOffset(node, 0));
|
| + EXPECT_EQ(1, previousGraphemeBoundaryOf(node, 2));
|
| + EXPECT_EQ(1, nextGraphemeBoundaryOf(node, 0));
|
| setBodyContent("<p id='target'>" + T + V + "</p>");
|
| node = document().getElementById("target")->firstChild();
|
| - EXPECT_EQ(1, uncheckedPreviousOffset(node, 2));
|
| - EXPECT_EQ(1, uncheckedNextOffset(node, 0));
|
| + EXPECT_EQ(1, previousGraphemeBoundaryOf(node, 2));
|
| + EXPECT_EQ(1, nextGraphemeBoundaryOf(node, 0));
|
| setBodyContent("<p id='target'>" + T + LV + "</p>");
|
| node = document().getElementById("target")->firstChild();
|
| - EXPECT_EQ(1, uncheckedPreviousOffset(node, 2));
|
| - EXPECT_EQ(1, uncheckedNextOffset(node, 0));
|
| + EXPECT_EQ(1, previousGraphemeBoundaryOf(node, 2));
|
| + EXPECT_EQ(1, nextGraphemeBoundaryOf(node, 0));
|
| setBodyContent("<p id='target'>" + T + LVT + "</p>");
|
| node = document().getElementById("target")->firstChild();
|
| - EXPECT_EQ(1, uncheckedPreviousOffset(node, 2));
|
| - EXPECT_EQ(1, uncheckedNextOffset(node, 0));
|
| + EXPECT_EQ(1, previousGraphemeBoundaryOf(node, 2));
|
| + EXPECT_EQ(1, nextGraphemeBoundaryOf(node, 0));
|
|
|
| // For GB10, if base emoji character is not E_Base or EBG, break happens before E_Modifier.
|
| setBodyContent("<p id='target'>a🏻</p>");
|
| node = document().getElementById("target")->firstChild();
|
| - EXPECT_EQ(1, uncheckedPreviousOffset(node, 3));
|
| - EXPECT_EQ(1, uncheckedNextOffset(node, 0));
|
| + EXPECT_EQ(1, previousGraphemeBoundaryOf(node, 3));
|
| + EXPECT_EQ(1, nextGraphemeBoundaryOf(node, 0));
|
| // U+1F5FA(WORLD MAP) doesn't have either E_Base or EBG property.
|
| setBodyContent("<p id='target'>🗺🏻</p>");
|
| node = document().getElementById("target")->firstChild();
|
| - EXPECT_EQ(2, uncheckedPreviousOffset(node, 4));
|
| - EXPECT_EQ(2, uncheckedNextOffset(node, 0));
|
| + EXPECT_EQ(2, previousGraphemeBoundaryOf(node, 4));
|
| + EXPECT_EQ(2, nextGraphemeBoundaryOf(node, 0));
|
|
|
| // For GB11, if trailing character is not Glue_After_Zwj or EBG, break happens after ZWJ.
|
| // U+1F5FA(WORLD MAP) doesn't have either Glue_After_Zwj or EBG.
|
| setBodyContent("<p id='target'>‍🗺</p>");
|
| node = document().getElementById("target")->firstChild();
|
| - EXPECT_EQ(1, uncheckedPreviousOffset(node, 3));
|
| - EXPECT_EQ(1, uncheckedNextOffset(node, 0));
|
| + EXPECT_EQ(1, previousGraphemeBoundaryOf(node, 3));
|
| + EXPECT_EQ(1, nextGraphemeBoundaryOf(node, 0));
|
| }
|
|
|
| TEST_F(EditingUtilitiesTest, previousPositionOf_Backspace)
|
|
|