libpurple/tests/test_presence_manager.c

changeset 42563
25d1b656d792
parent 42384
835faf0ddcb6
child 42571
722be3b1a8aa
equal deleted inserted replaced
42562:f02878f30f91 42563:25d1b656d792
50 * Tests 50 * Tests
51 *****************************************************************************/ 51 *****************************************************************************/
52 static void 52 static void
53 test_purple_presence_manager_new(void) { 53 test_purple_presence_manager_new(void) {
54 PurplePresenceManager *manager = NULL; 54 PurplePresenceManager *manager = NULL;
55 GListModel *model = NULL;
55 56
56 manager = purple_presence_manager_new(NULL); 57 manager = purple_presence_manager_new(NULL);
57 g_assert_true(PURPLE_IS_PRESENCE_MANAGER(manager)); 58 g_assert_true(PURPLE_IS_PRESENCE_MANAGER(manager));
59
60 /* Make sure we have our 2 default saved presences.
61 *
62 * This may change over time, but we should update this for those changes.
63 */
64 model = G_LIST_MODEL(manager);
65 g_assert_cmpuint(g_list_model_get_n_items(model), ==, 2);
58 66
59 g_clear_object(&manager); 67 g_clear_object(&manager);
60 } 68 }
61 69
62 static void 70 static void
63 test_purple_presence_manager_add_remove(void) { 71 test_purple_presence_manager_add_remove(void) {
64 PurplePresenceManager *manager = NULL; 72 PurplePresenceManager *manager = NULL;
65 PurpleSavedPresence *presence = NULL; 73 PurpleSavedPresence *presence = NULL;
74 GListModel *model = NULL;
66 gboolean success = FALSE; 75 gboolean success = FALSE;
67 guint len = 0; 76 guint len = 0;
68 guint added = 0; 77 guint added = 0;
69 guint removed = 0; 78 guint removed = 0;
70 guint changed = 0; 79 guint changed = 0;
71 const char *id = NULL; 80 const char *id = NULL;
72 81
73 manager = purple_presence_manager_new(NULL); 82 manager = purple_presence_manager_new(NULL);
83
84 /* When a presence manager is created, if there are no saved statuses it
85 * adds some default ones and sets the active presence. We need to clear
86 * all of that to get to a known state.
87 *
88 * The default statuses are checked in test_purple_presence_manager_new.
89 */
90 model = G_LIST_MODEL(manager);
91 purple_presence_manager_set_active(manager, NULL);
92 while(g_list_model_get_n_items(model) > 0) {
93 PurpleSavedPresence *presence = NULL;
94
95 /* Since we're removing items, the positions change, so we just always
96 * want to remove the item at position 0.
97 */
98 presence = g_list_model_get_item(model, 0);
99 purple_presence_manager_remove(manager,
100 purple_saved_presence_get_id(presence));
101 g_assert_finalize_object(presence);
102 }
103
104 /* Connect all of our signals to make sure they're being emitted. */
74 g_signal_connect(manager, "added", 105 g_signal_connect(manager, "added",
75 G_CALLBACK(test_purple_presence_manager_add_remove_counter), 106 G_CALLBACK(test_purple_presence_manager_add_remove_counter),
76 &added); 107 &added);
77 g_signal_connect(manager, "removed", 108 g_signal_connect(manager, "removed",
78 G_CALLBACK(test_purple_presence_manager_add_remove_counter), 109 G_CALLBACK(test_purple_presence_manager_add_remove_counter),

mercurial