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 "third_party/blink/renderer/core/editing/markers/unsorted_document_marker_list_editor.h"
6
7 #include "testing/gtest/include/gtest/gtest.h"
8 #include "third_party/blink/renderer/core/editing/markers/marker_test_utilities.h"
9 #include "third_party/blink/renderer/core/editing/markers/suggestion_marker.h"
10 #include "third_party/blink/renderer/core/editing/markers/suggestion_marker_list_impl.h"
11 #include "third_party/blink/renderer/core/editing/markers/suggestion_marker_properties.h"
12 #include "third_party/blink/renderer/platform/heap/persistent.h"
13
14 namespace blink {
15
16 class UnsortedDocumentMarkerListEditorTest : public testing::Test {
17 public:
UnsortedDocumentMarkerListEditorTest()18 UnsortedDocumentMarkerListEditorTest()
19 : marker_list_(
20 MakeGarbageCollected<HeapVector<Member<DocumentMarker>>>()) {}
21
22 protected:
CreateMarker(unsigned start_offset,unsigned end_offset)23 DocumentMarker* CreateMarker(unsigned start_offset, unsigned end_offset) {
24 return MakeGarbageCollected<SuggestionMarker>(start_offset, end_offset,
25 SuggestionMarkerProperties());
26 }
27
28 Persistent<HeapVector<Member<DocumentMarker>>> marker_list_;
29 };
30
TEST_F(UnsortedDocumentMarkerListEditorTest,MoveMarkers)31 TEST_F(UnsortedDocumentMarkerListEditorTest, MoveMarkers) {
32 marker_list_->push_back(CreateMarker(30, 40));
33 marker_list_->push_back(CreateMarker(0, 30));
34 marker_list_->push_back(CreateMarker(10, 40));
35 marker_list_->push_back(CreateMarker(0, 20));
36 marker_list_->push_back(CreateMarker(0, 40));
37 marker_list_->push_back(CreateMarker(20, 40));
38 marker_list_->push_back(CreateMarker(20, 30));
39 marker_list_->push_back(CreateMarker(0, 10));
40 marker_list_->push_back(CreateMarker(10, 30));
41 marker_list_->push_back(CreateMarker(10, 20));
42 marker_list_->push_back(CreateMarker(11, 21));
43
44 DocumentMarkerList* dst_list =
45 MakeGarbageCollected<SuggestionMarkerListImpl>();
46 // The markers with start and end offset < 11 should be moved to dst_list.
47 // Markers that start before 11 and end at 11 or later should be removed.
48 // Markers that start at 11 or later should not be moved.
49 UnsortedDocumentMarkerListEditor::MoveMarkers(marker_list_, 11, dst_list);
50
51 std::sort(marker_list_->begin(), marker_list_->end(), compare_markers);
52
53 EXPECT_EQ(4u, marker_list_->size());
54
55 EXPECT_EQ(11u, marker_list_->at(0)->StartOffset());
56 EXPECT_EQ(21u, marker_list_->at(0)->EndOffset());
57
58 EXPECT_EQ(20u, marker_list_->at(1)->StartOffset());
59 EXPECT_EQ(30u, marker_list_->at(1)->EndOffset());
60
61 EXPECT_EQ(20u, marker_list_->at(2)->StartOffset());
62 EXPECT_EQ(40u, marker_list_->at(2)->EndOffset());
63
64 EXPECT_EQ(30u, marker_list_->at(3)->StartOffset());
65 EXPECT_EQ(40u, marker_list_->at(3)->EndOffset());
66
67 DocumentMarkerVector dst_list_markers = dst_list->GetMarkers();
68 std::sort(dst_list_markers.begin(), dst_list_markers.end(), compare_markers);
69
70 // Markers
71 EXPECT_EQ(1u, dst_list_markers.size());
72
73 EXPECT_EQ(0u, dst_list_markers[0]->StartOffset());
74 EXPECT_EQ(10u, dst_list_markers[0]->EndOffset());
75 }
76
TEST_F(UnsortedDocumentMarkerListEditorTest,RemoveMarkersEmptyList)77 TEST_F(UnsortedDocumentMarkerListEditorTest, RemoveMarkersEmptyList) {
78 EXPECT_FALSE(
79 UnsortedDocumentMarkerListEditor::RemoveMarkers(marker_list_, 0, 10));
80 EXPECT_EQ(0u, marker_list_->size());
81 }
82
TEST_F(UnsortedDocumentMarkerListEditorTest,RemoveMarkersTouchingEndpoints)83 TEST_F(UnsortedDocumentMarkerListEditorTest, RemoveMarkersTouchingEndpoints) {
84 marker_list_->push_back(CreateMarker(30, 40));
85 marker_list_->push_back(CreateMarker(40, 50));
86 marker_list_->push_back(CreateMarker(10, 20));
87 marker_list_->push_back(CreateMarker(0, 10));
88 marker_list_->push_back(CreateMarker(20, 30));
89
90 EXPECT_TRUE(
91 UnsortedDocumentMarkerListEditor::RemoveMarkers(marker_list_, 20, 10));
92
93 std::sort(marker_list_->begin(), marker_list_->end(), compare_markers);
94
95 EXPECT_EQ(4u, marker_list_->size());
96
97 EXPECT_EQ(0u, marker_list_->at(0)->StartOffset());
98 EXPECT_EQ(10u, marker_list_->at(0)->EndOffset());
99
100 EXPECT_EQ(10u, marker_list_->at(1)->StartOffset());
101 EXPECT_EQ(20u, marker_list_->at(1)->EndOffset());
102
103 EXPECT_EQ(30u, marker_list_->at(2)->StartOffset());
104 EXPECT_EQ(40u, marker_list_->at(2)->EndOffset());
105
106 EXPECT_EQ(40u, marker_list_->at(3)->StartOffset());
107 EXPECT_EQ(50u, marker_list_->at(3)->EndOffset());
108 }
109
TEST_F(UnsortedDocumentMarkerListEditorTest,RemoveMarkersOneCharacterIntoInterior)110 TEST_F(UnsortedDocumentMarkerListEditorTest,
111 RemoveMarkersOneCharacterIntoInterior) {
112 marker_list_->push_back(CreateMarker(30, 40));
113 marker_list_->push_back(CreateMarker(40, 50));
114 marker_list_->push_back(CreateMarker(10, 20));
115 marker_list_->push_back(CreateMarker(0, 10));
116 marker_list_->push_back(CreateMarker(20, 30));
117
118 EXPECT_TRUE(
119 UnsortedDocumentMarkerListEditor::RemoveMarkers(marker_list_, 19, 12));
120
121 std::sort(marker_list_->begin(), marker_list_->end(), compare_markers);
122
123 EXPECT_EQ(2u, marker_list_->size());
124
125 EXPECT_EQ(0u, marker_list_->at(0)->StartOffset());
126 EXPECT_EQ(10u, marker_list_->at(0)->EndOffset());
127
128 EXPECT_EQ(40u, marker_list_->at(1)->StartOffset());
129 EXPECT_EQ(50u, marker_list_->at(1)->EndOffset());
130 }
131
TEST_F(UnsortedDocumentMarkerListEditorTest,ContentIndependentMarker_ReplaceStartOfMarker)132 TEST_F(UnsortedDocumentMarkerListEditorTest,
133 ContentIndependentMarker_ReplaceStartOfMarker) {
134 UnsortedDocumentMarkerListEditor::MarkerList markers;
135 markers.push_back(CreateMarker(0, 10));
136
137 // Replace with shorter text
138 UnsortedDocumentMarkerListEditor::ShiftMarkersContentIndependent(&markers, 0,
139 5, 4);
140
141 EXPECT_EQ(1u, markers.size());
142 EXPECT_EQ(0u, markers[0]->StartOffset());
143 EXPECT_EQ(9u, markers[0]->EndOffset());
144
145 // Replace with longer text
146 UnsortedDocumentMarkerListEditor::ShiftMarkersContentIndependent(&markers, 0,
147 4, 5);
148
149 EXPECT_EQ(1u, markers.size());
150 EXPECT_EQ(0u, markers[0]->StartOffset());
151 EXPECT_EQ(10u, markers[0]->EndOffset());
152
153 // Replace with text of same length
154 UnsortedDocumentMarkerListEditor::ShiftMarkersContentIndependent(&markers, 0,
155 5, 5);
156
157 EXPECT_EQ(1u, markers.size());
158 EXPECT_EQ(0u, markers[0]->StartOffset());
159 EXPECT_EQ(10u, markers[0]->EndOffset());
160 }
161
TEST_F(UnsortedDocumentMarkerListEditorTest,ContentIndependentMarker_ReplaceContainsStartOfMarker)162 TEST_F(UnsortedDocumentMarkerListEditorTest,
163 ContentIndependentMarker_ReplaceContainsStartOfMarker) {
164 UnsortedDocumentMarkerListEditor::MarkerList markers;
165 markers.push_back(CreateMarker(5, 15));
166
167 UnsortedDocumentMarkerListEditor::ShiftMarkersContentIndependent(&markers, 0,
168 10, 10);
169
170 EXPECT_EQ(1u, markers.size());
171 EXPECT_EQ(10u, markers[0]->StartOffset());
172 EXPECT_EQ(15u, markers[0]->EndOffset());
173 }
174
TEST_F(UnsortedDocumentMarkerListEditorTest,ContentIndependentMarker_ReplaceEndOfMarker)175 TEST_F(UnsortedDocumentMarkerListEditorTest,
176 ContentIndependentMarker_ReplaceEndOfMarker) {
177 UnsortedDocumentMarkerListEditor::MarkerList markers;
178 markers.push_back(CreateMarker(0, 10));
179
180 // Replace with shorter text
181 UnsortedDocumentMarkerListEditor::ShiftMarkersContentIndependent(&markers, 5,
182 5, 4);
183
184 EXPECT_EQ(1u, markers.size());
185 EXPECT_EQ(0u, markers[0]->StartOffset());
186 EXPECT_EQ(9u, markers[0]->EndOffset());
187
188 // Replace with longer text
189 UnsortedDocumentMarkerListEditor::ShiftMarkersContentIndependent(&markers, 5,
190 4, 5);
191
192 EXPECT_EQ(1u, markers.size());
193 EXPECT_EQ(0u, markers[0]->StartOffset());
194 EXPECT_EQ(10u, markers[0]->EndOffset());
195
196 // Replace with text of same length
197 UnsortedDocumentMarkerListEditor::ShiftMarkersContentIndependent(&markers, 5,
198 5, 5);
199
200 EXPECT_EQ(1u, markers.size());
201 EXPECT_EQ(0u, markers[0]->StartOffset());
202 EXPECT_EQ(10u, markers[0]->EndOffset());
203 }
204
TEST_F(UnsortedDocumentMarkerListEditorTest,ContentIndependentMarker_ReplaceContainsEndOfMarker)205 TEST_F(UnsortedDocumentMarkerListEditorTest,
206 ContentIndependentMarker_ReplaceContainsEndOfMarker) {
207 UnsortedDocumentMarkerListEditor::MarkerList markers;
208 markers.push_back(CreateMarker(0, 10));
209
210 UnsortedDocumentMarkerListEditor::ShiftMarkersContentIndependent(&markers, 5,
211 10, 10);
212
213 EXPECT_EQ(1u, markers.size());
214 EXPECT_EQ(0u, markers[0]->StartOffset());
215 EXPECT_EQ(5u, markers[0]->EndOffset());
216 }
217
TEST_F(UnsortedDocumentMarkerListEditorTest,ContentIndependentMarker_ReplaceEntireMarker)218 TEST_F(UnsortedDocumentMarkerListEditorTest,
219 ContentIndependentMarker_ReplaceEntireMarker) {
220 UnsortedDocumentMarkerListEditor::MarkerList markers;
221 markers.push_back(CreateMarker(0, 10));
222
223 // Replace with shorter text
224 UnsortedDocumentMarkerListEditor::ShiftMarkersContentIndependent(&markers, 0,
225 10, 9);
226
227 EXPECT_EQ(1u, markers.size());
228 EXPECT_EQ(0u, markers[0]->StartOffset());
229 EXPECT_EQ(9u, markers[0]->EndOffset());
230
231 // Replace with longer text
232 UnsortedDocumentMarkerListEditor::ShiftMarkersContentIndependent(&markers, 0,
233 9, 10);
234
235 EXPECT_EQ(1u, markers.size());
236 EXPECT_EQ(0u, markers[0]->StartOffset());
237 EXPECT_EQ(10u, markers[0]->EndOffset());
238
239 // Replace with text of same length
240 UnsortedDocumentMarkerListEditor::ShiftMarkersContentIndependent(&markers, 0,
241 10, 10);
242
243 EXPECT_EQ(1u, markers.size());
244 EXPECT_EQ(0u, markers[0]->StartOffset());
245 EXPECT_EQ(10u, markers[0]->EndOffset());
246 }
247
TEST_F(UnsortedDocumentMarkerListEditorTest,ContentIndependentMarker_ReplaceTextWithMarkerAtBeginning)248 TEST_F(UnsortedDocumentMarkerListEditorTest,
249 ContentIndependentMarker_ReplaceTextWithMarkerAtBeginning) {
250 UnsortedDocumentMarkerListEditor::MarkerList markers;
251 markers.push_back(CreateMarker(0, 10));
252
253 UnsortedDocumentMarkerListEditor::ShiftMarkersContentIndependent(&markers, 0,
254 15, 15);
255
256 EXPECT_EQ(0u, markers.size());
257 }
258
TEST_F(UnsortedDocumentMarkerListEditorTest,ContentIndependentMarker_ReplaceTextWithMarkerAtEnd)259 TEST_F(UnsortedDocumentMarkerListEditorTest,
260 ContentIndependentMarker_ReplaceTextWithMarkerAtEnd) {
261 UnsortedDocumentMarkerListEditor::MarkerList markers;
262 markers.push_back(CreateMarker(5, 15));
263
264 UnsortedDocumentMarkerListEditor::ShiftMarkersContentIndependent(&markers, 0,
265 15, 15);
266
267 EXPECT_EQ(0u, markers.size());
268 }
269
TEST_F(UnsortedDocumentMarkerListEditorTest,ContentIndependentMarker_Deletions)270 TEST_F(UnsortedDocumentMarkerListEditorTest,
271 ContentIndependentMarker_Deletions) {
272 UnsortedDocumentMarkerListEditor::MarkerList markers;
273 markers.push_back(CreateMarker(0, 5));
274 markers.push_back(CreateMarker(5, 10));
275 markers.push_back(CreateMarker(10, 15));
276 markers.push_back(CreateMarker(15, 20));
277 markers.push_back(CreateMarker(20, 25));
278
279 // Delete range containing the end of the second marker, the entire third
280 // marker, and the start of the fourth marker
281 UnsortedDocumentMarkerListEditor::ShiftMarkersContentIndependent(&markers, 8,
282 9, 0);
283
284 EXPECT_EQ(4u, markers.size());
285
286 EXPECT_EQ(0u, markers[0]->StartOffset());
287 EXPECT_EQ(5u, markers[0]->EndOffset());
288
289 EXPECT_EQ(5u, markers[1]->StartOffset());
290 EXPECT_EQ(8u, markers[1]->EndOffset());
291
292 EXPECT_EQ(8u, markers[2]->StartOffset());
293 EXPECT_EQ(11u, markers[2]->EndOffset());
294
295 EXPECT_EQ(11u, markers[3]->StartOffset());
296 EXPECT_EQ(16u, markers[3]->EndOffset());
297 }
298
TEST_F(UnsortedDocumentMarkerListEditorTest,ContentIndependentMarker_DeleteExactlyOnMarker)299 TEST_F(UnsortedDocumentMarkerListEditorTest,
300 ContentIndependentMarker_DeleteExactlyOnMarker) {
301 UnsortedDocumentMarkerListEditor::MarkerList markers;
302 markers.push_back(CreateMarker(0, 10));
303
304 UnsortedDocumentMarkerListEditor::ShiftMarkersContentIndependent(&markers, 0,
305 10, 0);
306
307 EXPECT_EQ(0u, markers.size());
308 }
309
TEST_F(UnsortedDocumentMarkerListEditorTest,ContentIndependentMarker_InsertInMarkerInterior)310 TEST_F(UnsortedDocumentMarkerListEditorTest,
311 ContentIndependentMarker_InsertInMarkerInterior) {
312 UnsortedDocumentMarkerListEditor::MarkerList markers;
313 markers.push_back(CreateMarker(0, 5));
314 markers.push_back(CreateMarker(5, 10));
315 markers.push_back(CreateMarker(10, 15));
316
317 // insert in middle of second marker
318 UnsortedDocumentMarkerListEditor::ShiftMarkersContentIndependent(&markers, 7,
319 0, 5);
320
321 EXPECT_EQ(3u, markers.size());
322
323 EXPECT_EQ(0u, markers[0]->StartOffset());
324 EXPECT_EQ(5u, markers[0]->EndOffset());
325
326 EXPECT_EQ(5u, markers[1]->StartOffset());
327 EXPECT_EQ(15u, markers[1]->EndOffset());
328
329 EXPECT_EQ(15u, markers[2]->StartOffset());
330 EXPECT_EQ(20u, markers[2]->EndOffset());
331 }
332
TEST_F(UnsortedDocumentMarkerListEditorTest,ContentIndependentMarker_InsertBetweenMarkers)333 TEST_F(UnsortedDocumentMarkerListEditorTest,
334 ContentIndependentMarker_InsertBetweenMarkers) {
335 UnsortedDocumentMarkerListEditor::MarkerList markers;
336 markers.push_back(CreateMarker(0, 5));
337 markers.push_back(CreateMarker(5, 10));
338 markers.push_back(CreateMarker(10, 15));
339
340 // insert before second marker
341 UnsortedDocumentMarkerListEditor::ShiftMarkersContentIndependent(&markers, 5,
342 0, 5);
343
344 EXPECT_EQ(3u, markers.size());
345
346 EXPECT_EQ(0u, markers[0]->StartOffset());
347 EXPECT_EQ(5u, markers[0]->EndOffset());
348
349 EXPECT_EQ(10u, markers[1]->StartOffset());
350 EXPECT_EQ(15u, markers[1]->EndOffset());
351
352 EXPECT_EQ(15u, markers[2]->StartOffset());
353 EXPECT_EQ(20u, markers[2]->EndOffset());
354 }
355
TEST_F(UnsortedDocumentMarkerListEditorTest,FirstMarkerIntersectingRange_Empty)356 TEST_F(UnsortedDocumentMarkerListEditorTest,
357 FirstMarkerIntersectingRange_Empty) {
358 DocumentMarker* marker =
359 UnsortedDocumentMarkerListEditor::FirstMarkerIntersectingRange(
360 *marker_list_, 0, 10);
361 EXPECT_EQ(nullptr, marker);
362 }
363
TEST_F(UnsortedDocumentMarkerListEditorTest,FirstMarkerIntersectingRange_RangeContainingNoMarkers)364 TEST_F(UnsortedDocumentMarkerListEditorTest,
365 FirstMarkerIntersectingRange_RangeContainingNoMarkers) {
366 UnsortedDocumentMarkerListEditor::MarkerList markers;
367 markers.push_back(CreateMarker(0, 5));
368 DocumentMarker* marker =
369 UnsortedDocumentMarkerListEditor::FirstMarkerIntersectingRange(markers, 5,
370 15);
371 EXPECT_EQ(nullptr, marker);
372 }
373
TEST_F(UnsortedDocumentMarkerListEditorTest,FirstMarkerIntersectingRange_TouchingStart)374 TEST_F(UnsortedDocumentMarkerListEditorTest,
375 FirstMarkerIntersectingRange_TouchingStart) {
376 marker_list_->push_back(CreateMarker(1, 10));
377 marker_list_->push_back(CreateMarker(0, 10));
378
379 DocumentMarker* marker =
380 UnsortedDocumentMarkerListEditor::FirstMarkerIntersectingRange(
381 *marker_list_, 0, 1);
382
383 EXPECT_NE(nullptr, marker);
384 EXPECT_EQ(0u, marker->StartOffset());
385 EXPECT_EQ(10u, marker->EndOffset());
386 }
387
TEST_F(UnsortedDocumentMarkerListEditorTest,FirstMarkerIntersectingRange_TouchingEnd)388 TEST_F(UnsortedDocumentMarkerListEditorTest,
389 FirstMarkerIntersectingRange_TouchingEnd) {
390 marker_list_->push_back(CreateMarker(0, 9));
391 marker_list_->push_back(CreateMarker(0, 10));
392
393 DocumentMarker* marker =
394 UnsortedDocumentMarkerListEditor::FirstMarkerIntersectingRange(
395 *marker_list_, 9, 10);
396
397 EXPECT_NE(nullptr, marker);
398 EXPECT_EQ(0u, marker->StartOffset());
399 EXPECT_EQ(10u, marker->EndOffset());
400 }
401
TEST_F(UnsortedDocumentMarkerListEditorTest,FirstMarkerIntersectingRange_CollapsedRange)402 TEST_F(UnsortedDocumentMarkerListEditorTest,
403 FirstMarkerIntersectingRange_CollapsedRange) {
404 marker_list_->push_back(CreateMarker(5, 10));
405
406 DocumentMarker* marker =
407 UnsortedDocumentMarkerListEditor::FirstMarkerIntersectingRange(
408 *marker_list_, 7, 7);
409
410 EXPECT_NE(nullptr, marker);
411 EXPECT_EQ(5u, marker->StartOffset());
412 EXPECT_EQ(10u, marker->EndOffset());
413 }
414
TEST_F(UnsortedDocumentMarkerListEditorTest,MarkersIntersectingRange_RangeContainingNoMarkers)415 TEST_F(UnsortedDocumentMarkerListEditorTest,
416 MarkersIntersectingRange_RangeContainingNoMarkers) {
417 UnsortedDocumentMarkerListEditor::MarkerList markers;
418 markers.push_back(CreateMarker(0, 10));
419
420 UnsortedDocumentMarkerListEditor::MarkerList markers_intersecting_range =
421 UnsortedDocumentMarkerListEditor::MarkersIntersectingRange(markers, 10,
422 15);
423 EXPECT_EQ(0u, markers_intersecting_range.size());
424 }
425
TEST_F(UnsortedDocumentMarkerListEditorTest,MarkersIntersectingRange_TouchingStart)426 TEST_F(UnsortedDocumentMarkerListEditorTest,
427 MarkersIntersectingRange_TouchingStart) {
428 marker_list_->push_back(CreateMarker(0, 9));
429 marker_list_->push_back(CreateMarker(1, 9));
430 marker_list_->push_back(CreateMarker(0, 10));
431 marker_list_->push_back(CreateMarker(1, 10));
432
433 UnsortedDocumentMarkerListEditor::MarkerList markers_intersecting_range =
434 UnsortedDocumentMarkerListEditor::MarkersIntersectingRange(*marker_list_,
435 0, 1);
436
437 EXPECT_EQ(2u, markers_intersecting_range.size());
438
439 EXPECT_EQ(0u, markers_intersecting_range[0]->StartOffset());
440 EXPECT_EQ(9u, markers_intersecting_range[0]->EndOffset());
441
442 EXPECT_EQ(0u, markers_intersecting_range[1]->StartOffset());
443 EXPECT_EQ(10u, markers_intersecting_range[1]->EndOffset());
444 }
445
TEST_F(UnsortedDocumentMarkerListEditorTest,MarkersIntersectingRange_TouchingEnd)446 TEST_F(UnsortedDocumentMarkerListEditorTest,
447 MarkersIntersectingRange_TouchingEnd) {
448 marker_list_->push_back(CreateMarker(0, 9));
449 marker_list_->push_back(CreateMarker(1, 9));
450 marker_list_->push_back(CreateMarker(0, 10));
451 marker_list_->push_back(CreateMarker(1, 10));
452
453 UnsortedDocumentMarkerListEditor::MarkerList markers_intersecting_range =
454 UnsortedDocumentMarkerListEditor::MarkersIntersectingRange(*marker_list_,
455 9, 10);
456
457 EXPECT_EQ(2u, markers_intersecting_range.size());
458
459 EXPECT_EQ(0u, markers_intersecting_range[0]->StartOffset());
460 EXPECT_EQ(10u, markers_intersecting_range[0]->EndOffset());
461
462 EXPECT_EQ(1u, markers_intersecting_range[1]->StartOffset());
463 EXPECT_EQ(10u, markers_intersecting_range[1]->EndOffset());
464 }
465
TEST_F(UnsortedDocumentMarkerListEditorTest,MarkersIntersectingRange_CollapsedRange)466 TEST_F(UnsortedDocumentMarkerListEditorTest,
467 MarkersIntersectingRange_CollapsedRange) {
468 UnsortedDocumentMarkerListEditor::MarkerList markers;
469 markers.push_back(CreateMarker(5, 10));
470
471 UnsortedDocumentMarkerListEditor::MarkerList markers_intersecting_range =
472 UnsortedDocumentMarkerListEditor::MarkersIntersectingRange(markers, 7, 7);
473 EXPECT_EQ(1u, markers_intersecting_range.size());
474
475 EXPECT_EQ(5u, markers_intersecting_range[0]->StartOffset());
476 EXPECT_EQ(10u, markers_intersecting_range[0]->EndOffset());
477 }
478
479 } // namespace blink
480