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

Side by Side Diff: Source/core/editing/VisibleSelectionTest.cpp

Issue 286203012: Test WordGranularity expansion in VisibleSelection. (Closed) Base URL: https://chromium.googlesource.com/chromium/blink.git@master
Patch Set: no need for friendship Created 6 years, 7 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 unified diff | Download patch
« no previous file with comments | « Source/core/core.gypi ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
(Empty)
1 // Copyright 2014 The Chromium Authors. All rights reserved.
2 // // Use of this source code is governed by a BSD-style license that can be
jochen (gone - plz use gerrit) 2014/05/19 13:24:08 incorrect header
3 // // found in the LICENSE file.
4
5 #include "config.h"
6 #include "core/editing/VisibleSelection.h"
7
8 #include "core/dom/Document.h"
9 #include "core/dom/Range.h"
10 #include "core/dom/Text.h"
11 #include "core/html/HTMLElement.h"
12 #include "core/testing/DummyPageHolder.h"
13 #include <gtest/gtest.h>
14
15 #define LOREM_IPSUM \
16 "Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod te mpor " \
17 "incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud " \
18 "exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure " \
19 "dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat null a pariatur." \
20 "Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia d eserunt " \
21 "mollit anim id est laborum."
22
23 namespace WebCore {
24
25 class VisibleSelectionTest : public ::testing::Test {
26 protected:
27 virtual void SetUp() OVERRIDE;
28
29 Document& document() const { return m_dummyPageHolder->document(); }
30 Text* textNode() const { return m_textNode.get(); }
31 VisibleSelection& selection() { return m_selection; }
32
33 // Helper function to set the VisibleSelection base/extent.
34 void setSelection(int base) { setSelection(base, base); }
35
36 // Helper function to set the VisibleSelection base/extent.
37 void setSelection(int base, int extend)
38 {
39 m_selection.setBase(Position(textNode(), base));
40 m_selection.setExtent(Position(textNode(), extend));
41 }
42
43 private:
44 OwnPtr<DummyPageHolder> m_dummyPageHolder;
45 RefPtr<Text> m_textNode;
46 VisibleSelection m_selection;
47 };
48
49 void WebCore::VisibleSelectionTest::SetUp()
50 {
51 m_dummyPageHolder = DummyPageHolder::create(IntSize(800, 600));
52 m_textNode = document().createTextNode(LOREM_IPSUM);
53 document().body()->appendChild(m_textNode.get());
54 }
55
56 } // namespace WebCore
57
58 namespace {
59
60 using namespace WebCore;
61
62 TEST_F(VisibleSelectionTest, Initialisation)
63 {
64 setSelection(0);
65
66 EXPECT_FALSE(selection().isNone());
67 EXPECT_TRUE(selection().isCaret());
68
69 RefPtrWillBeRawPtr<Range> range = selection().firstRange();
70 EXPECT_EQ(0, range->startOffset());
71 EXPECT_EQ(0, range->endOffset());
72 EXPECT_EQ("", range->text());
73 }
74
75 TEST_F(VisibleSelectionTest, WordGranularity)
76 {
77 // Beginning of a word.
78 {
79 setSelection(0);
80 selection().expandUsingGranularity(WordGranularity);
81
82 RefPtrWillBeRawPtr<Range> range = selection().firstRange();
83 EXPECT_EQ(0, range->startOffset());
84 EXPECT_EQ(5, range->endOffset());
85 EXPECT_EQ("Lorem", range->text());
86 }
87
88 // Middle of a word.
89 {
90 setSelection(8);
91 selection().expandUsingGranularity(WordGranularity);
92
93 RefPtrWillBeRawPtr<Range> range = selection().firstRange();
94 EXPECT_EQ(6, range->startOffset());
95 EXPECT_EQ(11, range->endOffset());
96 EXPECT_EQ("ipsum", range->text());
97 }
98
99 // End of a word.
100 // FIXME: that sounds buggy, we might want to select the word _before_ inste ad
101 // of the space...
102 {
103 setSelection(5);
104 selection().expandUsingGranularity(WordGranularity);
105
106 RefPtrWillBeRawPtr<Range> range = selection().firstRange();
107 EXPECT_EQ(5, range->startOffset());
108 EXPECT_EQ(6, range->endOffset());
109 EXPECT_EQ(" ", range->text());
110 }
111
112 // Before comma.
113 // FIXME: that sounds buggy, we might want to select the word _before_ inste ad
114 // of the comma.
115 {
116 setSelection(26);
117 selection().expandUsingGranularity(WordGranularity);
118
119 RefPtrWillBeRawPtr<Range> range = selection().firstRange();
120 EXPECT_EQ(26, range->startOffset());
121 EXPECT_EQ(27, range->endOffset());
122 EXPECT_EQ(",", range->text());
123 }
124
125 // After comma.
126 {
127 setSelection(27);
128 selection().expandUsingGranularity(WordGranularity);
129
130 RefPtrWillBeRawPtr<Range> range = selection().firstRange();
131 EXPECT_EQ(27, range->startOffset());
132 EXPECT_EQ(28, range->endOffset());
133 EXPECT_EQ(" ", range->text());
134 }
135
136 // When selecting part of a word.
137 {
138 setSelection(0, 1);
139 selection().expandUsingGranularity(WordGranularity);
140
141 RefPtrWillBeRawPtr<Range> range = selection().firstRange();
142 EXPECT_EQ(0, range->startOffset());
143 EXPECT_EQ(5, range->endOffset());
144 EXPECT_EQ("Lorem", range->text());
145 }
146
147 // When selecting part of two words.
148 {
149 setSelection(2, 8);
150 selection().expandUsingGranularity(WordGranularity);
151
152 RefPtrWillBeRawPtr<Range> range = selection().firstRange();
153 EXPECT_EQ(0, range->startOffset());
154 EXPECT_EQ(11, range->endOffset());
155 EXPECT_EQ("Lorem ipsum", range->text());
156 }
157 }
158
159 } // namespace WebCore
OLDNEW
« no previous file with comments | « Source/core/core.gypi ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698