Commit 8e8415b6 authored by Yoshifumi Inoue's avatar Yoshifumi Inoue Committed by Commit Bot

Introduce test cases for NextWordPosition()

This patch introduces test cases for |NextWordPosition()| to record current
behavior as a preparation of the patch[1].

[1] http://crrev.com/c/737981 Introduce TextOffsetMapping to simplify
word/paragraph selection

Bug: 778507
Change-Id: Ic98cdea94e5be2f3d13448aa9e087a02b70a0df0
Reviewed-on: https://chromium-review.googlesource.com/895236
Commit-Queue: Yoshifumi Inoue <yosin@chromium.org>
Reviewed-by: default avatarYoichi Osato <yoichio@chromium.org>
Cr-Commit-Position: refs/heads/master@{#533577}
parent 2baf1711
......@@ -149,7 +149,7 @@ EndOfWordPosition(const VisiblePositionInFlatTree&,
CORE_EXPORT VisiblePositionInFlatTree
EndOfWord(const VisiblePositionInFlatTree&, EWordSide = kNextWordIfOnBoundary);
VisiblePosition PreviousWordPosition(const VisiblePosition&);
VisiblePosition NextWordPosition(const VisiblePosition&);
CORE_EXPORT VisiblePosition NextWordPosition(const VisiblePosition&);
// sentences
CORE_EXPORT VisiblePosition StartOfSentence(const VisiblePosition&);
......
......@@ -33,6 +33,15 @@ class VisibleUnitsWordTest : public EditingTestBase {
.DeepEquivalent())
.Build());
}
std::string DoNextWord(const std::string& selection_text) {
const Position position = SetSelectionTextToBody(selection_text).Base();
return GetSelectionTextFromBody(
SelectionInDOMTree::Builder()
.Collapse(NextWordPosition(CreateVisiblePosition(position))
.DeepEquivalent())
.Build());
}
};
TEST_F(VisibleUnitsWordTest, StartOfWordBasic) {
......@@ -211,4 +220,54 @@ TEST_F(VisibleUnitsWordTest, EndOfWordTextSecurity) {
EXPECT_EQ("abc<s>foo bar</s>baz|", DoEndOfWord("abc<s>foo bar</s>b|az"));
}
TEST_F(VisibleUnitsWordTest, NextWordBasic) {
EXPECT_EQ("<p> (1|) abc def</p>", DoNextWord("<p>| (1) abc def</p>"));
EXPECT_EQ("<p> (1|) abc def</p>", DoNextWord("<p> |(1) abc def</p>"));
EXPECT_EQ("<p> (1|) abc def</p>", DoNextWord("<p> (|1) abc def</p>"));
EXPECT_EQ("<p> (1) abc| def</p>", DoNextWord("<p> (1|) abc def</p>"));
EXPECT_EQ("<p> (1) abc| def</p>", DoNextWord("<p> (1)| abc def</p>"));
EXPECT_EQ("<p> (1) abc| def</p>", DoNextWord("<p> (1) |abc def</p>"));
EXPECT_EQ("<p> (1) abc| def</p>", DoNextWord("<p> (1) a|bc def</p>"));
EXPECT_EQ("<p> (1) abc| def</p>", DoNextWord("<p> (1) ab|c def</p>"));
EXPECT_EQ("<p> (1) abc def|</p>", DoNextWord("<p> (1) abc| def</p>"));
EXPECT_EQ("<p> (1) abc def|</p>", DoNextWord("<p> (1) abc |def</p>"));
EXPECT_EQ("<p> (1) abc def|</p>", DoNextWord("<p> (1) abc d|ef</p>"));
EXPECT_EQ("<p> (1) abc def|</p>", DoNextWord("<p> (1) abc de|f</p>"));
EXPECT_EQ("<p> (1) abc def|</p>", DoNextWord("<p> (1) abc def|</p>"));
EXPECT_EQ("<p> (1) abc def|</p>", DoNextWord("<p> (1) abc def</p>|"));
}
TEST_F(VisibleUnitsWordTest, NextWordCrossingBlock) {
EXPECT_EQ("<p>abc|</p><p>def</p>", DoNextWord("<p>|abc</p><p>def</p>"));
EXPECT_EQ("<p>abc</p><p>def|</p>", DoNextWord("<p>abc|</p><p>def</p>"));
}
TEST_F(VisibleUnitsWordTest, NextWordMixedEditability) {
EXPECT_EQ(
"<p contenteditable>"
"abc<b contenteditable=\"false\">def ghi</b>|jkl mno</p>",
DoNextWord("<p contenteditable>"
"|abc<b contenteditable=false>def ghi</b>jkl mno</p>"));
EXPECT_EQ(
"<p contenteditable>"
"abc<b contenteditable=\"false\">def| ghi</b>jkl mno</p>",
DoNextWord("<p contenteditable>"
"abc<b contenteditable=false>|def ghi</b>jkl mno</p>"));
EXPECT_EQ(
"<p contenteditable>"
"abc<b contenteditable=\"false\">def ghi|</b>jkl mno</p>",
DoNextWord("<p contenteditable>"
"abc<b contenteditable=false>def |ghi</b>jkl mno</p>"));
EXPECT_EQ(
"<p contenteditable>"
"abc<b contenteditable=\"false\">def ghi|</b>jkl mno</p>",
DoNextWord("<p contenteditable>"
"abc<b contenteditable=false>def ghi|</b>jkl mno</p>"));
}
TEST_F(VisibleUnitsWordTest, NextWordSkipTab) {
InsertStyleElement("s { white-space: pre }");
EXPECT_EQ("<p><s>\t</s>foo|</p>", DoNextWord("<p><s>\t|</s>foo</p>"));
}
} // namespace blink
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment