libpurple/tests/test_person.c

Thu, 23 Mar 2023 23:11:59 -0500

author
Elliott Sales de Andrade <quantum.analyst@gmail.com>
date
Thu, 23 Mar 2023 23:11:59 -0500
changeset 42184
4e1bf25f5575
parent 42059
e6dcbf0db616
child 42270
1bdd57a0c0d1
permissions
-rw-r--r--

Fix several leaks in tests

All of these are specific to tests, not the library code.

For the moment, `protocol_xfer` still leaks connections (and anything they hold on to) because it is very difficult to disentangle them from the connection manager in the partially implemented state they are in.

This fixes leaks of options in the account option test (these two leaks occur for every test since they all leak the option):
```
61 (48 direct, 13 indirect) bytes in 1 blocks are definitely lost in loss record 133 of 276
at 0x4848464: calloc (vg_replace_malloc.c:1340)
by 0x49F75F0: g_malloc0 (gmem.c:163)
by 0x48C3B2E: purple_account_option_new (purpleaccountoption.c:78)
by 0x4014AF: test_purple_account_option_copy_int (test_account_option.c:67)
by 0x4A1CC7D: UnknownInlinedFun (gtestutils.c:2933)
by 0x4A1CC7D: g_test_run_suite_internal (gtestutils.c:3021)
by 0x4A1C9E4: g_test_run_suite_internal (gtestutils.c:3038)
by 0x4A1C9E4: g_test_run_suite_internal (gtestutils.c:3038)
by 0x4A1D181: g_test_run_suite (gtestutils.c:3115)
by 0x4A156EC: UnknownInlinedFun (gtestutils.c:2234)
by 0x4A156EC: g_test_run (gtestutils.c:2221)
by 0x401721: main (test_account_option.c:157)

61 (48 direct, 13 indirect) bytes in 1 blocks are definitely lost in loss record 134 of 276
at 0x4848464: calloc (vg_replace_malloc.c:1340)
by 0x49F75F0: g_malloc0 (gmem.c:163)
by 0x48C3BC7: purple_account_option_copy (purpleaccountoption.c:93)
by 0x4014BF: test_purple_account_option_copy_int (test_account_option.c:68)
by 0x4A1CC7D: UnknownInlinedFun (gtestutils.c:2933)
by 0x4A1CC7D: g_test_run_suite_internal (gtestutils.c:3021)
by 0x4A1C9E4: g_test_run_suite_internal (gtestutils.c:3038)
by 0x4A1C9E4: g_test_run_suite_internal (gtestutils.c:3038)
by 0x4A1D181: g_test_run_suite (gtestutils.c:3115)
by 0x4A156EC: UnknownInlinedFun (gtestutils.c:2234)
by 0x4A156EC: g_test_run (gtestutils.c:2221)
by 0x401721: main (test_account_option.c:157)
```
leaks in the credential manager test (times 3 for read/write/cancel tests):
```
69 (16 direct, 53 indirect) bytes in 1 blocks are definitely lost in loss record 2,427 of 3,503
at 0x484386F: malloc (vg_replace_malloc.c:393)
by 0x4A58168: g_malloc (gmem.c:130)
by 0x4A6FAB5: g_slice_alloc (gslice.c:1074)
by 0x4A700EC: g_slice_alloc0 (gslice.c:1100)
by 0x4A3BECB: g_error_allocate (gerror.c:710)
by 0x4A3C93F: UnknownInlinedFun (gerror.c:724)
by 0x4A3C93F: g_error_new_valist (gerror.c:766)
by 0x4BEE558: g_task_return_new_error (gtask.c:1941)
by 0x48D82C0: purple_credential_manager_read_password_async (purplecredentialmanager.c:492)
by 0x403634: test_purple_credential_manager_no_provider_read_password_idle (test_credential_manager.c:329)
by 0x4A4ECB1: g_idle_dispatch (gmain.c:6124)
by 0x4A4FCBE: UnknownInlinedFun (gmain.c:3444)
by 0x4A4FCBE: g_main_context_dispatch (gmain.c:4162)
by 0x4AA5597: g_main_context_iterate.constprop.0 (gmain.c:4238)
by 0x4A4F28E: g_main_loop_run (gmain.c:4438)
by 0x40369F: test_purple_credential_manager_no_provider_read_password_async (test_credential_manager.c:345)
by 0x4A7DC7D: UnknownInlinedFun (gtestutils.c:2933)
by 0x4A7DC7D: g_test_run_suite_internal (gtestutils.c:3021)
by 0x4A7D9E4: g_test_run_suite_internal (gtestutils.c:3038)
by 0x4A7D9E4: g_test_run_suite_internal (gtestutils.c:3038)
by 0x4A7E181: g_test_run_suite (gtestutils.c:3115)
by 0x4A766EC: UnknownInlinedFun (gtestutils.c:2234)
by 0x4A766EC: g_test_run (gtestutils.c:2221)
by 0x4048F6: main (test_credential_manager.c:695)
```
a leak in the image test:
```
161 bytes in 1 blocks are definitely lost in loss record 260 of 274
at 0x484386F: malloc (vg_replace_malloc.c:393)
by 0x4A55363: g_try_malloc (gmem.c:286)
by 0x4A3D630: UnknownInlinedFun (gfileutils.c:819)
by 0x4A3D630: UnknownInlinedFun (gfileutils.c:924)
by 0x4A3D630: g_file_get_contents (gfileutils.c:1027)
by 0x401890: test_image_new_from_file (test_image.c:144)
by 0x4A7DC7D: UnknownInlinedFun (gtestutils.c:2933)
by 0x4A7DC7D: g_test_run_suite_internal (gtestutils.c:3021)
by 0x4A7D9E4: g_test_run_suite_internal (gtestutils.c:3038)
by 0x4A7E181: g_test_run_suite (gtestutils.c:3115)
by 0x4A766EC: UnknownInlinedFun (gtestutils.c:2234)
by 0x4A766EC: g_test_run (gtestutils.c:2221)
by 0x40195D: main (test_image.c:172)
```
a leak in queued output stream test:
```
72 (40 direct, 32 indirect) bytes in 1 blocks are definitely lost in loss record 219 of 396
at 0x49D51EF: g_type_create_instance (gtype.c:1909)
by 0x49BAC1F: g_object_new_internal (gobject.c:2228)
by 0x49BC247: g_object_new_with_properties (gobject.c:2391)
by 0x49BCFF0: g_object_new (gobject.c:2037)
by 0x402003: test_queued_output_stream_push_bytes_async_error (test_queued_output_stream.c:219)
by 0x4A7DC7D: UnknownInlinedFun (gtestutils.c:2933)
by 0x4A7DC7D: g_test_run_suite_internal (gtestutils.c:3021)
by 0x4A7D9E4: g_test_run_suite_internal (gtestutils.c:3038)
by 0x4A7E181: g_test_run_suite (gtestutils.c:3115)
by 0x4A766EC: UnknownInlinedFun (gtestutils.c:2234)
by 0x4A766EC: g_test_run (gtestutils.c:2221)
by 0x402429: main (test_queued_output_stream.c:280)
```
and protocol xfer tests (times 3 for each test that creates a test protocol object):
```
112 (48 direct, 64 indirect) bytes in 1 blocks are definitely lost in loss record 3,430 of 3,698
at 0x49D51EF: g_type_create_instance (gtype.c:1909)
by 0x49BAC1F: g_object_new_internal (gobject.c:2228)
by 0x49BC247: g_object_new_with_properties (gobject.c:2391)
by 0x49BCFF0: g_object_new (gobject.c:2037)
by 0x40291C: test_purple_protocol_xfer_send_file_func (test_protocol_xfer.c:146)
by 0x4A7DC7D: UnknownInlinedFun (gtestutils.c:2933)
by 0x4A7DC7D: g_test_run_suite_internal (gtestutils.c:3021)
by 0x4A7D9E4: g_test_run_suite_internal (gtestutils.c:3038)
by 0x4A7E181: g_test_run_suite (gtestutils.c:3115)
by 0x4A766EC: UnknownInlinedFun (gtestutils.c:2234)
by 0x4A766EC: g_test_run (gtestutils.c:2221)
by 0x402B64: main (test_protocol_xfer.c:195)
```
and util tests (times 3 for each call to `purple_text_strip_mnemonic` in the test):
```
5 bytes in 1 blocks are definitely lost in loss record 5 of 247
at 0x484386F: malloc (vg_replace_malloc.c:393)
by 0x49F7168: g_malloc (gmem.c:130)
by 0x491975B: purple_text_strip_mnemonic (util.c:895)
by 0x4015B0: test_util_text_strip_mnemonic (test_util.c:49)
by 0x4A1CC7D: UnknownInlinedFun (gtestutils.c:2933)
by 0x4A1CC7D: g_test_run_suite_internal (gtestutils.c:3021)
by 0x4A1C9E4: g_test_run_suite_internal (gtestutils.c:3038)
by 0x4A1C9E4: g_test_run_suite_internal (gtestutils.c:3038)
by 0x4A1D181: g_test_run_suite (gtestutils.c:3115)
by 0x4A156EC: UnknownInlinedFun (gtestutils.c:2234)
by 0x4A156EC: g_test_run (gtestutils.c:2221)
by 0x401901: main (test_util.c:224)
```
and these leaks in any test that initializes the test UI:
```
4,104 bytes in 1 blocks are possibly lost in loss record 3,451 of 3,457
at 0x484386F: malloc (vg_replace_malloc.c:393)
by 0x5235B67: sqlite3MemMalloc.lto_priv.0 (sqlite3.c:25493)
by 0x5232797: UnknownInlinedFun (sqlite3.c:29181)
by 0x5232797: UnknownInlinedFun (sqlite3.c:29227)
by 0x5232797: sqlite3Malloc.lto_priv.0 (sqlite3.c:29221)
by 0x523BD8B: pcache1Alloc.lto_priv.0 (sqlite3.c:53546)
by 0x5249A8B: UnknownInlinedFun (sqlite3.c:53675)
by 0x5249A8B: allocateTempSpace (sqlite3.c:70848)
by 0x52625A6: sqlite3VdbeExec.lto_priv.0 (sqlite3.c:93857)
by 0x525CBEE: UnknownInlinedFun (sqlite3.c:87995)
by 0x525CBEE: UnknownInlinedFun (sqlite3.c:88056)
by 0x525CBEE: sqlite3_step (sqlite3.c:88045)
by 0x529B324: sqlite3_exec (sqlite3.c:131002)
by 0x48FD558: purple_sqlite3_run_migration (purplesqlite3.c:37)
by 0x48FDBB4: purple_sqlite3_run_migrations_from_resources (purplesqlite3.c:195)
by 0x48FDED9: purple_sqlite_history_adapter_run_migrations (purplesqlitehistoryadapter.c:69)
by 0x48FE7F0: purple_sqlite_history_adapter_activate (purplesqlitehistoryadapter.c:287)
by 0x48DB656: purple_history_adapter_activate (purplehistoryadapter.c:181)
by 0x48DC9BC: purple_history_manager_set_active (purplehistorymanager.c:308)
by 0x402BA8: test_ui_init_history (test_ui.c:132)
by 0x402C80: test_ui_purple_init (test_ui.c:167)
by 0x4027BB: main (test_contact.c:88)

4,368 bytes in 1 blocks are possibly lost in loss record 3,453 of 3,457
at 0x484386F: malloc (vg_replace_malloc.c:393)
by 0x5235B67: sqlite3MemMalloc.lto_priv.0 (sqlite3.c:25493)
by 0x5232797: UnknownInlinedFun (sqlite3.c:29181)
by 0x5232797: UnknownInlinedFun (sqlite3.c:29227)
by 0x5232797: sqlite3Malloc.lto_priv.0 (sqlite3.c:29221)
by 0x523BD8B: pcache1Alloc.lto_priv.0 (sqlite3.c:53546)
by 0x5240077: UnknownInlinedFun (sqlite3.c:53634)
by 0x5240077: pcache1FetchStage2 (sqlite3.c:54104)
by 0x5243E9C: UnknownInlinedFun (sqlite3.c:52671)
by 0x5243E9C: getPageNormal.lto_priv.0 (sqlite3.c:60628)
by 0x524A510: UnknownInlinedFun (sqlite3.c:60805)
by 0x524A510: btreeGetPage.lto_priv.0 (sqlite3.c:70289)
by 0x524C2F6: UnknownInlinedFun (sqlite3.c:71257)
by 0x524C2F6: sqlite3BtreeBeginTrans.lto_priv.0 (sqlite3.c:71647)
by 0x5266B3A: sqlite3VdbeExec.lto_priv.0 (sqlite3.c:93532)
by 0x525CBEE: UnknownInlinedFun (sqlite3.c:87995)
by 0x525CBEE: UnknownInlinedFun (sqlite3.c:88056)
by 0x525CBEE: sqlite3_step (sqlite3.c:88045)
by 0x48FD715: purple_sqlite3_get_schema_version (purplesqlite3.c:79)
by 0x48FD9DD: purple_sqlite3_run_migrations_from_resources (purplesqlite3.c:146)
by 0x48FDED9: purple_sqlite_history_adapter_run_migrations (purplesqlitehistoryadapter.c:69)
by 0x48FE7F0: purple_sqlite_history_adapter_activate (purplesqlitehistoryadapter.c:287)
by 0x48DB656: purple_history_adapter_activate (purplehistoryadapter.c:181)
by 0x48DC9BC: purple_history_manager_set_active (purplehistorymanager.c:308)
by 0x402BA8: test_ui_init_history (test_ui.c:132)
by 0x402C80: test_ui_purple_init (test_ui.c:167)
by 0x4027BB: main (test_contact.c:88)

4,368 bytes in 1 blocks are possibly lost in loss record 3,454 of 3,457
at 0x484386F: malloc (vg_replace_malloc.c:393)
by 0x5235B67: sqlite3MemMalloc.lto_priv.0 (sqlite3.c:25493)
by 0x5232797: UnknownInlinedFun (sqlite3.c:29181)
by 0x5232797: UnknownInlinedFun (sqlite3.c:29227)
by 0x5232797: sqlite3Malloc.lto_priv.0 (sqlite3.c:29221)
by 0x523BD8B: pcache1Alloc.lto_priv.0 (sqlite3.c:53546)
by 0x5240077: UnknownInlinedFun (sqlite3.c:53634)
by 0x5240077: pcache1FetchStage2 (sqlite3.c:54104)
by 0x5243E9C: UnknownInlinedFun (sqlite3.c:52671)
by 0x5243E9C: getPageNormal.lto_priv.0 (sqlite3.c:60628)
by 0x52499BC: UnknownInlinedFun (sqlite3.c:60805)
by 0x52499BC: UnknownInlinedFun (sqlite3.c:70289)
by 0x52499BC: btreeGetUnusedPage (sqlite3.c:70432)
by 0x524F504: allocateBtreePage.lto_priv.0 (sqlite3.c:74604)
by 0x5256209: btreeCreateTable.lto_priv.0 (sqlite3.c:77830)
by 0x5265EB2: UnknownInlinedFun (sqlite3.c:77849)
by 0x5265EB2: sqlite3VdbeExec.lto_priv.0 (sqlite3.c:96382)
by 0x525CBEE: UnknownInlinedFun (sqlite3.c:87995)
by 0x525CBEE: UnknownInlinedFun (sqlite3.c:88056)
by 0x525CBEE: sqlite3_step (sqlite3.c:88045)
by 0x529B324: sqlite3_exec (sqlite3.c:131002)
by 0x48FD558: purple_sqlite3_run_migration (purplesqlite3.c:37)
by 0x48FDBB4: purple_sqlite3_run_migrations_from_resources (purplesqlite3.c:195)
by 0x48FDED9: purple_sqlite_history_adapter_run_migrations (purplesqlitehistoryadapter.c:69)
by 0x48FE7F0: purple_sqlite_history_adapter_activate (purplesqlitehistoryadapter.c:287)
by 0x48DB656: purple_history_adapter_activate (purplehistoryadapter.c:181)
by 0x48DC9BC: purple_history_manager_set_active (purplehistorymanager.c:308)
by 0x402BA8: test_ui_init_history (test_ui.c:132)
by 0x402C80: test_ui_purple_init (test_ui.c:167)
by 0x4027BB: main (test_contact.c:88)
```

Testing Done:
Ran tests in valgrind, and all above leaks were gone except for noted `protocol_xfer` issues, and a bunch of leaks of the `PurpleBuddy`-`PurpleContact` compatibility bindings, which will go away in their entirety eventually.

Reviewed at https://reviews.imfreedom.org/r/2385/

41749
c22448f50d5d Create PurplePerson.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
1 /*
c22448f50d5d Create PurplePerson.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
2 * Purple - Internet Messaging Library
c22448f50d5d Create PurplePerson.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
3 * Copyright (C) Pidgin Developers <devel@pidgin.im>
c22448f50d5d Create PurplePerson.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
4 *
c22448f50d5d Create PurplePerson.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
5 * This library is free software; you can redistribute it and/or
c22448f50d5d Create PurplePerson.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
6 * modify it under the terms of the GNU Lesser General Public
c22448f50d5d Create PurplePerson.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
7 * License as published by the Free Software Foundation; either
c22448f50d5d Create PurplePerson.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
8 * version 2 of the License, or (at your option) any later version.
c22448f50d5d Create PurplePerson.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
9 *
c22448f50d5d Create PurplePerson.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
10 * This library is distributed in the hope that it will be useful,
c22448f50d5d Create PurplePerson.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
11 * but WITHOUT ANY WARRANTY; without even the implied warranty of
c22448f50d5d Create PurplePerson.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
12 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
c22448f50d5d Create PurplePerson.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
13 * Lesser General Public License for more details.
c22448f50d5d Create PurplePerson.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
14 *
c22448f50d5d Create PurplePerson.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
15 * You should have received a copy of the GNU Lesser General Public
c22448f50d5d Create PurplePerson.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
16 * License along with this library; if not, see <https://www.gnu.org/licenses/>.
c22448f50d5d Create PurplePerson.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
17 */
c22448f50d5d Create PurplePerson.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
18
c22448f50d5d Create PurplePerson.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
19 #include <glib.h>
c22448f50d5d Create PurplePerson.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
20
c22448f50d5d Create PurplePerson.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
21 #include <purple.h>
c22448f50d5d Create PurplePerson.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
22
c22448f50d5d Create PurplePerson.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
23 #include "test_ui.h"
c22448f50d5d Create PurplePerson.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
24
c22448f50d5d Create PurplePerson.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
25 /******************************************************************************
c22448f50d5d Create PurplePerson.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
26 * Callbacks
c22448f50d5d Create PurplePerson.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
27 *****************************************************************************/
c22448f50d5d Create PurplePerson.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
28 static void
c22448f50d5d Create PurplePerson.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
29 test_purple_person_items_changed_cb(G_GNUC_UNUSED GListModel *model,
c22448f50d5d Create PurplePerson.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
30 G_GNUC_UNUSED guint position,
c22448f50d5d Create PurplePerson.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
31 G_GNUC_UNUSED guint removed,
c22448f50d5d Create PurplePerson.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
32 G_GNUC_UNUSED guint added,
c22448f50d5d Create PurplePerson.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
33 gpointer data)
c22448f50d5d Create PurplePerson.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
34 {
c22448f50d5d Create PurplePerson.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
35 gboolean *called = data;
c22448f50d5d Create PurplePerson.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
36
c22448f50d5d Create PurplePerson.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
37 *called = TRUE;
c22448f50d5d Create PurplePerson.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
38 }
c22448f50d5d Create PurplePerson.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
39
c22448f50d5d Create PurplePerson.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
40 static void
c22448f50d5d Create PurplePerson.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
41 test_purple_person_notify_cb(G_GNUC_UNUSED GObject *obj,
c22448f50d5d Create PurplePerson.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
42 G_GNUC_UNUSED GParamSpec *pspec,
c22448f50d5d Create PurplePerson.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
43 gpointer data)
c22448f50d5d Create PurplePerson.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
44 {
c22448f50d5d Create PurplePerson.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
45 gboolean *called = data;
c22448f50d5d Create PurplePerson.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
46
c22448f50d5d Create PurplePerson.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
47 *called = TRUE;
c22448f50d5d Create PurplePerson.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
48 }
c22448f50d5d Create PurplePerson.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
49
c22448f50d5d Create PurplePerson.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
50 /******************************************************************************
c22448f50d5d Create PurplePerson.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
51 * Tests
c22448f50d5d Create PurplePerson.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
52 *****************************************************************************/
c22448f50d5d Create PurplePerson.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
53 static void
c22448f50d5d Create PurplePerson.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
54 test_purple_person_new(void) {
c22448f50d5d Create PurplePerson.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
55 PurplePerson *person = NULL;
c22448f50d5d Create PurplePerson.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
56
c22448f50d5d Create PurplePerson.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
57 person = purple_person_new();
c22448f50d5d Create PurplePerson.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
58
c22448f50d5d Create PurplePerson.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
59 g_assert_true(PURPLE_IS_PERSON(person));
c22448f50d5d Create PurplePerson.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
60
c22448f50d5d Create PurplePerson.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
61 g_clear_object(&person);
c22448f50d5d Create PurplePerson.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
62 }
c22448f50d5d Create PurplePerson.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
63
c22448f50d5d Create PurplePerson.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
64 static void
c22448f50d5d Create PurplePerson.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
65 test_purple_person_properties(void) {
c22448f50d5d Create PurplePerson.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
66 PurpleContact *person = NULL;
c22448f50d5d Create PurplePerson.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
67 PurpleTags *tags = NULL;
c22448f50d5d Create PurplePerson.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
68 GdkPixbuf *avatar = NULL;
c22448f50d5d Create PurplePerson.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
69 GdkPixbuf *avatar1 = NULL;
42054
7aa77854392d Add a property and accessor for getting the avatar to display for a PurplePerson
Gary Kramlich <grim@reaperworld.com>
parents: 42053
diff changeset
70 GdkPixbuf *avatar_for_display = NULL;
42053
742efe62e610 Add a name-for-display property to PurplePerson
Gary Kramlich <grim@reaperworld.com>
parents: 41948
diff changeset
71 char *id = NULL;
742efe62e610 Add a name-for-display property to PurplePerson
Gary Kramlich <grim@reaperworld.com>
parents: 41948
diff changeset
72 char *alias = NULL;
742efe62e610 Add a name-for-display property to PurplePerson
Gary Kramlich <grim@reaperworld.com>
parents: 41948
diff changeset
73 char *name_for_display = NULL;
41749
c22448f50d5d Create PurplePerson.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
74
c22448f50d5d Create PurplePerson.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
75 /* Create our avatar for testing. */
c22448f50d5d Create PurplePerson.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
76 avatar = gdk_pixbuf_new(GDK_COLORSPACE_RGB, FALSE, 8, 1, 1);
c22448f50d5d Create PurplePerson.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
77
c22448f50d5d Create PurplePerson.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
78 /* Use g_object_new so we can test setting properties by name. All of them
c22448f50d5d Create PurplePerson.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
79 * call the setter methods, so by doing it this way we exercise more of the
c22448f50d5d Create PurplePerson.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
80 * code.
c22448f50d5d Create PurplePerson.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
81 */
c22448f50d5d Create PurplePerson.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
82 person = g_object_new(
c22448f50d5d Create PurplePerson.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
83 PURPLE_TYPE_PERSON,
c22448f50d5d Create PurplePerson.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
84 "alias", "alias",
c22448f50d5d Create PurplePerson.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
85 "avatar", avatar,
c22448f50d5d Create PurplePerson.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
86 NULL);
c22448f50d5d Create PurplePerson.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
87
c22448f50d5d Create PurplePerson.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
88 /* Now use g_object_get to read all of the properties. */
c22448f50d5d Create PurplePerson.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
89 g_object_get(person,
c22448f50d5d Create PurplePerson.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
90 "id", &id,
c22448f50d5d Create PurplePerson.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
91 "alias", &alias,
c22448f50d5d Create PurplePerson.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
92 "avatar", &avatar1,
42054
7aa77854392d Add a property and accessor for getting the avatar to display for a PurplePerson
Gary Kramlich <grim@reaperworld.com>
parents: 42053
diff changeset
93 "avatar-for-display", &avatar_for_display,
42053
742efe62e610 Add a name-for-display property to PurplePerson
Gary Kramlich <grim@reaperworld.com>
parents: 41948
diff changeset
94 "name-for-display", &name_for_display,
41749
c22448f50d5d Create PurplePerson.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
95 "tags", &tags,
c22448f50d5d Create PurplePerson.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
96 NULL);
c22448f50d5d Create PurplePerson.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
97
c22448f50d5d Create PurplePerson.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
98 /* Compare all the things. */
c22448f50d5d Create PurplePerson.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
99 g_assert_nonnull(id);
c22448f50d5d Create PurplePerson.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
100 g_assert_cmpstr(alias, ==, "alias");
c22448f50d5d Create PurplePerson.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
101 g_assert_true(avatar1 == avatar);
42054
7aa77854392d Add a property and accessor for getting the avatar to display for a PurplePerson
Gary Kramlich <grim@reaperworld.com>
parents: 42053
diff changeset
102 g_assert_true(avatar1 == avatar_for_display);
42053
742efe62e610 Add a name-for-display property to PurplePerson
Gary Kramlich <grim@reaperworld.com>
parents: 41948
diff changeset
103 g_assert_cmpstr(name_for_display, ==, "alias");
41749
c22448f50d5d Create PurplePerson.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
104 g_assert_nonnull(tags);
c22448f50d5d Create PurplePerson.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
105
c22448f50d5d Create PurplePerson.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
106 /* Free/unref all the things. */
c22448f50d5d Create PurplePerson.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
107 g_clear_pointer(&id, g_free);
c22448f50d5d Create PurplePerson.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
108 g_clear_pointer(&alias, g_free);
c22448f50d5d Create PurplePerson.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
109 g_clear_object(&avatar1);
42054
7aa77854392d Add a property and accessor for getting the avatar to display for a PurplePerson
Gary Kramlich <grim@reaperworld.com>
parents: 42053
diff changeset
110 g_clear_object(&avatar_for_display);
42053
742efe62e610 Add a name-for-display property to PurplePerson
Gary Kramlich <grim@reaperworld.com>
parents: 41948
diff changeset
111 g_clear_pointer(&name_for_display, g_free);
41749
c22448f50d5d Create PurplePerson.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
112 g_clear_object(&tags);
c22448f50d5d Create PurplePerson.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
113
c22448f50d5d Create PurplePerson.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
114 g_clear_object(&avatar);
c22448f50d5d Create PurplePerson.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
115 g_clear_object(&person);
c22448f50d5d Create PurplePerson.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
116 }
c22448f50d5d Create PurplePerson.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
117
c22448f50d5d Create PurplePerson.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
118 static void
42054
7aa77854392d Add a property and accessor for getting the avatar to display for a PurplePerson
Gary Kramlich <grim@reaperworld.com>
parents: 42053
diff changeset
119 test_purple_person_avatar_for_display_person(void) {
7aa77854392d Add a property and accessor for getting the avatar to display for a PurplePerson
Gary Kramlich <grim@reaperworld.com>
parents: 42053
diff changeset
120 PurpleContactInfo *info = NULL;
7aa77854392d Add a property and accessor for getting the avatar to display for a PurplePerson
Gary Kramlich <grim@reaperworld.com>
parents: 42053
diff changeset
121 PurplePerson *person = NULL;
7aa77854392d Add a property and accessor for getting the avatar to display for a PurplePerson
Gary Kramlich <grim@reaperworld.com>
parents: 42053
diff changeset
122 GdkPixbuf *avatar = NULL;
7aa77854392d Add a property and accessor for getting the avatar to display for a PurplePerson
Gary Kramlich <grim@reaperworld.com>
parents: 42053
diff changeset
123
7aa77854392d Add a property and accessor for getting the avatar to display for a PurplePerson
Gary Kramlich <grim@reaperworld.com>
parents: 42053
diff changeset
124 person = purple_person_new();
7aa77854392d Add a property and accessor for getting the avatar to display for a PurplePerson
Gary Kramlich <grim@reaperworld.com>
parents: 42053
diff changeset
125 avatar = gdk_pixbuf_new(GDK_COLORSPACE_RGB, FALSE, 8, 1, 1);
7aa77854392d Add a property and accessor for getting the avatar to display for a PurplePerson
Gary Kramlich <grim@reaperworld.com>
parents: 42053
diff changeset
126 purple_person_set_avatar(person, avatar);
7aa77854392d Add a property and accessor for getting the avatar to display for a PurplePerson
Gary Kramlich <grim@reaperworld.com>
parents: 42053
diff changeset
127
7aa77854392d Add a property and accessor for getting the avatar to display for a PurplePerson
Gary Kramlich <grim@reaperworld.com>
parents: 42053
diff changeset
128 info = purple_contact_info_new("id");
7aa77854392d Add a property and accessor for getting the avatar to display for a PurplePerson
Gary Kramlich <grim@reaperworld.com>
parents: 42053
diff changeset
129 purple_person_add_contact_info(person, info);
7aa77854392d Add a property and accessor for getting the avatar to display for a PurplePerson
Gary Kramlich <grim@reaperworld.com>
parents: 42053
diff changeset
130
7aa77854392d Add a property and accessor for getting the avatar to display for a PurplePerson
Gary Kramlich <grim@reaperworld.com>
parents: 42053
diff changeset
131 /* Make sure the person's alias is overriding the contact info. */
7aa77854392d Add a property and accessor for getting the avatar to display for a PurplePerson
Gary Kramlich <grim@reaperworld.com>
parents: 42053
diff changeset
132 g_assert_true(purple_person_get_avatar_for_display(person) == avatar);
7aa77854392d Add a property and accessor for getting the avatar to display for a PurplePerson
Gary Kramlich <grim@reaperworld.com>
parents: 42053
diff changeset
133
7aa77854392d Add a property and accessor for getting the avatar to display for a PurplePerson
Gary Kramlich <grim@reaperworld.com>
parents: 42053
diff changeset
134 g_clear_object(&info);
7aa77854392d Add a property and accessor for getting the avatar to display for a PurplePerson
Gary Kramlich <grim@reaperworld.com>
parents: 42053
diff changeset
135 g_clear_object(&person);
7aa77854392d Add a property and accessor for getting the avatar to display for a PurplePerson
Gary Kramlich <grim@reaperworld.com>
parents: 42053
diff changeset
136 g_clear_object(&avatar);
7aa77854392d Add a property and accessor for getting the avatar to display for a PurplePerson
Gary Kramlich <grim@reaperworld.com>
parents: 42053
diff changeset
137 }
7aa77854392d Add a property and accessor for getting the avatar to display for a PurplePerson
Gary Kramlich <grim@reaperworld.com>
parents: 42053
diff changeset
138
7aa77854392d Add a property and accessor for getting the avatar to display for a PurplePerson
Gary Kramlich <grim@reaperworld.com>
parents: 42053
diff changeset
139 static void
7aa77854392d Add a property and accessor for getting the avatar to display for a PurplePerson
Gary Kramlich <grim@reaperworld.com>
parents: 42053
diff changeset
140 test_purple_person_avatar_for_display_contact(void) {
7aa77854392d Add a property and accessor for getting the avatar to display for a PurplePerson
Gary Kramlich <grim@reaperworld.com>
parents: 42053
diff changeset
141 PurpleContactInfo *info = NULL;
7aa77854392d Add a property and accessor for getting the avatar to display for a PurplePerson
Gary Kramlich <grim@reaperworld.com>
parents: 42053
diff changeset
142 PurplePerson *person = NULL;
7aa77854392d Add a property and accessor for getting the avatar to display for a PurplePerson
Gary Kramlich <grim@reaperworld.com>
parents: 42053
diff changeset
143 GdkPixbuf *avatar = NULL;
7aa77854392d Add a property and accessor for getting the avatar to display for a PurplePerson
Gary Kramlich <grim@reaperworld.com>
parents: 42053
diff changeset
144
7aa77854392d Add a property and accessor for getting the avatar to display for a PurplePerson
Gary Kramlich <grim@reaperworld.com>
parents: 42053
diff changeset
145 person = purple_person_new();
7aa77854392d Add a property and accessor for getting the avatar to display for a PurplePerson
Gary Kramlich <grim@reaperworld.com>
parents: 42053
diff changeset
146
7aa77854392d Add a property and accessor for getting the avatar to display for a PurplePerson
Gary Kramlich <grim@reaperworld.com>
parents: 42053
diff changeset
147 info = purple_contact_info_new("id");
7aa77854392d Add a property and accessor for getting the avatar to display for a PurplePerson
Gary Kramlich <grim@reaperworld.com>
parents: 42053
diff changeset
148 avatar = gdk_pixbuf_new(GDK_COLORSPACE_RGB, FALSE, 8, 1, 1);
7aa77854392d Add a property and accessor for getting the avatar to display for a PurplePerson
Gary Kramlich <grim@reaperworld.com>
parents: 42053
diff changeset
149 purple_contact_info_set_avatar(info, avatar);
7aa77854392d Add a property and accessor for getting the avatar to display for a PurplePerson
Gary Kramlich <grim@reaperworld.com>
parents: 42053
diff changeset
150 purple_person_add_contact_info(person, info);
7aa77854392d Add a property and accessor for getting the avatar to display for a PurplePerson
Gary Kramlich <grim@reaperworld.com>
parents: 42053
diff changeset
151
7aa77854392d Add a property and accessor for getting the avatar to display for a PurplePerson
Gary Kramlich <grim@reaperworld.com>
parents: 42053
diff changeset
152 /* Make sure the person's alias is overriding the contact info. */
7aa77854392d Add a property and accessor for getting the avatar to display for a PurplePerson
Gary Kramlich <grim@reaperworld.com>
parents: 42053
diff changeset
153 g_assert_true(purple_person_get_avatar_for_display(person) == avatar);
7aa77854392d Add a property and accessor for getting the avatar to display for a PurplePerson
Gary Kramlich <grim@reaperworld.com>
parents: 42053
diff changeset
154
7aa77854392d Add a property and accessor for getting the avatar to display for a PurplePerson
Gary Kramlich <grim@reaperworld.com>
parents: 42053
diff changeset
155 g_clear_object(&info);
7aa77854392d Add a property and accessor for getting the avatar to display for a PurplePerson
Gary Kramlich <grim@reaperworld.com>
parents: 42053
diff changeset
156 g_clear_object(&person);
7aa77854392d Add a property and accessor for getting the avatar to display for a PurplePerson
Gary Kramlich <grim@reaperworld.com>
parents: 42053
diff changeset
157 g_clear_object(&avatar);
7aa77854392d Add a property and accessor for getting the avatar to display for a PurplePerson
Gary Kramlich <grim@reaperworld.com>
parents: 42053
diff changeset
158 }
7aa77854392d Add a property and accessor for getting the avatar to display for a PurplePerson
Gary Kramlich <grim@reaperworld.com>
parents: 42053
diff changeset
159
7aa77854392d Add a property and accessor for getting the avatar to display for a PurplePerson
Gary Kramlich <grim@reaperworld.com>
parents: 42053
diff changeset
160 static void
42053
742efe62e610 Add a name-for-display property to PurplePerson
Gary Kramlich <grim@reaperworld.com>
parents: 41948
diff changeset
161 test_purple_person_name_for_display_person(void) {
742efe62e610 Add a name-for-display property to PurplePerson
Gary Kramlich <grim@reaperworld.com>
parents: 41948
diff changeset
162 PurpleContactInfo *info = NULL;
742efe62e610 Add a name-for-display property to PurplePerson
Gary Kramlich <grim@reaperworld.com>
parents: 41948
diff changeset
163 PurplePerson *person = NULL;
742efe62e610 Add a name-for-display property to PurplePerson
Gary Kramlich <grim@reaperworld.com>
parents: 41948
diff changeset
164
742efe62e610 Add a name-for-display property to PurplePerson
Gary Kramlich <grim@reaperworld.com>
parents: 41948
diff changeset
165 person = purple_person_new();
742efe62e610 Add a name-for-display property to PurplePerson
Gary Kramlich <grim@reaperworld.com>
parents: 41948
diff changeset
166 purple_person_set_alias(person, "person-alias");
742efe62e610 Add a name-for-display property to PurplePerson
Gary Kramlich <grim@reaperworld.com>
parents: 41948
diff changeset
167
742efe62e610 Add a name-for-display property to PurplePerson
Gary Kramlich <grim@reaperworld.com>
parents: 41948
diff changeset
168 info = purple_contact_info_new("id");
742efe62e610 Add a name-for-display property to PurplePerson
Gary Kramlich <grim@reaperworld.com>
parents: 41948
diff changeset
169 purple_person_add_contact_info(person, info);
742efe62e610 Add a name-for-display property to PurplePerson
Gary Kramlich <grim@reaperworld.com>
parents: 41948
diff changeset
170
742efe62e610 Add a name-for-display property to PurplePerson
Gary Kramlich <grim@reaperworld.com>
parents: 41948
diff changeset
171 /* Make sure the person's alias is overriding the contact info. */
742efe62e610 Add a name-for-display property to PurplePerson
Gary Kramlich <grim@reaperworld.com>
parents: 41948
diff changeset
172 g_assert_cmpstr(purple_person_get_name_for_display(person), ==,
742efe62e610 Add a name-for-display property to PurplePerson
Gary Kramlich <grim@reaperworld.com>
parents: 41948
diff changeset
173 "person-alias");
742efe62e610 Add a name-for-display property to PurplePerson
Gary Kramlich <grim@reaperworld.com>
parents: 41948
diff changeset
174
742efe62e610 Add a name-for-display property to PurplePerson
Gary Kramlich <grim@reaperworld.com>
parents: 41948
diff changeset
175 g_clear_object(&info);
742efe62e610 Add a name-for-display property to PurplePerson
Gary Kramlich <grim@reaperworld.com>
parents: 41948
diff changeset
176 g_clear_object(&person);
742efe62e610 Add a name-for-display property to PurplePerson
Gary Kramlich <grim@reaperworld.com>
parents: 41948
diff changeset
177 }
742efe62e610 Add a name-for-display property to PurplePerson
Gary Kramlich <grim@reaperworld.com>
parents: 41948
diff changeset
178
742efe62e610 Add a name-for-display property to PurplePerson
Gary Kramlich <grim@reaperworld.com>
parents: 41948
diff changeset
179 static void
742efe62e610 Add a name-for-display property to PurplePerson
Gary Kramlich <grim@reaperworld.com>
parents: 41948
diff changeset
180 test_purple_person_name_for_display_contact(void) {
742efe62e610 Add a name-for-display property to PurplePerson
Gary Kramlich <grim@reaperworld.com>
parents: 41948
diff changeset
181 PurpleContactInfo *info = NULL;
742efe62e610 Add a name-for-display property to PurplePerson
Gary Kramlich <grim@reaperworld.com>
parents: 41948
diff changeset
182 PurplePerson *person = NULL;
742efe62e610 Add a name-for-display property to PurplePerson
Gary Kramlich <grim@reaperworld.com>
parents: 41948
diff changeset
183
742efe62e610 Add a name-for-display property to PurplePerson
Gary Kramlich <grim@reaperworld.com>
parents: 41948
diff changeset
184 person = purple_person_new();
742efe62e610 Add a name-for-display property to PurplePerson
Gary Kramlich <grim@reaperworld.com>
parents: 41948
diff changeset
185
742efe62e610 Add a name-for-display property to PurplePerson
Gary Kramlich <grim@reaperworld.com>
parents: 41948
diff changeset
186 info = purple_contact_info_new("id");
742efe62e610 Add a name-for-display property to PurplePerson
Gary Kramlich <grim@reaperworld.com>
parents: 41948
diff changeset
187 purple_person_add_contact_info(person, info);
742efe62e610 Add a name-for-display property to PurplePerson
Gary Kramlich <grim@reaperworld.com>
parents: 41948
diff changeset
188
742efe62e610 Add a name-for-display property to PurplePerson
Gary Kramlich <grim@reaperworld.com>
parents: 41948
diff changeset
189 /* Make sure the contact info's name for display is called when the
742efe62e610 Add a name-for-display property to PurplePerson
Gary Kramlich <grim@reaperworld.com>
parents: 41948
diff changeset
190 * person's alias is unset.
742efe62e610 Add a name-for-display property to PurplePerson
Gary Kramlich <grim@reaperworld.com>
parents: 41948
diff changeset
191 */
742efe62e610 Add a name-for-display property to PurplePerson
Gary Kramlich <grim@reaperworld.com>
parents: 41948
diff changeset
192 g_assert_cmpstr(purple_person_get_name_for_display(person), ==, "id");
742efe62e610 Add a name-for-display property to PurplePerson
Gary Kramlich <grim@reaperworld.com>
parents: 41948
diff changeset
193
742efe62e610 Add a name-for-display property to PurplePerson
Gary Kramlich <grim@reaperworld.com>
parents: 41948
diff changeset
194 g_clear_object(&info);
742efe62e610 Add a name-for-display property to PurplePerson
Gary Kramlich <grim@reaperworld.com>
parents: 41948
diff changeset
195 g_clear_object(&person);
742efe62e610 Add a name-for-display property to PurplePerson
Gary Kramlich <grim@reaperworld.com>
parents: 41948
diff changeset
196 }
742efe62e610 Add a name-for-display property to PurplePerson
Gary Kramlich <grim@reaperworld.com>
parents: 41948
diff changeset
197
742efe62e610 Add a name-for-display property to PurplePerson
Gary Kramlich <grim@reaperworld.com>
parents: 41948
diff changeset
198 static void
41749
c22448f50d5d Create PurplePerson.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
199 test_purple_person_contacts_single(void) {
41948
6d844d2faff1 Split PurpleContactInfo out of PurpleContact
Gary Kramlich <grim@reaperworld.com>
parents: 41771
diff changeset
200 PurpleContactInfo *info = NULL;
41749
c22448f50d5d Create PurplePerson.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
201 PurplePerson *person = NULL;
41761
9dc5d28fca99 When a Contact is added to a Person set the Contact's Person to that Person.
Gary Kramlich <grim@reaperworld.com>
parents: 41749
diff changeset
202 PurplePerson *person1 = NULL;
41749
c22448f50d5d Create PurplePerson.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
203 guint n_items = 0;
c22448f50d5d Create PurplePerson.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
204 gboolean removed = FALSE;
c22448f50d5d Create PurplePerson.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
205 gboolean changed = FALSE;
c22448f50d5d Create PurplePerson.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
206
41948
6d844d2faff1 Split PurpleContactInfo out of PurpleContact
Gary Kramlich <grim@reaperworld.com>
parents: 41771
diff changeset
207 info = purple_contact_info_new("id");
41749
c22448f50d5d Create PurplePerson.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
208 person = purple_person_new();
c22448f50d5d Create PurplePerson.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
209 g_signal_connect(person, "items-changed",
c22448f50d5d Create PurplePerson.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
210 G_CALLBACK(test_purple_person_items_changed_cb), &changed);
c22448f50d5d Create PurplePerson.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
211
c22448f50d5d Create PurplePerson.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
212 n_items = g_list_model_get_n_items(G_LIST_MODEL(person));
c22448f50d5d Create PurplePerson.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
213 g_assert_cmpuint(n_items, ==, 0);
41948
6d844d2faff1 Split PurpleContactInfo out of PurpleContact
Gary Kramlich <grim@reaperworld.com>
parents: 41771
diff changeset
214 purple_person_add_contact_info(person, info);
41749
c22448f50d5d Create PurplePerson.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
215 n_items = g_list_model_get_n_items(G_LIST_MODEL(person));
c22448f50d5d Create PurplePerson.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
216 g_assert_cmpuint(n_items, ==, 1);
c22448f50d5d Create PurplePerson.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
217 g_assert_true(changed);
c22448f50d5d Create PurplePerson.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
218
41948
6d844d2faff1 Split PurpleContactInfo out of PurpleContact
Gary Kramlich <grim@reaperworld.com>
parents: 41771
diff changeset
219 person1 = purple_contact_info_get_person(info);
41761
9dc5d28fca99 When a Contact is added to a Person set the Contact's Person to that Person.
Gary Kramlich <grim@reaperworld.com>
parents: 41749
diff changeset
220 g_assert_true(person1 == person);
9dc5d28fca99 When a Contact is added to a Person set the Contact's Person to that Person.
Gary Kramlich <grim@reaperworld.com>
parents: 41749
diff changeset
221
41749
c22448f50d5d Create PurplePerson.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
222 changed = FALSE;
c22448f50d5d Create PurplePerson.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
223
41948
6d844d2faff1 Split PurpleContactInfo out of PurpleContact
Gary Kramlich <grim@reaperworld.com>
parents: 41771
diff changeset
224 removed = purple_person_remove_contact_info(person, info);
41749
c22448f50d5d Create PurplePerson.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
225 g_assert_true(removed);
c22448f50d5d Create PurplePerson.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
226 n_items = g_list_model_get_n_items(G_LIST_MODEL(person));
c22448f50d5d Create PurplePerson.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
227 g_assert_cmpuint(n_items, ==, 0);
c22448f50d5d Create PurplePerson.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
228 g_assert_true(changed);
c22448f50d5d Create PurplePerson.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
229
41948
6d844d2faff1 Split PurpleContactInfo out of PurpleContact
Gary Kramlich <grim@reaperworld.com>
parents: 41771
diff changeset
230 person1 = purple_contact_info_get_person(info);
41761
9dc5d28fca99 When a Contact is added to a Person set the Contact's Person to that Person.
Gary Kramlich <grim@reaperworld.com>
parents: 41749
diff changeset
231 g_assert_null(person1);
9dc5d28fca99 When a Contact is added to a Person set the Contact's Person to that Person.
Gary Kramlich <grim@reaperworld.com>
parents: 41749
diff changeset
232
41749
c22448f50d5d Create PurplePerson.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
233 g_clear_object(&person);
41948
6d844d2faff1 Split PurpleContactInfo out of PurpleContact
Gary Kramlich <grim@reaperworld.com>
parents: 41771
diff changeset
234 g_clear_object(&info);
41749
c22448f50d5d Create PurplePerson.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
235 }
c22448f50d5d Create PurplePerson.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
236
c22448f50d5d Create PurplePerson.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
237 static void
c22448f50d5d Create PurplePerson.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
238 test_purple_person_contacts_multiple(void) {
c22448f50d5d Create PurplePerson.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
239 PurplePerson *person = NULL;
41948
6d844d2faff1 Split PurpleContactInfo out of PurpleContact
Gary Kramlich <grim@reaperworld.com>
parents: 41771
diff changeset
240 GPtrArray *infos = NULL;
41749
c22448f50d5d Create PurplePerson.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
241 guint n_items = 0;
41948
6d844d2faff1 Split PurpleContactInfo out of PurpleContact
Gary Kramlich <grim@reaperworld.com>
parents: 41771
diff changeset
242 const gint n_infos = 5;
41749
c22448f50d5d Create PurplePerson.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
243 gboolean changed = FALSE;
c22448f50d5d Create PurplePerson.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
244
c22448f50d5d Create PurplePerson.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
245 person = purple_person_new();
c22448f50d5d Create PurplePerson.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
246 g_signal_connect(person, "items-changed",
c22448f50d5d Create PurplePerson.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
247 G_CALLBACK(test_purple_person_items_changed_cb), &changed);
c22448f50d5d Create PurplePerson.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
248
41948
6d844d2faff1 Split PurpleContactInfo out of PurpleContact
Gary Kramlich <grim@reaperworld.com>
parents: 41771
diff changeset
249 infos = g_ptr_array_new_full(n_infos, g_object_unref);
6d844d2faff1 Split PurpleContactInfo out of PurpleContact
Gary Kramlich <grim@reaperworld.com>
parents: 41771
diff changeset
250 for(gint i = 0; i < n_infos; i++) {
6d844d2faff1 Split PurpleContactInfo out of PurpleContact
Gary Kramlich <grim@reaperworld.com>
parents: 41771
diff changeset
251 PurpleContactInfo *info = NULL;
41749
c22448f50d5d Create PurplePerson.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
252 gchar *username = NULL;
c22448f50d5d Create PurplePerson.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
253
c22448f50d5d Create PurplePerson.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
254 changed = FALSE;
c22448f50d5d Create PurplePerson.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
255
c22448f50d5d Create PurplePerson.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
256 n_items = g_list_model_get_n_items(G_LIST_MODEL(person));
c22448f50d5d Create PurplePerson.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
257 g_assert_cmpuint(n_items, ==, i);
c22448f50d5d Create PurplePerson.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
258
c22448f50d5d Create PurplePerson.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
259 username = g_strdup_printf("username%d", i);
41948
6d844d2faff1 Split PurpleContactInfo out of PurpleContact
Gary Kramlich <grim@reaperworld.com>
parents: 41771
diff changeset
260 info = purple_contact_info_new(NULL);
6d844d2faff1 Split PurpleContactInfo out of PurpleContact
Gary Kramlich <grim@reaperworld.com>
parents: 41771
diff changeset
261 purple_contact_info_set_username(info, username);
41749
c22448f50d5d Create PurplePerson.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
262 g_free(username);
c22448f50d5d Create PurplePerson.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
263
41948
6d844d2faff1 Split PurpleContactInfo out of PurpleContact
Gary Kramlich <grim@reaperworld.com>
parents: 41771
diff changeset
264 /* Add the contact info to the ptr array so we can remove it below. */
6d844d2faff1 Split PurpleContactInfo out of PurpleContact
Gary Kramlich <grim@reaperworld.com>
parents: 41771
diff changeset
265 g_ptr_array_add(infos, info);
41749
c22448f50d5d Create PurplePerson.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
266
41948
6d844d2faff1 Split PurpleContactInfo out of PurpleContact
Gary Kramlich <grim@reaperworld.com>
parents: 41771
diff changeset
267 /* Add the contact info to the person and make sure that all the magic
41749
c22448f50d5d Create PurplePerson.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
268 * happened.
c22448f50d5d Create PurplePerson.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
269 */
41948
6d844d2faff1 Split PurpleContactInfo out of PurpleContact
Gary Kramlich <grim@reaperworld.com>
parents: 41771
diff changeset
270 purple_person_add_contact_info(person, info);
41749
c22448f50d5d Create PurplePerson.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
271 n_items = g_list_model_get_n_items(G_LIST_MODEL(person));
c22448f50d5d Create PurplePerson.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
272 g_assert_cmpuint(n_items, ==, i + 1);
c22448f50d5d Create PurplePerson.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
273 g_assert_true(changed);
c22448f50d5d Create PurplePerson.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
274 }
c22448f50d5d Create PurplePerson.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
275
41948
6d844d2faff1 Split PurpleContactInfo out of PurpleContact
Gary Kramlich <grim@reaperworld.com>
parents: 41771
diff changeset
276 for(gint i = 0; i < n_infos; i++) {
6d844d2faff1 Split PurpleContactInfo out of PurpleContact
Gary Kramlich <grim@reaperworld.com>
parents: 41771
diff changeset
277 PurpleContactInfo *info = g_ptr_array_index(infos, i);
41749
c22448f50d5d Create PurplePerson.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
278 gboolean removed = FALSE;
c22448f50d5d Create PurplePerson.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
279
c22448f50d5d Create PurplePerson.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
280 changed = FALSE;
c22448f50d5d Create PurplePerson.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
281
c22448f50d5d Create PurplePerson.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
282 n_items = g_list_model_get_n_items(G_LIST_MODEL(person));
41948
6d844d2faff1 Split PurpleContactInfo out of PurpleContact
Gary Kramlich <grim@reaperworld.com>
parents: 41771
diff changeset
283 g_assert_cmpuint(n_items, ==, n_infos - i);
41749
c22448f50d5d Create PurplePerson.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
284
41948
6d844d2faff1 Split PurpleContactInfo out of PurpleContact
Gary Kramlich <grim@reaperworld.com>
parents: 41771
diff changeset
285 removed = purple_person_remove_contact_info(person, info);
41749
c22448f50d5d Create PurplePerson.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
286 g_assert_true(removed);
c22448f50d5d Create PurplePerson.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
287
c22448f50d5d Create PurplePerson.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
288 n_items = g_list_model_get_n_items(G_LIST_MODEL(person));
41948
6d844d2faff1 Split PurpleContactInfo out of PurpleContact
Gary Kramlich <grim@reaperworld.com>
parents: 41771
diff changeset
289 g_assert_cmpuint(n_items, ==, n_infos - (i + 1));
41749
c22448f50d5d Create PurplePerson.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
290
c22448f50d5d Create PurplePerson.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
291 g_assert_true(changed);
c22448f50d5d Create PurplePerson.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
292 }
c22448f50d5d Create PurplePerson.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
293
c22448f50d5d Create PurplePerson.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
294 /* Final sanity check that the person has no more contacts. */
c22448f50d5d Create PurplePerson.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
295 n_items = g_list_model_get_n_items(G_LIST_MODEL(person));
c22448f50d5d Create PurplePerson.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
296 g_assert_cmpuint(n_items, ==, 0);
c22448f50d5d Create PurplePerson.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
297
41948
6d844d2faff1 Split PurpleContactInfo out of PurpleContact
Gary Kramlich <grim@reaperworld.com>
parents: 41771
diff changeset
298 g_ptr_array_free(infos, TRUE);
41749
c22448f50d5d Create PurplePerson.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
299
c22448f50d5d Create PurplePerson.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
300 g_clear_object(&person);
c22448f50d5d Create PurplePerson.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
301 }
c22448f50d5d Create PurplePerson.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
302
c22448f50d5d Create PurplePerson.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
303 static void
c22448f50d5d Create PurplePerson.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
304 test_purple_person_priority_single(void) {
41948
6d844d2faff1 Split PurpleContactInfo out of PurpleContact
Gary Kramlich <grim@reaperworld.com>
parents: 41771
diff changeset
305 PurpleContactInfo *info = NULL;
6d844d2faff1 Split PurpleContactInfo out of PurpleContact
Gary Kramlich <grim@reaperworld.com>
parents: 41771
diff changeset
306 PurpleContactInfo *priority = NULL;
41749
c22448f50d5d Create PurplePerson.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
307 PurplePerson *person = NULL;
c22448f50d5d Create PurplePerson.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
308 PurplePresence *presence = NULL;
c22448f50d5d Create PurplePerson.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
309 PurpleStatus *status = NULL;
c22448f50d5d Create PurplePerson.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
310 PurpleStatusType *status_type = NULL;
c22448f50d5d Create PurplePerson.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
311 gboolean called = FALSE;
c22448f50d5d Create PurplePerson.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
312
c22448f50d5d Create PurplePerson.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
313 person = purple_person_new();
41948
6d844d2faff1 Split PurpleContactInfo out of PurpleContact
Gary Kramlich <grim@reaperworld.com>
parents: 41771
diff changeset
314 g_signal_connect(person, "notify::priority-contact-info",
41749
c22448f50d5d Create PurplePerson.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
315 G_CALLBACK(test_purple_person_notify_cb), &called);
41948
6d844d2faff1 Split PurpleContactInfo out of PurpleContact
Gary Kramlich <grim@reaperworld.com>
parents: 41771
diff changeset
316 priority = purple_person_get_priority_contact_info(person);
41749
c22448f50d5d Create PurplePerson.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
317 g_assert_null(priority);
c22448f50d5d Create PurplePerson.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
318
41771
c5877e2c93f2 Create and add PurpleContacts to the manager when purple_buddy_new is called
Gary Kramlich <grim@reaperworld.com>
parents: 41761
diff changeset
319 /* Now create a real contact. */
41948
6d844d2faff1 Split PurpleContactInfo out of PurpleContact
Gary Kramlich <grim@reaperworld.com>
parents: 41771
diff changeset
320 info = purple_contact_info_new(NULL);
6d844d2faff1 Split PurpleContactInfo out of PurpleContact
Gary Kramlich <grim@reaperworld.com>
parents: 41771
diff changeset
321 purple_person_add_contact_info(person, info);
41771
c5877e2c93f2 Create and add PurpleContacts to the manager when purple_buddy_new is called
Gary Kramlich <grim@reaperworld.com>
parents: 41761
diff changeset
322
c5877e2c93f2 Create and add PurpleContacts to the manager when purple_buddy_new is called
Gary Kramlich <grim@reaperworld.com>
parents: 41761
diff changeset
323 /* Set the status of the contact. */
41948
6d844d2faff1 Split PurpleContactInfo out of PurpleContact
Gary Kramlich <grim@reaperworld.com>
parents: 41771
diff changeset
324 presence = purple_contact_info_get_presence(info);
41749
c22448f50d5d Create PurplePerson.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
325 status_type = purple_status_type_new(PURPLE_STATUS_AVAILABLE, "available",
c22448f50d5d Create PurplePerson.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
326 "Available", FALSE);
c22448f50d5d Create PurplePerson.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
327 status = purple_status_new(status_type, presence);
c22448f50d5d Create PurplePerson.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
328 g_object_set(G_OBJECT(presence), "active-status", status, NULL);
c22448f50d5d Create PurplePerson.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
329 g_clear_object(&status);
c22448f50d5d Create PurplePerson.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
330
c22448f50d5d Create PurplePerson.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
331 g_assert_true(called);
c22448f50d5d Create PurplePerson.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
332
41948
6d844d2faff1 Split PurpleContactInfo out of PurpleContact
Gary Kramlich <grim@reaperworld.com>
parents: 41771
diff changeset
333 priority = purple_person_get_priority_contact_info(person);
6d844d2faff1 Split PurpleContactInfo out of PurpleContact
Gary Kramlich <grim@reaperworld.com>
parents: 41771
diff changeset
334 g_assert_true(priority == info);
41749
c22448f50d5d Create PurplePerson.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
335
c22448f50d5d Create PurplePerson.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
336 purple_status_type_destroy(status_type);
c22448f50d5d Create PurplePerson.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
337 g_clear_object(&person);
41948
6d844d2faff1 Split PurpleContactInfo out of PurpleContact
Gary Kramlich <grim@reaperworld.com>
parents: 41771
diff changeset
338 g_clear_object(&info);
41749
c22448f50d5d Create PurplePerson.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
339 g_clear_object(&presence);
c22448f50d5d Create PurplePerson.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
340 }
c22448f50d5d Create PurplePerson.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
341
c22448f50d5d Create PurplePerson.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
342 static void
c22448f50d5d Create PurplePerson.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
343 test_purple_person_priority_multiple_with_change(void) {
41948
6d844d2faff1 Split PurpleContactInfo out of PurpleContact
Gary Kramlich <grim@reaperworld.com>
parents: 41771
diff changeset
344 PurpleContactInfo *priority = NULL;
6d844d2faff1 Split PurpleContactInfo out of PurpleContact
Gary Kramlich <grim@reaperworld.com>
parents: 41771
diff changeset
345 PurpleContactInfo *first = NULL;
6d844d2faff1 Split PurpleContactInfo out of PurpleContact
Gary Kramlich <grim@reaperworld.com>
parents: 41771
diff changeset
346 PurpleContactInfo *sorted_contact = NULL;
41749
c22448f50d5d Create PurplePerson.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
347 PurplePerson *person = NULL;
c22448f50d5d Create PurplePerson.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
348 PurplePresence *sorted_presence = NULL;
c22448f50d5d Create PurplePerson.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
349 PurpleStatus *status = NULL;
c22448f50d5d Create PurplePerson.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
350 PurpleStatusType *available = NULL;
c22448f50d5d Create PurplePerson.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
351 PurpleStatusType *offline = NULL;
c22448f50d5d Create PurplePerson.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
352 gboolean changed = FALSE;
41948
6d844d2faff1 Split PurpleContactInfo out of PurpleContact
Gary Kramlich <grim@reaperworld.com>
parents: 41771
diff changeset
353 gint n_infos = 5;
41749
c22448f50d5d Create PurplePerson.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
354 guint n_items = 0;
c22448f50d5d Create PurplePerson.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
355
41948
6d844d2faff1 Split PurpleContactInfo out of PurpleContact
Gary Kramlich <grim@reaperworld.com>
parents: 41771
diff changeset
356 /* This unit test is a bit complicated, but it adds 5 contact infos to a
6d844d2faff1 Split PurpleContactInfo out of PurpleContact
Gary Kramlich <grim@reaperworld.com>
parents: 41771
diff changeset
357 * person all whose presences are set to offline. After adding all the
6d844d2faff1 Split PurpleContactInfo out of PurpleContact
Gary Kramlich <grim@reaperworld.com>
parents: 41771
diff changeset
358 * contact infos, we verify that the first contact info we added is the
6d844d2faff1 Split PurpleContactInfo out of PurpleContact
Gary Kramlich <grim@reaperworld.com>
parents: 41771
diff changeset
359 * priority contact info. Then we flip the active status of the n_infos - 2
6d844d2faff1 Split PurpleContactInfo out of PurpleContact
Gary Kramlich <grim@reaperworld.com>
parents: 41771
diff changeset
360 * infos to available. This should make it the priority contact info which
6d844d2faff1 Split PurpleContactInfo out of PurpleContact
Gary Kramlich <grim@reaperworld.com>
parents: 41771
diff changeset
361 * we then assert.
41749
c22448f50d5d Create PurplePerson.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
362 */
c22448f50d5d Create PurplePerson.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
363
c22448f50d5d Create PurplePerson.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
364 /* Create our status types. */
c22448f50d5d Create PurplePerson.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
365 available = purple_status_type_new(PURPLE_STATUS_AVAILABLE, "available",
c22448f50d5d Create PurplePerson.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
366 "Available", FALSE);
c22448f50d5d Create PurplePerson.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
367 offline = purple_status_type_new(PURPLE_STATUS_OFFLINE, "offline",
c22448f50d5d Create PurplePerson.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
368 "Offline", FALSE);
c22448f50d5d Create PurplePerson.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
369
c22448f50d5d Create PurplePerson.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
370 /* Create the person and connected to the notify signal for the
c22448f50d5d Create PurplePerson.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
371 * priority-contact property.
c22448f50d5d Create PurplePerson.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
372 */
c22448f50d5d Create PurplePerson.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
373 person = purple_person_new();
41948
6d844d2faff1 Split PurpleContactInfo out of PurpleContact
Gary Kramlich <grim@reaperworld.com>
parents: 41771
diff changeset
374 g_signal_connect(person, "notify::priority-contact-info",
41749
c22448f50d5d Create PurplePerson.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
375 G_CALLBACK(test_purple_person_notify_cb), &changed);
41948
6d844d2faff1 Split PurpleContactInfo out of PurpleContact
Gary Kramlich <grim@reaperworld.com>
parents: 41771
diff changeset
376 priority = purple_person_get_priority_contact_info(person);
41749
c22448f50d5d Create PurplePerson.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
377 g_assert_null(priority);
c22448f50d5d Create PurplePerson.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
378
41948
6d844d2faff1 Split PurpleContactInfo out of PurpleContact
Gary Kramlich <grim@reaperworld.com>
parents: 41771
diff changeset
379 /* Create and add all contact infos. */
6d844d2faff1 Split PurpleContactInfo out of PurpleContact
Gary Kramlich <grim@reaperworld.com>
parents: 41771
diff changeset
380 for(gint i = 0; i < n_infos; i++) {
6d844d2faff1 Split PurpleContactInfo out of PurpleContact
Gary Kramlich <grim@reaperworld.com>
parents: 41771
diff changeset
381 PurpleContactInfo *info = NULL;
41749
c22448f50d5d Create PurplePerson.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
382 PurplePresence *presence = NULL;
c22448f50d5d Create PurplePerson.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
383 gchar *username = NULL;
c22448f50d5d Create PurplePerson.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
384
c22448f50d5d Create PurplePerson.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
385 /* Set changed to false as it shouldn't be changed. */
c22448f50d5d Create PurplePerson.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
386 changed = FALSE;
c22448f50d5d Create PurplePerson.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
387
c22448f50d5d Create PurplePerson.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
388 /* Now create a real contact. */
c22448f50d5d Create PurplePerson.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
389 username = g_strdup_printf("username%d", i + 1);
41948
6d844d2faff1 Split PurpleContactInfo out of PurpleContact
Gary Kramlich <grim@reaperworld.com>
parents: 41771
diff changeset
390 info = purple_contact_info_new(NULL);
6d844d2faff1 Split PurpleContactInfo out of PurpleContact
Gary Kramlich <grim@reaperworld.com>
parents: 41771
diff changeset
391 purple_contact_info_set_username(info, username);
41749
c22448f50d5d Create PurplePerson.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
392 g_free(username);
41771
c5877e2c93f2 Create and add PurpleContacts to the manager when purple_buddy_new is called
Gary Kramlich <grim@reaperworld.com>
parents: 41761
diff changeset
393
c5877e2c93f2 Create and add PurpleContacts to the manager when purple_buddy_new is called
Gary Kramlich <grim@reaperworld.com>
parents: 41761
diff changeset
394 /* Set the status for the contact. */
41948
6d844d2faff1 Split PurpleContactInfo out of PurpleContact
Gary Kramlich <grim@reaperworld.com>
parents: 41771
diff changeset
395 presence = purple_contact_info_get_presence(info);
41771
c5877e2c93f2 Create and add PurpleContacts to the manager when purple_buddy_new is called
Gary Kramlich <grim@reaperworld.com>
parents: 41761
diff changeset
396 status = purple_status_new(offline, presence);
c5877e2c93f2 Create and add PurpleContacts to the manager when purple_buddy_new is called
Gary Kramlich <grim@reaperworld.com>
parents: 41761
diff changeset
397 g_object_set(G_OBJECT(presence), "active-status", status, NULL);
c5877e2c93f2 Create and add PurpleContacts to the manager when purple_buddy_new is called
Gary Kramlich <grim@reaperworld.com>
parents: 41761
diff changeset
398 g_clear_object(&status);
41749
c22448f50d5d Create PurplePerson.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
399
41948
6d844d2faff1 Split PurpleContactInfo out of PurpleContact
Gary Kramlich <grim@reaperworld.com>
parents: 41771
diff changeset
400 purple_person_add_contact_info(person, info);
41749
c22448f50d5d Create PurplePerson.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
401
c22448f50d5d Create PurplePerson.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
402 if(i == 0) {
41948
6d844d2faff1 Split PurpleContactInfo out of PurpleContact
Gary Kramlich <grim@reaperworld.com>
parents: 41771
diff changeset
403 first = g_object_ref(info);
41749
c22448f50d5d Create PurplePerson.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
404 g_assert_true(changed);
c22448f50d5d Create PurplePerson.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
405 } else {
c22448f50d5d Create PurplePerson.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
406 g_assert_false(changed);
c22448f50d5d Create PurplePerson.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
407
41948
6d844d2faff1 Split PurpleContactInfo out of PurpleContact
Gary Kramlich <grim@reaperworld.com>
parents: 41771
diff changeset
408 if(i == n_infos - 2) {
6d844d2faff1 Split PurpleContactInfo out of PurpleContact
Gary Kramlich <grim@reaperworld.com>
parents: 41771
diff changeset
409 sorted_contact = g_object_ref(info);
41749
c22448f50d5d Create PurplePerson.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
410 sorted_presence = g_object_ref(presence);
c22448f50d5d Create PurplePerson.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
411 }
c22448f50d5d Create PurplePerson.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
412 }
c22448f50d5d Create PurplePerson.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
413
41948
6d844d2faff1 Split PurpleContactInfo out of PurpleContact
Gary Kramlich <grim@reaperworld.com>
parents: 41771
diff changeset
414 g_clear_object(&info);
41749
c22448f50d5d Create PurplePerson.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
415 }
c22448f50d5d Create PurplePerson.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
416
c22448f50d5d Create PurplePerson.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
417 n_items = g_list_model_get_n_items(G_LIST_MODEL(person));
41948
6d844d2faff1 Split PurpleContactInfo out of PurpleContact
Gary Kramlich <grim@reaperworld.com>
parents: 41771
diff changeset
418 g_assert_cmpuint(n_items, ==, n_infos);
41749
c22448f50d5d Create PurplePerson.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
419
41948
6d844d2faff1 Split PurpleContactInfo out of PurpleContact
Gary Kramlich <grim@reaperworld.com>
parents: 41771
diff changeset
420 priority = purple_person_get_priority_contact_info(person);
41749
c22448f50d5d Create PurplePerson.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
421 g_assert_true(priority == first);
c22448f50d5d Create PurplePerson.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
422 g_clear_object(&first);
c22448f50d5d Create PurplePerson.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
423
41948
6d844d2faff1 Split PurpleContactInfo out of PurpleContact
Gary Kramlich <grim@reaperworld.com>
parents: 41771
diff changeset
424 /* Now set the second from the last contact info's status to available, and
6d844d2faff1 Split PurpleContactInfo out of PurpleContact
Gary Kramlich <grim@reaperworld.com>
parents: 41771
diff changeset
425 * verify that that contact info is now the priority contact info.
41749
c22448f50d5d Create PurplePerson.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
426 */
c22448f50d5d Create PurplePerson.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
427 changed = FALSE;
c22448f50d5d Create PurplePerson.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
428 status = purple_status_new(available, sorted_presence);
c22448f50d5d Create PurplePerson.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
429 g_object_set(G_OBJECT(sorted_presence), "active-status", status, NULL);
c22448f50d5d Create PurplePerson.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
430 g_clear_object(&status);
c22448f50d5d Create PurplePerson.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
431 g_assert_true(changed);
41948
6d844d2faff1 Split PurpleContactInfo out of PurpleContact
Gary Kramlich <grim@reaperworld.com>
parents: 41771
diff changeset
432 priority = purple_person_get_priority_contact_info(person);
41749
c22448f50d5d Create PurplePerson.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
433 g_assert_true(priority == sorted_contact);
c22448f50d5d Create PurplePerson.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
434
c22448f50d5d Create PurplePerson.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
435 /* Cleanup. */
c22448f50d5d Create PurplePerson.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
436 purple_status_type_destroy(offline);
c22448f50d5d Create PurplePerson.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
437 purple_status_type_destroy(available);
c22448f50d5d Create PurplePerson.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
438
c22448f50d5d Create PurplePerson.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
439 g_clear_object(&sorted_contact);
c22448f50d5d Create PurplePerson.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
440 g_clear_object(&sorted_presence);
c22448f50d5d Create PurplePerson.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
441
c22448f50d5d Create PurplePerson.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
442 g_clear_object(&person);
c22448f50d5d Create PurplePerson.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
443 }
c22448f50d5d Create PurplePerson.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
444
c22448f50d5d Create PurplePerson.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
445 /******************************************************************************
42059
e6dcbf0db616 Add search support to the contact list
Gary Kramlich <grim@reaperworld.com>
parents: 42054
diff changeset
446 * Matches tests
e6dcbf0db616 Add search support to the contact list
Gary Kramlich <grim@reaperworld.com>
parents: 42054
diff changeset
447 *****************************************************************************/
e6dcbf0db616 Add search support to the contact list
Gary Kramlich <grim@reaperworld.com>
parents: 42054
diff changeset
448 static void
e6dcbf0db616 Add search support to the contact list
Gary Kramlich <grim@reaperworld.com>
parents: 42054
diff changeset
449 test_purple_person_matches_accepts_null(void) {
e6dcbf0db616 Add search support to the contact list
Gary Kramlich <grim@reaperworld.com>
parents: 42054
diff changeset
450 PurplePerson *person = purple_person_new();
e6dcbf0db616 Add search support to the contact list
Gary Kramlich <grim@reaperworld.com>
parents: 42054
diff changeset
451
e6dcbf0db616 Add search support to the contact list
Gary Kramlich <grim@reaperworld.com>
parents: 42054
diff changeset
452 g_assert_true(purple_person_matches(person, NULL));
e6dcbf0db616 Add search support to the contact list
Gary Kramlich <grim@reaperworld.com>
parents: 42054
diff changeset
453
e6dcbf0db616 Add search support to the contact list
Gary Kramlich <grim@reaperworld.com>
parents: 42054
diff changeset
454 g_clear_object(&person);
e6dcbf0db616 Add search support to the contact list
Gary Kramlich <grim@reaperworld.com>
parents: 42054
diff changeset
455 }
e6dcbf0db616 Add search support to the contact list
Gary Kramlich <grim@reaperworld.com>
parents: 42054
diff changeset
456
e6dcbf0db616 Add search support to the contact list
Gary Kramlich <grim@reaperworld.com>
parents: 42054
diff changeset
457 static void
e6dcbf0db616 Add search support to the contact list
Gary Kramlich <grim@reaperworld.com>
parents: 42054
diff changeset
458 test_purple_person_matches_empty_string(void) {
e6dcbf0db616 Add search support to the contact list
Gary Kramlich <grim@reaperworld.com>
parents: 42054
diff changeset
459 PurplePerson *person = purple_person_new();
e6dcbf0db616 Add search support to the contact list
Gary Kramlich <grim@reaperworld.com>
parents: 42054
diff changeset
460
e6dcbf0db616 Add search support to the contact list
Gary Kramlich <grim@reaperworld.com>
parents: 42054
diff changeset
461 g_assert_true(purple_person_matches(person, ""));
e6dcbf0db616 Add search support to the contact list
Gary Kramlich <grim@reaperworld.com>
parents: 42054
diff changeset
462
e6dcbf0db616 Add search support to the contact list
Gary Kramlich <grim@reaperworld.com>
parents: 42054
diff changeset
463 g_clear_object(&person);
e6dcbf0db616 Add search support to the contact list
Gary Kramlich <grim@reaperworld.com>
parents: 42054
diff changeset
464 }
e6dcbf0db616 Add search support to the contact list
Gary Kramlich <grim@reaperworld.com>
parents: 42054
diff changeset
465
e6dcbf0db616 Add search support to the contact list
Gary Kramlich <grim@reaperworld.com>
parents: 42054
diff changeset
466 static void
e6dcbf0db616 Add search support to the contact list
Gary Kramlich <grim@reaperworld.com>
parents: 42054
diff changeset
467 test_purple_person_matches_alias(void) {
e6dcbf0db616 Add search support to the contact list
Gary Kramlich <grim@reaperworld.com>
parents: 42054
diff changeset
468 PurplePerson *person = purple_person_new();
e6dcbf0db616 Add search support to the contact list
Gary Kramlich <grim@reaperworld.com>
parents: 42054
diff changeset
469
e6dcbf0db616 Add search support to the contact list
Gary Kramlich <grim@reaperworld.com>
parents: 42054
diff changeset
470 purple_person_set_alias(person, "this is the alias");
e6dcbf0db616 Add search support to the contact list
Gary Kramlich <grim@reaperworld.com>
parents: 42054
diff changeset
471
e6dcbf0db616 Add search support to the contact list
Gary Kramlich <grim@reaperworld.com>
parents: 42054
diff changeset
472 g_assert_true(purple_person_matches(person, "the"));
e6dcbf0db616 Add search support to the contact list
Gary Kramlich <grim@reaperworld.com>
parents: 42054
diff changeset
473 g_assert_false(purple_person_matches(person, "what"));
e6dcbf0db616 Add search support to the contact list
Gary Kramlich <grim@reaperworld.com>
parents: 42054
diff changeset
474
e6dcbf0db616 Add search support to the contact list
Gary Kramlich <grim@reaperworld.com>
parents: 42054
diff changeset
475 g_clear_object(&person);
e6dcbf0db616 Add search support to the contact list
Gary Kramlich <grim@reaperworld.com>
parents: 42054
diff changeset
476 }
e6dcbf0db616 Add search support to the contact list
Gary Kramlich <grim@reaperworld.com>
parents: 42054
diff changeset
477
e6dcbf0db616 Add search support to the contact list
Gary Kramlich <grim@reaperworld.com>
parents: 42054
diff changeset
478 static void
e6dcbf0db616 Add search support to the contact list
Gary Kramlich <grim@reaperworld.com>
parents: 42054
diff changeset
479 test_purple_person_matches_contact_info(void) {
e6dcbf0db616 Add search support to the contact list
Gary Kramlich <grim@reaperworld.com>
parents: 42054
diff changeset
480 PurplePerson *person = purple_person_new();
e6dcbf0db616 Add search support to the contact list
Gary Kramlich <grim@reaperworld.com>
parents: 42054
diff changeset
481 PurpleContactInfo *info = purple_contact_info_new(NULL);
e6dcbf0db616 Add search support to the contact list
Gary Kramlich <grim@reaperworld.com>
parents: 42054
diff changeset
482
e6dcbf0db616 Add search support to the contact list
Gary Kramlich <grim@reaperworld.com>
parents: 42054
diff changeset
483 purple_contact_info_set_username(info, "user1");
e6dcbf0db616 Add search support to the contact list
Gary Kramlich <grim@reaperworld.com>
parents: 42054
diff changeset
484 purple_person_add_contact_info(person, info);
e6dcbf0db616 Add search support to the contact list
Gary Kramlich <grim@reaperworld.com>
parents: 42054
diff changeset
485 g_clear_object(&info);
e6dcbf0db616 Add search support to the contact list
Gary Kramlich <grim@reaperworld.com>
parents: 42054
diff changeset
486
e6dcbf0db616 Add search support to the contact list
Gary Kramlich <grim@reaperworld.com>
parents: 42054
diff changeset
487 g_assert_true(purple_person_matches(person, "user1"));
e6dcbf0db616 Add search support to the contact list
Gary Kramlich <grim@reaperworld.com>
parents: 42054
diff changeset
488
e6dcbf0db616 Add search support to the contact list
Gary Kramlich <grim@reaperworld.com>
parents: 42054
diff changeset
489 g_clear_object(&person);
e6dcbf0db616 Add search support to the contact list
Gary Kramlich <grim@reaperworld.com>
parents: 42054
diff changeset
490 }
e6dcbf0db616 Add search support to the contact list
Gary Kramlich <grim@reaperworld.com>
parents: 42054
diff changeset
491
e6dcbf0db616 Add search support to the contact list
Gary Kramlich <grim@reaperworld.com>
parents: 42054
diff changeset
492 /******************************************************************************
41749
c22448f50d5d Create PurplePerson.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
493 * Main
c22448f50d5d Create PurplePerson.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
494 *****************************************************************************/
c22448f50d5d Create PurplePerson.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
495 gint
c22448f50d5d Create PurplePerson.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
496 main(gint argc, gchar *argv[]) {
42184
4e1bf25f5575 Fix several leaks in tests
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42059
diff changeset
497 gint ret = 0;
4e1bf25f5575 Fix several leaks in tests
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42059
diff changeset
498
41749
c22448f50d5d Create PurplePerson.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
499 g_test_init(&argc, &argv, NULL);
c22448f50d5d Create PurplePerson.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
500
c22448f50d5d Create PurplePerson.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
501 test_ui_purple_init();
c22448f50d5d Create PurplePerson.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
502
c22448f50d5d Create PurplePerson.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
503 g_test_add_func("/person/new",
c22448f50d5d Create PurplePerson.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
504 test_purple_person_new);
c22448f50d5d Create PurplePerson.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
505 g_test_add_func("/person/properties",
c22448f50d5d Create PurplePerson.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
506 test_purple_person_properties);
42053
742efe62e610 Add a name-for-display property to PurplePerson
Gary Kramlich <grim@reaperworld.com>
parents: 41948
diff changeset
507
42054
7aa77854392d Add a property and accessor for getting the avatar to display for a PurplePerson
Gary Kramlich <grim@reaperworld.com>
parents: 42053
diff changeset
508 g_test_add_func("/person/avatar-for-display/person",
7aa77854392d Add a property and accessor for getting the avatar to display for a PurplePerson
Gary Kramlich <grim@reaperworld.com>
parents: 42053
diff changeset
509 test_purple_person_avatar_for_display_person);
7aa77854392d Add a property and accessor for getting the avatar to display for a PurplePerson
Gary Kramlich <grim@reaperworld.com>
parents: 42053
diff changeset
510 g_test_add_func("/person/avatar-for-display/contact",
7aa77854392d Add a property and accessor for getting the avatar to display for a PurplePerson
Gary Kramlich <grim@reaperworld.com>
parents: 42053
diff changeset
511 test_purple_person_avatar_for_display_contact);
7aa77854392d Add a property and accessor for getting the avatar to display for a PurplePerson
Gary Kramlich <grim@reaperworld.com>
parents: 42053
diff changeset
512
42053
742efe62e610 Add a name-for-display property to PurplePerson
Gary Kramlich <grim@reaperworld.com>
parents: 41948
diff changeset
513 g_test_add_func("/person/name-for-display/person",
742efe62e610 Add a name-for-display property to PurplePerson
Gary Kramlich <grim@reaperworld.com>
parents: 41948
diff changeset
514 test_purple_person_name_for_display_person);
742efe62e610 Add a name-for-display property to PurplePerson
Gary Kramlich <grim@reaperworld.com>
parents: 41948
diff changeset
515 g_test_add_func("/person/name-for-display/contact",
742efe62e610 Add a name-for-display property to PurplePerson
Gary Kramlich <grim@reaperworld.com>
parents: 41948
diff changeset
516 test_purple_person_name_for_display_contact);
742efe62e610 Add a name-for-display property to PurplePerson
Gary Kramlich <grim@reaperworld.com>
parents: 41948
diff changeset
517
41749
c22448f50d5d Create PurplePerson.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
518 g_test_add_func("/person/contacts/single",
c22448f50d5d Create PurplePerson.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
519 test_purple_person_contacts_single);
c22448f50d5d Create PurplePerson.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
520 g_test_add_func("/person/contacts/multiple",
c22448f50d5d Create PurplePerson.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
521 test_purple_person_contacts_multiple);
c22448f50d5d Create PurplePerson.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
522
c22448f50d5d Create PurplePerson.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
523 g_test_add_func("/person/priority/single",
c22448f50d5d Create PurplePerson.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
524 test_purple_person_priority_single);
c22448f50d5d Create PurplePerson.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
525 g_test_add_func("/person/priority/multiple-with-change",
c22448f50d5d Create PurplePerson.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
526 test_purple_person_priority_multiple_with_change);
c22448f50d5d Create PurplePerson.
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
527
42059
e6dcbf0db616 Add search support to the contact list
Gary Kramlich <grim@reaperworld.com>
parents: 42054
diff changeset
528 g_test_add_func("/person/matches/accepts_null",
e6dcbf0db616 Add search support to the contact list
Gary Kramlich <grim@reaperworld.com>
parents: 42054
diff changeset
529 test_purple_person_matches_accepts_null);
e6dcbf0db616 Add search support to the contact list
Gary Kramlich <grim@reaperworld.com>
parents: 42054
diff changeset
530 g_test_add_func("/person/matches/empty_string",
e6dcbf0db616 Add search support to the contact list
Gary Kramlich <grim@reaperworld.com>
parents: 42054
diff changeset
531 test_purple_person_matches_empty_string);
e6dcbf0db616 Add search support to the contact list
Gary Kramlich <grim@reaperworld.com>
parents: 42054
diff changeset
532 g_test_add_func("/person/matches/alias",
e6dcbf0db616 Add search support to the contact list
Gary Kramlich <grim@reaperworld.com>
parents: 42054
diff changeset
533 test_purple_person_matches_alias);
e6dcbf0db616 Add search support to the contact list
Gary Kramlich <grim@reaperworld.com>
parents: 42054
diff changeset
534 g_test_add_func("/person/matches/contact_info",
e6dcbf0db616 Add search support to the contact list
Gary Kramlich <grim@reaperworld.com>
parents: 42054
diff changeset
535 test_purple_person_matches_contact_info);
e6dcbf0db616 Add search support to the contact list
Gary Kramlich <grim@reaperworld.com>
parents: 42054
diff changeset
536
42184
4e1bf25f5575 Fix several leaks in tests
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42059
diff changeset
537 ret = g_test_run();
4e1bf25f5575 Fix several leaks in tests
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42059
diff changeset
538
4e1bf25f5575 Fix several leaks in tests
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42059
diff changeset
539 test_ui_purple_uninit();
4e1bf25f5575 Fix several leaks in tests
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42059
diff changeset
540
4e1bf25f5575 Fix several leaks in tests
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42059
diff changeset
541 return ret;
42059
e6dcbf0db616 Add search support to the contact list
Gary Kramlich <grim@reaperworld.com>
parents: 42054
diff changeset
542 }

mercurial