libpurple/tests/test_contact_info.c

changeset 43302
e7b0bbfec5d5
parent 43301
0e43dc8462e8
equal deleted inserted replaced
43301:0e43dc8462e8 43302:e7b0bbfec5d5
40 test_purple_contact_info_properties(void) { 40 test_purple_contact_info_properties(void) {
41 PurpleContactInfo *info = NULL; 41 PurpleContactInfo *info = NULL;
42 PurpleContactInfoPermission permission; 42 PurpleContactInfoPermission permission;
43 PurpleImage *avatar = NULL; 43 PurpleImage *avatar = NULL;
44 PurpleImage *avatar1 = NULL; 44 PurpleImage *avatar1 = NULL;
45 PurpleImage *avatar_for_display = NULL;
45 PurplePerson *person = NULL; 46 PurplePerson *person = NULL;
46 PurplePerson *person1 = NULL; 47 PurplePerson *person1 = NULL;
47 PurplePresence *presence1 = NULL; 48 PurplePresence *presence1 = NULL;
48 PurpleTags *tags = NULL; 49 PurpleTags *tags = NULL;
49 GTimeZone *time_zone = NULL; 50 GTimeZone *time_zone = NULL;
89 "external", TRUE, 90 "external", TRUE,
90 NULL); 91 NULL);
91 92
92 /* Now use g_object_get to read all of the properties. */ 93 /* Now use g_object_get to read all of the properties. */
93 g_object_get(info, 94 g_object_get(info,
95 "alias", &alias,
96 "avatar", &avatar1,
97 "avatar-for-display", &avatar_for_display,
98 "color", &color,
99 "display-name", &display_name,
100 "email", &email,
101 "external", &external,
102 "favorite", &favorite,
94 "id", &id, 103 "id", &id,
104 "name-for-display", &name_for_display,
105 "note", &note,
106 "permission", &permission,
107 "person", &person1,
108 "phone-number", &phone_number,
109 "presence", &presence1,
110 "sid", &sid,
111 "tags", &tags,
112 "time-zone", &time_zone1,
95 "username", &username, 113 "username", &username,
96 "display-name", &display_name,
97 "alias", &alias,
98 "color", &color,
99 "email", &email,
100 "phone-number", &phone_number,
101 "time-zone", &time_zone1,
102 "note", &note,
103 "avatar", &avatar1,
104 "presence", &presence1,
105 "tags", &tags,
106 "person", &person1,
107 "permission", &permission,
108 "sid", &sid,
109 "name-for-display", &name_for_display,
110 "favorite", &favorite,
111 "external", &external,
112 NULL); 114 NULL);
113 115
114 /* Compare all the things. */ 116 g_assert_cmpstr(alias, ==, "alias");
117 g_clear_pointer(&alias, g_free);
118
119 g_assert_true(avatar1 == avatar);
120 g_clear_object(&avatar1);
121
122 g_assert_true(avatar_for_display == avatar);
123 g_clear_object(&avatar_for_display);
124
125 g_assert_cmpstr(color, ==, "#e9c636");
126 g_clear_pointer(&color, g_free);
127
128 g_assert_cmpstr(display_name, ==, "display-name");
129 g_clear_pointer(&display_name, g_free);
130
131 g_assert_cmpstr(email, ==, "pidgin@example.com");
132 g_clear_pointer(&email, g_free);
133
134 g_assert_true(external);
135
136 g_assert_true(favorite);
137
115 g_assert_cmpstr(id, ==, "id1"); 138 g_assert_cmpstr(id, ==, "id1");
116 g_assert_cmpstr(username, ==, "username"); 139 g_clear_pointer(&id, g_free);
117 g_assert_cmpstr(display_name, ==, "display-name"); 140
118 g_assert_cmpstr(alias, ==, "alias"); 141 g_assert_cmpstr(name_for_display, ==, "alias");
119 g_assert_cmpstr(color, ==, "#e9c636"); 142 g_clear_pointer(&name_for_display, g_free);
120 g_assert_cmpstr(email, ==, "pidgin@example.com"); 143
144 g_assert_cmpstr(note, ==, "message in a bottle");
145 g_clear_pointer(&note, g_free);
146
121 g_assert_cmpstr(phone_number, ==, "+10123456789"); 147 g_assert_cmpstr(phone_number, ==, "+10123456789");
148 g_clear_pointer(&phone_number, g_free);
149
150 g_assert_true(permission == PURPLE_CONTACT_INFO_PERMISSION_ALLOW);
151
152 g_assert_true(person1 == person);
153 g_clear_object(&person1);
154
155 g_assert_nonnull(presence1);
156 g_clear_object(&presence1);
157
158 g_assert_cmpstr(sid, ==, "sid");
159 g_clear_pointer(&sid, g_free);
160
161 g_assert_nonnull(tags);
162 g_clear_object(&tags);
163
122 g_assert_cmpstr(g_time_zone_get_identifier(time_zone1), ==, 164 g_assert_cmpstr(g_time_zone_get_identifier(time_zone1), ==,
123 g_time_zone_get_identifier(time_zone)); 165 g_time_zone_get_identifier(time_zone));
124 g_assert_cmpstr(note, ==, "message in a bottle"); 166 g_clear_pointer(&time_zone, g_time_zone_unref);
125 g_assert_cmpstr(name_for_display, ==, "alias"); 167
126 g_assert_true(avatar1 == avatar); 168 g_assert_cmpstr(username, ==, "username");
127 g_assert_nonnull(presence1);
128 g_assert_nonnull(tags);
129 g_assert_true(person1 == person);
130 g_assert_true(permission == PURPLE_CONTACT_INFO_PERMISSION_ALLOW);
131 g_assert_cmpstr(sid, ==, "sid");
132 g_assert_true(favorite);
133 g_assert_true(external);
134
135 /* Free/unref all the things. */
136 g_clear_pointer(&id, g_free);
137 g_clear_pointer(&username, g_free); 169 g_clear_pointer(&username, g_free);
138 g_clear_pointer(&display_name, g_free); 170
139 g_clear_pointer(&alias, g_free);
140 g_clear_pointer(&color, g_free);
141 g_clear_pointer(&email, g_free);
142 g_clear_pointer(&phone_number, g_free);
143 g_clear_pointer(&time_zone, g_time_zone_unref);
144 g_clear_pointer(&note, g_free);
145 g_clear_pointer(&name_for_display, g_free);
146 g_clear_pointer(&sid, g_free);
147 g_clear_object(&avatar1);
148 g_clear_object(&presence1);
149 g_clear_object(&tags);
150 g_clear_object(&person); 171 g_clear_object(&person);
151 g_clear_object(&person1);
152
153 g_clear_object(&avatar); 172 g_clear_object(&avatar);
154 g_clear_object(&info); 173 g_clear_object(&info);
174 }
175
176 static void
177 test_purple_contact_info_get_avatar_for_display(void) {
178 PurpleContactInfo *info = NULL;
179 PurpleImage *avatar1 = NULL;
180 PurpleImage *contact_avatar = NULL;
181 PurpleImage *person_avatar = NULL;
182 PurplePerson *person = NULL;
183
184 contact_avatar = g_object_new(PURPLE_TYPE_IMAGE, NULL);
185
186 info = purple_contact_info_new(NULL);
187 purple_contact_info_set_avatar(info, contact_avatar);
188
189 /* Make sure the contact info's avatar gets returned if there is no
190 * associated person.
191 */
192 avatar1 = purple_contact_info_get_avatar_for_display(info);
193 g_assert_true(avatar1 == contact_avatar);
194
195 /* Create a person and make sure we get the contact's avatar back. */
196 person = purple_person_new();
197 purple_person_add_contact_info(person, info);
198
199 avatar1 = purple_contact_info_get_avatar_for_display(info);
200 g_assert_true(avatar1 == contact_avatar);
201
202 /* Now set an avatar on the person and verify that it gets returned. */
203 person_avatar = g_object_new(PURPLE_TYPE_IMAGE, NULL);
204 purple_person_set_avatar(person, person_avatar);
205
206 avatar1 = purple_contact_info_get_avatar_for_display(info);
207 g_assert_true(avatar1 == person_avatar);
208
209 /* Remove the contact info from the person and verify that the contact
210 * avatar gets returned again.
211 */
212 purple_contact_info_set_person(info, NULL);
213
214 avatar1 = purple_contact_info_get_avatar_for_display(info);
215 g_assert_true(avatar1 == contact_avatar);
216
217 /* Cleanup */
218 g_assert_finalize_object(person);
219 g_assert_finalize_object(info);
220 g_assert_finalize_object(contact_avatar);
221 g_assert_finalize_object(person_avatar);
155 } 222 }
156 223
157 /****************************************************************************** 224 /******************************************************************************
158 * get_name_for_display tests 225 * get_name_for_display tests
159 *****************************************************************************/ 226 *****************************************************************************/
584 651
585 g_test_add_func("/contact-info/new", 652 g_test_add_func("/contact-info/new",
586 test_purple_contact_info_new); 653 test_purple_contact_info_new);
587 g_test_add_func("/contact-info/properties", 654 g_test_add_func("/contact-info/properties",
588 test_purple_contact_info_properties); 655 test_purple_contact_info_properties);
656
657 g_test_add_func("/contact-info/get-avatar-for-display",
658 test_purple_contact_info_get_avatar_for_display);
589 659
590 g_test_add_func("/contact-info/get_name_for_display/person_with_alias", 660 g_test_add_func("/contact-info/get_name_for_display/person_with_alias",
591 test_purple_contact_info_get_name_for_display_person_with_alias); 661 test_purple_contact_info_get_name_for_display_person_with_alias);
592 g_test_add_func("/contact-info/get_name_for_display/contact_with_alias", 662 g_test_add_func("/contact-info/get_name_for_display/contact_with_alias",
593 test_purple_contact_info_get_name_for_display_contact_info_with_alias); 663 test_purple_contact_info_get_name_for_display_contact_info_with_alias);

mercurial