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

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: Add DCHECK that markers being inserted are of correct type Created 3 years, 9 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
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 Text* createTextNode(const char* textContents) {
28 return document().createTextNode(String::fromUTF8(textContents));
29 }
30
31 Persistent<SpellCheckMarkerList> m_markerList;
32
33 private:
34 std::unique_ptr<DummyPageHolder> m_dummyPageHolder;
35 };
36
37 TEST_F(SpellCheckMarkerListTest, PushBackSorting) {
38 // Insert some markers in an arbitrary order and verify that the list stays
39 // sorted
40 m_markerList->push_back(createMarker(80, 85));
41 m_markerList->push_back(createMarker(40, 45));
42 m_markerList->push_back(createMarker(10, 15));
43 m_markerList->push_back(createMarker(0, 5));
44 m_markerList->push_back(createMarker(70, 75));
45 m_markerList->push_back(createMarker(90, 95));
46 m_markerList->push_back(createMarker(60, 65));
47 m_markerList->push_back(createMarker(50, 55));
48 m_markerList->push_back(createMarker(30, 35));
49 m_markerList->push_back(createMarker(20, 25));
50
51 EXPECT_EQ(10u, m_markerList->size());
52
53 EXPECT_EQ(0u, m_markerList->at(0)->startOffset());
54 EXPECT_EQ(5u, m_markerList->at(0)->endOffset());
55
56 EXPECT_EQ(10u, m_markerList->at(1)->startOffset());
57 EXPECT_EQ(15u, m_markerList->at(1)->endOffset());
58
59 EXPECT_EQ(20u, m_markerList->at(2)->startOffset());
60 EXPECT_EQ(25u, m_markerList->at(2)->endOffset());
61
62 EXPECT_EQ(30u, m_markerList->at(3)->startOffset());
63 EXPECT_EQ(35u, m_markerList->at(3)->endOffset());
64
65 EXPECT_EQ(40u, m_markerList->at(4)->startOffset());
66 EXPECT_EQ(45u, m_markerList->at(4)->endOffset());
67
68 EXPECT_EQ(50u, m_markerList->at(5)->startOffset());
69 EXPECT_EQ(55u, m_markerList->at(5)->endOffset());
70
71 EXPECT_EQ(60u, m_markerList->at(6)->startOffset());
72 EXPECT_EQ(65u, m_markerList->at(6)->endOffset());
73
74 EXPECT_EQ(70u, m_markerList->at(7)->startOffset());
75 EXPECT_EQ(75u, m_markerList->at(7)->endOffset());
76
77 EXPECT_EQ(80u, m_markerList->at(8)->startOffset());
78 EXPECT_EQ(85u, m_markerList->at(8)->endOffset());
79
80 EXPECT_EQ(90u, m_markerList->at(9)->startOffset());
81 EXPECT_EQ(95u, m_markerList->at(9)->endOffset());
82 }
83
84 TEST_F(SpellCheckMarkerListTest, PushBackMerging) {
Xiaocheng 2017/03/25 18:55:52 Could you split the test case into four independen
85 // Test inserting into empty list
86 m_markerList->push_back(createMarker(5, 10));
87 EXPECT_EQ(1u, m_markerList->size());
88
89 EXPECT_EQ(5u, m_markerList->at(0)->startOffset());
90 EXPECT_EQ(10u, m_markerList->at(0)->endOffset());
91
92 // Test non-merging insert into non-empty list
93 m_markerList->push_back(createMarker(15, 20));
94 EXPECT_EQ(2u, m_markerList->size());
95
96 EXPECT_EQ(5u, m_markerList->at(0)->startOffset());
97 EXPECT_EQ(10u, m_markerList->at(0)->endOffset());
98
99 EXPECT_EQ(15u, m_markerList->at(1)->startOffset());
100 EXPECT_EQ(20u, m_markerList->at(1)->endOffset());
101
102 // Test inserting a marker that should be merged with a later marker
103 m_markerList->push_back(createMarker(0, 5));
104 EXPECT_EQ(2u, m_markerList->size());
105
106 EXPECT_EQ(0u, m_markerList->at(0)->startOffset());
107 EXPECT_EQ(10u, m_markerList->at(0)->endOffset());
108
109 EXPECT_EQ(15u, m_markerList->at(1)->startOffset());
110 EXPECT_EQ(20u, m_markerList->at(1)->endOffset());
111
112 // Test inserting a marker that should be merged with an earlier marker
113 m_markerList->push_back(createMarker(20, 25));
114 EXPECT_EQ(2u, m_markerList->size());
115
116 EXPECT_EQ(0u, m_markerList->at(0)->startOffset());
117 EXPECT_EQ(10u, m_markerList->at(0)->endOffset());
118
119 EXPECT_EQ(15u, m_markerList->at(1)->startOffset());
120 EXPECT_EQ(25u, m_markerList->at(1)->endOffset());
121
122 // Test inserting a marker that should be merged with both an earlier and a
123 // later marker
124 m_markerList->push_back(createMarker(10, 15));
125 EXPECT_EQ(1u, m_markerList->size());
126
127 EXPECT_EQ(0u, m_markerList->at(0)->startOffset());
128 EXPECT_EQ(25u, m_markerList->at(0)->endOffset());
129 }
130
131 TEST_F(SpellCheckMarkerListTest, RemoveMarkersForWords) {
132 Text* node = createTextNode("wor word words word2");
133
134 // wor
135 m_markerList->push_back(createMarker(0, 3));
136
137 // word
138 m_markerList->push_back(createMarker(4, 8));
139
140 // words
141 m_markerList->push_back(createMarker(9, 14));
142
143 // word2
144 m_markerList->push_back(createMarker(15, 20));
145
146 m_markerList->removeMarkersForWords(*node, {"word", "word2"});
147
148 EXPECT_EQ(2u, m_markerList->size());
149
150 EXPECT_EQ(0u, m_markerList->at(0)->startOffset());
151 EXPECT_EQ(3u, m_markerList->at(0)->endOffset());
152
153 EXPECT_EQ(9u, m_markerList->at(1)->startOffset());
154 EXPECT_EQ(14u, m_markerList->at(1)->endOffset());
155 }
156
157 } // namespace
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698