Chromium Code Reviews| Index: chrome/browser/autocomplete/autocomplete_popup_model_unittest.cc |
| diff --git a/chrome/browser/autocomplete/autocomplete_popup_model_unittest.cc b/chrome/browser/autocomplete/autocomplete_popup_model_unittest.cc |
| new file mode 100644 |
| index 0000000000000000000000000000000000000000..1055b319ff960cb8d4d9cfc678e779ae02a3e7be |
| --- /dev/null |
| +++ b/chrome/browser/autocomplete/autocomplete_popup_model_unittest.cc |
| @@ -0,0 +1,137 @@ |
| +// Copyright (c) 2011 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 "chrome/browser/autocomplete/autocomplete_popup_model.h" |
| + |
| +#include "base/utf_string_conversions.h" |
| +#include "chrome/browser/autocomplete/autocomplete_match.h" |
| +#include "chrome/browser/search_engines/template_url.h" |
| +#include "chrome/browser/search_engines/template_url_service.h" |
| +#include "chrome/browser/search_engines/template_url_service_factory.h" |
| +#include "chrome/test/base/testing_profile.h" |
| +#include "testing/gtest/include/gtest/gtest.h" |
| + |
| +class AutoCompletePopupModelTest : public testing::Test { |
| + public: |
| + AutoCompletePopupModelTest() { |
| + } |
| + |
| + // See description above class for what this registers. |
|
Peter Kasting
2011/09/14 17:49:37
Nit: This comment makes no sense, remove.
keishi
2011/09/15 02:23:13
Done.
|
| + virtual void SetUp(); |
| + |
|
Peter Kasting
2011/09/14 17:49:37
Nit: Unnecessary blank line
keishi
2011/09/15 02:23:13
Done.
|
| + virtual void TearDown(); |
| + |
| + protected: |
| + AutocompleteMatch CreateMatch(const string16& keyword, |
| + const string16& query_string, |
| + AutocompleteMatch::Type type); |
| + |
| + scoped_ptr<TestingProfile> profile_; |
| + scoped_ptr<AutocompletePopupModel> model_; |
| + scoped_ptr<AutocompleteEditModel> edit_model_; |
| +}; |
| + |
| +void AutoCompletePopupModelTest::SetUp() { |
| + profile_.reset(new TestingProfile()); |
| + profile_->CreateTemplateURLService(); |
| + edit_model_.reset(new AutocompleteEditModel(NULL, NULL, profile_.get())); |
| + model_.reset(new AutocompletePopupModel(NULL, edit_model_.get())); |
| + |
| + TemplateURLService* turl_model = |
| + TemplateURLServiceFactory::GetForProfile(profile_.get()); |
| + |
| + turl_model->Load(); |
| + |
| + // Reset the default TemplateURL. |
| + TemplateURL* default_t_url = new TemplateURL(); |
| + default_t_url->set_keyword(ASCIIToUTF16("t")); |
| + default_t_url->SetURL("http://defaultturl/{searchTerms}", 0, 0); |
| + turl_model->Add(default_t_url); |
| + turl_model->SetDefaultSearchProvider(default_t_url); |
| + ASSERT_NE(0, default_t_url->id()); |
| + |
| + // Create another TemplateURL for KeywordProvider. |
| + TemplateURL* keyword_t_url = new TemplateURL(); |
| + keyword_t_url->set_short_name(ASCIIToUTF16("k")); |
| + keyword_t_url->set_keyword(ASCIIToUTF16("k")); |
| + keyword_t_url->SetURL("http://keyword/{searchTerms}", 0, 0); |
| + turl_model->Add(keyword_t_url); |
| + ASSERT_NE(0, keyword_t_url->id()); |
| +} |
| + |
| +void AutoCompletePopupModelTest::TearDown() { |
| + profile_.reset(NULL); |
|
Peter Kasting
2011/09/14 17:49:37
Nit: Don't pass an argument in any of these.
keishi
2011/09/15 02:23:13
Done.
|
| + model_.reset(NULL); |
| + edit_model_.reset(NULL); |
| +} |
| + |
| +AutocompleteMatch AutoCompletePopupModelTest::CreateMatch( |
| + const string16& keyword, |
| + const string16& query_string, |
| + AutocompleteMatch::Type type) { |
| + AutocompleteMatch match(NULL, 0, false, type); |
| + match.contents.assign(query_string); |
|
Peter Kasting
2011/09/14 17:49:37
Nit: Use = instead of assign()
keishi
2011/09/15 02:23:13
Done.
|
| + TemplateURLService* template_url_service = |
| + TemplateURLServiceFactory::GetForProfile(profile_.get()); |
| + if (!keyword.empty()) { |
| + const TemplateURL* template_url = |
| + template_url_service->GetTemplateURLForKeyword(keyword); |
| + match.template_url = |
| + TemplateURL::SupportsReplacement(template_url) ? template_url : NULL; |
| + } |
| + if (match.template_url) { |
|
Peter Kasting
2011/09/14 17:49:37
Nit: No {}
keishi
2011/09/15 02:23:13
Done.
|
| + match.fill_into_edit.append(match.template_url->keyword() + char16(' ')); |
|
Peter Kasting
2011/09/14 17:49:37
Nit: Use = instead of append()
keishi
2011/09/15 02:23:13
Done.
|
| + } else { |
| + match.template_url = template_url_service->GetDefaultSearchProvider(); |
| + } |
| + match.fill_into_edit.append(query_string); |
| + match.transition = keyword.empty() ? PageTransition::GENERATED : |
|
Peter Kasting
2011/09/14 17:49:37
Nit: Wrap after ? instead of :
keishi
2011/09/15 02:23:13
Done.
|
| + PageTransition::KEYWORD; |
| + return match; |
| +} |
| + |
| +TEST_F(AutoCompletePopupModelTest, GetKeywordForMatch) { |
| + string16 keyword; |
| + |
| + // Possible matches when the input is "tfoo" |
| + EXPECT_FALSE(model_->GetKeywordForMatch( |
|
Peter Kasting
2011/09/14 17:49:37
Nit: Write a helper function:
void AutoCompletePo
keishi
2011/09/15 02:23:13
Done.
|
| + CreateMatch(string16(), ASCIIToUTF16("tfoo"), |
| + AutocompleteMatch::SEARCH_WHAT_YOU_TYPED), |
| + &keyword)); |
| + EXPECT_EQ(string16(), keyword); |
| + EXPECT_FALSE(model_->GetKeywordForMatch( |
| + CreateMatch(string16(), ASCIIToUTF16("tfoo"), |
| + AutocompleteMatch::SEARCH_HISTORY), |
| + &keyword)); |
| + EXPECT_EQ(string16(), keyword); |
| + EXPECT_FALSE(model_->GetKeywordForMatch( |
| + CreateMatch(string16(), ASCIIToUTF16("tfoo"), |
| + AutocompleteMatch::SEARCH_SUGGEST), |
| + &keyword)); |
| + EXPECT_EQ(string16(), keyword); |
| + |
| + // Possible matches when the input is "t foo" |
| + EXPECT_FALSE(model_->GetKeywordForMatch( |
| + CreateMatch(ASCIIToUTF16("t"), ASCIIToUTF16("foo"), |
| + AutocompleteMatch::SEARCH_HISTORY), |
| + &keyword)); |
| + EXPECT_EQ(ASCIIToUTF16("t"), keyword); |
| + EXPECT_FALSE(model_->GetKeywordForMatch( |
| + CreateMatch(ASCIIToUTF16("t"), ASCIIToUTF16("foo"), |
| + AutocompleteMatch::SEARCH_OTHER_ENGINE), |
| + &keyword)); |
| + EXPECT_EQ(ASCIIToUTF16("t"), keyword); |
| + |
| + // Possible matches when the input is "k foo" |
| + EXPECT_FALSE(model_->GetKeywordForMatch( |
| + CreateMatch(ASCIIToUTF16("k"), ASCIIToUTF16("foo"), |
| + AutocompleteMatch::SEARCH_HISTORY), |
| + &keyword)); |
| + EXPECT_EQ(ASCIIToUTF16("k"), keyword); |
| + EXPECT_FALSE(model_->GetKeywordForMatch( |
| + CreateMatch(ASCIIToUTF16("k"), ASCIIToUTF16("foo"), |
| + AutocompleteMatch::SEARCH_OTHER_ENGINE), |
| + &keyword)); |
| + EXPECT_EQ(ASCIIToUTF16("k"), keyword); |
| +} |