libpurple/tests/test_presence_manager.c

Tue, 13 Aug 2024 01:02:39 -0500

author
Gary Kramlich <grim@reaperworld.com>
date
Tue, 13 Aug 2024 01:02:39 -0500
changeset 42860
99a4ef34cc71
parent 42571
722be3b1a8aa
child 43265
7960b5f85729
permissions
-rw-r--r--

Modernize PurplePresenceManager and its unit tests

Testing Done:
Called in the turtles.

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

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
835faf0ddcb6 Implement PurplePresenceManager
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
22 #include <purple.h>
835faf0ddcb6 Implement PurplePresenceManager
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
23
835faf0ddcb6 Implement PurplePresenceManager
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
24 /******************************************************************************
835faf0ddcb6 Implement PurplePresenceManager
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
25 * Callbacks
835faf0ddcb6 Implement PurplePresenceManager
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
26 *****************************************************************************/
835faf0ddcb6 Implement PurplePresenceManager
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
27 static void
835faf0ddcb6 Implement PurplePresenceManager
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
28 test_purple_presence_manager_add_remove_counter(G_GNUC_UNUSED PurplePresenceManager *manager,
835faf0ddcb6 Implement PurplePresenceManager
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
29 G_GNUC_UNUSED PurpleSavedPresence *presence,
835faf0ddcb6 Implement PurplePresenceManager
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
30 gpointer data)
835faf0ddcb6 Implement PurplePresenceManager
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
31 {
835faf0ddcb6 Implement PurplePresenceManager
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
32 guint *counter = 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 *counter = *counter + 1;
835faf0ddcb6 Implement PurplePresenceManager
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
35 }
835faf0ddcb6 Implement PurplePresenceManager
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
36
835faf0ddcb6 Implement PurplePresenceManager
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
37 static void
835faf0ddcb6 Implement PurplePresenceManager
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
38 test_purple_presence_manager_list_changed_counter(G_GNUC_UNUSED GListModel *list,
835faf0ddcb6 Implement PurplePresenceManager
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
39 G_GNUC_UNUSED guint position,
835faf0ddcb6 Implement PurplePresenceManager
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
40 G_GNUC_UNUSED guint removed,
835faf0ddcb6 Implement PurplePresenceManager
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
41 G_GNUC_UNUSED guint added,
835faf0ddcb6 Implement PurplePresenceManager
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
42 gpointer data)
835faf0ddcb6 Implement PurplePresenceManager
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
43 {
835faf0ddcb6 Implement PurplePresenceManager
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
44 guint *counter = data;
835faf0ddcb6 Implement PurplePresenceManager
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
45
835faf0ddcb6 Implement PurplePresenceManager
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
46 *counter = *counter + 1;
835faf0ddcb6 Implement PurplePresenceManager
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
47 }
835faf0ddcb6 Implement PurplePresenceManager
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
48
835faf0ddcb6 Implement PurplePresenceManager
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
49 /******************************************************************************
835faf0ddcb6 Implement PurplePresenceManager
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
50 * Tests
835faf0ddcb6 Implement PurplePresenceManager
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
51 *****************************************************************************/
835faf0ddcb6 Implement PurplePresenceManager
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
52 static void
835faf0ddcb6 Implement PurplePresenceManager
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
53 test_purple_presence_manager_new(void) {
835faf0ddcb6 Implement PurplePresenceManager
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
54 PurplePresenceManager *manager = NULL;
42563
25d1b656d792 Add default saved presences for available and offline
Gary Kramlich <grim@reaperworld.com>
parents: 42384
diff changeset
55 GListModel *model = NULL;
42384
835faf0ddcb6 Implement PurplePresenceManager
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
56
835faf0ddcb6 Implement PurplePresenceManager
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
57 manager = purple_presence_manager_new(NULL);
835faf0ddcb6 Implement PurplePresenceManager
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
58 g_assert_true(PURPLE_IS_PRESENCE_MANAGER(manager));
835faf0ddcb6 Implement PurplePresenceManager
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
59
42563
25d1b656d792 Add default saved presences for available and offline
Gary Kramlich <grim@reaperworld.com>
parents: 42384
diff changeset
60 /* 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
61 *
25d1b656d792 Add default saved presences for available and offline
Gary Kramlich <grim@reaperworld.com>
parents: 42384
diff changeset
62 * 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
63 */
25d1b656d792 Add default saved presences for available and offline
Gary Kramlich <grim@reaperworld.com>
parents: 42384
diff changeset
64 model = G_LIST_MODEL(manager);
25d1b656d792 Add default saved presences for available and offline
Gary Kramlich <grim@reaperworld.com>
parents: 42384
diff changeset
65 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
66
42384
835faf0ddcb6 Implement PurplePresenceManager
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
67 g_clear_object(&manager);
835faf0ddcb6 Implement PurplePresenceManager
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
68 }
835faf0ddcb6 Implement PurplePresenceManager
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
69
835faf0ddcb6 Implement PurplePresenceManager
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
70 static void
835faf0ddcb6 Implement PurplePresenceManager
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
71 test_purple_presence_manager_add_remove(void) {
835faf0ddcb6 Implement PurplePresenceManager
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
72 PurplePresenceManager *manager = NULL;
835faf0ddcb6 Implement PurplePresenceManager
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
73 PurpleSavedPresence *presence = NULL;
835faf0ddcb6 Implement PurplePresenceManager
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
74 gboolean success = FALSE;
835faf0ddcb6 Implement PurplePresenceManager
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
75 guint len = 0;
835faf0ddcb6 Implement PurplePresenceManager
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
76 guint added = 0;
835faf0ddcb6 Implement PurplePresenceManager
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
77 guint removed = 0;
835faf0ddcb6 Implement PurplePresenceManager
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
78 guint changed = 0;
835faf0ddcb6 Implement PurplePresenceManager
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
79 const char *id = NULL;
835faf0ddcb6 Implement PurplePresenceManager
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
80
835faf0ddcb6 Implement PurplePresenceManager
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
81 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
82
25d1b656d792 Add default saved presences for available and offline
Gary Kramlich <grim@reaperworld.com>
parents: 42384
diff changeset
83 /* Connect all of our signals to make sure they're being emitted. */
42384
835faf0ddcb6 Implement PurplePresenceManager
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
84 g_signal_connect(manager, "added",
835faf0ddcb6 Implement PurplePresenceManager
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
85 G_CALLBACK(test_purple_presence_manager_add_remove_counter),
835faf0ddcb6 Implement PurplePresenceManager
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
86 &added);
835faf0ddcb6 Implement PurplePresenceManager
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
87 g_signal_connect(manager, "removed",
835faf0ddcb6 Implement PurplePresenceManager
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
88 G_CALLBACK(test_purple_presence_manager_add_remove_counter),
835faf0ddcb6 Implement PurplePresenceManager
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
89 &removed);
835faf0ddcb6 Implement PurplePresenceManager
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
90 g_signal_connect(manager, "items-changed",
835faf0ddcb6 Implement PurplePresenceManager
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
91 G_CALLBACK(test_purple_presence_manager_list_changed_counter),
835faf0ddcb6 Implement PurplePresenceManager
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
92 &changed);
835faf0ddcb6 Implement PurplePresenceManager
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
93
835faf0ddcb6 Implement PurplePresenceManager
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
94 len = g_list_model_get_n_items(G_LIST_MODEL(manager));
42571
722be3b1a8aa Redesign the presence manager a bit
Gary Kramlich <grim@reaperworld.com>
parents: 42563
diff changeset
95 /* The manager makes sure we always have online and offline presences. */
722be3b1a8aa Redesign the presence manager a bit
Gary Kramlich <grim@reaperworld.com>
parents: 42563
diff changeset
96 g_assert_cmpuint(len, ==, 2);
42384
835faf0ddcb6 Implement PurplePresenceManager
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
97
835faf0ddcb6 Implement PurplePresenceManager
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
98 presence = purple_presence_manager_create(manager);
835faf0ddcb6 Implement PurplePresenceManager
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
99 g_assert_true(PURPLE_IS_SAVED_PRESENCE(presence));
835faf0ddcb6 Implement PurplePresenceManager
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
100 purple_saved_presence_set_name(presence, "test presence");
835faf0ddcb6 Implement PurplePresenceManager
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
101 g_assert_cmpuint(added, ==, 1);
835faf0ddcb6 Implement PurplePresenceManager
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
102 g_assert_cmpuint(removed, ==, 0);
835faf0ddcb6 Implement PurplePresenceManager
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
103 g_assert_cmpuint(changed, ==, 1);
835faf0ddcb6 Implement PurplePresenceManager
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
104
835faf0ddcb6 Implement PurplePresenceManager
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
105 id = purple_saved_presence_get_id(presence);
835faf0ddcb6 Implement PurplePresenceManager
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
106 g_assert_nonnull(id);
835faf0ddcb6 Implement PurplePresenceManager
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
107
835faf0ddcb6 Implement PurplePresenceManager
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
108 len = g_list_model_get_n_items(G_LIST_MODEL(manager));
42571
722be3b1a8aa Redesign the presence manager a bit
Gary Kramlich <grim@reaperworld.com>
parents: 42563
diff changeset
109 g_assert_cmpuint(len, ==, 3);
42384
835faf0ddcb6 Implement PurplePresenceManager
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
110
835faf0ddcb6 Implement PurplePresenceManager
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
111 success = purple_presence_manager_remove(manager, id);
835faf0ddcb6 Implement PurplePresenceManager
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
112 g_assert_true(success);
835faf0ddcb6 Implement PurplePresenceManager
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
113 g_assert_cmpuint(added, ==, 1);
835faf0ddcb6 Implement PurplePresenceManager
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
114 g_assert_cmpuint(removed, ==, 1);
835faf0ddcb6 Implement PurplePresenceManager
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
115 g_assert_cmpuint(changed, ==, 2);
835faf0ddcb6 Implement PurplePresenceManager
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
116
835faf0ddcb6 Implement PurplePresenceManager
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
117 len = g_list_model_get_n_items(G_LIST_MODEL(manager));
42571
722be3b1a8aa Redesign the presence manager a bit
Gary Kramlich <grim@reaperworld.com>
parents: 42563
diff changeset
118 g_assert_cmpuint(len, ==, 2);
42384
835faf0ddcb6 Implement PurplePresenceManager
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
119
835faf0ddcb6 Implement PurplePresenceManager
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
120 g_clear_object(&presence);
835faf0ddcb6 Implement PurplePresenceManager
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
121 g_clear_object(&manager);
835faf0ddcb6 Implement PurplePresenceManager
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
122 }
835faf0ddcb6 Implement PurplePresenceManager
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
123
835faf0ddcb6 Implement PurplePresenceManager
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
124 static void
835faf0ddcb6 Implement PurplePresenceManager
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
125 test_purple_presence_manager_persistence(void) {
835faf0ddcb6 Implement PurplePresenceManager
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
126 PurplePresenceManager *manager = NULL;
835faf0ddcb6 Implement PurplePresenceManager
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
127 PurpleSavedPresence *presence = NULL;
42571
722be3b1a8aa Redesign the presence manager a bit
Gary Kramlich <grim@reaperworld.com>
parents: 42563
diff changeset
128 char *path = NULL;
42384
835faf0ddcb6 Implement PurplePresenceManager
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
129 char *filename = NULL;
835faf0ddcb6 Implement PurplePresenceManager
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
130 char *old_id = NULL;
835faf0ddcb6 Implement PurplePresenceManager
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
131 const char *id = NULL;
835faf0ddcb6 Implement PurplePresenceManager
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
132 const char *id1 = NULL;
835faf0ddcb6 Implement PurplePresenceManager
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
133 gboolean ret = FALSE;
835faf0ddcb6 Implement PurplePresenceManager
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
134
42571
722be3b1a8aa Redesign the presence manager a bit
Gary Kramlich <grim@reaperworld.com>
parents: 42563
diff changeset
135 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
136 NULL);
42384
835faf0ddcb6 Implement PurplePresenceManager
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
137
835faf0ddcb6 Implement PurplePresenceManager
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
138 /* 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
139 filename = g_build_filename(path, "manager.ini", NULL);
42384
835faf0ddcb6 Implement PurplePresenceManager
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
140 g_remove(filename);
42571
722be3b1a8aa Redesign the presence manager a bit
Gary Kramlich <grim@reaperworld.com>
parents: 42563
diff changeset
141 g_clear_pointer(&filename, g_free);
42384
835faf0ddcb6 Implement PurplePresenceManager
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
142
835faf0ddcb6 Implement PurplePresenceManager
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
143 /* 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
144 manager = purple_presence_manager_new(path);
42384
835faf0ddcb6 Implement PurplePresenceManager
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
145 g_assert_true(PURPLE_IS_PRESENCE_MANAGER(manager));
835faf0ddcb6 Implement PurplePresenceManager
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
146
835faf0ddcb6 Implement PurplePresenceManager
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
147 presence = purple_presence_manager_create(manager);
42571
722be3b1a8aa Redesign the presence manager a bit
Gary Kramlich <grim@reaperworld.com>
parents: 42563
diff changeset
148 purple_saved_presence_set_name(presence, "test-presence");
42384
835faf0ddcb6 Implement PurplePresenceManager
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
149
835faf0ddcb6 Implement PurplePresenceManager
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
150 /* Save the id of the presence as we need to use it later. */
835faf0ddcb6 Implement PurplePresenceManager
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
151 id = purple_saved_presence_get_id(presence);
835faf0ddcb6 Implement PurplePresenceManager
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
152 old_id = g_strdup(id);
835faf0ddcb6 Implement PurplePresenceManager
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
153
835faf0ddcb6 Implement PurplePresenceManager
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
154 /* Make the presence active. */
42571
722be3b1a8aa Redesign the presence manager a bit
Gary Kramlich <grim@reaperworld.com>
parents: 42563
diff changeset
155 ret = purple_presence_manager_set_active(manager, presence);
42384
835faf0ddcb6 Implement PurplePresenceManager
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
156 g_assert_true(ret);
835faf0ddcb6 Implement PurplePresenceManager
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
157 g_clear_object(&presence);
835faf0ddcb6 Implement PurplePresenceManager
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
158
835faf0ddcb6 Implement PurplePresenceManager
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
159 presence = purple_presence_manager_get_active(manager);
835faf0ddcb6 Implement PurplePresenceManager
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
160 g_assert_true(PURPLE_IS_SAVED_PRESENCE(presence));
835faf0ddcb6 Implement PurplePresenceManager
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
161
835faf0ddcb6 Implement PurplePresenceManager
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
162 id1 = purple_saved_presence_get_id(presence);
835faf0ddcb6 Implement PurplePresenceManager
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
163 g_assert_cmpstr(id1, ==, id);
835faf0ddcb6 Implement PurplePresenceManager
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
164
835faf0ddcb6 Implement PurplePresenceManager
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
165 /* Clean everything up. The last presence was transfer none so we just need
835faf0ddcb6 Implement PurplePresenceManager
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
166 * to null it out.
835faf0ddcb6 Implement PurplePresenceManager
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
167 */
835faf0ddcb6 Implement PurplePresenceManager
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
168 presence = NULL;
835faf0ddcb6 Implement PurplePresenceManager
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
169 g_clear_object(&manager);
835faf0ddcb6 Implement PurplePresenceManager
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
170
835faf0ddcb6 Implement PurplePresenceManager
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
171 /* 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
172 manager = purple_presence_manager_new(path);
42384
835faf0ddcb6 Implement PurplePresenceManager
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
173 g_assert_true(PURPLE_IS_PRESENCE_MANAGER(manager));
835faf0ddcb6 Implement PurplePresenceManager
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
174
835faf0ddcb6 Implement PurplePresenceManager
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
175 presence = purple_presence_manager_get_active(manager);
835faf0ddcb6 Implement PurplePresenceManager
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
176 g_assert_true(PURPLE_IS_SAVED_PRESENCE(presence));
835faf0ddcb6 Implement PurplePresenceManager
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
177
835faf0ddcb6 Implement PurplePresenceManager
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
178 id = purple_saved_presence_get_id(presence);
835faf0ddcb6 Implement PurplePresenceManager
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
179 g_assert_cmpstr(id, ==, old_id);
835faf0ddcb6 Implement PurplePresenceManager
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
180 g_clear_pointer(&old_id, g_free);
835faf0ddcb6 Implement PurplePresenceManager
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
181
835faf0ddcb6 Implement PurplePresenceManager
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
182 /* Cleanup. */
835faf0ddcb6 Implement PurplePresenceManager
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
183 g_clear_object(&manager);
42571
722be3b1a8aa Redesign the presence manager a bit
Gary Kramlich <grim@reaperworld.com>
parents: 42563
diff changeset
184 g_clear_pointer(&path, g_free);
42384
835faf0ddcb6 Implement PurplePresenceManager
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
185 }
835faf0ddcb6 Implement PurplePresenceManager
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
186
835faf0ddcb6 Implement PurplePresenceManager
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
187 /******************************************************************************
835faf0ddcb6 Implement PurplePresenceManager
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
188 * Main
835faf0ddcb6 Implement PurplePresenceManager
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
189 *****************************************************************************/
42860
99a4ef34cc71 Modernize PurplePresenceManager and its unit tests
Gary Kramlich <grim@reaperworld.com>
parents: 42571
diff changeset
190 int
99a4ef34cc71 Modernize PurplePresenceManager and its unit tests
Gary Kramlich <grim@reaperworld.com>
parents: 42571
diff changeset
191 main(int argc, char *argv[]) {
42384
835faf0ddcb6 Implement PurplePresenceManager
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
192 g_test_init(&argc, &argv, NULL);
42860
99a4ef34cc71 Modernize PurplePresenceManager and its unit tests
Gary Kramlich <grim@reaperworld.com>
parents: 42571
diff changeset
193 g_test_set_nonfatal_assertions();
42384
835faf0ddcb6 Implement PurplePresenceManager
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
194
835faf0ddcb6 Implement PurplePresenceManager
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
195 g_test_add_func("/presence-manager/new",
835faf0ddcb6 Implement PurplePresenceManager
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
196 test_purple_presence_manager_new);
835faf0ddcb6 Implement PurplePresenceManager
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
197 g_test_add_func("/presence-manager/add-remove",
835faf0ddcb6 Implement PurplePresenceManager
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
198 test_purple_presence_manager_add_remove);
835faf0ddcb6 Implement PurplePresenceManager
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
199 g_test_add_func("/presence-manager/persistence",
835faf0ddcb6 Implement PurplePresenceManager
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
200 test_purple_presence_manager_persistence);
835faf0ddcb6 Implement PurplePresenceManager
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
201
835faf0ddcb6 Implement PurplePresenceManager
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
202 return g_test_run();
835faf0ddcb6 Implement PurplePresenceManager
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
203 }

mercurial