Index: chrome/browser/autocomplete/contact_provider_chromeos_unittest.cc |
diff --git a/chrome/browser/autocomplete/contact_provider_chromeos_unittest.cc b/chrome/browser/autocomplete/contact_provider_chromeos_unittest.cc |
deleted file mode 100644 |
index 7e344f3f457b4d1db439fc230cb56ba96fb986f1..0000000000000000000000000000000000000000 |
--- a/chrome/browser/autocomplete/contact_provider_chromeos_unittest.cc |
+++ /dev/null |
@@ -1,283 +0,0 @@ |
-// 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 "chrome/browser/autocomplete/contact_provider_chromeos.h" |
- |
-#include <cmath> |
-#include <map> |
-#include <string> |
-#include <vector> |
- |
-#include "base/memory/scoped_ptr.h" |
-#include "base/message_loop/message_loop.h" |
-#include "base/strings/string16.h" |
-#include "base/strings/string_number_conversions.h" |
-#include "base/strings/utf_string_conversions.h" |
-#include "chrome/browser/autocomplete/autocomplete_input.h" |
-#include "chrome/browser/autocomplete/autocomplete_match.h" |
-#include "chrome/browser/autocomplete/autocomplete_provider.h" |
-#include "chrome/browser/chromeos/contacts/contact.pb.h" |
-#include "chrome/browser/chromeos/contacts/contact_manager_stub.h" |
-#include "chrome/browser/chromeos/contacts/contact_test_util.h" |
-#include "chrome/test/base/testing_browser_process.h" |
-#include "chrome/test/base/testing_profile.h" |
-#include "chrome/test/base/testing_profile_manager.h" |
-#include "content/public/browser/browser_thread.h" |
-#include "content/public/test/test_browser_thread.h" |
-#include "testing/gtest/include/gtest/gtest.h" |
- |
-using content::BrowserThread; |
- |
-namespace { |
- |
-// Initializes |contact| with the passed-in data. |
-void InitContact(const std::string& contact_id, |
- const std::string& full_name, |
- const std::string& given_name, |
- const std::string& family_name, |
- contacts::Contact* contact) { |
- contact->set_contact_id(contact_id); |
- contact->set_full_name(full_name); |
- contact->set_given_name(given_name); |
- contact->set_family_name(family_name); |
-} |
- |
-} // namespace |
- |
-class ContactProviderTest : public testing::Test { |
- public: |
- ContactProviderTest() : ui_thread_(BrowserThread::UI, &message_loop_) {} |
- virtual ~ContactProviderTest() {} |
- |
- protected: |
- // testing::Test implementation. |
- virtual void SetUp() OVERRIDE { |
- profile_manager_.reset( |
- new TestingProfileManager(TestingBrowserProcess::GetGlobal())); |
- ASSERT_TRUE(profile_manager_->SetUp()); |
- profile_ = profile_manager_->CreateTestingProfile("test_profile"); |
- contact_manager_.reset(new contacts::ContactManagerStub(profile_)); |
- contact_provider_ = |
- new ContactProvider(NULL, profile_, contact_manager_->GetWeakPtr()); |
- } |
- |
- // Starts a (synchronous) query for |utf8_text| in |contact_provider_|. |
- void StartQuery(const std::string& utf8_text) { |
- contact_provider_->Start( |
- AutocompleteInput(base::UTF8ToUTF16(utf8_text), |
- base::string16::npos, |
- base::string16(), |
- GURL(), |
- AutocompleteInput::INVALID_SPEC, |
- false, |
- false, |
- false, |
- AutocompleteInput::ALL_MATCHES), |
- false); // minimal_changes |
- } |
- |
- // Returns the contact ID in |match|'s additional info, or an empty string if |
- // no ID is present. |
- std::string GetContactIdFromMatch(const AutocompleteMatch& match) { |
- AutocompleteMatch::AdditionalInfo::const_iterator it = |
- match.additional_info.find(ContactProvider::kMatchContactIdKey); |
- return it != match.additional_info.end() ? it->second : std::string(); |
- } |
- |
- // Returns pointers to all of the Contact objects referenced in |
- // |contact_provider_|'s current results. |
- contacts::ContactPointers GetMatchedContacts() { |
- contacts::ContactPointers contacts; |
- const ACMatches& matches = contact_provider_->matches(); |
- for (size_t i = 0; i < matches.size(); ++i) { |
- const contacts::Contact* contact = contact_manager_->GetContactById( |
- profile_, GetContactIdFromMatch(matches[i])); |
- DCHECK(contact) << "Unable to find contact for match " << i; |
- contacts.push_back(contact); |
- } |
- return contacts; |
- } |
- |
- // Returns a semicolon-separated string containing string representations (as |
- // provided by AutocompleteMatch::ClassificationsToString()) of the |
- // |contents_class| fields of all current matches. Results are sorted by |
- // contact ID. |
- std::string GetMatchClassifications() { |
- typedef std::map<std::string, std::string> StringMap; |
- StringMap contact_id_classifications; |
- const ACMatches& matches = contact_provider_->matches(); |
- for (size_t i = 0; i < matches.size(); ++i) { |
- std::string id = GetContactIdFromMatch(matches[i]); |
- DCHECK(!id.empty()) << "Match " << i << " lacks contact ID"; |
- contact_id_classifications[id] = AutocompleteMatch:: |
- ClassificationsToString(matches[i].contents_class); |
- } |
- |
- std::string result; |
- for (StringMap::const_iterator it = contact_id_classifications.begin(); |
- it != contact_id_classifications.end(); ++it) { |
- if (!result.empty()) |
- result += ";"; |
- result += it->second; |
- } |
- return result; |
- } |
- |
- base::MessageLoopForUI message_loop_; |
- content::TestBrowserThread ui_thread_; |
- |
- scoped_ptr<TestingProfileManager> profile_manager_; |
- TestingProfile* profile_; |
- |
- scoped_ptr<contacts::ContactManagerStub> contact_manager_; |
- scoped_refptr<ContactProvider> contact_provider_; |
-}; |
- |
-TEST_F(ContactProviderTest, BasicMatching) { |
- const std::string kContactId1 = "contact_1"; |
- scoped_ptr<contacts::Contact> contact1(new contacts::Contact); |
- InitContact(kContactId1, "Bob Smith", "Bob", "Smith", contact1.get()); |
- |
- const std::string kContactId2 = "contact_2"; |
- scoped_ptr<contacts::Contact> contact2(new contacts::Contact); |
- InitContact(kContactId2, "Dr. Jane Smith", "Jane", "Smith", contact2.get()); |
- |
- contacts::ContactPointers contacts; |
- contacts.push_back(contact1.get()); |
- contacts.push_back(contact2.get()); |
- contact_manager_->SetContacts(contacts); |
- contact_manager_->NotifyObserversAboutUpdatedContacts(); |
- |
- StartQuery("b"); |
- EXPECT_EQ( |
- contacts::test::VarContactsToString(1, contact1.get()), |
- contacts::test::ContactsToString(GetMatchedContacts())); |
- EXPECT_EQ("0,2,1,0", GetMatchClassifications()); |
- |
- StartQuery("bob"); |
- EXPECT_EQ( |
- contacts::test::VarContactsToString(1, contact1.get()), |
- contacts::test::ContactsToString(GetMatchedContacts())); |
- EXPECT_EQ("0,2,3,0", GetMatchClassifications()); |
- |
- StartQuery("bob smith"); |
- EXPECT_EQ( |
- contacts::test::VarContactsToString(1, contact1.get()), |
- contacts::test::ContactsToString(GetMatchedContacts())); |
- EXPECT_EQ("0,2", GetMatchClassifications()); |
- |
- StartQuery("sm"); |
- EXPECT_EQ( |
- contacts::test::VarContactsToString(2, contact1.get(), contact2.get()), |
- contacts::test::ContactsToString(GetMatchedContacts())); |
- EXPECT_EQ("0,0,4,2,6,0;" "0,0,9,2,11,0", GetMatchClassifications()); |
- |
- StartQuery("smith"); |
- EXPECT_EQ( |
- contacts::test::VarContactsToString(2, contact1.get(), contact2.get()), |
- contacts::test::ContactsToString(GetMatchedContacts())); |
- EXPECT_EQ("0,0,4,2;" "0,0,9,2", GetMatchClassifications()); |
- |
- StartQuery("smIth BOb"); |
- EXPECT_EQ( |
- contacts::test::VarContactsToString(1, contact1.get()), |
- contacts::test::ContactsToString(GetMatchedContacts())); |
- EXPECT_EQ("0,2,3,0,4,2", GetMatchClassifications()); |
- |
- StartQuery("bobo"); |
- EXPECT_EQ("", contacts::test::ContactsToString(GetMatchedContacts())); |
- EXPECT_EQ("", GetMatchClassifications()); |
- |
- StartQuery("mith"); |
- EXPECT_EQ("", contacts::test::ContactsToString(GetMatchedContacts())); |
- EXPECT_EQ("", GetMatchClassifications()); |
- |
- StartQuery("dr"); |
- EXPECT_EQ( |
- contacts::test::VarContactsToString(1, contact2.get()), |
- contacts::test::ContactsToString(GetMatchedContacts())); |
- EXPECT_EQ("0,2,2,0", GetMatchClassifications()); |
- |
- StartQuery("dr. j"); |
- EXPECT_EQ( |
- contacts::test::VarContactsToString(1, contact2.get()), |
- contacts::test::ContactsToString(GetMatchedContacts())); |
- EXPECT_EQ("0,2,5,0", GetMatchClassifications()); |
- |
- StartQuery("jane"); |
- EXPECT_EQ( |
- contacts::test::VarContactsToString(1, contact2.get()), |
- contacts::test::ContactsToString(GetMatchedContacts())); |
- EXPECT_EQ("0,0,4,2,8,0", GetMatchClassifications()); |
-} |
- |
-TEST_F(ContactProviderTest, Collation) { |
- scoped_ptr<contacts::Contact> contact(new contacts::Contact); |
- InitContact("1", "Bj\xC3\xB6rn Adelsv\xC3\xA4rd", |
- "Bj\xC3\xB6rn", "Adelsv\xC3\xA4rd", |
- contact.get()); |
- |
- contacts::ContactPointers contacts; |
- contacts.push_back(contact.get()); |
- contact_manager_->SetContacts(contacts); |
- contact_manager_->NotifyObserversAboutUpdatedContacts(); |
- |
- StartQuery("bjorn"); |
- EXPECT_EQ( |
- contacts::test::VarContactsToString(1, contact.get()), |
- contacts::test::ContactsToString(GetMatchedContacts())); |
- EXPECT_EQ("0,2,5,0", GetMatchClassifications()); |
- |
- StartQuery("adelsvard"); |
- EXPECT_EQ( |
- contacts::test::VarContactsToString(1, contact.get()), |
- contacts::test::ContactsToString(GetMatchedContacts())); |
- EXPECT_EQ("0,0,6,2", GetMatchClassifications()); |
-} |
- |
-TEST_F(ContactProviderTest, Relevance) { |
- // Create more contacts than the maximum number of results that an |
- // AutocompleteProvider should return. Give them all the same family name and |
- // ascending affinities from 0.0 to 1.0. |
- const size_t kNumContacts = AutocompleteProvider::kMaxMatches + 1; |
- const std::string kFamilyName = "Jones"; |
- |
- ScopedVector<contacts::Contact> contacts; |
- contacts::ContactPointers contact_pointers; |
- for (size_t i = 0; i < kNumContacts; ++i) { |
- contacts::Contact* contact = new contacts::Contact; |
- std::string id_string = base::IntToString(static_cast<int>(i)); |
- InitContact(id_string, id_string, kFamilyName, |
- id_string + " " + kFamilyName, contact); |
- contact->set_affinity(static_cast<float>(i) / kNumContacts); |
- contacts.push_back(contact); |
- contact_pointers.push_back(contact); |
- } |
- |
- contact_manager_->SetContacts(contact_pointers); |
- contact_manager_->NotifyObserversAboutUpdatedContacts(); |
- |
- // Do a search for the family name and check that the total number of results |
- // is limited as expected and that the results are ordered by descending |
- // affinity. |
- StartQuery(kFamilyName); |
- const ACMatches& matches = contact_provider_->matches(); |
- ASSERT_EQ(AutocompleteProvider::kMaxMatches, matches.size()); |
- |
- int previous_relevance = 0; |
- for (size_t i = 0; i < matches.size(); ++i) { |
- const contacts::Contact& exp_contact = |
- *(contacts[kNumContacts - 1 - i]); |
- std::string match_id = GetContactIdFromMatch(matches[i]); |
- EXPECT_EQ(exp_contact.contact_id(), match_id) |
- << "Expected contact ID " << exp_contact.contact_id() |
- << " for match " << i << " but got " << match_id << " instead"; |
- if (i > 0) { |
- EXPECT_LE(matches[i].relevance, previous_relevance) |
- << "Match " << i << " has greater relevance than previous match"; |
- } |
- EXPECT_FALSE(matches[i].allowed_to_be_default_match); |
- previous_relevance = matches[i].relevance; |
- } |
-} |