libpurple/tests/test_presence_manager.c

Thu, 12 Jun 2025 23:48:22 -0500

author
Gary Kramlich <grim@reaperworld.com>
date
Thu, 12 Jun 2025 23:48:22 -0500
changeset 43265
7960b5f85729
parent 42860
99a4ef34cc71
permissions
-rw-r--r--

Update to birb 0.4 and use the testing helpers in libpurple

Testing Done:
Called in the turtles.

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

42384
835faf0ddcb6 Implement PurplePresenceManager
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
1 /*
835faf0ddcb6 Implement PurplePresenceManager
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
2 * Purple - Internet Messaging Library
835faf0ddcb6 Implement PurplePresenceManager
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
3 * Copyright (C) Pidgin Developers <devel@pidgin.im>
835faf0ddcb6 Implement PurplePresenceManager
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
4 *
835faf0ddcb6 Implement PurplePresenceManager
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
5 * This library is free software; you can redistribute it and/or
835faf0ddcb6 Implement PurplePresenceManager
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
6 * modify it under the terms of the GNU Lesser General Public
835faf0ddcb6 Implement PurplePresenceManager
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
7 * License as published by the Free Software Foundation; either
835faf0ddcb6 Implement PurplePresenceManager
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
8 * version 2 of the License, or (at your option) any later version.
835faf0ddcb6 Implement PurplePresenceManager
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
9 *
835faf0ddcb6 Implement PurplePresenceManager
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
10 * This library is distributed in the hope that it will be useful,
835faf0ddcb6 Implement PurplePresenceManager
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
11 * but WITHOUT ANY WARRANTY; without even the implied warranty of
835faf0ddcb6 Implement PurplePresenceManager
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
12 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
835faf0ddcb6 Implement PurplePresenceManager
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
13 * Lesser General Public License for more details.
835faf0ddcb6 Implement PurplePresenceManager
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
14 *
835faf0ddcb6 Implement PurplePresenceManager
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
15 * You should have received a copy of the GNU Lesser General Public
835faf0ddcb6 Implement PurplePresenceManager
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
16 * License along with this library; if not, see <https://www.gnu.org/licenses/>.
835faf0ddcb6 Implement PurplePresenceManager
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
17 */
835faf0ddcb6 Implement PurplePresenceManager
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
18
835faf0ddcb6 Implement PurplePresenceManager
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
19 #include <glib.h>
835faf0ddcb6 Implement PurplePresenceManager
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
20 #include <glib/gstdio.h>
835faf0ddcb6 Implement PurplePresenceManager
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
21
43265
7960b5f85729 Update to birb 0.4 and use the testing helpers in libpurple
Gary Kramlich <grim@reaperworld.com>
parents: 42860
diff changeset
22 #include <birb.h>
7960b5f85729 Update to birb 0.4 and use the testing helpers in libpurple
Gary Kramlich <grim@reaperworld.com>
parents: 42860
diff changeset
23
42384
835faf0ddcb6 Implement PurplePresenceManager
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
24 #include <purple.h>
835faf0ddcb6 Implement PurplePresenceManager
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
25
835faf0ddcb6 Implement PurplePresenceManager
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
26 /******************************************************************************
835faf0ddcb6 Implement PurplePresenceManager
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
27 * Callbacks
835faf0ddcb6 Implement PurplePresenceManager
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
28 *****************************************************************************/
835faf0ddcb6 Implement PurplePresenceManager
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
29 static void
835faf0ddcb6 Implement PurplePresenceManager
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
30 test_purple_presence_manager_add_remove_counter(G_GNUC_UNUSED PurplePresenceManager *manager,
835faf0ddcb6 Implement PurplePresenceManager
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
31 G_GNUC_UNUSED PurpleSavedPresence *presence,
835faf0ddcb6 Implement PurplePresenceManager
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
32 gpointer data)
835faf0ddcb6 Implement PurplePresenceManager
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
33 {
835faf0ddcb6 Implement PurplePresenceManager
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
34 guint *counter = data;
835faf0ddcb6 Implement PurplePresenceManager
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
35
835faf0ddcb6 Implement PurplePresenceManager
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
36 *counter = *counter + 1;
835faf0ddcb6 Implement PurplePresenceManager
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
37 }
835faf0ddcb6 Implement PurplePresenceManager
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
38
835faf0ddcb6 Implement PurplePresenceManager
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
39 /******************************************************************************
835faf0ddcb6 Implement PurplePresenceManager
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
40 * Tests
835faf0ddcb6 Implement PurplePresenceManager
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
41 *****************************************************************************/
835faf0ddcb6 Implement PurplePresenceManager
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
42 static void
835faf0ddcb6 Implement PurplePresenceManager
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
43 test_purple_presence_manager_new(void) {
835faf0ddcb6 Implement PurplePresenceManager
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
44 PurplePresenceManager *manager = NULL;
42563
25d1b656d792 Add default saved presences for available and offline
Gary Kramlich <grim@reaperworld.com>
parents: 42384
diff changeset
45 GListModel *model = NULL;
42384
835faf0ddcb6 Implement PurplePresenceManager
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
46
835faf0ddcb6 Implement PurplePresenceManager
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
47 manager = purple_presence_manager_new(NULL);
835faf0ddcb6 Implement PurplePresenceManager
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
48 g_assert_true(PURPLE_IS_PRESENCE_MANAGER(manager));
835faf0ddcb6 Implement PurplePresenceManager
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
49
42563
25d1b656d792 Add default saved presences for available and offline
Gary Kramlich <grim@reaperworld.com>
parents: 42384
diff changeset
50 /* Make sure we have our 2 default saved presences.
25d1b656d792 Add default saved presences for available and offline
Gary Kramlich <grim@reaperworld.com>
parents: 42384
diff changeset
51 *
25d1b656d792 Add default saved presences for available and offline
Gary Kramlich <grim@reaperworld.com>
parents: 42384
diff changeset
52 * This may change over time, but we should update this for those changes.
25d1b656d792 Add default saved presences for available and offline
Gary Kramlich <grim@reaperworld.com>
parents: 42384
diff changeset
53 */
25d1b656d792 Add default saved presences for available and offline
Gary Kramlich <grim@reaperworld.com>
parents: 42384
diff changeset
54 model = G_LIST_MODEL(manager);
25d1b656d792 Add default saved presences for available and offline
Gary Kramlich <grim@reaperworld.com>
parents: 42384
diff changeset
55 g_assert_cmpuint(g_list_model_get_n_items(model), ==, 2);
25d1b656d792 Add default saved presences for available and offline
Gary Kramlich <grim@reaperworld.com>
parents: 42384
diff changeset
56
42384
835faf0ddcb6 Implement PurplePresenceManager
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
57 g_clear_object(&manager);
835faf0ddcb6 Implement PurplePresenceManager
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
58 }
835faf0ddcb6 Implement PurplePresenceManager
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
59
835faf0ddcb6 Implement PurplePresenceManager
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
60 static void
835faf0ddcb6 Implement PurplePresenceManager
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
61 test_purple_presence_manager_add_remove(void) {
835faf0ddcb6 Implement PurplePresenceManager
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
62 PurplePresenceManager *manager = NULL;
835faf0ddcb6 Implement PurplePresenceManager
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
63 PurpleSavedPresence *presence = NULL;
835faf0ddcb6 Implement PurplePresenceManager
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
64 gboolean success = FALSE;
835faf0ddcb6 Implement PurplePresenceManager
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
65 guint added = 0;
835faf0ddcb6 Implement PurplePresenceManager
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
66 guint removed = 0;
43265
7960b5f85729 Update to birb 0.4 and use the testing helpers in libpurple
Gary Kramlich <grim@reaperworld.com>
parents: 42860
diff changeset
67 guint counter = 0;
42384
835faf0ddcb6 Implement PurplePresenceManager
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
68 const char *id = NULL;
835faf0ddcb6 Implement PurplePresenceManager
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
69
835faf0ddcb6 Implement PurplePresenceManager
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
70 manager = purple_presence_manager_new(NULL);
42563
25d1b656d792 Add default saved presences for available and offline
Gary Kramlich <grim@reaperworld.com>
parents: 42384
diff changeset
71
25d1b656d792 Add default saved presences for available and offline
Gary Kramlich <grim@reaperworld.com>
parents: 42384
diff changeset
72 /* Connect all of our signals to make sure they're being emitted. */
42384
835faf0ddcb6 Implement PurplePresenceManager
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
73 g_signal_connect(manager, "added",
835faf0ddcb6 Implement PurplePresenceManager
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
74 G_CALLBACK(test_purple_presence_manager_add_remove_counter),
835faf0ddcb6 Implement PurplePresenceManager
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
75 &added);
835faf0ddcb6 Implement PurplePresenceManager
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
76 g_signal_connect(manager, "removed",
835faf0ddcb6 Implement PurplePresenceManager
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
77 G_CALLBACK(test_purple_presence_manager_add_remove_counter),
835faf0ddcb6 Implement PurplePresenceManager
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
78 &removed);
43265
7960b5f85729 Update to birb 0.4 and use the testing helpers in libpurple
Gary Kramlich <grim@reaperworld.com>
parents: 42860
diff changeset
79 birb_count_list_model_items_changed(G_LIST_MODEL(manager), &counter);
42384
835faf0ddcb6 Implement PurplePresenceManager
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
80
42571
722be3b1a8aa Redesign the presence manager a bit
Gary Kramlich <grim@reaperworld.com>
parents: 42563
diff changeset
81 /* The manager makes sure we always have online and offline presences. */
43265
7960b5f85729 Update to birb 0.4 and use the testing helpers in libpurple
Gary Kramlich <grim@reaperworld.com>
parents: 42860
diff changeset
82 birb_assert_list_model_n_items(manager, 2);
42384
835faf0ddcb6 Implement PurplePresenceManager
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
83
835faf0ddcb6 Implement PurplePresenceManager
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
84 presence = purple_presence_manager_create(manager);
835faf0ddcb6 Implement PurplePresenceManager
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
85 g_assert_true(PURPLE_IS_SAVED_PRESENCE(presence));
835faf0ddcb6 Implement PurplePresenceManager
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
86 purple_saved_presence_set_name(presence, "test presence");
835faf0ddcb6 Implement PurplePresenceManager
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
87 g_assert_cmpuint(added, ==, 1);
835faf0ddcb6 Implement PurplePresenceManager
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
88 g_assert_cmpuint(removed, ==, 0);
43265
7960b5f85729 Update to birb 0.4 and use the testing helpers in libpurple
Gary Kramlich <grim@reaperworld.com>
parents: 42860
diff changeset
89 g_assert_cmpuint(counter, ==, 1);
42384
835faf0ddcb6 Implement PurplePresenceManager
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
90
835faf0ddcb6 Implement PurplePresenceManager
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
91 id = purple_saved_presence_get_id(presence);
835faf0ddcb6 Implement PurplePresenceManager
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
92 g_assert_nonnull(id);
835faf0ddcb6 Implement PurplePresenceManager
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
93
43265
7960b5f85729 Update to birb 0.4 and use the testing helpers in libpurple
Gary Kramlich <grim@reaperworld.com>
parents: 42860
diff changeset
94 birb_assert_list_model_n_items(manager, 3);
42384
835faf0ddcb6 Implement PurplePresenceManager
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
95
43265
7960b5f85729 Update to birb 0.4 and use the testing helpers in libpurple
Gary Kramlich <grim@reaperworld.com>
parents: 42860
diff changeset
96 counter = 0;
42384
835faf0ddcb6 Implement PurplePresenceManager
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
97 success = purple_presence_manager_remove(manager, id);
835faf0ddcb6 Implement PurplePresenceManager
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
98 g_assert_true(success);
835faf0ddcb6 Implement PurplePresenceManager
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
99 g_assert_cmpuint(added, ==, 1);
835faf0ddcb6 Implement PurplePresenceManager
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
100 g_assert_cmpuint(removed, ==, 1);
43265
7960b5f85729 Update to birb 0.4 and use the testing helpers in libpurple
Gary Kramlich <grim@reaperworld.com>
parents: 42860
diff changeset
101 g_assert_cmpuint(counter, ==, 1);
42384
835faf0ddcb6 Implement PurplePresenceManager
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
102
43265
7960b5f85729 Update to birb 0.4 and use the testing helpers in libpurple
Gary Kramlich <grim@reaperworld.com>
parents: 42860
diff changeset
103 birb_assert_list_model_n_items(manager, 2);
42384
835faf0ddcb6 Implement PurplePresenceManager
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
104
835faf0ddcb6 Implement PurplePresenceManager
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
105 g_clear_object(&presence);
835faf0ddcb6 Implement PurplePresenceManager
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
106 g_clear_object(&manager);
835faf0ddcb6 Implement PurplePresenceManager
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
107 }
835faf0ddcb6 Implement PurplePresenceManager
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
108
835faf0ddcb6 Implement PurplePresenceManager
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
109 static void
835faf0ddcb6 Implement PurplePresenceManager
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
110 test_purple_presence_manager_persistence(void) {
835faf0ddcb6 Implement PurplePresenceManager
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
111 PurplePresenceManager *manager = NULL;
835faf0ddcb6 Implement PurplePresenceManager
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
112 PurpleSavedPresence *presence = NULL;
42571
722be3b1a8aa Redesign the presence manager a bit
Gary Kramlich <grim@reaperworld.com>
parents: 42563
diff changeset
113 char *path = NULL;
42384
835faf0ddcb6 Implement PurplePresenceManager
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
114 char *filename = NULL;
835faf0ddcb6 Implement PurplePresenceManager
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
115 char *old_id = NULL;
835faf0ddcb6 Implement PurplePresenceManager
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
116 const char *id = NULL;
835faf0ddcb6 Implement PurplePresenceManager
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
117 const char *id1 = NULL;
835faf0ddcb6 Implement PurplePresenceManager
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
118 gboolean ret = FALSE;
835faf0ddcb6 Implement PurplePresenceManager
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
119
42571
722be3b1a8aa Redesign the presence manager a bit
Gary Kramlich <grim@reaperworld.com>
parents: 42563
diff changeset
120 path = g_build_filename(TEST_CACHE_DIR, "presence_manager_persistence",
722be3b1a8aa Redesign the presence manager a bit
Gary Kramlich <grim@reaperworld.com>
parents: 42563
diff changeset
121 NULL);
42384
835faf0ddcb6 Implement PurplePresenceManager
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
122
835faf0ddcb6 Implement PurplePresenceManager
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
123 /* Remove the file if it exists so we can start from a known state. */
42571
722be3b1a8aa Redesign the presence manager a bit
Gary Kramlich <grim@reaperworld.com>
parents: 42563
diff changeset
124 filename = g_build_filename(path, "manager.ini", NULL);
42384
835faf0ddcb6 Implement PurplePresenceManager
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
125 g_remove(filename);
42571
722be3b1a8aa Redesign the presence manager a bit
Gary Kramlich <grim@reaperworld.com>
parents: 42563
diff changeset
126 g_clear_pointer(&filename, g_free);
42384
835faf0ddcb6 Implement PurplePresenceManager
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
127
835faf0ddcb6 Implement PurplePresenceManager
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
128 /* Create the manager, add a presence, and make it active. */
42571
722be3b1a8aa Redesign the presence manager a bit
Gary Kramlich <grim@reaperworld.com>
parents: 42563
diff changeset
129 manager = purple_presence_manager_new(path);
42384
835faf0ddcb6 Implement PurplePresenceManager
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
130 g_assert_true(PURPLE_IS_PRESENCE_MANAGER(manager));
835faf0ddcb6 Implement PurplePresenceManager
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
131
835faf0ddcb6 Implement PurplePresenceManager
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
132 presence = purple_presence_manager_create(manager);
42571
722be3b1a8aa Redesign the presence manager a bit
Gary Kramlich <grim@reaperworld.com>
parents: 42563
diff changeset
133 purple_saved_presence_set_name(presence, "test-presence");
42384
835faf0ddcb6 Implement PurplePresenceManager
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
134
835faf0ddcb6 Implement PurplePresenceManager
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
135 /* Save the id of the presence as we need to use it later. */
835faf0ddcb6 Implement PurplePresenceManager
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
136 id = purple_saved_presence_get_id(presence);
835faf0ddcb6 Implement PurplePresenceManager
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
137 old_id = g_strdup(id);
835faf0ddcb6 Implement PurplePresenceManager
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
138
835faf0ddcb6 Implement PurplePresenceManager
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
139 /* Make the presence active. */
42571
722be3b1a8aa Redesign the presence manager a bit
Gary Kramlich <grim@reaperworld.com>
parents: 42563
diff changeset
140 ret = purple_presence_manager_set_active(manager, presence);
42384
835faf0ddcb6 Implement PurplePresenceManager
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
141 g_assert_true(ret);
835faf0ddcb6 Implement PurplePresenceManager
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
142 g_clear_object(&presence);
835faf0ddcb6 Implement PurplePresenceManager
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
143
835faf0ddcb6 Implement PurplePresenceManager
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
144 presence = purple_presence_manager_get_active(manager);
835faf0ddcb6 Implement PurplePresenceManager
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
145 g_assert_true(PURPLE_IS_SAVED_PRESENCE(presence));
835faf0ddcb6 Implement PurplePresenceManager
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
146
835faf0ddcb6 Implement PurplePresenceManager
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
147 id1 = purple_saved_presence_get_id(presence);
835faf0ddcb6 Implement PurplePresenceManager
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
148 g_assert_cmpstr(id1, ==, id);
835faf0ddcb6 Implement PurplePresenceManager
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
149
835faf0ddcb6 Implement PurplePresenceManager
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
150 /* Clean everything up. The last presence was transfer none so we just need
835faf0ddcb6 Implement PurplePresenceManager
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
151 * to null it out.
835faf0ddcb6 Implement PurplePresenceManager
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
152 */
835faf0ddcb6 Implement PurplePresenceManager
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
153 presence = NULL;
835faf0ddcb6 Implement PurplePresenceManager
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
154 g_clear_object(&manager);
835faf0ddcb6 Implement PurplePresenceManager
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
155
835faf0ddcb6 Implement PurplePresenceManager
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
156 /* Now create the manager again and verify that everything was restored. */
42571
722be3b1a8aa Redesign the presence manager a bit
Gary Kramlich <grim@reaperworld.com>
parents: 42563
diff changeset
157 manager = purple_presence_manager_new(path);
42384
835faf0ddcb6 Implement PurplePresenceManager
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
158 g_assert_true(PURPLE_IS_PRESENCE_MANAGER(manager));
835faf0ddcb6 Implement PurplePresenceManager
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
159
835faf0ddcb6 Implement PurplePresenceManager
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
160 presence = purple_presence_manager_get_active(manager);
835faf0ddcb6 Implement PurplePresenceManager
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
161 g_assert_true(PURPLE_IS_SAVED_PRESENCE(presence));
835faf0ddcb6 Implement PurplePresenceManager
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
162
835faf0ddcb6 Implement PurplePresenceManager
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
163 id = purple_saved_presence_get_id(presence);
835faf0ddcb6 Implement PurplePresenceManager
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
164 g_assert_cmpstr(id, ==, old_id);
835faf0ddcb6 Implement PurplePresenceManager
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
165 g_clear_pointer(&old_id, g_free);
835faf0ddcb6 Implement PurplePresenceManager
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
166
835faf0ddcb6 Implement PurplePresenceManager
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
167 /* Cleanup. */
835faf0ddcb6 Implement PurplePresenceManager
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
168 g_clear_object(&manager);
42571
722be3b1a8aa Redesign the presence manager a bit
Gary Kramlich <grim@reaperworld.com>
parents: 42563
diff changeset
169 g_clear_pointer(&path, g_free);
42384
835faf0ddcb6 Implement PurplePresenceManager
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
170 }
835faf0ddcb6 Implement PurplePresenceManager
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
171
835faf0ddcb6 Implement PurplePresenceManager
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
172 /******************************************************************************
835faf0ddcb6 Implement PurplePresenceManager
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
173 * Main
835faf0ddcb6 Implement PurplePresenceManager
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
174 *****************************************************************************/
42860
99a4ef34cc71 Modernize PurplePresenceManager and its unit tests
Gary Kramlich <grim@reaperworld.com>
parents: 42571
diff changeset
175 int
99a4ef34cc71 Modernize PurplePresenceManager and its unit tests
Gary Kramlich <grim@reaperworld.com>
parents: 42571
diff changeset
176 main(int argc, char *argv[]) {
42384
835faf0ddcb6 Implement PurplePresenceManager
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
177 g_test_init(&argc, &argv, NULL);
42860
99a4ef34cc71 Modernize PurplePresenceManager and its unit tests
Gary Kramlich <grim@reaperworld.com>
parents: 42571
diff changeset
178 g_test_set_nonfatal_assertions();
42384
835faf0ddcb6 Implement PurplePresenceManager
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
179
835faf0ddcb6 Implement PurplePresenceManager
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
180 g_test_add_func("/presence-manager/new",
835faf0ddcb6 Implement PurplePresenceManager
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
181 test_purple_presence_manager_new);
835faf0ddcb6 Implement PurplePresenceManager
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
182 g_test_add_func("/presence-manager/add-remove",
835faf0ddcb6 Implement PurplePresenceManager
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
183 test_purple_presence_manager_add_remove);
835faf0ddcb6 Implement PurplePresenceManager
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
184 g_test_add_func("/presence-manager/persistence",
835faf0ddcb6 Implement PurplePresenceManager
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
185 test_purple_presence_manager_persistence);
835faf0ddcb6 Implement PurplePresenceManager
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
186
835faf0ddcb6 Implement PurplePresenceManager
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
187 return g_test_run();
835faf0ddcb6 Implement PurplePresenceManager
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
188 }

mercurial