Home | History | Annotate | Download | only in contacts
      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