Chromium Code Reviews| Index: chrome/browser/search_engines/template_url_service_util_unittest.cc |
| diff --git a/chrome/browser/search_engines/template_url_service_util_unittest.cc b/chrome/browser/search_engines/template_url_service_util_unittest.cc |
| new file mode 100644 |
| index 0000000000000000000000000000000000000000..b8173c1a3b85ad27112ef1142766bd4452a85192 |
| --- /dev/null |
| +++ b/chrome/browser/search_engines/template_url_service_util_unittest.cc |
| @@ -0,0 +1,81 @@ |
| +// Copyright (c) 2012 The Chromium Authors. All rights reserved. |
| +// Use of this source code is governed by a BSD-style license that can be |
| +// found in the LICENSE file. |
| + |
| +#include "base/string_util.h" |
| +#include "base/utf_string_conversions.h" |
| +#include "chrome/browser/search_engines/template_url.h" |
| +#include "chrome/browser/search_engines/template_url_service.h" |
| +#include "chrome/browser/search_engines/util.h" |
| +#include "testing/gtest/include/gtest/gtest.h" |
| + |
| +namespace { |
| + |
| +// Creates a TemplateURL with default values except for the prepopulate ID, |
| +// keyword and TemplateURLID. Only use this in tests if your tests do not |
| +// care about other fields. The caller is the owner of this TemplateURL. |
| +TemplateURL* CreatePrepopulateTemplateURL(int prepopulate_id, |
| + const std::string& keyword, |
| + TemplateURLID id) { |
| + TemplateURLData data; |
| + data.prepopulate_id = prepopulate_id; |
| + data.SetKeyword(ASCIIToUTF16(keyword)); |
| + data.id = id; |
| + return new TemplateURL(NULL, data); |
| +} |
| + |
| +}; // namespace |
| + |
| +TEST(TemplateURLServiceUtilTest, RemoveDuplicatePrepopulateIDs) { |
|
SteveT
2012/05/17 13:34:54
This covers all the heuristics used by RemoveDupli
|
| + std::vector<TemplateURL*> prepopulated_turls; |
| + TemplateURLService::TemplateURLVector local_turls; |
| + |
| + prepopulated_turls.push_back(CreatePrepopulateTemplateURL(1, "winner4", 1)); |
| + prepopulated_turls.push_back(CreatePrepopulateTemplateURL(2, "xxx", 2)); |
| + prepopulated_turls.push_back(CreatePrepopulateTemplateURL(3, "yyy", 3)); |
| + |
| + // Create a sets of different TURLs grouped by prepopulate ID. Each group |
| + // will test a different heuristic of RemoveDuplicatePrepopulateIDs. |
| + // Ignored set - These should be left alone as they do not have valid |
| + // prepopulate IDs. |
| + local_turls.push_back(CreatePrepopulateTemplateURL(0, "winner1", 4)); |
| + local_turls.push_back(CreatePrepopulateTemplateURL(0, "winner2", 5)); |
| + local_turls.push_back(CreatePrepopulateTemplateURL(0, "winner3", 6)); |
|
Peter Kasting
2012/05/17 20:12:17
If after this block you add a "size_t num_non_prep
SteveT
2012/05/17 21:27:22
Done.
|
| + |
| + // Keyword match set - Prefer the one that matches the keyword of the |
| + // prepopulate ID. |
| + local_turls.push_back(CreatePrepopulateTemplateURL(1, "loser1", 7)); |
| + local_turls.push_back(CreatePrepopulateTemplateURL(1, "loser2", 8)); |
| + local_turls.push_back(CreatePrepopulateTemplateURL(1, "winner4", 9)); |
| + |
| + // Default set - Prefer the default search engine over all other criteria. |
| + // The last one is the default. It will be passed as the |
| + // default_search_provider parameter to RemoveDuplicatePrepopulateIDs. |
| + local_turls.push_back(CreatePrepopulateTemplateURL(2, "loser3", 10)); |
| + local_turls.push_back(CreatePrepopulateTemplateURL(2, "loser4", 11)); |
|
Peter Kasting
2012/05/17 20:12:17
Nit: Make this have keyword "xxx" to validate that
SteveT
2012/05/17 21:27:22
Done.
|
| + TemplateURL* default_turl = CreatePrepopulateTemplateURL(2, "winner5", 12); |
| + local_turls.push_back(default_turl); |
| + |
| + // ID set - Prefer the lowest TemplateURLID if the keywords don't match and if |
| + // none are the default. |
| + local_turls.push_back(CreatePrepopulateTemplateURL(3, "winner6", 13)); |
| + local_turls.push_back(CreatePrepopulateTemplateURL(3, "loser5", 14)); |
| + local_turls.push_back(CreatePrepopulateTemplateURL(3, "loser6", 15)); |
| + |
| + testing::TestRemoveDuplicatePrepopulateIDs(NULL, prepopulated_turls, |
| + default_turl, &local_turls); |
| + |
| + // Verify that the expected local TURLs survived the process. |
| + for (TemplateURLService::TemplateURLVector::const_iterator itr = |
| + local_turls.begin(); itr != local_turls.end(); ++itr) { |
|
Peter Kasting
2012/05/17 20:12:17
Nit: {} not necessary
SteveT
2012/05/17 21:27:22
Done.
|
| + EXPECT_TRUE(StartsWith((*itr)->keyword(), ASCIIToUTF16("winner"), true)); |
| + } |
| + |
| + // Manually clean up, since we own all the remaining TURLs. |
| + for (std::vector<TemplateURL*>::iterator itr = prepopulated_turls.begin(); |
| + itr != prepopulated_turls.end(); ++itr) |
| + delete *itr; |
| + for (TemplateURLService::TemplateURLVector::iterator itr = |
| + local_turls.begin(); itr != local_turls.end(); ++itr) |
| + delete *itr; |
|
SteveT
2012/05/17 13:34:54
Manual cleanups suck, but sometimes they're necess
Peter Kasting
2012/05/17 20:12:17
Use ScopedVector for |prepopulated_turls|. Use ST
SteveT
2012/05/17 21:27:22
Awesome. Done.
|
| +} |