OLD | NEW |
---|---|
(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/DocumentMarkerList.h" | |
6 | |
7 #include "platform/heap/Handle.h" | |
8 #include "testing/gtest/include/gtest/gtest.h" | |
9 | |
10 namespace blink { | |
11 | |
12 class DocumentMarkerListForTesting : public DocumentMarkerList { | |
Xiaocheng
2017/03/25 00:05:35
This is not dummy enough. Let's have:
class DMLFo
| |
13 public: | |
14 DocumentMarkerListForTesting() : m_markersAreSorted(true) {} | |
15 | |
16 DocumentMarker::MarkerType allowedMarkerType() const final { | |
17 return DocumentMarker::Composition; | |
18 } | |
19 | |
20 void push_back(DocumentMarker* marker) final { | |
21 if (!m_markers.isEmpty() && | |
22 m_markers.back()->endOffset() > marker->startOffset()) | |
23 m_markersAreSorted = false; | |
24 | |
25 m_markers.push_back(marker); | |
26 } | |
27 | |
28 void clear() final { | |
29 m_markersAreSorted = true; | |
30 DocumentMarkerList::clear(); | |
31 } | |
32 | |
33 protected: | |
34 bool markerListIsSorted() const final { return m_markersAreSorted; } | |
35 | |
36 private: | |
37 bool m_markersAreSorted; | |
38 }; | |
39 | |
40 class DocumentMarkerListTest : public ::testing::Test { | |
41 protected: | |
42 DocumentMarkerListTest() : m_markerList(new DocumentMarkerListForTesting()) {} | |
43 | |
44 DocumentMarker* createMarker(unsigned startOffset, unsigned endOffset) { | |
45 return new DocumentMarker(startOffset, endOffset, Color::black, false, | |
46 Color::black); | |
47 } | |
48 | |
49 Persistent<DocumentMarkerListForTesting> m_markerList; | |
50 }; | |
51 | |
52 TEST_F(DocumentMarkerListTest, | |
53 RemoveMarkersSortedDoRemovePartiallyOverlapping) { | |
54 m_markerList->push_back(createMarker(0, 5)); | |
55 m_markerList->push_back(createMarker(10, 15)); | |
56 m_markerList->push_back(createMarker(20, 25)); | |
57 m_markerList->push_back(createMarker(30, 35)); | |
58 m_markerList->push_back(createMarker(40, 45)); | |
59 | |
60 EXPECT_EQ(5u, m_markerList->size()); | |
61 | |
62 bool didRemoveMarker = false; | |
63 | |
64 // test no-op remove | |
65 m_markerList->removeMarkers(100, 100, true, &didRemoveMarker); | |
66 EXPECT_EQ(didRemoveMarker, false); | |
67 EXPECT_EQ(5u, m_markerList->size()); | |
68 | |
69 // remove middle marker | |
70 m_markerList->removeMarkers(20, 2, true, &didRemoveMarker); | |
71 EXPECT_EQ(didRemoveMarker, true); | |
72 EXPECT_EQ(4u, m_markerList->size()); | |
73 | |
74 EXPECT_EQ(0u, m_markerList->at(0)->startOffset()); | |
75 EXPECT_EQ(5u, m_markerList->at(0)->endOffset()); | |
76 | |
77 EXPECT_EQ(10u, m_markerList->at(1)->startOffset()); | |
78 EXPECT_EQ(15u, m_markerList->at(1)->endOffset()); | |
79 | |
80 EXPECT_EQ(30u, m_markerList->at(2)->startOffset()); | |
81 EXPECT_EQ(35u, m_markerList->at(2)->endOffset()); | |
82 | |
83 EXPECT_EQ(40u, m_markerList->at(3)->startOffset()); | |
84 EXPECT_EQ(45u, m_markerList->at(3)->endOffset()); | |
85 | |
86 // remove middle two markers | |
87 didRemoveMarker = false; | |
88 m_markerList->removeMarkers(13, 19, true, &didRemoveMarker); | |
89 EXPECT_EQ(didRemoveMarker, true); | |
90 EXPECT_EQ(2u, m_markerList->size()); | |
91 | |
92 EXPECT_EQ(0u, m_markerList->at(0)->startOffset()); | |
93 EXPECT_EQ(5u, m_markerList->at(0)->endOffset()); | |
94 | |
95 EXPECT_EQ(40u, m_markerList->at(1)->startOffset()); | |
96 EXPECT_EQ(45u, m_markerList->at(1)->endOffset()); | |
97 } | |
98 | |
99 TEST_F(DocumentMarkerListTest, | |
100 RemoveMarkersUnsortedDoRemovePartiallyOverlapping) { | |
101 m_markerList->push_back(createMarker(40, 45)); | |
102 m_markerList->push_back(createMarker(30, 35)); | |
103 m_markerList->push_back(createMarker(20, 25)); | |
104 m_markerList->push_back(createMarker(10, 15)); | |
105 m_markerList->push_back(createMarker(0, 5)); | |
106 | |
107 EXPECT_EQ(5u, m_markerList->size()); | |
108 | |
109 bool didRemoveMarker = false; | |
110 | |
111 // test no-op remove | |
112 m_markerList->removeMarkers(100, 100, true, &didRemoveMarker); | |
113 EXPECT_EQ(didRemoveMarker, false); | |
114 EXPECT_EQ(5u, m_markerList->size()); | |
115 | |
116 // remove middle marker | |
117 m_markerList->removeMarkers(20, 2, true, &didRemoveMarker); | |
118 EXPECT_EQ(didRemoveMarker, true); | |
119 EXPECT_EQ(4u, m_markerList->size()); | |
120 | |
121 EXPECT_EQ(40u, m_markerList->at(0)->startOffset()); | |
122 EXPECT_EQ(45u, m_markerList->at(0)->endOffset()); | |
123 | |
124 EXPECT_EQ(30u, m_markerList->at(1)->startOffset()); | |
125 EXPECT_EQ(35u, m_markerList->at(1)->endOffset()); | |
126 | |
127 EXPECT_EQ(10u, m_markerList->at(2)->startOffset()); | |
128 EXPECT_EQ(15u, m_markerList->at(2)->endOffset()); | |
129 | |
130 EXPECT_EQ(0u, m_markerList->at(3)->startOffset()); | |
131 EXPECT_EQ(5u, m_markerList->at(3)->endOffset()); | |
132 | |
133 // remove middle two markers | |
134 didRemoveMarker = false; | |
135 m_markerList->removeMarkers(13, 19, true, &didRemoveMarker); | |
136 EXPECT_EQ(didRemoveMarker, true); | |
137 EXPECT_EQ(2u, m_markerList->size()); | |
138 | |
139 EXPECT_EQ(40u, m_markerList->at(0)->startOffset()); | |
140 EXPECT_EQ(45u, m_markerList->at(0)->endOffset()); | |
141 | |
142 EXPECT_EQ(0u, m_markerList->at(1)->startOffset()); | |
143 EXPECT_EQ(5u, m_markerList->at(1)->endOffset()); | |
144 } | |
145 | |
146 TEST_F(DocumentMarkerListTest, | |
147 RemoveMarkersSortedDontRemovePartiallyOverlapping) { | |
148 m_markerList->push_back(createMarker(0, 5)); | |
149 m_markerList->push_back(createMarker(10, 15)); | |
150 m_markerList->push_back(createMarker(20, 25)); | |
151 m_markerList->push_back(createMarker(30, 35)); | |
152 m_markerList->push_back(createMarker(40, 45)); | |
153 | |
154 EXPECT_EQ(5u, m_markerList->size()); | |
155 | |
156 bool didRemoveMarker = false; | |
157 | |
158 // test no-op remove | |
159 m_markerList->removeMarkers(100, 100, false, &didRemoveMarker); | |
160 EXPECT_EQ(didRemoveMarker, false); | |
161 EXPECT_EQ(5u, m_markerList->size()); | |
162 | |
163 // remove chunk from beginning of middle marker | |
164 m_markerList->removeMarkers(20, 2, false, &didRemoveMarker); | |
165 EXPECT_EQ(didRemoveMarker, true); | |
166 EXPECT_EQ(5u, m_markerList->size()); | |
167 | |
168 EXPECT_EQ(0u, m_markerList->at(0)->startOffset()); | |
169 EXPECT_EQ(5u, m_markerList->at(0)->endOffset()); | |
170 | |
171 EXPECT_EQ(10u, m_markerList->at(1)->startOffset()); | |
172 EXPECT_EQ(15u, m_markerList->at(1)->endOffset()); | |
173 | |
174 EXPECT_EQ(22u, m_markerList->at(2)->startOffset()); | |
175 EXPECT_EQ(25u, m_markerList->at(2)->endOffset()); | |
176 | |
177 EXPECT_EQ(30u, m_markerList->at(3)->startOffset()); | |
178 EXPECT_EQ(35u, m_markerList->at(3)->endOffset()); | |
179 | |
180 EXPECT_EQ(40u, m_markerList->at(4)->startOffset()); | |
181 EXPECT_EQ(45u, m_markerList->at(4)->endOffset()); | |
182 | |
183 // remove chunk from end of second marker | |
184 didRemoveMarker = false; | |
185 m_markerList->removeMarkers(13, 2, false, &didRemoveMarker); | |
186 EXPECT_EQ(didRemoveMarker, true); | |
187 EXPECT_EQ(5u, m_markerList->size()); | |
188 | |
189 EXPECT_EQ(0u, m_markerList->at(0)->startOffset()); | |
190 EXPECT_EQ(5u, m_markerList->at(0)->endOffset()); | |
191 | |
192 EXPECT_EQ(10u, m_markerList->at(1)->startOffset()); | |
193 EXPECT_EQ(13u, m_markerList->at(1)->endOffset()); | |
194 | |
195 EXPECT_EQ(22u, m_markerList->at(2)->startOffset()); | |
196 EXPECT_EQ(25u, m_markerList->at(2)->endOffset()); | |
197 | |
198 EXPECT_EQ(30u, m_markerList->at(3)->startOffset()); | |
199 EXPECT_EQ(35u, m_markerList->at(3)->endOffset()); | |
200 | |
201 EXPECT_EQ(40u, m_markerList->at(4)->startOffset()); | |
202 EXPECT_EQ(45u, m_markerList->at(4)->endOffset()); | |
203 | |
204 // remove chunk from middle of fourth marker | |
205 didRemoveMarker = false; | |
206 m_markerList->removeMarkers(31, 1, false, &didRemoveMarker); | |
207 EXPECT_EQ(didRemoveMarker, true); | |
208 EXPECT_EQ(6u, m_markerList->size()); | |
209 | |
210 EXPECT_EQ(0u, m_markerList->at(0)->startOffset()); | |
211 EXPECT_EQ(5u, m_markerList->at(0)->endOffset()); | |
212 | |
213 EXPECT_EQ(10u, m_markerList->at(1)->startOffset()); | |
214 EXPECT_EQ(13u, m_markerList->at(1)->endOffset()); | |
215 | |
216 EXPECT_EQ(22u, m_markerList->at(2)->startOffset()); | |
217 EXPECT_EQ(25u, m_markerList->at(2)->endOffset()); | |
218 | |
219 EXPECT_EQ(30u, m_markerList->at(3)->startOffset()); | |
220 EXPECT_EQ(31u, m_markerList->at(3)->endOffset()); | |
221 | |
222 EXPECT_EQ(32u, m_markerList->at(4)->startOffset()); | |
223 EXPECT_EQ(35u, m_markerList->at(4)->endOffset()); | |
224 | |
225 EXPECT_EQ(40u, m_markerList->at(5)->startOffset()); | |
226 EXPECT_EQ(45u, m_markerList->at(5)->endOffset()); | |
227 | |
228 // remove middle four markers | |
229 didRemoveMarker = false; | |
230 m_markerList->removeMarkers(10, 25, false, &didRemoveMarker); | |
231 EXPECT_EQ(didRemoveMarker, true); | |
232 EXPECT_EQ(2u, m_markerList->size()); | |
233 | |
234 EXPECT_EQ(0u, m_markerList->at(0)->startOffset()); | |
235 EXPECT_EQ(5u, m_markerList->at(0)->endOffset()); | |
236 | |
237 EXPECT_EQ(40u, m_markerList->at(1)->startOffset()); | |
238 EXPECT_EQ(45u, m_markerList->at(1)->endOffset()); | |
239 } | |
240 | |
241 TEST_F(DocumentMarkerListTest, | |
242 RemoveMarkersUnsortedDontRemovePartiallyOverlapping) { | |
243 m_markerList->push_back(createMarker(40, 45)); | |
244 m_markerList->push_back(createMarker(30, 35)); | |
245 m_markerList->push_back(createMarker(20, 25)); | |
246 m_markerList->push_back(createMarker(10, 15)); | |
247 m_markerList->push_back(createMarker(0, 5)); | |
248 | |
249 EXPECT_EQ(5u, m_markerList->size()); | |
250 | |
251 bool didRemoveMarker = false; | |
252 | |
253 // test no-op remove | |
254 m_markerList->removeMarkers(100, 100, false, &didRemoveMarker); | |
255 EXPECT_EQ(didRemoveMarker, false); | |
256 EXPECT_EQ(5u, m_markerList->size()); | |
257 | |
258 // remove chunk from beginning of middle marker | |
259 m_markerList->removeMarkers(20, 2, false, &didRemoveMarker); | |
260 EXPECT_EQ(didRemoveMarker, true); | |
261 EXPECT_EQ(5u, m_markerList->size()); | |
262 | |
263 EXPECT_EQ(40u, m_markerList->at(0)->startOffset()); | |
264 EXPECT_EQ(45u, m_markerList->at(0)->endOffset()); | |
265 | |
266 EXPECT_EQ(30u, m_markerList->at(1)->startOffset()); | |
267 EXPECT_EQ(35u, m_markerList->at(1)->endOffset()); | |
268 | |
269 EXPECT_EQ(10u, m_markerList->at(2)->startOffset()); | |
270 EXPECT_EQ(15u, m_markerList->at(2)->endOffset()); | |
271 | |
272 EXPECT_EQ(0u, m_markerList->at(3)->startOffset()); | |
273 EXPECT_EQ(5u, m_markerList->at(3)->endOffset()); | |
274 | |
275 EXPECT_EQ(22u, m_markerList->at(4)->startOffset()); | |
276 EXPECT_EQ(25u, m_markerList->at(4)->endOffset()); | |
277 | |
278 // remove chunk from end of middle marker | |
279 didRemoveMarker = false; | |
280 m_markerList->removeMarkers(13, 2, false, &didRemoveMarker); | |
281 EXPECT_EQ(didRemoveMarker, true); | |
282 EXPECT_EQ(5u, m_markerList->size()); | |
283 | |
284 EXPECT_EQ(40u, m_markerList->at(0)->startOffset()); | |
285 EXPECT_EQ(45u, m_markerList->at(0)->endOffset()); | |
286 | |
287 EXPECT_EQ(30u, m_markerList->at(1)->startOffset()); | |
288 EXPECT_EQ(35u, m_markerList->at(1)->endOffset()); | |
289 | |
290 EXPECT_EQ(0u, m_markerList->at(2)->startOffset()); | |
291 EXPECT_EQ(5u, m_markerList->at(2)->endOffset()); | |
292 | |
293 EXPECT_EQ(22u, m_markerList->at(3)->startOffset()); | |
294 EXPECT_EQ(25u, m_markerList->at(3)->endOffset()); | |
295 | |
296 EXPECT_EQ(10u, m_markerList->at(4)->startOffset()); | |
297 EXPECT_EQ(13u, m_markerList->at(4)->endOffset()); | |
298 | |
299 // remove chunk from middle of second marker | |
300 didRemoveMarker = false; | |
301 m_markerList->removeMarkers(31, 1, false, &didRemoveMarker); | |
302 EXPECT_EQ(didRemoveMarker, true); | |
303 EXPECT_EQ(6u, m_markerList->size()); | |
304 | |
305 EXPECT_EQ(40u, m_markerList->at(0)->startOffset()); | |
306 EXPECT_EQ(45u, m_markerList->at(0)->endOffset()); | |
307 | |
308 EXPECT_EQ(0u, m_markerList->at(1)->startOffset()); | |
309 EXPECT_EQ(5u, m_markerList->at(1)->endOffset()); | |
310 | |
311 EXPECT_EQ(22u, m_markerList->at(2)->startOffset()); | |
312 EXPECT_EQ(25u, m_markerList->at(2)->endOffset()); | |
313 | |
314 EXPECT_EQ(10u, m_markerList->at(3)->startOffset()); | |
315 EXPECT_EQ(13u, m_markerList->at(3)->endOffset()); | |
316 | |
317 EXPECT_EQ(30u, m_markerList->at(4)->startOffset()); | |
318 EXPECT_EQ(31u, m_markerList->at(4)->endOffset()); | |
319 | |
320 EXPECT_EQ(32u, m_markerList->at(5)->startOffset()); | |
321 EXPECT_EQ(35u, m_markerList->at(5)->endOffset()); | |
322 | |
323 // remove all markers except 0 to 5 and 40 to 45 | |
324 didRemoveMarker = false; | |
325 m_markerList->removeMarkers(5, 35, false, &didRemoveMarker); | |
326 EXPECT_EQ(didRemoveMarker, true); | |
327 EXPECT_EQ(2u, m_markerList->size()); | |
328 | |
329 EXPECT_EQ(40u, m_markerList->at(0)->startOffset()); | |
330 EXPECT_EQ(45u, m_markerList->at(0)->endOffset()); | |
331 | |
332 EXPECT_EQ(0u, m_markerList->at(1)->startOffset()); | |
333 EXPECT_EQ(5u, m_markerList->at(1)->endOffset()); | |
334 } | |
335 | |
336 TEST_F(DocumentMarkerListTest, ShiftMarkersDeletions) { | |
337 m_markerList->push_back(createMarker(0, 5)); | |
338 m_markerList->push_back(createMarker(10, 15)); | |
339 m_markerList->push_back(createMarker(20, 25)); | |
340 m_markerList->push_back(createMarker(30, 35)); | |
341 m_markerList->push_back(createMarker(40, 45)); | |
342 // delete end of second marker, entirety of third marker, and start of fourth | |
343 // marker | |
344 m_markerList->shiftMarkers(13, 19, 0); | |
345 | |
346 EXPECT_EQ(4u, m_markerList->size()); | |
347 | |
348 EXPECT_EQ(0u, m_markerList->at(0)->startOffset()); | |
349 EXPECT_EQ(5u, m_markerList->at(0)->endOffset()); | |
350 | |
351 EXPECT_EQ(10u, m_markerList->at(1)->startOffset()); | |
352 EXPECT_EQ(13u, m_markerList->at(1)->endOffset()); | |
353 | |
354 EXPECT_EQ(13u, m_markerList->at(2)->startOffset()); | |
355 EXPECT_EQ(16u, m_markerList->at(2)->endOffset()); | |
356 | |
357 EXPECT_EQ(21u, m_markerList->at(3)->startOffset()); | |
358 EXPECT_EQ(26u, m_markerList->at(3)->endOffset()); | |
359 | |
360 m_markerList->clear(); | |
361 m_markerList->push_back(createMarker(5, 10)); | |
362 // delete exactly on a marker | |
363 m_markerList->shiftMarkers(5, 5, 0); | |
364 EXPECT_EQ(0u, m_markerList->size()); | |
365 | |
366 m_markerList->push_back(createMarker(5, 10)); | |
367 // delete middle of marker | |
368 m_markerList->shiftMarkers(6, 3, 0); | |
369 EXPECT_EQ(1u, m_markerList->size()); | |
370 EXPECT_EQ(5u, m_markerList->at(0)->startOffset()); | |
371 EXPECT_EQ(7u, m_markerList->at(0)->endOffset()); | |
372 } | |
373 | |
374 TEST_F(DocumentMarkerListTest, ShiftMarkersInsertions) { | |
375 m_markerList->push_back(createMarker(0, 5)); | |
376 m_markerList->push_back(createMarker(10, 15)); | |
377 m_markerList->push_back(createMarker(20, 25)); | |
378 // insert in middle of second marker | |
379 m_markerList->shiftMarkers(12, 0, 5); | |
380 | |
381 EXPECT_EQ(3u, m_markerList->size()); | |
382 | |
383 EXPECT_EQ(0u, m_markerList->at(0)->startOffset()); | |
384 EXPECT_EQ(5u, m_markerList->at(0)->endOffset()); | |
385 | |
386 EXPECT_EQ(10u, m_markerList->at(1)->startOffset()); | |
387 EXPECT_EQ(20u, m_markerList->at(1)->endOffset()); | |
388 | |
389 EXPECT_EQ(25u, m_markerList->at(2)->startOffset()); | |
390 EXPECT_EQ(30u, m_markerList->at(2)->endOffset()); | |
391 | |
392 // insert right after first marker | |
393 m_markerList->shiftMarkers(5, 0, 5); | |
394 | |
395 EXPECT_EQ(3u, m_markerList->size()); | |
396 | |
397 EXPECT_EQ(0u, m_markerList->at(0)->startOffset()); | |
398 EXPECT_EQ(5u, m_markerList->at(0)->endOffset()); | |
399 | |
400 EXPECT_EQ(15u, m_markerList->at(1)->startOffset()); | |
401 EXPECT_EQ(25u, m_markerList->at(1)->endOffset()); | |
402 | |
403 EXPECT_EQ(30u, m_markerList->at(2)->startOffset()); | |
404 EXPECT_EQ(35u, m_markerList->at(2)->endOffset()); | |
405 | |
406 // insert right before second marker | |
407 m_markerList->shiftMarkers(15, 0, 5); | |
408 | |
409 EXPECT_EQ(3u, m_markerList->size()); | |
410 | |
411 EXPECT_EQ(0u, m_markerList->at(0)->startOffset()); | |
412 EXPECT_EQ(5u, m_markerList->at(0)->endOffset()); | |
413 | |
414 EXPECT_EQ(20u, m_markerList->at(1)->startOffset()); | |
415 EXPECT_EQ(30u, m_markerList->at(1)->endOffset()); | |
416 | |
417 EXPECT_EQ(35u, m_markerList->at(2)->startOffset()); | |
418 EXPECT_EQ(40u, m_markerList->at(2)->endOffset()); | |
419 } | |
420 | |
421 TEST_F(DocumentMarkerListTest, ShiftMarkersReplacements) { | |
422 m_markerList->push_back(createMarker(0, 5)); | |
423 m_markerList->push_back(createMarker(10, 15)); | |
424 m_markerList->push_back(createMarker(20, 25)); | |
425 m_markerList->push_back(createMarker(30, 35)); | |
426 m_markerList->push_back(createMarker(40, 45)); | |
427 | |
428 // Replace entirely of third marker and portions of second and fourth | |
429 m_markerList->shiftMarkers(13, 19, 1); | |
430 | |
431 EXPECT_EQ(4u, m_markerList->size()); | |
432 | |
433 EXPECT_EQ(0u, m_markerList->at(0)->startOffset()); | |
434 EXPECT_EQ(5u, m_markerList->at(0)->endOffset()); | |
435 | |
436 EXPECT_EQ(10u, m_markerList->at(1)->startOffset()); | |
437 EXPECT_EQ(13u, m_markerList->at(1)->endOffset()); | |
438 | |
439 EXPECT_EQ(14u, m_markerList->at(2)->startOffset()); | |
440 EXPECT_EQ(17u, m_markerList->at(2)->endOffset()); | |
441 | |
442 EXPECT_EQ(22u, m_markerList->at(3)->startOffset()); | |
443 EXPECT_EQ(27u, m_markerList->at(3)->endOffset()); | |
444 | |
445 // Replace end of first marker | |
446 m_markerList->shiftMarkers(3, 2, 1); | |
447 | |
448 EXPECT_EQ(4u, m_markerList->size()); | |
449 | |
450 EXPECT_EQ(0u, m_markerList->at(0)->startOffset()); | |
451 EXPECT_EQ(4u, m_markerList->at(0)->endOffset()); | |
452 | |
453 EXPECT_EQ(9u, m_markerList->at(1)->startOffset()); | |
454 EXPECT_EQ(12u, m_markerList->at(1)->endOffset()); | |
455 | |
456 EXPECT_EQ(13u, m_markerList->at(2)->startOffset()); | |
457 EXPECT_EQ(16u, m_markerList->at(2)->endOffset()); | |
458 | |
459 EXPECT_EQ(21u, m_markerList->at(3)->startOffset()); | |
460 EXPECT_EQ(26u, m_markerList->at(3)->endOffset()); | |
461 | |
462 // Replace beginning of fourth marker | |
463 m_markerList->shiftMarkers(13, 2, 1); | |
464 | |
465 EXPECT_EQ(4u, m_markerList->size()); | |
466 | |
467 EXPECT_EQ(0u, m_markerList->at(0)->startOffset()); | |
468 EXPECT_EQ(4u, m_markerList->at(0)->endOffset()); | |
469 | |
470 EXPECT_EQ(9u, m_markerList->at(1)->startOffset()); | |
471 EXPECT_EQ(12u, m_markerList->at(1)->endOffset()); | |
472 | |
473 EXPECT_EQ(13u, m_markerList->at(2)->startOffset()); | |
474 EXPECT_EQ(15u, m_markerList->at(2)->endOffset()); | |
475 | |
476 EXPECT_EQ(20u, m_markerList->at(3)->startOffset()); | |
477 EXPECT_EQ(25u, m_markerList->at(3)->endOffset()); | |
478 } | |
479 | |
480 TEST_F(DocumentMarkerListTest, CopyMarkers) { | |
481 m_markerList->push_back(createMarker(1, 2)); | |
482 m_markerList->push_back(createMarker(3, 4)); | |
483 m_markerList->push_back(createMarker(5, 6)); | |
484 m_markerList->push_back(createMarker(7, 8)); | |
485 | |
486 DocumentMarkerListForTesting* dstList = new DocumentMarkerListForTesting(); | |
487 | |
488 // Copy all markers that intersect the range 2 through 5, i.e. the first three | |
489 m_markerList->copyMarkers(2, 4, dstList, -1); | |
490 | |
491 EXPECT_EQ(3u, dstList->size()); | |
492 | |
493 // Markers are clamped to the range 2 through 5, so the first and third | |
494 // markers are now length 0 | |
Xiaocheng
2017/03/25 00:05:35
Though this matches the current behavior, it doesn
| |
495 EXPECT_EQ(1u, dstList->at(0)->startOffset()); | |
496 EXPECT_EQ(1u, dstList->at(0)->endOffset()); | |
497 | |
498 EXPECT_EQ(2u, dstList->at(1)->startOffset()); | |
499 EXPECT_EQ(3u, dstList->at(1)->endOffset()); | |
500 | |
501 EXPECT_EQ(4u, dstList->at(2)->startOffset()); | |
502 EXPECT_EQ(4u, dstList->at(2)->endOffset()); | |
503 } | |
504 | |
505 } // namespace blink | |
OLD | NEW |