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

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

Issue 2770413003: Add SpellCheckMarkerList in preparation for DocumentMarkerController refactor (Closed)
Patch Set: Optimize case where markers are being added in order Created 3 years, 8 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/SpellCheckMarkerList.cpp ('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. Use of
2 // 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/SpellCheckMarkerList.h"
6
7 #include "core/dom/Document.h"
8 #include "core/testing/DummyPageHolder.h"
9 #include "platform/heap/Handle.h"
10 #include "testing/gtest/include/gtest/gtest.h"
11
12 namespace blink {
13
14 class SpellCheckMarkerListTest : public ::testing::Test {
15 protected:
16 SpellCheckMarkerListTest()
17 : m_markerList(new SpellCheckMarkerList(DocumentMarker::Spelling)),
18 m_dummyPageHolder(DummyPageHolder::create(IntSize(800, 600))) {}
19
20 Document& document() const { return m_dummyPageHolder->document(); }
21
22 DocumentMarker* createMarker(unsigned startOffset, unsigned endOffset) {
23 return new DocumentMarker(DocumentMarker::Spelling, startOffset, endOffset,
24 emptyString);
25 }
26
27 Persistent<SpellCheckMarkerList> m_markerList;
28
29 private:
30 std::unique_ptr<DummyPageHolder> m_dummyPageHolder;
Xiaocheng 2017/03/29 20:24:21 nit: No need to set up page and document.
31 };
32
33 TEST_F(SpellCheckMarkerListTest, AddSorting) {
34 // Insert some markers in an arbitrary order and verify that the list stays
35 // sorted
36 m_markerList->add(createMarker(80, 85));
37 m_markerList->add(createMarker(40, 45));
38 m_markerList->add(createMarker(10, 15));
39 m_markerList->add(createMarker(0, 5));
40 m_markerList->add(createMarker(70, 75));
41 m_markerList->add(createMarker(90, 95));
42 m_markerList->add(createMarker(60, 65));
43 m_markerList->add(createMarker(50, 55));
44 m_markerList->add(createMarker(30, 35));
45 m_markerList->add(createMarker(20, 25));
46
47 EXPECT_EQ(10u, m_markerList->size());
48
49 EXPECT_EQ(0u, m_markerList->at(0)->startOffset());
50 EXPECT_EQ(5u, m_markerList->at(0)->endOffset());
51
52 EXPECT_EQ(10u, m_markerList->at(1)->startOffset());
53 EXPECT_EQ(15u, m_markerList->at(1)->endOffset());
54
55 EXPECT_EQ(20u, m_markerList->at(2)->startOffset());
56 EXPECT_EQ(25u, m_markerList->at(2)->endOffset());
57
58 EXPECT_EQ(30u, m_markerList->at(3)->startOffset());
59 EXPECT_EQ(35u, m_markerList->at(3)->endOffset());
60
61 EXPECT_EQ(40u, m_markerList->at(4)->startOffset());
62 EXPECT_EQ(45u, m_markerList->at(4)->endOffset());
63
64 EXPECT_EQ(50u, m_markerList->at(5)->startOffset());
65 EXPECT_EQ(55u, m_markerList->at(5)->endOffset());
66
67 EXPECT_EQ(60u, m_markerList->at(6)->startOffset());
68 EXPECT_EQ(65u, m_markerList->at(6)->endOffset());
69
70 EXPECT_EQ(70u, m_markerList->at(7)->startOffset());
71 EXPECT_EQ(75u, m_markerList->at(7)->endOffset());
72
73 EXPECT_EQ(80u, m_markerList->at(8)->startOffset());
74 EXPECT_EQ(85u, m_markerList->at(8)->endOffset());
75
76 EXPECT_EQ(90u, m_markerList->at(9)->startOffset());
77 EXPECT_EQ(95u, m_markerList->at(9)->endOffset());
78 }
79
80 TEST_F(SpellCheckMarkerListTest, AddIntoEmptyList) {
81 m_markerList->add(createMarker(5, 10));
82 EXPECT_EQ(1u, m_markerList->size());
83
84 EXPECT_EQ(5u, m_markerList->at(0)->startOffset());
85 EXPECT_EQ(10u, m_markerList->at(0)->endOffset());
86 }
87
88 TEST_F(SpellCheckMarkerListTest, AddMarkerNonMerging) {
89 m_markerList->add(createMarker(5, 10));
90 m_markerList->add(createMarker(15, 20));
91 EXPECT_EQ(2u, m_markerList->size());
92
93 EXPECT_EQ(5u, m_markerList->at(0)->startOffset());
94 EXPECT_EQ(10u, m_markerList->at(0)->endOffset());
95
96 EXPECT_EQ(15u, m_markerList->at(1)->startOffset());
97 EXPECT_EQ(20u, m_markerList->at(1)->endOffset());
98 }
99
100 TEST_F(SpellCheckMarkerListTest, AddMarkerMergingLater) {
101 m_markerList->add(createMarker(5, 10));
102 m_markerList->add(createMarker(0, 5));
103 EXPECT_EQ(1u, m_markerList->size());
104
105 EXPECT_EQ(0u, m_markerList->at(0)->startOffset());
106 EXPECT_EQ(10u, m_markerList->at(0)->endOffset());
107 }
108
109 TEST_F(SpellCheckMarkerListTest, AddMarkerMergingEarlier) {
110 m_markerList->add(createMarker(0, 5));
111 m_markerList->add(createMarker(5, 10));
112 EXPECT_EQ(1u, m_markerList->size());
113
114 EXPECT_EQ(0u, m_markerList->at(0)->startOffset());
115 EXPECT_EQ(10u, m_markerList->at(0)->endOffset());
116 }
117
118 TEST_F(SpellCheckMarkerListTest, AddMarkerMergingEarlierAndLater) {
119 m_markerList->add(createMarker(0, 5));
120 m_markerList->add(createMarker(10, 15));
121 m_markerList->add(createMarker(5, 10));
122 EXPECT_EQ(1u, m_markerList->size());
123
124 EXPECT_EQ(0u, m_markerList->at(0)->startOffset());
125 EXPECT_EQ(15u, m_markerList->at(0)->endOffset());
126 }
127
128 TEST_F(SpellCheckMarkerListTest, RemoveMarkersForWords) {
129 // wor
130 m_markerList->add(createMarker(0, 3));
131
132 // word
133 m_markerList->add(createMarker(4, 8));
134
135 // words
136 m_markerList->add(createMarker(9, 14));
137
138 // word2
139 m_markerList->add(createMarker(15, 20));
140
141 m_markerList->removeMarkersForWords("wor word words word2",
142 {"word", "word2"});
143 EXPECT_EQ(2u, m_markerList->size());
144
145 EXPECT_EQ(0u, m_markerList->at(0)->startOffset());
146 EXPECT_EQ(3u, m_markerList->at(0)->endOffset());
147
148 EXPECT_EQ(9u, m_markerList->at(1)->startOffset());
149 EXPECT_EQ(14u, m_markerList->at(1)->endOffset());
150 }
151
152 } // namespace
OLDNEW
« no previous file with comments | « third_party/WebKit/Source/core/editing/markers/SpellCheckMarkerList.cpp ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698