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 3 // found in the LICENSE file. 4 5 #ifndef CHROME_BROWSER_CHROMEOS_CONTACTS_CONTACT_TEST_UTIL_H_ 6 #define CHROME_BROWSER_CHROMEOS_CONTACTS_CONTACT_TEST_UTIL_H_ 7 8 #include <string> 9 10 #include "base/memory/scoped_vector.h" 11 #include "chrome/browser/chromeos/contacts/contact.pb.h" 12 #include "ui/gfx/size.h" 13 14 namespace contacts { 15 16 typedef std::vector<const Contact*> ContactPointers; 17 class ContactMap; 18 19 namespace test { 20 21 // Returns a string containing the information stored in |contact|. The same 22 // string will be returned for functionally-equivalent contacts (e.g. ones 23 // containing the same email addresses but in a different order). 24 std::string ContactToString(const Contact& contact); 25 26 // Runs ContactToString() on each entry in |contacts| and returns the results 27 // joined by newlines (in a consistent order). 28 std::string ContactsToString(const ContactPointers& contacts); 29 std::string ContactsToString(const ScopedVector<Contact>& contacts); 30 31 // Convenience wrapper for ContactsToString(). Takes |num_contacts| 32 // const Contact* arguments. 33 std::string VarContactsToString(int num_contacts, ...); 34 35 // Like ContactsToStrings(), but takes a ContactMap as input. 36 std::string ContactMapToString(const ContactMap& contact_map); 37 38 // Saves copies of all contacts in |source| to |dest|. 39 void CopyContacts(const ContactPointers& source, 40 ScopedVector<Contact>* dest); 41 void CopyContacts(const ScopedVector<Contact>& source, 42 ScopedVector<Contact>* dest); 43 44 // Initializes |contact| with the passed-in data. The photo and all address 45 // fields are cleared. |contact_id| corresponds to Contact::contact_id, 46 // |deleted| to Contact::deleted, and a unique string should be passed to 47 // |name_suffix| to make the name-related fields be distinct from those in other 48 // contacts. 49 void InitContact(const std::string& contact_id, 50 const std::string& name_suffix, 51 bool deleted, 52 Contact* contact); 53 54 // Adds an email address to |contact|. 55 void AddEmailAddress(const std::string& address, 56 Contact_AddressType_Relation relation, 57 const std::string& label, 58 bool primary, 59 Contact* contact); 60 61 // Adds a phone number to |contact|. 62 void AddPhoneNumber(const std::string& number, 63 Contact_AddressType_Relation relation, 64 const std::string& label, 65 bool primary, 66 Contact* contact); 67 68 // Adds a postal address to |contact|. 69 void AddPostalAddress(const std::string& address, 70 Contact_AddressType_Relation relation, 71 const std::string& label, 72 bool primary, 73 Contact* contact); 74 75 // Adds an IM address to |contact|. 76 void AddInstantMessagingAddress( 77 const std::string& address, 78 Contact_InstantMessagingAddress_Protocol protocol, 79 Contact_AddressType_Relation relation, 80 const std::string& label, 81 bool primary, 82 Contact* contact); 83 84 // Initializes |contact|'s photo to a bitmap of the given size. 85 // ContactToString() includes the photo's dimensions in its output, so tests can 86 // call this method to set the photo to a given size and then check that the 87 // size matches later (e.g. after loading the contact from a server or from 88 // disk) to confirm that the photo was loaded correctly. 89 void SetPhoto(const gfx::Size& size, Contact* contact); 90 91 } // namespace test 92 } // namespace contacts 93 94 #endif // CHROME_BROWSER_CHROMEOS_CONTACTS_CONTACT_TEST_UTIL_H_ 95