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

Side by Side Diff: chrome/browser/autocomplete/in_memory_url_index_unittest.cc

Issue 1163963004: [Omnibox] Changing scheme from https:// to http:// results in DCHECK (Always). (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Added unit tests. Created 5 years, 6 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) 2012 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2012 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 <algorithm> 5 #include <algorithm>
6 #include <fstream> 6 #include <fstream>
7 7
8 #include "base/auto_reset.h" 8 #include "base/auto_reset.h"
9 #include "base/files/file_path.h" 9 #include "base/files/file_path.h"
10 #include "base/files/file_util.h" 10 #include "base/files/file_util.h"
11 #include "base/files/scoped_temp_dir.h" 11 #include "base/files/scoped_temp_dir.h"
12 #include "base/i18n/case_conversion.h"
12 #include "base/path_service.h" 13 #include "base/path_service.h"
13 #include "base/run_loop.h" 14 #include "base/run_loop.h"
14 #include "base/strings/string16.h" 15 #include "base/strings/string16.h"
15 #include "base/strings/string_util.h" 16 #include "base/strings/string_util.h"
16 #include "base/strings/utf_string_conversions.h" 17 #include "base/strings/utf_string_conversions.h"
17 #include "chrome/browser/autocomplete/in_memory_url_index.h" 18 #include "chrome/browser/autocomplete/in_memory_url_index.h"
18 #include "chrome/browser/autocomplete/in_memory_url_index_types.h" 19 #include "chrome/browser/autocomplete/in_memory_url_index_types.h"
19 #include "chrome/browser/autocomplete/url_index_private_data.h" 20 #include "chrome/browser/autocomplete/url_index_private_data.h"
20 #include "chrome/browser/bookmarks/bookmark_model_factory.h" 21 #include "chrome/browser/bookmarks/bookmark_model_factory.h"
21 #include "chrome/browser/history/history_service_factory.h" 22 #include "chrome/browser/history/history_service_factory.h"
(...skipping 1164 matching lines...) Expand 10 before | Expand all | Expand 10 after
1186 // Make sure the data we have was rebuilt from history. (Version 0 1187 // Make sure the data we have was rebuilt from history. (Version 0
1187 // means rebuilt from history; anything else means restored from 1188 // means rebuilt from history; anything else means restored from
1188 // a cache version.) 1189 // a cache version.)
1189 EXPECT_EQ(0, new_data.restored_cache_version_); 1190 EXPECT_EQ(0, new_data.restored_cache_version_);
1190 EXPECT_NE(fake_rebuild_time, new_data.last_time_rebuilt_from_history_); 1191 EXPECT_NE(fake_rebuild_time, new_data.last_time_rebuilt_from_history_);
1191 1192
1192 // Compare the captured and restored for equality. 1193 // Compare the captured and restored for equality.
1193 ExpectPrivateDataEqual(*old_data.get(), new_data); 1194 ExpectPrivateDataEqual(*old_data.get(), new_data);
1194 } 1195 }
1195 1196
1197 // Helper function to get lower case |lower_string| and |lower_terms| (words
Mark P 2015/06/08 18:13:16 get -> set
Pritam Nikam 2015/06/09 10:03:53 Done.
1198 // list) based on supplied |search_string| and |cursor_position|.
Mark P 2015/06/08 18:13:16 It's a bit confusing that we add a space in order
Pritam Nikam 2015/06/09 10:03:52 Done.
1199 void StringToTerms(const char* search_string,
Mark P 2015/06/08 18:13:16 nit: Please move this helper function into the ano
Pritam Nikam 2015/06/09 10:03:52 Done.
1200 size_t cursor_position,
1201 base::string16* lower_string,
1202 String16Vector* lower_terms) {
1203 *lower_string = base::i18n::ToLower(ASCIIToUTF16(search_string));
1204 if ((cursor_position != base::string16::npos) &&
1205 (cursor_position < lower_string->length()) && (cursor_position > 0)) {
1206 lower_string->insert(cursor_position, base::ASCIIToUTF16(" "));
1207 }
1208
1209 Tokenize(*lower_string, base::kWhitespaceUTF16, lower_terms);
1210 }
1211
1212 TEST_F(InMemoryURLIndexTest, AddHistoryMatch) {
1213 const struct {
1214 const char* search_string;
1215 size_t cursor_position;
1216 const std::vector<size_t> expected_word_starts_offsets;
1217 } test_cases[] = {
1218 /* No punctuations, only cursor position change. */
Mark P 2015/06/08 18:13:16 style nit: you have indented two space too many he
Pritam Nikam 2015/06/09 10:03:53 Done.
1219 {"ABCD", base::string16::npos, {0}},
Mark P 2015/06/08 18:13:16 style nit: one space inside { before " and one spa
Pritam Nikam 2015/06/09 10:03:52 Done.
1220 {"abcd", 0, {0}},
Mark P 2015/06/08 18:13:16 optional nit: align the { in the expected_word_sta
Pritam Nikam 2015/06/09 10:03:52 Done.
1221 {"AbcD", 1, {0, 0}},
1222 {"abcd", 4, {0}},
1223
1224 /* Staring with punctuation. */
Mark P 2015/06/08 18:13:16 Staring -> Starting
Pritam Nikam 2015/06/09 10:03:52 Done.
1225 {".abcd", base::string16::npos, {1}},
1226 {".abcd", 0, {1}},
1227 {"!abcd", 1, {1, 0}},
1228 {"::abcd", 1, {1, 1}},
1229 {":abcd", 5, {1}},
1230
1231 /* Ending with punctuation. */
1232 {"abcd://", base::string16::npos, {0}},
1233 {"ABCD://", 0, {0}},
1234 {"abcd://", 1, {0, 0}},
1235 {"abcd://", 4, {0, 3}},
1236 {"abcd://", 7, {0}},
1237
1238 /* Punctuation in the middle. */
1239 {"ab.cd", base::string16::npos, {0}},
1240 {"ab.cd", 0, {0}},
1241 {"ab!cd", 1, {0, 0}},
1242 {"AB.cd", 2, {0, 1}},
1243 {"ab:cd", 5, {0}},
Mark P 2015/06/08 18:13:16 Can you add a cursor_position = 3 test in this blo
Pritam Nikam 2015/06/09 10:03:52 Done.
1244
1245 /* Hyphenation */
1246 {"Ab-cd", base::string16::npos, {0}},
1247 {"ab-cd", 0, {0}},
1248 {"-abcd", 0, {1}},
1249 {"-abcd", 1, {1, 0}},
1250 {"abcd-", 2, {0, 0}},
1251 {"abcd-", 4, {0, 1}},
1252 {"ab-cd", 5, {0}},
1253 };
1254
1255 for (size_t i = 0; i < arraysize(test_cases); ++i) {
1256 SCOPED_TRACE(testing::Message()
1257 << "search_string = " << test_cases[i].search_string
1258 << ", cursor_position = " << test_cases[i].cursor_position);
1259
1260 base::string16 lower_string;
1261 String16Vector lower_terms;
1262 StringToTerms(test_cases[i].search_string, test_cases[i].cursor_position,
1263 &lower_string, &lower_terms);
1264
1265 if (!lower_terms.empty()) {
Mark P 2015/06/08 18:13:16 You shouldn't guard this code in this way. For in
Pritam Nikam 2015/06/09 10:03:52 Done.
1266 URLIndexPrivateData::AddHistoryMatch match(
1267 nullptr, *GetPrivateData(), kTestLanguages, lower_string, lower_terms,
1268 base::Time::Now());
1269
1270 // Verify against expectations.
1271 EXPECT_EQ(test_cases[i].expected_word_starts_offsets,
1272 match.lower_terms_to_word_starts_offsets_);
1273 }
1274 }
1275 }
1276
1196 class InMemoryURLIndexCacheTest : public testing::Test { 1277 class InMemoryURLIndexCacheTest : public testing::Test {
1197 public: 1278 public:
1198 InMemoryURLIndexCacheTest() {} 1279 InMemoryURLIndexCacheTest() {}
1199 1280
1200 protected: 1281 protected:
1201 void SetUp() override; 1282 void SetUp() override;
1202 void TearDown() override; 1283 void TearDown() override;
1203 1284
1204 // Pass-through functions to simplify our friendship with InMemoryURLIndex. 1285 // Pass-through functions to simplify our friendship with InMemoryURLIndex.
1205 void set_history_dir(const base::FilePath& dir_path); 1286 void set_history_dir(const base::FilePath& dir_path);
(...skipping 36 matching lines...) Expand 10 before | Expand all | Expand 10 after
1242 ASSERT_TRUE(GetCacheFilePath(&full_file_path)); 1323 ASSERT_TRUE(GetCacheFilePath(&full_file_path));
1243 std::vector<base::FilePath::StringType> actual_parts; 1324 std::vector<base::FilePath::StringType> actual_parts;
1244 full_file_path.GetComponents(&actual_parts); 1325 full_file_path.GetComponents(&actual_parts);
1245 ASSERT_EQ(expected_parts.size(), actual_parts.size()); 1326 ASSERT_EQ(expected_parts.size(), actual_parts.size());
1246 size_t count = expected_parts.size(); 1327 size_t count = expected_parts.size();
1247 for (size_t i = 0; i < count; ++i) 1328 for (size_t i = 0; i < count; ++i)
1248 EXPECT_EQ(expected_parts[i], actual_parts[i]); 1329 EXPECT_EQ(expected_parts[i], actual_parts[i]);
1249 // Must clear the history_dir_ to satisfy the dtor's DCHECK. 1330 // Must clear the history_dir_ to satisfy the dtor's DCHECK.
1250 set_history_dir(base::FilePath()); 1331 set_history_dir(base::FilePath());
1251 } 1332 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698