| 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), |