Tue, 01 Oct 2024 01:15:31 -0500
Create Purple.NotificationConnectionError
This is used to notify about connection errors.
Unit tests were skipped as we will be moving away to GError instead of
Purple.ConnectionErrorInfo, and writing the tests the old way would have just
meant more stuff to change later.
Testing Done:
Reaped a connection with the demo protocol plugin and ran the notification manager tests under valgrind. And of course called in the turtles for a pizza party.
Bugs closed: PIDGIN-17946
Reviewed at https://reviews.imfreedom.org/r/3554/
|
41433
d563b345a096
Phase 1 of the Notifications API
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
1 | /* |
|
d563b345a096
Phase 1 of the Notifications API
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
2 | * Purple - Internet Messaging Library |
|
d563b345a096
Phase 1 of the Notifications API
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
3 | * Copyright (C) Pidgin Developers <devel@pidgin.im> |
|
d563b345a096
Phase 1 of the Notifications API
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
4 | * |
|
d563b345a096
Phase 1 of the Notifications API
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
5 | * This library is free software; you can redistribute it and/or |
|
d563b345a096
Phase 1 of the Notifications API
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
6 | * modify it under the terms of the GNU Lesser General Public |
|
d563b345a096
Phase 1 of the Notifications API
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
7 | * License as published by the Free Software Foundation; either |
|
d563b345a096
Phase 1 of the Notifications API
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
8 | * version 2 of the License, or (at your option) any later version. |
|
d563b345a096
Phase 1 of the Notifications API
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
9 | * |
|
d563b345a096
Phase 1 of the Notifications API
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
10 | * This library is distributed in the hope that it will be useful, |
|
d563b345a096
Phase 1 of the Notifications API
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
11 | * but WITHOUT ANY WARRANTY; without even the implied warranty of |
|
d563b345a096
Phase 1 of the Notifications API
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU |
|
d563b345a096
Phase 1 of the Notifications API
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
13 | * Lesser General Public License for more details. |
|
d563b345a096
Phase 1 of the Notifications API
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
14 | * |
|
d563b345a096
Phase 1 of the Notifications API
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
15 | * You should have received a copy of the GNU Lesser General Public |
|
d563b345a096
Phase 1 of the Notifications API
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
16 | * License along with this library; if not, see <https://www.gnu.org/licenses/>. |
|
d563b345a096
Phase 1 of the Notifications API
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
17 | */ |
|
d563b345a096
Phase 1 of the Notifications API
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
18 | |
|
d563b345a096
Phase 1 of the Notifications API
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
19 | #include <glib.h> |
|
d563b345a096
Phase 1 of the Notifications API
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
20 | |
|
d563b345a096
Phase 1 of the Notifications API
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
21 | #include <purple.h> |
|
d563b345a096
Phase 1 of the Notifications API
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
22 | |
|
d563b345a096
Phase 1 of the Notifications API
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
23 | /****************************************************************************** |
|
d563b345a096
Phase 1 of the Notifications API
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
24 | * Callbacks |
|
d563b345a096
Phase 1 of the Notifications API
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
25 | *****************************************************************************/ |
|
d563b345a096
Phase 1 of the Notifications API
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
26 | static void |
|
d563b345a096
Phase 1 of the Notifications API
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
27 | test_purple_notification_manager_increment_cb(G_GNUC_UNUSED PurpleNotificationManager *manager, |
|
d563b345a096
Phase 1 of the Notifications API
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
28 | G_GNUC_UNUSED PurpleNotification *notification, |
|
d563b345a096
Phase 1 of the Notifications API
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
29 | gpointer data) |
|
d563b345a096
Phase 1 of the Notifications API
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
30 | { |
|
42852
c86412606a01
Modernize the notification manager tests
Gary Kramlich <grim@reaperworld.com>
parents:
42638
diff
changeset
|
31 | guint *counter = data; |
|
41433
d563b345a096
Phase 1 of the Notifications API
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
32 | |
|
42852
c86412606a01
Modernize the notification manager tests
Gary Kramlich <grim@reaperworld.com>
parents:
42638
diff
changeset
|
33 | *counter = *counter + 1; |
|
41433
d563b345a096
Phase 1 of the Notifications API
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
34 | } |
|
d563b345a096
Phase 1 of the Notifications API
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
35 | |
|
d563b345a096
Phase 1 of the Notifications API
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
36 | static void |
|
d563b345a096
Phase 1 of the Notifications API
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
37 | test_purple_notification_manager_unread_count_cb(G_GNUC_UNUSED GObject *obj, |
|
d563b345a096
Phase 1 of the Notifications API
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
38 | G_GNUC_UNUSED GParamSpec *pspec, |
|
d563b345a096
Phase 1 of the Notifications API
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
39 | gpointer data) |
|
d563b345a096
Phase 1 of the Notifications API
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
40 | { |
|
42852
c86412606a01
Modernize the notification manager tests
Gary Kramlich <grim@reaperworld.com>
parents:
42638
diff
changeset
|
41 | guint *counter = data; |
|
41433
d563b345a096
Phase 1 of the Notifications API
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
42 | |
|
42852
c86412606a01
Modernize the notification manager tests
Gary Kramlich <grim@reaperworld.com>
parents:
42638
diff
changeset
|
43 | *counter = *counter + 1; |
|
41433
d563b345a096
Phase 1 of the Notifications API
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
44 | } |
|
d563b345a096
Phase 1 of the Notifications API
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
45 | |
|
42962
a2c1926ce7b2
Update Purple.NotificationManager to remove notifications when they're deleted
Gary Kramlich <grim@reaperworld.com>
parents:
42927
diff
changeset
|
46 | static void |
|
a2c1926ce7b2
Update Purple.NotificationManager to remove notifications when they're deleted
Gary Kramlich <grim@reaperworld.com>
parents:
42927
diff
changeset
|
47 | test_purple_notification_manager_items_changed_cb(GListModel *model, |
|
a2c1926ce7b2
Update Purple.NotificationManager to remove notifications when they're deleted
Gary Kramlich <grim@reaperworld.com>
parents:
42927
diff
changeset
|
48 | G_GNUC_UNUSED guint position, |
|
a2c1926ce7b2
Update Purple.NotificationManager to remove notifications when they're deleted
Gary Kramlich <grim@reaperworld.com>
parents:
42927
diff
changeset
|
49 | G_GNUC_UNUSED guint removed, |
|
a2c1926ce7b2
Update Purple.NotificationManager to remove notifications when they're deleted
Gary Kramlich <grim@reaperworld.com>
parents:
42927
diff
changeset
|
50 | G_GNUC_UNUSED guint added, |
|
a2c1926ce7b2
Update Purple.NotificationManager to remove notifications when they're deleted
Gary Kramlich <grim@reaperworld.com>
parents:
42927
diff
changeset
|
51 | gpointer data) |
|
a2c1926ce7b2
Update Purple.NotificationManager to remove notifications when they're deleted
Gary Kramlich <grim@reaperworld.com>
parents:
42927
diff
changeset
|
52 | { |
|
a2c1926ce7b2
Update Purple.NotificationManager to remove notifications when they're deleted
Gary Kramlich <grim@reaperworld.com>
parents:
42927
diff
changeset
|
53 | guint *counter = data; |
|
a2c1926ce7b2
Update Purple.NotificationManager to remove notifications when they're deleted
Gary Kramlich <grim@reaperworld.com>
parents:
42927
diff
changeset
|
54 | |
|
a2c1926ce7b2
Update Purple.NotificationManager to remove notifications when they're deleted
Gary Kramlich <grim@reaperworld.com>
parents:
42927
diff
changeset
|
55 | g_assert_true(PURPLE_IS_NOTIFICATION_MANAGER(model)); |
|
a2c1926ce7b2
Update Purple.NotificationManager to remove notifications when they're deleted
Gary Kramlich <grim@reaperworld.com>
parents:
42927
diff
changeset
|
56 | |
|
a2c1926ce7b2
Update Purple.NotificationManager to remove notifications when they're deleted
Gary Kramlich <grim@reaperworld.com>
parents:
42927
diff
changeset
|
57 | *counter = *counter + 1; |
|
a2c1926ce7b2
Update Purple.NotificationManager to remove notifications when they're deleted
Gary Kramlich <grim@reaperworld.com>
parents:
42927
diff
changeset
|
58 | } |
|
a2c1926ce7b2
Update Purple.NotificationManager to remove notifications when they're deleted
Gary Kramlich <grim@reaperworld.com>
parents:
42927
diff
changeset
|
59 | |
|
41433
d563b345a096
Phase 1 of the Notifications API
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
60 | /****************************************************************************** |
|
d563b345a096
Phase 1 of the Notifications API
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
61 | * Tests |
|
d563b345a096
Phase 1 of the Notifications API
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
62 | *****************************************************************************/ |
|
d563b345a096
Phase 1 of the Notifications API
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
63 | static void |
|
d563b345a096
Phase 1 of the Notifications API
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
64 | test_purple_notification_manager_add_remove(void) { |
|
d563b345a096
Phase 1 of the Notifications API
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
65 | PurpleNotificationManager *manager = NULL; |
|
d563b345a096
Phase 1 of the Notifications API
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
66 | PurpleNotification *notification = NULL; |
|
42852
c86412606a01
Modernize the notification manager tests
Gary Kramlich <grim@reaperworld.com>
parents:
42638
diff
changeset
|
67 | guint added_called = 0; |
|
c86412606a01
Modernize the notification manager tests
Gary Kramlich <grim@reaperworld.com>
parents:
42638
diff
changeset
|
68 | guint removed_called = 0; |
|
41433
d563b345a096
Phase 1 of the Notifications API
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
69 | guint unread_count = 0; |
|
d563b345a096
Phase 1 of the Notifications API
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
70 | |
|
d563b345a096
Phase 1 of the Notifications API
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
71 | manager = g_object_new(PURPLE_TYPE_NOTIFICATION_MANAGER, NULL); |
|
d563b345a096
Phase 1 of the Notifications API
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
72 | |
|
d563b345a096
Phase 1 of the Notifications API
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
73 | g_assert_true(PURPLE_IS_NOTIFICATION_MANAGER(manager)); |
|
d563b345a096
Phase 1 of the Notifications API
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
74 | |
|
d563b345a096
Phase 1 of the Notifications API
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
75 | /* Wire up our signals. */ |
|
d563b345a096
Phase 1 of the Notifications API
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
76 | g_signal_connect(manager, "added", |
|
d563b345a096
Phase 1 of the Notifications API
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
77 | G_CALLBACK(test_purple_notification_manager_increment_cb), |
|
d563b345a096
Phase 1 of the Notifications API
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
78 | &added_called); |
|
d563b345a096
Phase 1 of the Notifications API
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
79 | g_signal_connect(manager, "removed", |
|
d563b345a096
Phase 1 of the Notifications API
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
80 | G_CALLBACK(test_purple_notification_manager_increment_cb), |
|
d563b345a096
Phase 1 of the Notifications API
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
81 | &removed_called); |
|
d563b345a096
Phase 1 of the Notifications API
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
82 | |
|
42638
81ef32d85e5a
Fix transfer annotation of purple_notification_manager_add
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
42565
diff
changeset
|
83 | /* Create the notification and store its id. */ |
|
42927
51bee36eb6cb
First steps of cleaning up the notification API
Gary Kramlich <grim@reaperworld.com>
parents:
42852
diff
changeset
|
84 | notification = purple_notification_new_generic(NULL, NULL); |
|
41433
d563b345a096
Phase 1 of the Notifications API
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
85 | |
|
d563b345a096
Phase 1 of the Notifications API
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
86 | /* Add the notification to the manager. */ |
|
d563b345a096
Phase 1 of the Notifications API
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
87 | purple_notification_manager_add(manager, notification); |
|
d563b345a096
Phase 1 of the Notifications API
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
88 | |
|
d563b345a096
Phase 1 of the Notifications API
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
89 | /* Make sure the added signal was called. */ |
|
42852
c86412606a01
Modernize the notification manager tests
Gary Kramlich <grim@reaperworld.com>
parents:
42638
diff
changeset
|
90 | g_assert_cmpuint(added_called, ==, 1); |
|
41433
d563b345a096
Phase 1 of the Notifications API
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
91 | |
|
d563b345a096
Phase 1 of the Notifications API
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
92 | /* Verify that the unread count is 1. */ |
|
d563b345a096
Phase 1 of the Notifications API
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
93 | unread_count = purple_notification_manager_get_unread_count(manager); |
|
42852
c86412606a01
Modernize the notification manager tests
Gary Kramlich <grim@reaperworld.com>
parents:
42638
diff
changeset
|
94 | g_assert_cmpuint(unread_count, ==, 1); |
|
41433
d563b345a096
Phase 1 of the Notifications API
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
95 | |
|
d563b345a096
Phase 1 of the Notifications API
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
96 | /* Remove the notification. */ |
|
41438
86beaec0fa35
Create and add notifications for account errors.
Gary Kramlich <grim@reaperworld.com>
parents:
41433
diff
changeset
|
97 | purple_notification_manager_remove(manager, notification); |
|
42852
c86412606a01
Modernize the notification manager tests
Gary Kramlich <grim@reaperworld.com>
parents:
42638
diff
changeset
|
98 | g_assert_cmpuint(removed_called, ==, 1); |
|
41433
d563b345a096
Phase 1 of the Notifications API
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
99 | |
|
d563b345a096
Phase 1 of the Notifications API
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
100 | /* Verify that the unread count is now 0. */ |
|
d563b345a096
Phase 1 of the Notifications API
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
101 | unread_count = purple_notification_manager_get_unread_count(manager); |
|
42852
c86412606a01
Modernize the notification manager tests
Gary Kramlich <grim@reaperworld.com>
parents:
42638
diff
changeset
|
102 | g_assert_cmpuint(unread_count, ==, 0); |
|
41433
d563b345a096
Phase 1 of the Notifications API
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
103 | |
|
42638
81ef32d85e5a
Fix transfer annotation of purple_notification_manager_add
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
42565
diff
changeset
|
104 | /* After removal from the manager, nothing else should know about this. */ |
|
81ef32d85e5a
Fix transfer annotation of purple_notification_manager_add
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
42565
diff
changeset
|
105 | g_assert_finalize_object(notification); |
|
81ef32d85e5a
Fix transfer annotation of purple_notification_manager_add
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
42565
diff
changeset
|
106 | |
|
41433
d563b345a096
Phase 1 of the Notifications API
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
107 | /* Clean up the manager. */ |
|
42852
c86412606a01
Modernize the notification manager tests
Gary Kramlich <grim@reaperworld.com>
parents:
42638
diff
changeset
|
108 | g_assert_finalize_object(manager); |
|
41433
d563b345a096
Phase 1 of the Notifications API
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
109 | } |
|
d563b345a096
Phase 1 of the Notifications API
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
110 | |
|
d563b345a096
Phase 1 of the Notifications API
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
111 | static void |
|
d563b345a096
Phase 1 of the Notifications API
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
112 | test_purple_notification_manager_double_add(void) { |
|
d563b345a096
Phase 1 of the Notifications API
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
113 | if(g_test_subprocess()) { |
|
d563b345a096
Phase 1 of the Notifications API
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
114 | PurpleNotificationManager *manager = NULL; |
|
d563b345a096
Phase 1 of the Notifications API
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
115 | PurpleNotification *notification = NULL; |
|
d563b345a096
Phase 1 of the Notifications API
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
116 | |
|
d563b345a096
Phase 1 of the Notifications API
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
117 | manager = g_object_new(PURPLE_TYPE_NOTIFICATION_MANAGER, NULL); |
|
d563b345a096
Phase 1 of the Notifications API
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
118 | |
|
42927
51bee36eb6cb
First steps of cleaning up the notification API
Gary Kramlich <grim@reaperworld.com>
parents:
42852
diff
changeset
|
119 | notification = purple_notification_new_generic(NULL, NULL); |
|
41433
d563b345a096
Phase 1 of the Notifications API
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
120 | |
|
d563b345a096
Phase 1 of the Notifications API
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
121 | purple_notification_manager_add(manager, notification); |
|
d563b345a096
Phase 1 of the Notifications API
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
122 | purple_notification_manager_add(manager, notification); |
|
d563b345a096
Phase 1 of the Notifications API
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
123 | |
|
42638
81ef32d85e5a
Fix transfer annotation of purple_notification_manager_add
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
42565
diff
changeset
|
124 | /* These will never get called as the double add outputs a g_warning() |
|
81ef32d85e5a
Fix transfer annotation of purple_notification_manager_add
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
42565
diff
changeset
|
125 | * that causes the subprocess to exit. This is left to avoid a false |
|
81ef32d85e5a
Fix transfer annotation of purple_notification_manager_add
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
42565
diff
changeset
|
126 | * positive in static analysis. |
|
41433
d563b345a096
Phase 1 of the Notifications API
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
127 | */ |
|
42852
c86412606a01
Modernize the notification manager tests
Gary Kramlich <grim@reaperworld.com>
parents:
42638
diff
changeset
|
128 | g_assert_finalize_object(notification); |
|
c86412606a01
Modernize the notification manager tests
Gary Kramlich <grim@reaperworld.com>
parents:
42638
diff
changeset
|
129 | g_assert_finalize_object(manager); |
|
c86412606a01
Modernize the notification manager tests
Gary Kramlich <grim@reaperworld.com>
parents:
42638
diff
changeset
|
130 | |
|
c86412606a01
Modernize the notification manager tests
Gary Kramlich <grim@reaperworld.com>
parents:
42638
diff
changeset
|
131 | g_assert_not_reached(); |
|
41433
d563b345a096
Phase 1 of the Notifications API
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
132 | } |
|
d563b345a096
Phase 1 of the Notifications API
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
133 | |
|
d563b345a096
Phase 1 of the Notifications API
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
134 | g_test_trap_subprocess(NULL, 0, 0); |
|
d563b345a096
Phase 1 of the Notifications API
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
135 | g_test_trap_assert_stderr("*Purple-WARNING*double add detected for notification*"); |
|
d563b345a096
Phase 1 of the Notifications API
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
136 | } |
|
d563b345a096
Phase 1 of the Notifications API
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
137 | |
|
d563b345a096
Phase 1 of the Notifications API
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
138 | static void |
|
d563b345a096
Phase 1 of the Notifications API
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
139 | test_purple_notification_manager_double_remove(void) { |
|
d563b345a096
Phase 1 of the Notifications API
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
140 | PurpleNotificationManager *manager = NULL; |
|
d563b345a096
Phase 1 of the Notifications API
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
141 | PurpleNotification *notification = NULL; |
|
42852
c86412606a01
Modernize the notification manager tests
Gary Kramlich <grim@reaperworld.com>
parents:
42638
diff
changeset
|
142 | guint removed_called = 0; |
|
41433
d563b345a096
Phase 1 of the Notifications API
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
143 | |
|
d563b345a096
Phase 1 of the Notifications API
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
144 | manager = g_object_new(PURPLE_TYPE_NOTIFICATION_MANAGER, NULL); |
|
d563b345a096
Phase 1 of the Notifications API
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
145 | g_signal_connect(manager, "removed", |
|
d563b345a096
Phase 1 of the Notifications API
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
146 | G_CALLBACK(test_purple_notification_manager_increment_cb), |
|
d563b345a096
Phase 1 of the Notifications API
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
147 | &removed_called); |
|
d563b345a096
Phase 1 of the Notifications API
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
148 | |
|
42927
51bee36eb6cb
First steps of cleaning up the notification API
Gary Kramlich <grim@reaperworld.com>
parents:
42852
diff
changeset
|
149 | notification = purple_notification_new_generic(NULL, NULL); |
|
41433
d563b345a096
Phase 1 of the Notifications API
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
150 | |
|
d563b345a096
Phase 1 of the Notifications API
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
151 | purple_notification_manager_add(manager, notification); |
|
d563b345a096
Phase 1 of the Notifications API
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
152 | |
|
41438
86beaec0fa35
Create and add notifications for account errors.
Gary Kramlich <grim@reaperworld.com>
parents:
41433
diff
changeset
|
153 | purple_notification_manager_remove(manager, notification); |
|
86beaec0fa35
Create and add notifications for account errors.
Gary Kramlich <grim@reaperworld.com>
parents:
41433
diff
changeset
|
154 | purple_notification_manager_remove(manager, notification); |
|
41433
d563b345a096
Phase 1 of the Notifications API
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
155 | |
|
42852
c86412606a01
Modernize the notification manager tests
Gary Kramlich <grim@reaperworld.com>
parents:
42638
diff
changeset
|
156 | g_assert_cmpuint(removed_called, ==, 1); |
|
41433
d563b345a096
Phase 1 of the Notifications API
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
157 | |
|
42638
81ef32d85e5a
Fix transfer annotation of purple_notification_manager_add
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
42565
diff
changeset
|
158 | g_assert_finalize_object(notification); |
|
42852
c86412606a01
Modernize the notification manager tests
Gary Kramlich <grim@reaperworld.com>
parents:
42638
diff
changeset
|
159 | g_assert_finalize_object(manager); |
|
41433
d563b345a096
Phase 1 of the Notifications API
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
160 | } |
|
d563b345a096
Phase 1 of the Notifications API
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
161 | |
|
d563b345a096
Phase 1 of the Notifications API
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
162 | static void |
|
41511
2036d450fd18
Add purple_notification_manager_remove_with_account.
Gary Kramlich <grim@reaperworld.com>
parents:
41438
diff
changeset
|
163 | test_purple_notification_manager_remove_with_account_simple(void) { |
|
2036d450fd18
Add purple_notification_manager_remove_with_account.
Gary Kramlich <grim@reaperworld.com>
parents:
41438
diff
changeset
|
164 | PurpleNotificationManager *manager = NULL; |
|
2036d450fd18
Add purple_notification_manager_remove_with_account.
Gary Kramlich <grim@reaperworld.com>
parents:
41438
diff
changeset
|
165 | PurpleNotification *notification = NULL; |
|
2036d450fd18
Add purple_notification_manager_remove_with_account.
Gary Kramlich <grim@reaperworld.com>
parents:
41438
diff
changeset
|
166 | PurpleAccount *account = NULL; |
|
2036d450fd18
Add purple_notification_manager_remove_with_account.
Gary Kramlich <grim@reaperworld.com>
parents:
41438
diff
changeset
|
167 | GListModel *model = NULL; |
|
2036d450fd18
Add purple_notification_manager_remove_with_account.
Gary Kramlich <grim@reaperworld.com>
parents:
41438
diff
changeset
|
168 | |
|
2036d450fd18
Add purple_notification_manager_remove_with_account.
Gary Kramlich <grim@reaperworld.com>
parents:
41438
diff
changeset
|
169 | manager = g_object_new(PURPLE_TYPE_NOTIFICATION_MANAGER, NULL); |
|
41936
c4a96b5eecba
Make PurpleNotificationManager implement GListModel
Gary Kramlich <grim@reaperworld.com>
parents:
41817
diff
changeset
|
170 | model = G_LIST_MODEL(manager); |
|
41511
2036d450fd18
Add purple_notification_manager_remove_with_account.
Gary Kramlich <grim@reaperworld.com>
parents:
41438
diff
changeset
|
171 | account = purple_account_new("test", "test"); |
|
2036d450fd18
Add purple_notification_manager_remove_with_account.
Gary Kramlich <grim@reaperworld.com>
parents:
41438
diff
changeset
|
172 | |
|
2036d450fd18
Add purple_notification_manager_remove_with_account.
Gary Kramlich <grim@reaperworld.com>
parents:
41438
diff
changeset
|
173 | /* Make sure that nothing happens on an empty list. */ |
|
41817
91f9ce89468b
Fix connection errors getting deleted when an account is disconnected
Gary Kramlich <grim@reaperworld.com>
parents:
41511
diff
changeset
|
174 | purple_notification_manager_remove_with_account(manager, account, TRUE); |
|
41511
2036d450fd18
Add purple_notification_manager_remove_with_account.
Gary Kramlich <grim@reaperworld.com>
parents:
41438
diff
changeset
|
175 | g_assert_cmpuint(0, ==, g_list_model_get_n_items(model)); |
|
2036d450fd18
Add purple_notification_manager_remove_with_account.
Gary Kramlich <grim@reaperworld.com>
parents:
41438
diff
changeset
|
176 | |
|
2036d450fd18
Add purple_notification_manager_remove_with_account.
Gary Kramlich <grim@reaperworld.com>
parents:
41438
diff
changeset
|
177 | /* Add a single notification without the account */ |
|
42927
51bee36eb6cb
First steps of cleaning up the notification API
Gary Kramlich <grim@reaperworld.com>
parents:
42852
diff
changeset
|
178 | notification = purple_notification_new_generic(NULL, NULL); |
|
41511
2036d450fd18
Add purple_notification_manager_remove_with_account.
Gary Kramlich <grim@reaperworld.com>
parents:
41438
diff
changeset
|
179 | purple_notification_manager_add(manager, notification); |
|
41817
91f9ce89468b
Fix connection errors getting deleted when an account is disconnected
Gary Kramlich <grim@reaperworld.com>
parents:
41511
diff
changeset
|
180 | purple_notification_manager_remove_with_account(manager, account, TRUE); |
|
41511
2036d450fd18
Add purple_notification_manager_remove_with_account.
Gary Kramlich <grim@reaperworld.com>
parents:
41438
diff
changeset
|
181 | g_assert_cmpuint(1, ==, g_list_model_get_n_items(model)); |
|
41936
c4a96b5eecba
Make PurpleNotificationManager implement GListModel
Gary Kramlich <grim@reaperworld.com>
parents:
41817
diff
changeset
|
182 | purple_notification_manager_clear(manager); |
|
41511
2036d450fd18
Add purple_notification_manager_remove_with_account.
Gary Kramlich <grim@reaperworld.com>
parents:
41438
diff
changeset
|
183 | g_clear_object(¬ification); |
|
2036d450fd18
Add purple_notification_manager_remove_with_account.
Gary Kramlich <grim@reaperworld.com>
parents:
41438
diff
changeset
|
184 | |
|
2036d450fd18
Add purple_notification_manager_remove_with_account.
Gary Kramlich <grim@reaperworld.com>
parents:
41438
diff
changeset
|
185 | /* Add a single notification with the account */ |
|
42927
51bee36eb6cb
First steps of cleaning up the notification API
Gary Kramlich <grim@reaperworld.com>
parents:
42852
diff
changeset
|
186 | notification = purple_notification_new_generic(NULL, NULL); |
|
51bee36eb6cb
First steps of cleaning up the notification API
Gary Kramlich <grim@reaperworld.com>
parents:
42852
diff
changeset
|
187 | purple_notification_set_account(notification, account); |
|
41511
2036d450fd18
Add purple_notification_manager_remove_with_account.
Gary Kramlich <grim@reaperworld.com>
parents:
41438
diff
changeset
|
188 | purple_notification_manager_add(manager, notification); |
|
41817
91f9ce89468b
Fix connection errors getting deleted when an account is disconnected
Gary Kramlich <grim@reaperworld.com>
parents:
41511
diff
changeset
|
189 | purple_notification_manager_remove_with_account(manager, account, TRUE); |
|
41511
2036d450fd18
Add purple_notification_manager_remove_with_account.
Gary Kramlich <grim@reaperworld.com>
parents:
41438
diff
changeset
|
190 | g_assert_cmpuint(0, ==, g_list_model_get_n_items(model)); |
|
41936
c4a96b5eecba
Make PurpleNotificationManager implement GListModel
Gary Kramlich <grim@reaperworld.com>
parents:
41817
diff
changeset
|
191 | purple_notification_manager_clear(manager); |
|
41511
2036d450fd18
Add purple_notification_manager_remove_with_account.
Gary Kramlich <grim@reaperworld.com>
parents:
41438
diff
changeset
|
192 | g_clear_object(¬ification); |
|
2036d450fd18
Add purple_notification_manager_remove_with_account.
Gary Kramlich <grim@reaperworld.com>
parents:
41438
diff
changeset
|
193 | |
|
42852
c86412606a01
Modernize the notification manager tests
Gary Kramlich <grim@reaperworld.com>
parents:
42638
diff
changeset
|
194 | g_assert_finalize_object(manager); |
|
c86412606a01
Modernize the notification manager tests
Gary Kramlich <grim@reaperworld.com>
parents:
42638
diff
changeset
|
195 | g_assert_finalize_object(account); |
|
41511
2036d450fd18
Add purple_notification_manager_remove_with_account.
Gary Kramlich <grim@reaperworld.com>
parents:
41438
diff
changeset
|
196 | } |
|
2036d450fd18
Add purple_notification_manager_remove_with_account.
Gary Kramlich <grim@reaperworld.com>
parents:
41438
diff
changeset
|
197 | |
|
2036d450fd18
Add purple_notification_manager_remove_with_account.
Gary Kramlich <grim@reaperworld.com>
parents:
41438
diff
changeset
|
198 | static void |
|
2036d450fd18
Add purple_notification_manager_remove_with_account.
Gary Kramlich <grim@reaperworld.com>
parents:
41438
diff
changeset
|
199 | test_purple_notification_manager_remove_with_account_mixed(void) { |
|
2036d450fd18
Add purple_notification_manager_remove_with_account.
Gary Kramlich <grim@reaperworld.com>
parents:
41438
diff
changeset
|
200 | PurpleNotificationManager *manager = NULL; |
|
2036d450fd18
Add purple_notification_manager_remove_with_account.
Gary Kramlich <grim@reaperworld.com>
parents:
41438
diff
changeset
|
201 | PurpleNotification *notification = NULL; |
|
2036d450fd18
Add purple_notification_manager_remove_with_account.
Gary Kramlich <grim@reaperworld.com>
parents:
41438
diff
changeset
|
202 | PurpleAccount *accounts[3]; |
|
2036d450fd18
Add purple_notification_manager_remove_with_account.
Gary Kramlich <grim@reaperworld.com>
parents:
41438
diff
changeset
|
203 | GListModel *model = NULL; |
|
42852
c86412606a01
Modernize the notification manager tests
Gary Kramlich <grim@reaperworld.com>
parents:
42638
diff
changeset
|
204 | int pattern[] = {0, 0, 1, 0, 2, 1, 0, 0, 1, 2, 0, 1, 0, 0, -1}; |
|
41511
2036d450fd18
Add purple_notification_manager_remove_with_account.
Gary Kramlich <grim@reaperworld.com>
parents:
41438
diff
changeset
|
205 | |
|
2036d450fd18
Add purple_notification_manager_remove_with_account.
Gary Kramlich <grim@reaperworld.com>
parents:
41438
diff
changeset
|
206 | manager = g_object_new(PURPLE_TYPE_NOTIFICATION_MANAGER, NULL); |
|
41936
c4a96b5eecba
Make PurpleNotificationManager implement GListModel
Gary Kramlich <grim@reaperworld.com>
parents:
41817
diff
changeset
|
207 | model = G_LIST_MODEL(manager); |
|
41511
2036d450fd18
Add purple_notification_manager_remove_with_account.
Gary Kramlich <grim@reaperworld.com>
parents:
41438
diff
changeset
|
208 | |
|
2036d450fd18
Add purple_notification_manager_remove_with_account.
Gary Kramlich <grim@reaperworld.com>
parents:
41438
diff
changeset
|
209 | accounts[0] = purple_account_new("account1", "account1"); |
|
2036d450fd18
Add purple_notification_manager_remove_with_account.
Gary Kramlich <grim@reaperworld.com>
parents:
41438
diff
changeset
|
210 | accounts[1] = purple_account_new("account2", "account2"); |
|
2036d450fd18
Add purple_notification_manager_remove_with_account.
Gary Kramlich <grim@reaperworld.com>
parents:
41438
diff
changeset
|
211 | accounts[2] = purple_account_new("account3", "account3"); |
|
2036d450fd18
Add purple_notification_manager_remove_with_account.
Gary Kramlich <grim@reaperworld.com>
parents:
41438
diff
changeset
|
212 | |
|
2036d450fd18
Add purple_notification_manager_remove_with_account.
Gary Kramlich <grim@reaperworld.com>
parents:
41438
diff
changeset
|
213 | /* Add our notifications. */ |
|
42852
c86412606a01
Modernize the notification manager tests
Gary Kramlich <grim@reaperworld.com>
parents:
42638
diff
changeset
|
214 | for(int i = 0; pattern[i] >= 0; i++) { |
|
42927
51bee36eb6cb
First steps of cleaning up the notification API
Gary Kramlich <grim@reaperworld.com>
parents:
42852
diff
changeset
|
215 | notification = purple_notification_new_generic(NULL, NULL); |
|
51bee36eb6cb
First steps of cleaning up the notification API
Gary Kramlich <grim@reaperworld.com>
parents:
42852
diff
changeset
|
216 | purple_notification_set_account(notification, accounts[pattern[i]]); |
|
41511
2036d450fd18
Add purple_notification_manager_remove_with_account.
Gary Kramlich <grim@reaperworld.com>
parents:
41438
diff
changeset
|
217 | purple_notification_manager_add(manager, notification); |
|
2036d450fd18
Add purple_notification_manager_remove_with_account.
Gary Kramlich <grim@reaperworld.com>
parents:
41438
diff
changeset
|
218 | g_clear_object(¬ification); |
|
2036d450fd18
Add purple_notification_manager_remove_with_account.
Gary Kramlich <grim@reaperworld.com>
parents:
41438
diff
changeset
|
219 | } |
|
2036d450fd18
Add purple_notification_manager_remove_with_account.
Gary Kramlich <grim@reaperworld.com>
parents:
41438
diff
changeset
|
220 | |
|
2036d450fd18
Add purple_notification_manager_remove_with_account.
Gary Kramlich <grim@reaperworld.com>
parents:
41438
diff
changeset
|
221 | g_assert_cmpuint(14, ==, g_list_model_get_n_items(model)); |
|
41817
91f9ce89468b
Fix connection errors getting deleted when an account is disconnected
Gary Kramlich <grim@reaperworld.com>
parents:
41511
diff
changeset
|
222 | |
|
91f9ce89468b
Fix connection errors getting deleted when an account is disconnected
Gary Kramlich <grim@reaperworld.com>
parents:
41511
diff
changeset
|
223 | /* Remove notifications for accounts[0]. */ |
|
91f9ce89468b
Fix connection errors getting deleted when an account is disconnected
Gary Kramlich <grim@reaperworld.com>
parents:
41511
diff
changeset
|
224 | purple_notification_manager_remove_with_account(manager, accounts[0], TRUE); |
|
41511
2036d450fd18
Add purple_notification_manager_remove_with_account.
Gary Kramlich <grim@reaperworld.com>
parents:
41438
diff
changeset
|
225 | g_assert_cmpuint(6, ==, g_list_model_get_n_items(model)); |
|
2036d450fd18
Add purple_notification_manager_remove_with_account.
Gary Kramlich <grim@reaperworld.com>
parents:
41438
diff
changeset
|
226 | |
|
41817
91f9ce89468b
Fix connection errors getting deleted when an account is disconnected
Gary Kramlich <grim@reaperworld.com>
parents:
41511
diff
changeset
|
227 | /* Remove notifications for accounts[1]. */ |
|
91f9ce89468b
Fix connection errors getting deleted when an account is disconnected
Gary Kramlich <grim@reaperworld.com>
parents:
41511
diff
changeset
|
228 | purple_notification_manager_remove_with_account(manager, accounts[1], TRUE); |
|
91f9ce89468b
Fix connection errors getting deleted when an account is disconnected
Gary Kramlich <grim@reaperworld.com>
parents:
41511
diff
changeset
|
229 | g_assert_cmpuint(2, ==, g_list_model_get_n_items(model)); |
|
91f9ce89468b
Fix connection errors getting deleted when an account is disconnected
Gary Kramlich <grim@reaperworld.com>
parents:
41511
diff
changeset
|
230 | |
|
91f9ce89468b
Fix connection errors getting deleted when an account is disconnected
Gary Kramlich <grim@reaperworld.com>
parents:
41511
diff
changeset
|
231 | /* Remove notifications for accounts[2]. */ |
|
91f9ce89468b
Fix connection errors getting deleted when an account is disconnected
Gary Kramlich <grim@reaperworld.com>
parents:
41511
diff
changeset
|
232 | purple_notification_manager_remove_with_account(manager, accounts[2], TRUE); |
|
91f9ce89468b
Fix connection errors getting deleted when an account is disconnected
Gary Kramlich <grim@reaperworld.com>
parents:
41511
diff
changeset
|
233 | g_assert_cmpuint(0, ==, g_list_model_get_n_items(model)); |
|
91f9ce89468b
Fix connection errors getting deleted when an account is disconnected
Gary Kramlich <grim@reaperworld.com>
parents:
41511
diff
changeset
|
234 | |
|
42852
c86412606a01
Modernize the notification manager tests
Gary Kramlich <grim@reaperworld.com>
parents:
42638
diff
changeset
|
235 | g_assert_finalize_object(manager); |
|
c86412606a01
Modernize the notification manager tests
Gary Kramlich <grim@reaperworld.com>
parents:
42638
diff
changeset
|
236 | g_assert_finalize_object(accounts[0]); |
|
c86412606a01
Modernize the notification manager tests
Gary Kramlich <grim@reaperworld.com>
parents:
42638
diff
changeset
|
237 | g_assert_finalize_object(accounts[1]); |
|
c86412606a01
Modernize the notification manager tests
Gary Kramlich <grim@reaperworld.com>
parents:
42638
diff
changeset
|
238 | g_assert_finalize_object(accounts[2]); |
|
41511
2036d450fd18
Add purple_notification_manager_remove_with_account.
Gary Kramlich <grim@reaperworld.com>
parents:
41438
diff
changeset
|
239 | } |
|
2036d450fd18
Add purple_notification_manager_remove_with_account.
Gary Kramlich <grim@reaperworld.com>
parents:
41438
diff
changeset
|
240 | |
|
2036d450fd18
Add purple_notification_manager_remove_with_account.
Gary Kramlich <grim@reaperworld.com>
parents:
41438
diff
changeset
|
241 | static void |
|
41817
91f9ce89468b
Fix connection errors getting deleted when an account is disconnected
Gary Kramlich <grim@reaperworld.com>
parents:
41511
diff
changeset
|
242 | test_purple_notification_manager_remove_with_account_all(void) { |
|
42927
51bee36eb6cb
First steps of cleaning up the notification API
Gary Kramlich <grim@reaperworld.com>
parents:
42852
diff
changeset
|
243 | PurpleConnectionErrorInfo *info = NULL; |
|
41817
91f9ce89468b
Fix connection errors getting deleted when an account is disconnected
Gary Kramlich <grim@reaperworld.com>
parents:
41511
diff
changeset
|
244 | PurpleNotificationManager *manager = NULL; |
|
91f9ce89468b
Fix connection errors getting deleted when an account is disconnected
Gary Kramlich <grim@reaperworld.com>
parents:
41511
diff
changeset
|
245 | PurpleNotification *notification = NULL; |
|
91f9ce89468b
Fix connection errors getting deleted when an account is disconnected
Gary Kramlich <grim@reaperworld.com>
parents:
41511
diff
changeset
|
246 | PurpleAccount *account = NULL; |
|
91f9ce89468b
Fix connection errors getting deleted when an account is disconnected
Gary Kramlich <grim@reaperworld.com>
parents:
41511
diff
changeset
|
247 | GListModel *model = NULL; |
|
91f9ce89468b
Fix connection errors getting deleted when an account is disconnected
Gary Kramlich <grim@reaperworld.com>
parents:
41511
diff
changeset
|
248 | |
|
91f9ce89468b
Fix connection errors getting deleted when an account is disconnected
Gary Kramlich <grim@reaperworld.com>
parents:
41511
diff
changeset
|
249 | /* This test will add 3 notifications to the notification manager for the |
|
91f9ce89468b
Fix connection errors getting deleted when an account is disconnected
Gary Kramlich <grim@reaperworld.com>
parents:
41511
diff
changeset
|
250 | * same account. In order, they will be of types generic, connection error, |
|
91f9ce89468b
Fix connection errors getting deleted when an account is disconnected
Gary Kramlich <grim@reaperworld.com>
parents:
41511
diff
changeset
|
251 | * and generic. We will also add a generic notification with no account, to |
|
91f9ce89468b
Fix connection errors getting deleted when an account is disconnected
Gary Kramlich <grim@reaperworld.com>
parents:
41511
diff
changeset
|
252 | * make sure notifications don't accidentally get removed. |
|
91f9ce89468b
Fix connection errors getting deleted when an account is disconnected
Gary Kramlich <grim@reaperworld.com>
parents:
41511
diff
changeset
|
253 | * |
|
41936
c4a96b5eecba
Make PurpleNotificationManager implement GListModel
Gary Kramlich <grim@reaperworld.com>
parents:
41817
diff
changeset
|
254 | * Since the notification manager prepends items and leaves sorting up to |
|
c4a96b5eecba
Make PurpleNotificationManager implement GListModel
Gary Kramlich <grim@reaperworld.com>
parents:
41817
diff
changeset
|
255 | * the user interface, the order of the notifications will be the opposite |
|
c4a96b5eecba
Make PurpleNotificationManager implement GListModel
Gary Kramlich <grim@reaperworld.com>
parents:
41817
diff
changeset
|
256 | * of the order they were added. |
|
c4a96b5eecba
Make PurpleNotificationManager implement GListModel
Gary Kramlich <grim@reaperworld.com>
parents:
41817
diff
changeset
|
257 | * |
|
41817
91f9ce89468b
Fix connection errors getting deleted when an account is disconnected
Gary Kramlich <grim@reaperworld.com>
parents:
41511
diff
changeset
|
258 | * This ordering is specifically done because we batch remove items from |
|
91f9ce89468b
Fix connection errors getting deleted when an account is disconnected
Gary Kramlich <grim@reaperworld.com>
parents:
41511
diff
changeset
|
259 | * the list. So by calling purple_notification_manager_remove_with_account |
|
41936
c4a96b5eecba
Make PurpleNotificationManager implement GListModel
Gary Kramlich <grim@reaperworld.com>
parents:
41817
diff
changeset
|
260 | * with `all` set to FALSE, we should remove the second and fourth items, |
|
c4a96b5eecba
Make PurpleNotificationManager implement GListModel
Gary Kramlich <grim@reaperworld.com>
parents:
41817
diff
changeset
|
261 | * but leave the first and third items. |
|
41817
91f9ce89468b
Fix connection errors getting deleted when an account is disconnected
Gary Kramlich <grim@reaperworld.com>
parents:
41511
diff
changeset
|
262 | * |
|
91f9ce89468b
Fix connection errors getting deleted when an account is disconnected
Gary Kramlich <grim@reaperworld.com>
parents:
41511
diff
changeset
|
263 | * We then call purple_notification_manager_remove_with_account with `all` |
|
91f9ce89468b
Fix connection errors getting deleted when an account is disconnected
Gary Kramlich <grim@reaperworld.com>
parents:
41511
diff
changeset
|
264 | * set to TRUE, which will remove the connection error notification which |
|
41936
c4a96b5eecba
Make PurpleNotificationManager implement GListModel
Gary Kramlich <grim@reaperworld.com>
parents:
41817
diff
changeset
|
265 | * is now the second item. |
|
41817
91f9ce89468b
Fix connection errors getting deleted when an account is disconnected
Gary Kramlich <grim@reaperworld.com>
parents:
41511
diff
changeset
|
266 | * |
|
91f9ce89468b
Fix connection errors getting deleted when an account is disconnected
Gary Kramlich <grim@reaperworld.com>
parents:
41511
diff
changeset
|
267 | * Finally, we empty the manager and verify that its count is at 0. |
|
91f9ce89468b
Fix connection errors getting deleted when an account is disconnected
Gary Kramlich <grim@reaperworld.com>
parents:
41511
diff
changeset
|
268 | */ |
|
91f9ce89468b
Fix connection errors getting deleted when an account is disconnected
Gary Kramlich <grim@reaperworld.com>
parents:
41511
diff
changeset
|
269 | |
|
91f9ce89468b
Fix connection errors getting deleted when an account is disconnected
Gary Kramlich <grim@reaperworld.com>
parents:
41511
diff
changeset
|
270 | manager = g_object_new(PURPLE_TYPE_NOTIFICATION_MANAGER, NULL); |
|
41936
c4a96b5eecba
Make PurpleNotificationManager implement GListModel
Gary Kramlich <grim@reaperworld.com>
parents:
41817
diff
changeset
|
271 | model = G_LIST_MODEL(manager); |
|
41817
91f9ce89468b
Fix connection errors getting deleted when an account is disconnected
Gary Kramlich <grim@reaperworld.com>
parents:
41511
diff
changeset
|
272 | account = purple_account_new("test", "test"); |
|
91f9ce89468b
Fix connection errors getting deleted when an account is disconnected
Gary Kramlich <grim@reaperworld.com>
parents:
41511
diff
changeset
|
273 | |
|
91f9ce89468b
Fix connection errors getting deleted when an account is disconnected
Gary Kramlich <grim@reaperworld.com>
parents:
41511
diff
changeset
|
274 | /* Make sure that nothing happens on an empty list. */ |
|
91f9ce89468b
Fix connection errors getting deleted when an account is disconnected
Gary Kramlich <grim@reaperworld.com>
parents:
41511
diff
changeset
|
275 | purple_notification_manager_remove_with_account(manager, account, TRUE); |
|
91f9ce89468b
Fix connection errors getting deleted when an account is disconnected
Gary Kramlich <grim@reaperworld.com>
parents:
41511
diff
changeset
|
276 | g_assert_cmpuint(0, ==, g_list_model_get_n_items(model)); |
|
91f9ce89468b
Fix connection errors getting deleted when an account is disconnected
Gary Kramlich <grim@reaperworld.com>
parents:
41511
diff
changeset
|
277 | |
|
91f9ce89468b
Fix connection errors getting deleted when an account is disconnected
Gary Kramlich <grim@reaperworld.com>
parents:
41511
diff
changeset
|
278 | /* Add a generic notification with an account. */ |
|
42927
51bee36eb6cb
First steps of cleaning up the notification API
Gary Kramlich <grim@reaperworld.com>
parents:
42852
diff
changeset
|
279 | notification = purple_notification_new_generic(NULL, NULL); |
|
51bee36eb6cb
First steps of cleaning up the notification API
Gary Kramlich <grim@reaperworld.com>
parents:
42852
diff
changeset
|
280 | purple_notification_set_account(notification, account); |
|
41817
91f9ce89468b
Fix connection errors getting deleted when an account is disconnected
Gary Kramlich <grim@reaperworld.com>
parents:
41511
diff
changeset
|
281 | purple_notification_manager_add(manager, notification); |
|
91f9ce89468b
Fix connection errors getting deleted when an account is disconnected
Gary Kramlich <grim@reaperworld.com>
parents:
41511
diff
changeset
|
282 | g_clear_object(¬ification); |
|
91f9ce89468b
Fix connection errors getting deleted when an account is disconnected
Gary Kramlich <grim@reaperworld.com>
parents:
41511
diff
changeset
|
283 | |
|
91f9ce89468b
Fix connection errors getting deleted when an account is disconnected
Gary Kramlich <grim@reaperworld.com>
parents:
41511
diff
changeset
|
284 | /* Add a connection error notification with the account. */ |
|
42927
51bee36eb6cb
First steps of cleaning up the notification API
Gary Kramlich <grim@reaperworld.com>
parents:
42852
diff
changeset
|
285 | info = purple_connection_error_info_new(PURPLE_CONNECTION_ERROR_NETWORK_ERROR, |
|
51bee36eb6cb
First steps of cleaning up the notification API
Gary Kramlich <grim@reaperworld.com>
parents:
42852
diff
changeset
|
286 | "the network is borked."); |
|
42985
66ad6fc11879
Create Purple.NotificationConnectionError
Gary Kramlich <grim@reaperworld.com>
parents:
42962
diff
changeset
|
287 | notification = purple_notification_connection_error_new(NULL, account, |
|
66ad6fc11879
Create Purple.NotificationConnectionError
Gary Kramlich <grim@reaperworld.com>
parents:
42962
diff
changeset
|
288 | info); |
|
42927
51bee36eb6cb
First steps of cleaning up the notification API
Gary Kramlich <grim@reaperworld.com>
parents:
42852
diff
changeset
|
289 | purple_connection_error_info_free(info); |
|
41817
91f9ce89468b
Fix connection errors getting deleted when an account is disconnected
Gary Kramlich <grim@reaperworld.com>
parents:
41511
diff
changeset
|
290 | purple_notification_manager_add(manager, notification); |
|
91f9ce89468b
Fix connection errors getting deleted when an account is disconnected
Gary Kramlich <grim@reaperworld.com>
parents:
41511
diff
changeset
|
291 | g_clear_object(¬ification); |
|
91f9ce89468b
Fix connection errors getting deleted when an account is disconnected
Gary Kramlich <grim@reaperworld.com>
parents:
41511
diff
changeset
|
292 | |
|
91f9ce89468b
Fix connection errors getting deleted when an account is disconnected
Gary Kramlich <grim@reaperworld.com>
parents:
41511
diff
changeset
|
293 | /* Add a generic notification with the account. */ |
|
42927
51bee36eb6cb
First steps of cleaning up the notification API
Gary Kramlich <grim@reaperworld.com>
parents:
42852
diff
changeset
|
294 | notification = purple_notification_new_generic(NULL, NULL); |
|
51bee36eb6cb
First steps of cleaning up the notification API
Gary Kramlich <grim@reaperworld.com>
parents:
42852
diff
changeset
|
295 | purple_notification_set_account(notification, account); |
|
41817
91f9ce89468b
Fix connection errors getting deleted when an account is disconnected
Gary Kramlich <grim@reaperworld.com>
parents:
41511
diff
changeset
|
296 | purple_notification_manager_add(manager, notification); |
|
91f9ce89468b
Fix connection errors getting deleted when an account is disconnected
Gary Kramlich <grim@reaperworld.com>
parents:
41511
diff
changeset
|
297 | g_clear_object(¬ification); |
|
91f9ce89468b
Fix connection errors getting deleted when an account is disconnected
Gary Kramlich <grim@reaperworld.com>
parents:
41511
diff
changeset
|
298 | |
|
91f9ce89468b
Fix connection errors getting deleted when an account is disconnected
Gary Kramlich <grim@reaperworld.com>
parents:
41511
diff
changeset
|
299 | /* Add a generic notification without an account. */ |
|
42927
51bee36eb6cb
First steps of cleaning up the notification API
Gary Kramlich <grim@reaperworld.com>
parents:
42852
diff
changeset
|
300 | notification = purple_notification_new_generic(NULL, NULL); |
|
41817
91f9ce89468b
Fix connection errors getting deleted when an account is disconnected
Gary Kramlich <grim@reaperworld.com>
parents:
41511
diff
changeset
|
301 | purple_notification_manager_add(manager, notification); |
|
91f9ce89468b
Fix connection errors getting deleted when an account is disconnected
Gary Kramlich <grim@reaperworld.com>
parents:
41511
diff
changeset
|
302 | g_clear_object(¬ification); |
|
91f9ce89468b
Fix connection errors getting deleted when an account is disconnected
Gary Kramlich <grim@reaperworld.com>
parents:
41511
diff
changeset
|
303 | |
|
91f9ce89468b
Fix connection errors getting deleted when an account is disconnected
Gary Kramlich <grim@reaperworld.com>
parents:
41511
diff
changeset
|
304 | /* Verify that we have all of the notifications in the manager. */ |
|
42985
66ad6fc11879
Create Purple.NotificationConnectionError
Gary Kramlich <grim@reaperworld.com>
parents:
42962
diff
changeset
|
305 | g_assert_cmpuint(g_list_model_get_n_items(model), ==, 4); |
|
41817
91f9ce89468b
Fix connection errors getting deleted when an account is disconnected
Gary Kramlich <grim@reaperworld.com>
parents:
41511
diff
changeset
|
306 | |
|
91f9ce89468b
Fix connection errors getting deleted when an account is disconnected
Gary Kramlich <grim@reaperworld.com>
parents:
41511
diff
changeset
|
307 | /* Remove the transient notifications for the account. */ |
|
91f9ce89468b
Fix connection errors getting deleted when an account is disconnected
Gary Kramlich <grim@reaperworld.com>
parents:
41511
diff
changeset
|
308 | purple_notification_manager_remove_with_account(manager, account, FALSE); |
|
42985
66ad6fc11879
Create Purple.NotificationConnectionError
Gary Kramlich <grim@reaperworld.com>
parents:
42962
diff
changeset
|
309 | g_assert_cmpuint(g_list_model_get_n_items(model), ==, 2); |
|
41817
91f9ce89468b
Fix connection errors getting deleted when an account is disconnected
Gary Kramlich <grim@reaperworld.com>
parents:
41511
diff
changeset
|
310 | |
|
41936
c4a96b5eecba
Make PurpleNotificationManager implement GListModel
Gary Kramlich <grim@reaperworld.com>
parents:
41817
diff
changeset
|
311 | /* Make sure that the second item is the connection error. */ |
|
c4a96b5eecba
Make PurpleNotificationManager implement GListModel
Gary Kramlich <grim@reaperworld.com>
parents:
41817
diff
changeset
|
312 | notification = g_list_model_get_item(G_LIST_MODEL(model), 1); |
|
42985
66ad6fc11879
Create Purple.NotificationConnectionError
Gary Kramlich <grim@reaperworld.com>
parents:
42962
diff
changeset
|
313 | g_assert_true(PURPLE_IS_NOTIFICATION_CONNECTION_ERROR(notification)); |
|
41817
91f9ce89468b
Fix connection errors getting deleted when an account is disconnected
Gary Kramlich <grim@reaperworld.com>
parents:
41511
diff
changeset
|
314 | g_clear_object(¬ification); |
|
91f9ce89468b
Fix connection errors getting deleted when an account is disconnected
Gary Kramlich <grim@reaperworld.com>
parents:
41511
diff
changeset
|
315 | |
|
91f9ce89468b
Fix connection errors getting deleted when an account is disconnected
Gary Kramlich <grim@reaperworld.com>
parents:
41511
diff
changeset
|
316 | /* Remove the non-transient notifications for the account. */ |
|
91f9ce89468b
Fix connection errors getting deleted when an account is disconnected
Gary Kramlich <grim@reaperworld.com>
parents:
41511
diff
changeset
|
317 | purple_notification_manager_remove_with_account(manager, account, TRUE); |
|
42985
66ad6fc11879
Create Purple.NotificationConnectionError
Gary Kramlich <grim@reaperworld.com>
parents:
42962
diff
changeset
|
318 | g_assert_cmpuint(g_list_model_get_n_items(model), ==, 1); |
|
41817
91f9ce89468b
Fix connection errors getting deleted when an account is disconnected
Gary Kramlich <grim@reaperworld.com>
parents:
41511
diff
changeset
|
319 | |
|
91f9ce89468b
Fix connection errors getting deleted when an account is disconnected
Gary Kramlich <grim@reaperworld.com>
parents:
41511
diff
changeset
|
320 | /* Remove the generic notification that's not tied to an account. */ |
|
41936
c4a96b5eecba
Make PurpleNotificationManager implement GListModel
Gary Kramlich <grim@reaperworld.com>
parents:
41817
diff
changeset
|
321 | purple_notification_manager_clear(manager); |
|
42985
66ad6fc11879
Create Purple.NotificationConnectionError
Gary Kramlich <grim@reaperworld.com>
parents:
42962
diff
changeset
|
322 | g_assert_cmpuint(g_list_model_get_n_items(model), ==, 0); |
|
41817
91f9ce89468b
Fix connection errors getting deleted when an account is disconnected
Gary Kramlich <grim@reaperworld.com>
parents:
41511
diff
changeset
|
323 | |
|
42852
c86412606a01
Modernize the notification manager tests
Gary Kramlich <grim@reaperworld.com>
parents:
42638
diff
changeset
|
324 | g_assert_finalize_object(manager); |
|
c86412606a01
Modernize the notification manager tests
Gary Kramlich <grim@reaperworld.com>
parents:
42638
diff
changeset
|
325 | g_assert_finalize_object(account); |
|
41817
91f9ce89468b
Fix connection errors getting deleted when an account is disconnected
Gary Kramlich <grim@reaperworld.com>
parents:
41511
diff
changeset
|
326 | } |
|
91f9ce89468b
Fix connection errors getting deleted when an account is disconnected
Gary Kramlich <grim@reaperworld.com>
parents:
41511
diff
changeset
|
327 | |
|
91f9ce89468b
Fix connection errors getting deleted when an account is disconnected
Gary Kramlich <grim@reaperworld.com>
parents:
41511
diff
changeset
|
328 | static void |
|
41433
d563b345a096
Phase 1 of the Notifications API
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
329 | test_purple_notification_manager_read_propagation(void) { |
|
d563b345a096
Phase 1 of the Notifications API
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
330 | PurpleNotificationManager *manager = NULL; |
|
d563b345a096
Phase 1 of the Notifications API
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
331 | PurpleNotification *notification = NULL; |
|
42852
c86412606a01
Modernize the notification manager tests
Gary Kramlich <grim@reaperworld.com>
parents:
42638
diff
changeset
|
332 | guint read_called = 0; |
|
c86412606a01
Modernize the notification manager tests
Gary Kramlich <grim@reaperworld.com>
parents:
42638
diff
changeset
|
333 | guint unread_called = 0; |
|
c86412606a01
Modernize the notification manager tests
Gary Kramlich <grim@reaperworld.com>
parents:
42638
diff
changeset
|
334 | guint unread_count_called = 0; |
|
41433
d563b345a096
Phase 1 of the Notifications API
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
335 | |
|
d563b345a096
Phase 1 of the Notifications API
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
336 | /* Create the manager. */ |
|
d563b345a096
Phase 1 of the Notifications API
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
337 | manager = g_object_new(PURPLE_TYPE_NOTIFICATION_MANAGER, NULL); |
|
d563b345a096
Phase 1 of the Notifications API
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
338 | |
|
d563b345a096
Phase 1 of the Notifications API
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
339 | g_signal_connect(manager, "read", |
|
d563b345a096
Phase 1 of the Notifications API
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
340 | G_CALLBACK(test_purple_notification_manager_increment_cb), |
|
d563b345a096
Phase 1 of the Notifications API
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
341 | &read_called); |
|
d563b345a096
Phase 1 of the Notifications API
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
342 | g_signal_connect(manager, "unread", |
|
d563b345a096
Phase 1 of the Notifications API
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
343 | G_CALLBACK(test_purple_notification_manager_increment_cb), |
|
d563b345a096
Phase 1 of the Notifications API
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
344 | &unread_called); |
|
d563b345a096
Phase 1 of the Notifications API
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
345 | g_signal_connect(manager, "notify::unread-count", |
|
d563b345a096
Phase 1 of the Notifications API
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
346 | G_CALLBACK(test_purple_notification_manager_unread_count_cb), |
|
d563b345a096
Phase 1 of the Notifications API
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
347 | &unread_count_called); |
|
d563b345a096
Phase 1 of the Notifications API
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
348 | |
|
42638
81ef32d85e5a
Fix transfer annotation of purple_notification_manager_add
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
42565
diff
changeset
|
349 | /* Create the notification. */ |
|
42927
51bee36eb6cb
First steps of cleaning up the notification API
Gary Kramlich <grim@reaperworld.com>
parents:
42852
diff
changeset
|
350 | notification = purple_notification_new_generic(NULL, NULL); |
|
41433
d563b345a096
Phase 1 of the Notifications API
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
351 | |
|
d563b345a096
Phase 1 of the Notifications API
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
352 | purple_notification_manager_add(manager, notification); |
|
d563b345a096
Phase 1 of the Notifications API
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
353 | |
|
d563b345a096
Phase 1 of the Notifications API
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
354 | /* Verify that the read and unread signals were not yet emitted. */ |
|
42852
c86412606a01
Modernize the notification manager tests
Gary Kramlich <grim@reaperworld.com>
parents:
42638
diff
changeset
|
355 | g_assert_cmpuint(read_called, ==, 0); |
|
c86412606a01
Modernize the notification manager tests
Gary Kramlich <grim@reaperworld.com>
parents:
42638
diff
changeset
|
356 | g_assert_cmpuint(unread_called, ==, 0); |
|
41433
d563b345a096
Phase 1 of the Notifications API
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
357 | |
|
d563b345a096
Phase 1 of the Notifications API
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
358 | /* Verify that the unread_count property changed. */ |
|
42852
c86412606a01
Modernize the notification manager tests
Gary Kramlich <grim@reaperworld.com>
parents:
42638
diff
changeset
|
359 | g_assert_cmpuint(unread_count_called, ==, 1); |
|
41433
d563b345a096
Phase 1 of the Notifications API
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
360 | |
|
d563b345a096
Phase 1 of the Notifications API
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
361 | /* Now mark the notification as read. */ |
|
d563b345a096
Phase 1 of the Notifications API
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
362 | purple_notification_set_read(notification, TRUE); |
|
d563b345a096
Phase 1 of the Notifications API
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
363 | |
|
42852
c86412606a01
Modernize the notification manager tests
Gary Kramlich <grim@reaperworld.com>
parents:
42638
diff
changeset
|
364 | g_assert_cmpuint(read_called, ==, 1); |
|
c86412606a01
Modernize the notification manager tests
Gary Kramlich <grim@reaperworld.com>
parents:
42638
diff
changeset
|
365 | g_assert_cmpuint(unread_called, ==, 0); |
|
41433
d563b345a096
Phase 1 of the Notifications API
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
366 | |
|
42852
c86412606a01
Modernize the notification manager tests
Gary Kramlich <grim@reaperworld.com>
parents:
42638
diff
changeset
|
367 | g_assert_cmpuint(unread_count_called, ==, 2); |
|
41433
d563b345a096
Phase 1 of the Notifications API
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
368 | |
|
d563b345a096
Phase 1 of the Notifications API
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
369 | /* Now mark the notification as unread. */ |
|
d563b345a096
Phase 1 of the Notifications API
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
370 | purple_notification_set_read(notification, FALSE); |
|
d563b345a096
Phase 1 of the Notifications API
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
371 | |
|
42852
c86412606a01
Modernize the notification manager tests
Gary Kramlich <grim@reaperworld.com>
parents:
42638
diff
changeset
|
372 | g_assert_cmpuint(read_called, ==, 1); |
|
c86412606a01
Modernize the notification manager tests
Gary Kramlich <grim@reaperworld.com>
parents:
42638
diff
changeset
|
373 | g_assert_cmpuint(unread_called, ==, 1); |
|
41433
d563b345a096
Phase 1 of the Notifications API
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
374 | |
|
42852
c86412606a01
Modernize the notification manager tests
Gary Kramlich <grim@reaperworld.com>
parents:
42638
diff
changeset
|
375 | g_assert_cmpuint(unread_count_called, ==, 3); |
|
41433
d563b345a096
Phase 1 of the Notifications API
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
376 | |
|
d563b345a096
Phase 1 of the Notifications API
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
377 | /* Cleanup. */ |
|
42852
c86412606a01
Modernize the notification manager tests
Gary Kramlich <grim@reaperworld.com>
parents:
42638
diff
changeset
|
378 | g_assert_finalize_object(manager); |
|
42638
81ef32d85e5a
Fix transfer annotation of purple_notification_manager_add
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
42565
diff
changeset
|
379 | g_assert_finalize_object(notification); |
|
41433
d563b345a096
Phase 1 of the Notifications API
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
380 | } |
|
d563b345a096
Phase 1 of the Notifications API
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
381 | |
|
42962
a2c1926ce7b2
Update Purple.NotificationManager to remove notifications when they're deleted
Gary Kramlich <grim@reaperworld.com>
parents:
42927
diff
changeset
|
382 | static void |
|
a2c1926ce7b2
Update Purple.NotificationManager to remove notifications when they're deleted
Gary Kramlich <grim@reaperworld.com>
parents:
42927
diff
changeset
|
383 | test_purple_notification_manager_remove_on_delete(void) { |
|
a2c1926ce7b2
Update Purple.NotificationManager to remove notifications when they're deleted
Gary Kramlich <grim@reaperworld.com>
parents:
42927
diff
changeset
|
384 | PurpleNotificationManager *manager = NULL; |
|
a2c1926ce7b2
Update Purple.NotificationManager to remove notifications when they're deleted
Gary Kramlich <grim@reaperworld.com>
parents:
42927
diff
changeset
|
385 | PurpleNotification *notification = NULL; |
|
a2c1926ce7b2
Update Purple.NotificationManager to remove notifications when they're deleted
Gary Kramlich <grim@reaperworld.com>
parents:
42927
diff
changeset
|
386 | guint counter = 0; |
|
a2c1926ce7b2
Update Purple.NotificationManager to remove notifications when they're deleted
Gary Kramlich <grim@reaperworld.com>
parents:
42927
diff
changeset
|
387 | |
|
a2c1926ce7b2
Update Purple.NotificationManager to remove notifications when they're deleted
Gary Kramlich <grim@reaperworld.com>
parents:
42927
diff
changeset
|
388 | manager = g_object_new(PURPLE_TYPE_NOTIFICATION_MANAGER, NULL); |
|
a2c1926ce7b2
Update Purple.NotificationManager to remove notifications when they're deleted
Gary Kramlich <grim@reaperworld.com>
parents:
42927
diff
changeset
|
389 | g_signal_connect(manager, "items-changed", |
|
a2c1926ce7b2
Update Purple.NotificationManager to remove notifications when they're deleted
Gary Kramlich <grim@reaperworld.com>
parents:
42927
diff
changeset
|
390 | G_CALLBACK(test_purple_notification_manager_items_changed_cb), |
|
a2c1926ce7b2
Update Purple.NotificationManager to remove notifications when they're deleted
Gary Kramlich <grim@reaperworld.com>
parents:
42927
diff
changeset
|
391 | &counter); |
|
a2c1926ce7b2
Update Purple.NotificationManager to remove notifications when they're deleted
Gary Kramlich <grim@reaperworld.com>
parents:
42927
diff
changeset
|
392 | |
|
a2c1926ce7b2
Update Purple.NotificationManager to remove notifications when they're deleted
Gary Kramlich <grim@reaperworld.com>
parents:
42927
diff
changeset
|
393 | notification = purple_notification_new_generic(NULL, "title"); |
|
a2c1926ce7b2
Update Purple.NotificationManager to remove notifications when they're deleted
Gary Kramlich <grim@reaperworld.com>
parents:
42927
diff
changeset
|
394 | purple_notification_manager_add(manager, notification); |
|
a2c1926ce7b2
Update Purple.NotificationManager to remove notifications when they're deleted
Gary Kramlich <grim@reaperworld.com>
parents:
42927
diff
changeset
|
395 | g_assert_cmpuint(counter, ==, 1); |
|
a2c1926ce7b2
Update Purple.NotificationManager to remove notifications when they're deleted
Gary Kramlich <grim@reaperworld.com>
parents:
42927
diff
changeset
|
396 | |
|
a2c1926ce7b2
Update Purple.NotificationManager to remove notifications when they're deleted
Gary Kramlich <grim@reaperworld.com>
parents:
42927
diff
changeset
|
397 | counter = 0; |
|
a2c1926ce7b2
Update Purple.NotificationManager to remove notifications when they're deleted
Gary Kramlich <grim@reaperworld.com>
parents:
42927
diff
changeset
|
398 | purple_notification_delete(notification); |
|
a2c1926ce7b2
Update Purple.NotificationManager to remove notifications when they're deleted
Gary Kramlich <grim@reaperworld.com>
parents:
42927
diff
changeset
|
399 | g_assert_cmpuint(counter, ==, 1); |
|
a2c1926ce7b2
Update Purple.NotificationManager to remove notifications when they're deleted
Gary Kramlich <grim@reaperworld.com>
parents:
42927
diff
changeset
|
400 | |
|
a2c1926ce7b2
Update Purple.NotificationManager to remove notifications when they're deleted
Gary Kramlich <grim@reaperworld.com>
parents:
42927
diff
changeset
|
401 | g_assert_finalize_object(notification); |
|
a2c1926ce7b2
Update Purple.NotificationManager to remove notifications when they're deleted
Gary Kramlich <grim@reaperworld.com>
parents:
42927
diff
changeset
|
402 | g_assert_finalize_object(manager); |
|
a2c1926ce7b2
Update Purple.NotificationManager to remove notifications when they're deleted
Gary Kramlich <grim@reaperworld.com>
parents:
42927
diff
changeset
|
403 | } |
|
a2c1926ce7b2
Update Purple.NotificationManager to remove notifications when they're deleted
Gary Kramlich <grim@reaperworld.com>
parents:
42927
diff
changeset
|
404 | |
|
41433
d563b345a096
Phase 1 of the Notifications API
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
405 | /****************************************************************************** |
|
d563b345a096
Phase 1 of the Notifications API
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
406 | * Main |
|
d563b345a096
Phase 1 of the Notifications API
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
407 | *****************************************************************************/ |
|
42852
c86412606a01
Modernize the notification manager tests
Gary Kramlich <grim@reaperworld.com>
parents:
42638
diff
changeset
|
408 | int |
|
c86412606a01
Modernize the notification manager tests
Gary Kramlich <grim@reaperworld.com>
parents:
42638
diff
changeset
|
409 | main(int argc, char *argv[]) { |
|
41433
d563b345a096
Phase 1 of the Notifications API
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
410 | g_test_init(&argc, &argv, NULL); |
|
42852
c86412606a01
Modernize the notification manager tests
Gary Kramlich <grim@reaperworld.com>
parents:
42638
diff
changeset
|
411 | g_test_set_nonfatal_assertions(); |
|
41433
d563b345a096
Phase 1 of the Notifications API
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
412 | |
|
d563b345a096
Phase 1 of the Notifications API
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
413 | g_test_add_func("/notification-manager/add-remove", |
|
d563b345a096
Phase 1 of the Notifications API
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
414 | test_purple_notification_manager_add_remove); |
|
d563b345a096
Phase 1 of the Notifications API
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
415 | g_test_add_func("/notification-manager/double-add", |
|
d563b345a096
Phase 1 of the Notifications API
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
416 | test_purple_notification_manager_double_add); |
|
d563b345a096
Phase 1 of the Notifications API
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
417 | g_test_add_func("/notification-manager/double-remove", |
|
d563b345a096
Phase 1 of the Notifications API
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
418 | test_purple_notification_manager_double_remove); |
|
d563b345a096
Phase 1 of the Notifications API
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
419 | |
|
41511
2036d450fd18
Add purple_notification_manager_remove_with_account.
Gary Kramlich <grim@reaperworld.com>
parents:
41438
diff
changeset
|
420 | g_test_add_func("/notification-manager/remove-with-account/simple", |
|
2036d450fd18
Add purple_notification_manager_remove_with_account.
Gary Kramlich <grim@reaperworld.com>
parents:
41438
diff
changeset
|
421 | test_purple_notification_manager_remove_with_account_simple); |
|
2036d450fd18
Add purple_notification_manager_remove_with_account.
Gary Kramlich <grim@reaperworld.com>
parents:
41438
diff
changeset
|
422 | g_test_add_func("/notification-manager/remove-with-account/mixed", |
|
2036d450fd18
Add purple_notification_manager_remove_with_account.
Gary Kramlich <grim@reaperworld.com>
parents:
41438
diff
changeset
|
423 | test_purple_notification_manager_remove_with_account_mixed); |
|
41817
91f9ce89468b
Fix connection errors getting deleted when an account is disconnected
Gary Kramlich <grim@reaperworld.com>
parents:
41511
diff
changeset
|
424 | g_test_add_func("/notification-manager/remove-with-account/all", |
|
91f9ce89468b
Fix connection errors getting deleted when an account is disconnected
Gary Kramlich <grim@reaperworld.com>
parents:
41511
diff
changeset
|
425 | test_purple_notification_manager_remove_with_account_all); |
|
41511
2036d450fd18
Add purple_notification_manager_remove_with_account.
Gary Kramlich <grim@reaperworld.com>
parents:
41438
diff
changeset
|
426 | |
|
41433
d563b345a096
Phase 1 of the Notifications API
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
427 | g_test_add_func("/notification-manager/read-propagation", |
|
d563b345a096
Phase 1 of the Notifications API
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
428 | test_purple_notification_manager_read_propagation); |
|
42962
a2c1926ce7b2
Update Purple.NotificationManager to remove notifications when they're deleted
Gary Kramlich <grim@reaperworld.com>
parents:
42927
diff
changeset
|
429 | g_test_add_func("/notification-manager/remove-on-delete", |
|
a2c1926ce7b2
Update Purple.NotificationManager to remove notifications when they're deleted
Gary Kramlich <grim@reaperworld.com>
parents:
42927
diff
changeset
|
430 | test_purple_notification_manager_remove_on_delete); |
|
41433
d563b345a096
Phase 1 of the Notifications API
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
431 | |
|
42852
c86412606a01
Modernize the notification manager tests
Gary Kramlich <grim@reaperworld.com>
parents:
42638
diff
changeset
|
432 | return g_test_run(); |
|
41433
d563b345a096
Phase 1 of the Notifications API
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
433 | } |