Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(22)

Unified Diff: third_party/WebKit/Source/core/editing/EphemeralRangeTest.cpp

Issue 2738203002: Update EphemeralRange Unit Tests (Closed)
Patch Set: Y Created 3 years, 9 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « no previous file | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: third_party/WebKit/Source/core/editing/EphemeralRangeTest.cpp
diff --git a/third_party/WebKit/Source/core/editing/EphemeralRangeTest.cpp b/third_party/WebKit/Source/core/editing/EphemeralRangeTest.cpp
index 4e84da53194d8a4c4acf953f1a7cd751e09e18cd..85a6ae2df79dc4443e2576f577fd66f25ab0ee92 100644
--- a/third_party/WebKit/Source/core/editing/EphemeralRangeTest.cpp
+++ b/third_party/WebKit/Source/core/editing/EphemeralRangeTest.cpp
@@ -51,20 +51,25 @@ Range* EphemeralRangeTest::getBodyRange() const {
// Tests that |EphemeralRange::nodes()| will traverse the whole range exactly as
// |for (Node* n = firstNode(); n != pastLastNode(); n = Traversal::next(*n))|
// does.
-TEST_F(EphemeralRangeTest, rangeTraversal) {
+TEST_F(EphemeralRangeTest, rangeTraversalDOM) {
const char* bodyContent =
- "<p id='host'><b id='one'></b><b id='two'>22</b></p>";
+ "<p id='host'>"
+ "<b id='zero'>0</b>"
+ "<b id='one'>1</b>"
+ "<b id='two'>22</b>"
+ "<span id='three'>333</span>"
+ "</p>";
setBodyContent(bodyContent);
const std::string expectedNodes(
- "[BODY][P id=\"host\"][B id=\"one\"][B id=\"two\"][#text \"22\"]");
+ "[BODY][P id=\"host\"][B id=\"zero\"][#text \"0\"][B id=\"one\"][#text "
+ "\"1\"][B id=\"two\"][#text \"22\"][SPAN id=\"three\"][#text \"333\"]");
// Check two ways to traverse.
EXPECT_EQ(expectedNodes, traverseRange<>(getBodyRange()));
EXPECT_EQ(traverseRange<>(getBodyRange()),
traverseRange(EphemeralRange(getBodyRange())));
- // The same with FlatTree traversing.
EXPECT_EQ(expectedNodes, traverseRange<FlatTreeTraversal>(getBodyRange()));
EXPECT_EQ(traverseRange<FlatTreeTraversal>(getBodyRange()),
traverseRange(EphemeralRangeInFlatTree(getBodyRange())));
@@ -73,65 +78,96 @@ TEST_F(EphemeralRangeTest, rangeTraversal) {
// Tests that |inRange| helper will traverse the whole range with shadow DOM.
TEST_F(EphemeralRangeTest, rangeShadowTraversal) {
const char* bodyContent =
- "<p id='host'><b id='one'></b><input type='text' value='some'></p>";
+ "<b id='zero'>0</b>"
+ "<p id='host'>"
+ "<b id='one'>1</b>"
+ "<b id='two'>22</b>"
+ "<b id='three'>333</b>"
+ "</p>"
+ "<b id='four'>4444</b>";
+ const char* shadowContent =
+ "<p id='five'>55555</p>"
+ "<content select=#two></content>"
+ "<content select=#one></content>"
+ "<span id='six'>666666</span>"
+ "<p id='seven'>7777777</p>";
setBodyContent(bodyContent);
+ setShadowContent(shadowContent, "host");
- EXPECT_EQ("[BODY][P id=\"host\"][B id=\"one\"][INPUT]",
- traverseRange<>(getBodyRange()));
- EXPECT_EQ(traverseRange<>(getBodyRange()),
- traverseRange(EphemeralRange(getBodyRange())));
+ const std::string expectedNodes(
+ "[BODY][B id=\"zero\"][#text \"0\"][P id=\"host\"][P id=\"five\"][#text "
+ "\"55555\"][B id=\"two\"][#text \"22\"][B id=\"one\"][#text \"1\"][SPAN "
+ "id=\"six\"][#text \"666666\"][P id=\"seven\"][#text \"7777777\"][B "
+ "id=\"four\"][#text \"4444\"]");
- // In this case FlatTree traverse should differs from DOM tree traverse.
- EXPECT_EQ(
- "[BODY][P id=\"host\"][B id=\"one\"][INPUT][DIV id=\"inner-editor\" "
- "(editable)][#text \"some\"]",
- traverseRange<FlatTreeTraversal>(getBodyRange()));
+ EXPECT_EQ(expectedNodes, traverseRange<FlatTreeTraversal>(getBodyRange()));
EXPECT_EQ(traverseRange<FlatTreeTraversal>(getBodyRange()),
traverseRange(EphemeralRangeInFlatTree(getBodyRange())));
+ // Node 'three' should not appear in FlatTreeTraversal.
+ EXPECT_EQ(expectedNodes.find("three") == std::string::npos, true);
}
// Limit a range and check that it will be traversed correctly.
-TEST_F(EphemeralRangeTest, rangeTraversalLimited) {
+TEST_F(EphemeralRangeTest, rangeTraversalLimitedDOM) {
const char* bodyContent =
- "<p id='host'><b id='one'></b><input type='text' value='some'><span "
- "id='two'></p>";
+ "<p id='host'>"
+ "<b id='zero'>0</b>"
+ "<b id='one'>1</b>"
+ "<b id='two'>22</b>"
+ "<span id='three'>333</span>"
+ "</p>";
setBodyContent(bodyContent);
- // Get a limited range from <body> to <b> nodes.
Range* untilB = getBodyRange();
untilB->setEnd(document().getElementById("one"), 0,
IGNORE_EXCEPTION_FOR_TESTING);
- EXPECT_EQ("[BODY][P id=\"host\"][B id=\"one\"]", traverseRange<>(untilB));
-
+ EXPECT_EQ("[BODY][P id=\"host\"][B id=\"zero\"][#text \"0\"][B id=\"one\"]",
+ traverseRange<>(untilB));
EXPECT_EQ(traverseRange<>(untilB), traverseRange(EphemeralRange(untilB)));
- EXPECT_EQ("[BODY][P id=\"host\"][B id=\"one\"]",
- traverseRange<FlatTreeTraversal>(untilB));
- EXPECT_EQ(traverseRange<FlatTreeTraversal>(untilB),
- traverseRange(EphemeralRangeInFlatTree(untilB)));
-
- // Get a limited range from <b> to <span> nodes.
Range* fromBToSpan = getBodyRange();
fromBToSpan->setStart(document().getElementById("one"), 0,
IGNORE_EXCEPTION_FOR_TESTING);
- fromBToSpan->setEnd(document().getElementById("two"), 0,
+ fromBToSpan->setEnd(document().getElementById("three"), 0,
IGNORE_EXCEPTION_FOR_TESTING);
-
- EXPECT_EQ("[B id=\"one\"][INPUT][SPAN id=\"two\"]",
+ EXPECT_EQ("[#text \"1\"][B id=\"two\"][#text \"22\"][SPAN id=\"three\"]",
traverseRange<>(fromBToSpan));
EXPECT_EQ(traverseRange<>(fromBToSpan),
traverseRange(EphemeralRange(fromBToSpan)));
+}
- EXPECT_EQ(
- "[B id=\"one\"][INPUT][DIV id=\"inner-editor\" (editable)][#text "
- "\"some\"][SPAN id=\"two\"]",
- traverseRange<FlatTreeTraversal>(fromBToSpan));
- EXPECT_EQ(traverseRange<FlatTreeTraversal>(fromBToSpan),
- traverseRange(EphemeralRangeInFlatTree(fromBToSpan)));
+TEST_F(EphemeralRangeTest, rangeTraversalLimitedFlatTree) {
+ const char* bodyContent =
+ "<b id='zero'>0</b>"
+ "<p id='host'>"
+ "<b id='one'>1</b>"
+ "<b id='two'>22</b>"
+ "</p>"
+ "<b id='three'>333</b>";
+ const char* shadowContent =
+ "<p id='four'>4444</p>"
+ "<content select=#two></content>"
+ "<content select=#one></content>"
+ "<span id='five'>55555</span>"
+ "<p id='six'>666666</p>";
+ setBodyContent(bodyContent);
+ ShadowRoot* shadowRoot = setShadowContent(shadowContent, "host");
+
+ const PositionInFlatTree startPosition(document().getElementById("one"), 0);
+ const PositionInFlatTree limitPosition(shadowRoot->getElementById("five"), 0);
+ const PositionInFlatTree endPosition(shadowRoot->getElementById("six"), 0);
+ const EphemeralRangeInFlatTree fromBToSpan(startPosition, limitPosition);
+ EXPECT_EQ("[#text \"1\"][SPAN id=\"five\"]", traverseRange(fromBToSpan));
+
+ const EphemeralRangeInFlatTree fromSpanToEnd(limitPosition, endPosition);
+ EXPECT_EQ("[#text \"55555\"][P id=\"six\"]", traverseRange(fromSpanToEnd));
}
TEST_F(EphemeralRangeTest, traversalEmptyRanges) {
- const char* bodyContent = "<p id='host'><b id='one'></b></p>";
+ const char* bodyContent =
+ "<p id='host'>"
+ "<b id='one'>1</b>"
+ "</p>";
setBodyContent(bodyContent);
// Expect no iterations in loop for an empty EphemeralRange.
« no previous file with comments | « no previous file | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698