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

Side by Side Diff: chrome/browser/history/history_querying_unittest.cc

Issue 18758: Port some unit tests from chrome/browser/ (Closed)
Patch Set: port the tests Created 11 years, 10 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
1 // Copyright (c) 2006-2008 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2006-2008 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "base/basictypes.h" 5 #include "base/basictypes.h"
6 #include "base/file_util.h" 6 #include "base/file_util.h"
7 #include "base/path_service.h" 7 #include "base/path_service.h"
8 #include "chrome/browser/history/history.h" 8 #include "chrome/browser/history/history.h"
9 #include "testing/gtest/include/gtest/gtest.h" 9 #include "testing/gtest/include/gtest/gtest.h"
10 10
(...skipping 78 matching lines...) Expand 10 before | Expand all | Expand 10 after
89 file_util::CreateDirectory(history_dir_); 89 file_util::CreateDirectory(history_dir_);
90 90
91 history_ = new HistoryService; 91 history_ = new HistoryService;
92 if (!history_->Init(FilePath::FromWStringHack(history_dir_), NULL)) { 92 if (!history_->Init(FilePath::FromWStringHack(history_dir_), NULL)) {
93 history_ = NULL; // Tests should notice this NULL ptr & fail. 93 history_ = NULL; // Tests should notice this NULL ptr & fail.
94 return; 94 return;
95 } 95 }
96 96
97 // Fill the test data. 97 // Fill the test data.
98 Time now = Time::Now().LocalMidnight(); 98 Time now = Time::Now().LocalMidnight();
99 for (int i = 0; i < arraysize(test_entries); i++) { 99 for (size_t i = 0; i < arraysize(test_entries); i++) {
100 test_entries[i].time = 100 test_entries[i].time =
101 now - (test_entries[i].days_ago * TimeDelta::FromDays(1)); 101 now - (test_entries[i].days_ago * TimeDelta::FromDays(1));
102 102
103 // We need the ID scope and page ID so that the visit tracker can find it. 103 // We need the ID scope and page ID so that the visit tracker can find it.
104 const void* id_scope = reinterpret_cast<void*>(1); 104 const void* id_scope = reinterpret_cast<void*>(1);
105 int32 page_id = i; 105 int32 page_id = i;
106 GURL url(test_entries[i].url); 106 GURL url(test_entries[i].url);
107 107
108 history_->AddPage(url, test_entries[i].time, id_scope, page_id, GURL(), 108 history_->AddPage(url, test_entries[i].time, id_scope, page_id, GURL(),
109 PageTransition::LINK, HistoryService::RedirectList()); 109 PageTransition::LINK, HistoryService::RedirectList());
(...skipping 11 matching lines...) Expand all
121 } 121 }
122 file_util::Delete(history_dir_, true); 122 file_util::Delete(history_dir_, true);
123 } 123 }
124 124
125 void QueryHistoryComplete(HistoryService::Handle, QueryResults* results) { 125 void QueryHistoryComplete(HistoryService::Handle, QueryResults* results) {
126 results->Swap(&last_query_results_); 126 results->Swap(&last_query_results_);
127 MessageLoop::current()->Quit(); // Will return out to QueryHistory. 127 MessageLoop::current()->Quit(); // Will return out to QueryHistory.
128 } 128 }
129 129
130 MessageLoop message_loop_; 130 MessageLoop message_loop_;
131 131
132 std::wstring history_dir_; 132 std::wstring history_dir_;
133 133
134 CancelableRequestConsumer consumer_; 134 CancelableRequestConsumer consumer_;
135 135
136 // The QueryHistoryComplete callback will put the results here so QueryHistory 136 // The QueryHistoryComplete callback will put the results here so QueryHistory
137 // can return them. 137 // can return them.
138 QueryResults last_query_results_; 138 QueryResults last_query_results_;
139 139
140 DISALLOW_EVIL_CONSTRUCTORS(HistoryQueryTest); 140 DISALLOW_EVIL_CONSTRUCTORS(HistoryQueryTest);
141 }; 141 };
142 142
143 TEST_F(HistoryQueryTest, Basic) { 143 TEST_F(HistoryQueryTest, Basic) {
144 ASSERT_TRUE(history_.get()); 144 ASSERT_TRUE(history_.get());
145 145
146 QueryOptions options; 146 QueryOptions options;
147 QueryResults results; 147 QueryResults results;
148 148
149 // First query for all of them to make sure they are there and in 149 // First query for all of them to make sure they are there and in
150 // chronological order, most recent first. 150 // chronological order, most recent first.
151 QueryHistory(std::wstring(), options, &results); 151 QueryHistory(std::wstring(), options, &results);
152 ASSERT_EQ(5, results.size()); 152 ASSERT_EQ(5U, results.size());
153 EXPECT_TRUE(NthResultIs(results, 0, 4)); 153 EXPECT_TRUE(NthResultIs(results, 0, 4));
154 EXPECT_TRUE(NthResultIs(results, 1, 2)); 154 EXPECT_TRUE(NthResultIs(results, 1, 2));
155 EXPECT_TRUE(NthResultIs(results, 2, 3)); 155 EXPECT_TRUE(NthResultIs(results, 2, 3));
156 EXPECT_TRUE(NthResultIs(results, 3, 1)); 156 EXPECT_TRUE(NthResultIs(results, 3, 1));
157 EXPECT_TRUE(NthResultIs(results, 4, 0)); 157 EXPECT_TRUE(NthResultIs(results, 4, 0));
158 158
159 // Next query a time range. The beginning should be inclusive, the ending 159 // Next query a time range. The beginning should be inclusive, the ending
160 // should be exclusive. 160 // should be exclusive.
161 options.begin_time = test_entries[3].time; 161 options.begin_time = test_entries[3].time;
162 options.end_time = test_entries[2].time; 162 options.end_time = test_entries[2].time;
163 QueryHistory(std::wstring(), options, &results); 163 QueryHistory(std::wstring(), options, &results);
164 EXPECT_EQ(1, results.size()); 164 EXPECT_EQ(1U, results.size());
165 EXPECT_TRUE(NthResultIs(results, 0, 3)); 165 EXPECT_TRUE(NthResultIs(results, 0, 3));
166 } 166 }
167 167
168 // Tests max_count feature for basic (non-Full Text Search) queries. 168 // Tests max_count feature for basic (non-Full Text Search) queries.
169 TEST_F(HistoryQueryTest, BasicCount) { 169 TEST_F(HistoryQueryTest, BasicCount) {
170 ASSERT_TRUE(history_.get()); 170 ASSERT_TRUE(history_.get());
171 171
172 QueryOptions options; 172 QueryOptions options;
173 QueryResults results; 173 QueryResults results;
174 174
175 // Query all time but with a limit on the number of entries. We should 175 // Query all time but with a limit on the number of entries. We should
176 // get the N most recent entries. 176 // get the N most recent entries.
177 options.max_count = 2; 177 options.max_count = 2;
178 QueryHistory(std::wstring(), options, &results); 178 QueryHistory(std::wstring(), options, &results);
179 EXPECT_EQ(2, results.size()); 179 EXPECT_EQ(2U, results.size());
180 EXPECT_TRUE(NthResultIs(results, 0, 4)); 180 EXPECT_TRUE(NthResultIs(results, 0, 4));
181 EXPECT_TRUE(NthResultIs(results, 1, 2)); 181 EXPECT_TRUE(NthResultIs(results, 1, 2));
182 } 182 }
183 183
184 // Tests duplicate collapsing and not in non-Full Text Search situations. 184 // Tests duplicate collapsing and not in non-Full Text Search situations.
185 TEST_F(HistoryQueryTest, BasicDupes) { 185 TEST_F(HistoryQueryTest, BasicDupes) {
186 ASSERT_TRUE(history_.get()); 186 ASSERT_TRUE(history_.get());
187 187
188 QueryOptions options; 188 QueryOptions options;
189 QueryResults results; 189 QueryResults results;
190 190
191 // We did the query for no collapsing in the "Basic" test above, so here we 191 // We did the query for no collapsing in the "Basic" test above, so here we
192 // only test collapsing. 192 // only test collapsing.
193 options.most_recent_visit_only = true; 193 options.most_recent_visit_only = true;
194 QueryHistory(std::wstring(), options, &results); 194 QueryHistory(std::wstring(), options, &results);
195 EXPECT_EQ(4, results.size()); 195 EXPECT_EQ(4U, results.size());
196 EXPECT_TRUE(NthResultIs(results, 0, 4)); 196 EXPECT_TRUE(NthResultIs(results, 0, 4));
197 EXPECT_TRUE(NthResultIs(results, 1, 2)); 197 EXPECT_TRUE(NthResultIs(results, 1, 2));
198 EXPECT_TRUE(NthResultIs(results, 2, 3)); 198 EXPECT_TRUE(NthResultIs(results, 2, 3));
199 EXPECT_TRUE(NthResultIs(results, 3, 1)); 199 EXPECT_TRUE(NthResultIs(results, 3, 1));
200 } 200 }
201 201
202 // This does most of the same tests above, but searches for a FTS string that 202 // This does most of the same tests above, but searches for a FTS string that
203 // will match the pages in question. This will trigger a different code path. 203 // will match the pages in question. This will trigger a different code path.
204 TEST_F(HistoryQueryTest, FTS) { 204 TEST_F(HistoryQueryTest, FTS) {
205 ASSERT_TRUE(history_.get()); 205 ASSERT_TRUE(history_.get());
206 206
207 QueryOptions options; 207 QueryOptions options;
208 QueryResults results; 208 QueryResults results;
209 209
210 // Query all of them to make sure they are there and in order. Note that 210 // Query all of them to make sure they are there and in order. Note that
211 // this query will return the starred item twice since we requested all 211 // this query will return the starred item twice since we requested all
212 // starred entries and no de-duping. 212 // starred entries and no de-duping.
213 QueryHistory(std::wstring(L"some"), options, &results); 213 QueryHistory(std::wstring(L"some"), options, &results);
214 EXPECT_EQ(3, results.size()); 214 EXPECT_EQ(3U, results.size());
215 EXPECT_TRUE(NthResultIs(results, 0, 2)); 215 EXPECT_TRUE(NthResultIs(results, 0, 2));
216 EXPECT_TRUE(NthResultIs(results, 1, 3)); 216 EXPECT_TRUE(NthResultIs(results, 1, 3));
217 EXPECT_TRUE(NthResultIs(results, 2, 1)); 217 EXPECT_TRUE(NthResultIs(results, 2, 1));
218 218
219 // Do a query that should only match one of them. 219 // Do a query that should only match one of them.
220 QueryHistory(std::wstring(L"PAGETWO"), options, &results); 220 QueryHistory(std::wstring(L"PAGETWO"), options, &results);
221 EXPECT_EQ(1, results.size()); 221 EXPECT_EQ(1U, results.size());
222 EXPECT_TRUE(NthResultIs(results, 0, 3)); 222 EXPECT_TRUE(NthResultIs(results, 0, 3));
223 223
224 // Next query a time range. The beginning should be inclusive, the ending 224 // Next query a time range. The beginning should be inclusive, the ending
225 // should be exclusive. 225 // should be exclusive.
226 options.begin_time = test_entries[1].time; 226 options.begin_time = test_entries[1].time;
227 options.end_time = test_entries[3].time; 227 options.end_time = test_entries[3].time;
228 QueryHistory(std::wstring(L"some"), options, &results); 228 QueryHistory(std::wstring(L"some"), options, &results);
229 EXPECT_EQ(1, results.size()); 229 EXPECT_EQ(1U, results.size());
230 EXPECT_TRUE(NthResultIs(results, 0, 1)); 230 EXPECT_TRUE(NthResultIs(results, 0, 1));
231 } 231 }
232 232
233 // Searches titles. 233 // Searches titles.
234 TEST_F(HistoryQueryTest, FTSTitle) { 234 TEST_F(HistoryQueryTest, FTSTitle) {
235 ASSERT_TRUE(history_.get()); 235 ASSERT_TRUE(history_.get());
236 236
237 QueryOptions options; 237 QueryOptions options;
238 QueryResults results; 238 QueryResults results;
239 239
240 // Query all time but with a limit on the number of entries. We should 240 // Query all time but with a limit on the number of entries. We should
241 // get the N most recent entries. 241 // get the N most recent entries.
242 QueryHistory(std::wstring(L"title"), options, &results); 242 QueryHistory(std::wstring(L"title"), options, &results);
243 EXPECT_EQ(3, results.size()); 243 EXPECT_EQ(3U, results.size());
244 EXPECT_TRUE(NthResultIs(results, 0, 2)); 244 EXPECT_TRUE(NthResultIs(results, 0, 2));
245 EXPECT_TRUE(NthResultIs(results, 1, 3)); 245 EXPECT_TRUE(NthResultIs(results, 1, 3));
246 EXPECT_TRUE(NthResultIs(results, 2, 1)); 246 EXPECT_TRUE(NthResultIs(results, 2, 1));
247 } 247 }
248 248
249 // Tests prefix searching for Full Text Search queries. 249 // Tests prefix searching for Full Text Search queries.
250 TEST_F(HistoryQueryTest, FTSPrefix) { 250 TEST_F(HistoryQueryTest, FTSPrefix) {
251 ASSERT_TRUE(history_.get()); 251 ASSERT_TRUE(history_.get());
252 252
253 QueryOptions options; 253 QueryOptions options;
254 QueryResults results; 254 QueryResults results;
255 255
256 // Query with a prefix search. Should return matches for "PAGETWO" and 256 // Query with a prefix search. Should return matches for "PAGETWO" and
257 // "PAGETHREE". 257 // "PAGETHREE".
258 QueryHistory(std::wstring(L"PAGET"), options, &results); 258 QueryHistory(std::wstring(L"PAGET"), options, &results);
259 EXPECT_EQ(2, results.size()); 259 EXPECT_EQ(2U, results.size());
260 EXPECT_TRUE(NthResultIs(results, 0, 2)); 260 EXPECT_TRUE(NthResultIs(results, 0, 2));
261 EXPECT_TRUE(NthResultIs(results, 1, 3)); 261 EXPECT_TRUE(NthResultIs(results, 1, 3));
262 } 262 }
263 263
264 // Tests max_count feature for Full Text Search queries. 264 // Tests max_count feature for Full Text Search queries.
265 TEST_F(HistoryQueryTest, FTSCount) { 265 TEST_F(HistoryQueryTest, FTSCount) {
266 ASSERT_TRUE(history_.get()); 266 ASSERT_TRUE(history_.get());
267 267
268 QueryOptions options; 268 QueryOptions options;
269 QueryResults results; 269 QueryResults results;
270 270
271 // Query all time but with a limit on the number of entries. We should 271 // Query all time but with a limit on the number of entries. We should
272 // get the N most recent entries. 272 // get the N most recent entries.
273 options.max_count = 2; 273 options.max_count = 2;
274 QueryHistory(std::wstring(L"some"), options, &results); 274 QueryHistory(std::wstring(L"some"), options, &results);
275 EXPECT_EQ(2, results.size()); 275 EXPECT_EQ(2U, results.size());
276 EXPECT_TRUE(NthResultIs(results, 0, 2)); 276 EXPECT_TRUE(NthResultIs(results, 0, 2));
277 EXPECT_TRUE(NthResultIs(results, 1, 3)); 277 EXPECT_TRUE(NthResultIs(results, 1, 3));
278 278
279 // Now query a subset of the pages and limit by N items. "FOO" should match 279 // Now query a subset of the pages and limit by N items. "FOO" should match
280 // the 2nd & 3rd pages, but we should only get the 3rd one because of the one 280 // the 2nd & 3rd pages, but we should only get the 3rd one because of the one
281 // page max restriction. 281 // page max restriction.
282 options.max_count = 1; 282 options.max_count = 1;
283 QueryHistory(std::wstring(L"FOO"), options, &results); 283 QueryHistory(std::wstring(L"FOO"), options, &results);
284 EXPECT_EQ(1, results.size()); 284 EXPECT_EQ(1U, results.size());
285 EXPECT_TRUE(NthResultIs(results, 0, 3)); 285 EXPECT_TRUE(NthResultIs(results, 0, 3));
286 } 286 }
287 287
288 // Tests that FTS queries can find URLs when they exist only in the archived 288 // Tests that FTS queries can find URLs when they exist only in the archived
289 // database. This also tests that imported URLs can be found, since we use 289 // database. This also tests that imported URLs can be found, since we use
290 // AddPageWithDetails just like the importer. 290 // AddPageWithDetails just like the importer.
291 TEST_F(HistoryQueryTest, FTSArchived) { 291 TEST_F(HistoryQueryTest, FTSArchived) {
292 ASSERT_TRUE(history_.get()); 292 ASSERT_TRUE(history_.get());
293 293
294 std::vector<URLRow> urls_to_add; 294 std::vector<URLRow> urls_to_add;
(...skipping 10 matching lines...) Expand all
305 305
306 history_->AddPagesWithDetails(urls_to_add); 306 history_->AddPagesWithDetails(urls_to_add);
307 307
308 QueryOptions options; 308 QueryOptions options;
309 QueryResults results; 309 QueryResults results;
310 310
311 // Query all time. The title we get should be the one in the full text 311 // Query all time. The title we get should be the one in the full text
312 // database and not the most current title (since otherwise highlighting in 312 // database and not the most current title (since otherwise highlighting in
313 // the title might be wrong). 313 // the title might be wrong).
314 QueryHistory(std::wstring(L"archived"), options, &results); 314 QueryHistory(std::wstring(L"archived"), options, &results);
315 ASSERT_EQ(1, results.size()); 315 ASSERT_EQ(1U, results.size());
316 EXPECT_TRUE(row1.url() == results[0].url()); 316 EXPECT_TRUE(row1.url() == results[0].url());
317 EXPECT_TRUE(row1.title() == results[0].title()); 317 EXPECT_TRUE(row1.title() == results[0].title());
318 } 318 }
319 319
320 /* TODO(brettw) re-enable this. It is commented out because the current history 320 /* TODO(brettw) re-enable this. It is commented out because the current history
321 code prohibits adding more than one indexed page with the same URL. When we 321 code prohibits adding more than one indexed page with the same URL. When we
322 have tiered history, there could be a dupe in the archived history which 322 have tiered history, there could be a dupe in the archived history which
323 won't get picked up by the deletor and it can happen again. When this is the 323 won't get picked up by the deletor and it can happen again. When this is the
324 case, we should fix this test to duplicate that situation. 324 case, we should fix this test to duplicate that situation.
325 325
(...skipping 12 matching lines...) Expand all
338 338
339 // Now with collapsing. 339 // Now with collapsing.
340 options.most_recent_visit_only = true; 340 options.most_recent_visit_only = true;
341 QueryHistory(std::wstring(L"Other"), options, &results); 341 QueryHistory(std::wstring(L"Other"), options, &results);
342 EXPECT_EQ(1, results.urls().size()); 342 EXPECT_EQ(1, results.urls().size());
343 EXPECT_TRUE(NthResultIs(results, 0, 4)); 343 EXPECT_TRUE(NthResultIs(results, 0, 4));
344 } 344 }
345 */ 345 */
346 346
347 } // namespace history 347 } // namespace history
OLDNEW
« no previous file with comments | « chrome/browser/history/history_publisher_win.cc ('k') | chrome/browser/history/query_parser_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698