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

Side by Side Diff: third_party/WebKit/Source/core/editing/markers/DocumentMarkerListEditorTest.cpp

Issue 2903413003: Add tests for DocumentMarkerListEditor::ShiftMarkersContent{D,Ind}ependent (Closed)
Patch Set: Final Created 3 years, 6 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 | « third_party/WebKit/Source/core/editing/markers/DocumentMarkerListEditor.h ('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 2017 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
4
5 #include "core/editing/markers/DocumentMarkerListEditor.h"
6
7 #include "testing/gtest/include/gtest/gtest.h"
8
9 namespace blink {
10
11 class DocumentMarkerListEditorTest : public ::testing::Test {
12 protected:
13 DocumentMarker* CreateMarker(unsigned startOffset, unsigned endOffset) {
14 return new DocumentMarker(startOffset, endOffset,
15 DocumentMarker::MatchStatus::kInactive);
16 }
17 };
18
19 TEST_F(DocumentMarkerListEditorTest,
20 ContentDependentMarker_ReplaceStartOfMarker) {
21 DocumentMarkerListEditor::MarkerList markers;
22 markers.push_back(CreateMarker(0, 10));
23
24 DocumentMarkerListEditor::ShiftMarkersContentDependent(&markers, 0, 5, 5);
25
26 EXPECT_EQ(0u, markers.size());
27 }
28
29 TEST_F(DocumentMarkerListEditorTest,
30 ContentIndependentMarker_ReplaceStartOfMarker) {
31 DocumentMarkerListEditor::MarkerList markers;
32 markers.push_back(CreateMarker(0, 10));
33
34 // Replace with shorter text
35 DocumentMarkerListEditor::ShiftMarkersContentIndependent(&markers, 0, 5, 4);
36
37 EXPECT_EQ(1u, markers.size());
38 EXPECT_EQ(0u, markers[0]->StartOffset());
39 EXPECT_EQ(9u, markers[0]->EndOffset());
40
41 // Replace with longer text
42 DocumentMarkerListEditor::ShiftMarkersContentIndependent(&markers, 0, 4, 5);
43
44 EXPECT_EQ(1u, markers.size());
45 EXPECT_EQ(0u, markers[0]->StartOffset());
46 EXPECT_EQ(10u, markers[0]->EndOffset());
47
48 // Replace with text of same length
49 DocumentMarkerListEditor::ShiftMarkersContentIndependent(&markers, 0, 5, 5);
50
51 EXPECT_EQ(1u, markers.size());
52 EXPECT_EQ(0u, markers[0]->StartOffset());
53 EXPECT_EQ(10u, markers[0]->EndOffset());
54 }
55
56 TEST_F(DocumentMarkerListEditorTest,
57 ContentDependentMarker_ReplaceContainsStartOfMarker) {
58 DocumentMarkerListEditor::MarkerList markers;
59 markers.push_back(CreateMarker(5, 15));
60
61 DocumentMarkerListEditor::ShiftMarkersContentDependent(&markers, 0, 10, 10);
62
63 EXPECT_EQ(0u, markers.size());
64 }
65
66 TEST_F(DocumentMarkerListEditorTest,
67 ContentIndependentMarker_ReplaceContainsStartOfMarker) {
68 DocumentMarkerListEditor::MarkerList markers;
69 markers.push_back(CreateMarker(5, 15));
70
71 DocumentMarkerListEditor::ShiftMarkersContentIndependent(&markers, 0, 10, 10);
72
73 EXPECT_EQ(1u, markers.size());
74 EXPECT_EQ(10u, markers[0]->StartOffset());
75 EXPECT_EQ(15u, markers[0]->EndOffset());
76 }
77
78 TEST_F(DocumentMarkerListEditorTest,
79 ContentDependentMarker_ReplaceEndOfMarker) {
80 DocumentMarkerListEditor::MarkerList markers;
81 markers.push_back(CreateMarker(0, 10));
82
83 DocumentMarkerListEditor::ShiftMarkersContentDependent(&markers, 5, 5, 5);
84
85 EXPECT_EQ(0u, markers.size());
86 }
87
88 TEST_F(DocumentMarkerListEditorTest,
89 ContentIndependentMarker_ReplaceEndOfMarker) {
90 DocumentMarkerListEditor::MarkerList markers;
91 markers.push_back(CreateMarker(0, 10));
92
93 // Replace with shorter text
94 DocumentMarkerListEditor::ShiftMarkersContentIndependent(&markers, 5, 5, 4);
95
96 EXPECT_EQ(1u, markers.size());
97 EXPECT_EQ(0u, markers[0]->StartOffset());
98 EXPECT_EQ(9u, markers[0]->EndOffset());
99
100 // Replace with longer text
101 DocumentMarkerListEditor::ShiftMarkersContentIndependent(&markers, 5, 4, 5);
102
103 EXPECT_EQ(1u, markers.size());
104 EXPECT_EQ(0u, markers[0]->StartOffset());
105 EXPECT_EQ(10u, markers[0]->EndOffset());
106
107 // Replace with text of same length
108 DocumentMarkerListEditor::ShiftMarkersContentIndependent(&markers, 5, 5, 5);
109
110 EXPECT_EQ(1u, markers.size());
111 EXPECT_EQ(0u, markers[0]->StartOffset());
112 EXPECT_EQ(10u, markers[0]->EndOffset());
113 }
114
115 TEST_F(DocumentMarkerListEditorTest,
116 ContentDependentMarker_ReplaceContainsEndOfMarker) {
117 DocumentMarkerListEditor::MarkerList markers;
118 markers.push_back(CreateMarker(0, 10));
119
120 DocumentMarkerListEditor::ShiftMarkersContentDependent(&markers, 5, 10, 10);
121
122 EXPECT_EQ(0u, markers.size());
123 }
124
125 TEST_F(DocumentMarkerListEditorTest,
126 ContentIndependentMarker_ReplaceContainsEndOfMarker) {
127 DocumentMarkerListEditor::MarkerList markers;
128 markers.push_back(CreateMarker(0, 10));
129
130 DocumentMarkerListEditor::ShiftMarkersContentIndependent(&markers, 5, 10, 10);
131
132 EXPECT_EQ(1u, markers.size());
133 EXPECT_EQ(0u, markers[0]->StartOffset());
134 EXPECT_EQ(5u, markers[0]->EndOffset());
135 }
136
137 TEST_F(DocumentMarkerListEditorTest,
138 ContentDependentMarker_ReplaceEntireMarker) {
139 DocumentMarkerListEditor::MarkerList markers;
140 markers.push_back(CreateMarker(0, 10));
141
142 DocumentMarkerListEditor::ShiftMarkersContentDependent(&markers, 0, 10, 10);
143
144 EXPECT_EQ(0u, markers.size());
145 }
146
147 TEST_F(DocumentMarkerListEditorTest,
148 ContentIndependentMarker_ReplaceEntireMarker) {
149 DocumentMarkerListEditor::MarkerList markers;
150 markers.push_back(CreateMarker(0, 10));
151
152 // Replace with shorter text
153 DocumentMarkerListEditor::ShiftMarkersContentIndependent(&markers, 0, 10, 9);
154
155 EXPECT_EQ(1u, markers.size());
156 EXPECT_EQ(0u, markers[0]->StartOffset());
157 EXPECT_EQ(9u, markers[0]->EndOffset());
158
159 // Replace with longer text
160 DocumentMarkerListEditor::ShiftMarkersContentIndependent(&markers, 0, 9, 10);
161
162 EXPECT_EQ(1u, markers.size());
163 EXPECT_EQ(0u, markers[0]->StartOffset());
164 EXPECT_EQ(10u, markers[0]->EndOffset());
165
166 // Replace with text of same length
167 DocumentMarkerListEditor::ShiftMarkersContentIndependent(&markers, 0, 10, 10);
168
169 EXPECT_EQ(1u, markers.size());
170 EXPECT_EQ(0u, markers[0]->StartOffset());
171 EXPECT_EQ(10u, markers[0]->EndOffset());
172 }
173
174 TEST_F(DocumentMarkerListEditorTest,
175 ContentDependentMarker_ReplaceTextWithMarkerAtBeginning) {
176 DocumentMarkerListEditor::MarkerList markers;
177 markers.push_back(CreateMarker(0, 10));
178
179 DocumentMarkerListEditor::ShiftMarkersContentDependent(&markers, 0, 15, 15);
180
181 EXPECT_EQ(0u, markers.size());
182 }
183
184 TEST_F(DocumentMarkerListEditorTest,
185 ContentIndependentMarker_ReplaceTextWithMarkerAtBeginning) {
186 DocumentMarkerListEditor::MarkerList markers;
187 markers.push_back(CreateMarker(0, 10));
188
189 DocumentMarkerListEditor::ShiftMarkersContentIndependent(&markers, 0, 15, 15);
190
191 EXPECT_EQ(0u, markers.size());
192 }
193
194 TEST_F(DocumentMarkerListEditorTest,
195 ContentDependentMarker_ReplaceTextWithMarkerAtEnd) {
196 DocumentMarkerListEditor::MarkerList markers;
197 markers.push_back(CreateMarker(5, 15));
198
199 DocumentMarkerListEditor::ShiftMarkersContentDependent(&markers, 0, 15, 15);
200
201 EXPECT_EQ(0u, markers.size());
202 }
203
204 TEST_F(DocumentMarkerListEditorTest,
205 ContentIndependentMarker_ReplaceTextWithMarkerAtEnd) {
206 DocumentMarkerListEditor::MarkerList markers;
207 markers.push_back(CreateMarker(5, 15));
208
209 DocumentMarkerListEditor::ShiftMarkersContentIndependent(&markers, 0, 15, 15);
210
211 EXPECT_EQ(0u, markers.size());
212 }
213
214 TEST_F(DocumentMarkerListEditorTest, ContentDependentMarker_Deletions) {
215 DocumentMarkerListEditor::MarkerList markers;
216 markers.push_back(CreateMarker(0, 5));
217 markers.push_back(CreateMarker(5, 10));
218 markers.push_back(CreateMarker(10, 15));
219 markers.push_back(CreateMarker(15, 20));
220 markers.push_back(CreateMarker(20, 25));
221
222 // Delete range containing the end of the second marker, the entire third
223 // marker, and the start of the fourth marker
224 DocumentMarkerListEditor::ShiftMarkersContentDependent(&markers, 8, 9, 0);
225
226 EXPECT_EQ(2u, markers.size());
227
228 EXPECT_EQ(0u, markers[0]->StartOffset());
229 EXPECT_EQ(5u, markers[0]->EndOffset());
230
231 EXPECT_EQ(11u, markers[1]->StartOffset());
232 EXPECT_EQ(16u, markers[1]->EndOffset());
233 }
234
235 TEST_F(DocumentMarkerListEditorTest, ContentIndependentMarker_Deletions) {
236 DocumentMarkerListEditor::MarkerList markers;
237 markers.push_back(CreateMarker(0, 5));
238 markers.push_back(CreateMarker(5, 10));
239 markers.push_back(CreateMarker(10, 15));
240 markers.push_back(CreateMarker(15, 20));
241 markers.push_back(CreateMarker(20, 25));
242
243 // Delete range containing the end of the second marker, the entire third
244 // marker, and the start of the fourth marker
245 DocumentMarkerListEditor::ShiftMarkersContentIndependent(&markers, 8, 9, 0);
246
247 EXPECT_EQ(4u, markers.size());
248
249 EXPECT_EQ(0u, markers[0]->StartOffset());
250 EXPECT_EQ(5u, markers[0]->EndOffset());
251
252 EXPECT_EQ(5u, markers[1]->StartOffset());
253 EXPECT_EQ(8u, markers[1]->EndOffset());
254
255 EXPECT_EQ(8u, markers[2]->StartOffset());
256 EXPECT_EQ(11u, markers[2]->EndOffset());
257
258 EXPECT_EQ(11u, markers[3]->StartOffset());
259 EXPECT_EQ(16u, markers[3]->EndOffset());
260 }
261
262 TEST_F(DocumentMarkerListEditorTest,
263 ContentDependentMarker_DeleteExactlyOnMarker) {
264 DocumentMarkerListEditor::MarkerList markers;
265 markers.push_back(CreateMarker(0, 10));
266
267 DocumentMarkerListEditor::ShiftMarkersContentDependent(&markers, 0, 10, 0);
268
269 EXPECT_EQ(0u, markers.size());
270 }
271
272 TEST_F(DocumentMarkerListEditorTest,
273 ContentIndependentMarker_DeleteExactlyOnMarker) {
274 DocumentMarkerListEditor::MarkerList markers;
275 markers.push_back(CreateMarker(0, 10));
276
277 DocumentMarkerListEditor::ShiftMarkersContentIndependent(&markers, 0, 10, 0);
278
279 EXPECT_EQ(0u, markers.size());
280 }
281
282 TEST_F(DocumentMarkerListEditorTest,
283 ContentDependentMarker_InsertInMarkerInterior) {
284 DocumentMarkerListEditor::MarkerList markers;
285 markers.push_back(CreateMarker(0, 5));
286 markers.push_back(CreateMarker(5, 10));
287 markers.push_back(CreateMarker(10, 15));
288
289 // insert in middle of second marker
290 DocumentMarkerListEditor::ShiftMarkersContentDependent(&markers, 7, 0, 5);
291
292 EXPECT_EQ(2u, markers.size());
293
294 EXPECT_EQ(0u, markers[0]->StartOffset());
295 EXPECT_EQ(5u, markers[0]->EndOffset());
296
297 EXPECT_EQ(15u, markers[1]->StartOffset());
298 EXPECT_EQ(20u, markers[1]->EndOffset());
299 }
300
301 TEST_F(DocumentMarkerListEditorTest,
302 ContentIndependentMarker_InsertInMarkerInterior) {
303 DocumentMarkerListEditor::MarkerList markers;
304 markers.push_back(CreateMarker(0, 5));
305 markers.push_back(CreateMarker(5, 10));
306 markers.push_back(CreateMarker(10, 15));
307
308 // insert in middle of second marker
309 DocumentMarkerListEditor::ShiftMarkersContentIndependent(&markers, 7, 0, 5);
310
311 EXPECT_EQ(3u, markers.size());
312
313 EXPECT_EQ(0u, markers[0]->StartOffset());
314 EXPECT_EQ(5u, markers[0]->EndOffset());
315
316 EXPECT_EQ(5u, markers[1]->StartOffset());
317 EXPECT_EQ(15u, markers[1]->EndOffset());
318
319 EXPECT_EQ(15u, markers[2]->StartOffset());
320 EXPECT_EQ(20u, markers[2]->EndOffset());
321 }
322
323 TEST_F(DocumentMarkerListEditorTest,
324 ContentDependentMarker_InsertBetweenMarkers) {
325 DocumentMarkerListEditor::MarkerList markers;
326 markers.push_back(CreateMarker(0, 5));
327 markers.push_back(CreateMarker(5, 10));
328 markers.push_back(CreateMarker(10, 15));
329
330 // insert before second marker
331 DocumentMarkerListEditor::ShiftMarkersContentDependent(&markers, 5, 0, 5);
332
333 EXPECT_EQ(3u, markers.size());
334
335 EXPECT_EQ(0u, markers[0]->StartOffset());
336 EXPECT_EQ(5u, markers[0]->EndOffset());
337
338 EXPECT_EQ(10u, markers[1]->StartOffset());
339 EXPECT_EQ(15u, markers[1]->EndOffset());
340
341 EXPECT_EQ(15u, markers[2]->StartOffset());
342 EXPECT_EQ(20u, markers[2]->EndOffset());
343 }
344
345 TEST_F(DocumentMarkerListEditorTest,
346 ContentIndependentMarker_InsertBetweenMarkers) {
347 DocumentMarkerListEditor::MarkerList markers;
348 markers.push_back(CreateMarker(0, 5));
349 markers.push_back(CreateMarker(5, 10));
350 markers.push_back(CreateMarker(10, 15));
351
352 // insert before second marker
353 DocumentMarkerListEditor::ShiftMarkersContentIndependent(&markers, 5, 0, 5);
354
355 EXPECT_EQ(3u, markers.size());
356
357 EXPECT_EQ(0u, markers[0]->StartOffset());
358 EXPECT_EQ(5u, markers[0]->EndOffset());
359
360 EXPECT_EQ(10u, markers[1]->StartOffset());
361 EXPECT_EQ(15u, markers[1]->EndOffset());
362
363 EXPECT_EQ(15u, markers[2]->StartOffset());
364 EXPECT_EQ(20u, markers[2]->EndOffset());
365 }
366
367 } // namespace blink
OLDNEW
« no previous file with comments | « third_party/WebKit/Source/core/editing/markers/DocumentMarkerListEditor.h ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698