libpurple/tests/test_badge_manager.c

Sun, 10 Aug 2025 23:44:08 +0800

author
Gong Zhile <gongzl@stu.hebust.edu.cn>
date
Sun, 10 Aug 2025 23:44:08 +0800
branch
purple_conversation_find_message_by_id
changeset 43309
099e1dfb856b
parent 43076
6b0210915ee3
permissions
-rw-r--r--

Add Purple.Conversation.find_message_by_id

The method was added so that a protocol or plugin could easily lookup
for the reference for a message. This will be especially useful when a
protocol received a quoted message but only with an id.

43076
6b0210915ee3 Create PurpleBadgeManager
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
1 /*
6b0210915ee3 Create PurpleBadgeManager
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
2 * Purple - Internet Messaging Library
6b0210915ee3 Create PurpleBadgeManager
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
3 * Copyright (C) Pidgin Developers <devel@pidgin.im>
6b0210915ee3 Create PurpleBadgeManager
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
4 *
6b0210915ee3 Create PurpleBadgeManager
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
5 * This library is free software; you can redistribute it and/or
6b0210915ee3 Create PurpleBadgeManager
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
6 * modify it under the terms of the GNU Lesser General Public
6b0210915ee3 Create PurpleBadgeManager
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
7 * License as published by the Free Software Foundation; either
6b0210915ee3 Create PurpleBadgeManager
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
8 * version 2 of the License, or (at your option) any later version.
6b0210915ee3 Create PurpleBadgeManager
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
9 *
6b0210915ee3 Create PurpleBadgeManager
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
10 * This library is distributed in the hope that it will be useful,
6b0210915ee3 Create PurpleBadgeManager
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
11 * but WITHOUT ANY WARRANTY; without even the implied warranty of
6b0210915ee3 Create PurpleBadgeManager
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
12 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
6b0210915ee3 Create PurpleBadgeManager
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
13 * Lesser General Public License for more details.
6b0210915ee3 Create PurpleBadgeManager
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
14 *
6b0210915ee3 Create PurpleBadgeManager
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
15 * You should have received a copy of the GNU Lesser General Public
6b0210915ee3 Create PurpleBadgeManager
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
16 * License along with this library; if not, see <https://www.gnu.org/licenses/>.
6b0210915ee3 Create PurpleBadgeManager
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
17 */
6b0210915ee3 Create PurpleBadgeManager
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
18
6b0210915ee3 Create PurpleBadgeManager
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
19 #include <glib.h>
6b0210915ee3 Create PurpleBadgeManager
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
20
6b0210915ee3 Create PurpleBadgeManager
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
21 #include <purple.h>
6b0210915ee3 Create PurpleBadgeManager
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
22
6b0210915ee3 Create PurpleBadgeManager
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
23 /******************************************************************************
6b0210915ee3 Create PurpleBadgeManager
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
24 * Tests
6b0210915ee3 Create PurpleBadgeManager
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
25 *****************************************************************************/
6b0210915ee3 Create PurpleBadgeManager
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
26 static void
6b0210915ee3 Create PurpleBadgeManager
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
27 test_purple_badge_manager_new(void) {
6b0210915ee3 Create PurpleBadgeManager
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
28 PurpleBadgeManager *manager = NULL;
6b0210915ee3 Create PurpleBadgeManager
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
29
6b0210915ee3 Create PurpleBadgeManager
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
30 manager = purple_badge_manager_new();
6b0210915ee3 Create PurpleBadgeManager
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
31
6b0210915ee3 Create PurpleBadgeManager
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
32 g_assert_true(PURPLE_IS_BADGE_MANAGER(manager));
6b0210915ee3 Create PurpleBadgeManager
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
33
6b0210915ee3 Create PurpleBadgeManager
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
34 g_assert_finalize_object(manager);
6b0210915ee3 Create PurpleBadgeManager
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
35 }
6b0210915ee3 Create PurpleBadgeManager
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
36
6b0210915ee3 Create PurpleBadgeManager
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
37 static void
6b0210915ee3 Create PurpleBadgeManager
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
38 test_purple_badge_manager_add_remove(void) {
6b0210915ee3 Create PurpleBadgeManager
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
39 PurpleBadge *badge = NULL;
6b0210915ee3 Create PurpleBadgeManager
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
40 PurpleBadge *found = NULL;
6b0210915ee3 Create PurpleBadgeManager
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
41 PurpleBadgeManager *manager = NULL;
6b0210915ee3 Create PurpleBadgeManager
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
42 gboolean ret = FALSE;
6b0210915ee3 Create PurpleBadgeManager
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
43 const char *id = "test-badge";
6b0210915ee3 Create PurpleBadgeManager
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
44
6b0210915ee3 Create PurpleBadgeManager
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
45 manager = purple_badge_manager_new();
6b0210915ee3 Create PurpleBadgeManager
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
46
6b0210915ee3 Create PurpleBadgeManager
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
47 /* Make sure we can't remove our badge as it hasn't been added yet. */
6b0210915ee3 Create PurpleBadgeManager
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
48 ret = purple_badge_manager_remove(manager, id);
6b0210915ee3 Create PurpleBadgeManager
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
49 g_assert_false(ret);
6b0210915ee3 Create PurpleBadgeManager
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
50
6b0210915ee3 Create PurpleBadgeManager
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
51 /* Also make sure we can't find our badge. */
6b0210915ee3 Create PurpleBadgeManager
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
52 badge = purple_badge_manager_find(manager, id);
6b0210915ee3 Create PurpleBadgeManager
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
53 g_assert_null(badge);
6b0210915ee3 Create PurpleBadgeManager
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
54
6b0210915ee3 Create PurpleBadgeManager
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
55 /* Create and add our badge. */
6b0210915ee3 Create PurpleBadgeManager
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
56 badge = purple_badge_new(id, 0, "test-badge", "T");
6b0210915ee3 Create PurpleBadgeManager
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
57 ret = purple_badge_manager_add(manager, badge);
6b0210915ee3 Create PurpleBadgeManager
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
58 g_assert_true(ret);
6b0210915ee3 Create PurpleBadgeManager
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
59
6b0210915ee3 Create PurpleBadgeManager
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
60 /* Make sure it was added. */
6b0210915ee3 Create PurpleBadgeManager
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
61 found = purple_badge_manager_find(manager, id);
6b0210915ee3 Create PurpleBadgeManager
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
62 g_assert_true(PURPLE_IS_BADGE(found));
6b0210915ee3 Create PurpleBadgeManager
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
63 g_assert_true(found == badge);
6b0210915ee3 Create PurpleBadgeManager
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
64
6b0210915ee3 Create PurpleBadgeManager
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
65 /* Add the badge again and verify that it returns false. */
6b0210915ee3 Create PurpleBadgeManager
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
66 ret = purple_badge_manager_add(manager, badge);
6b0210915ee3 Create PurpleBadgeManager
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
67 g_assert_false(ret);
6b0210915ee3 Create PurpleBadgeManager
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
68
6b0210915ee3 Create PurpleBadgeManager
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
69 /* Remove the badge. */
6b0210915ee3 Create PurpleBadgeManager
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
70 ret = purple_badge_manager_remove(manager, id);
6b0210915ee3 Create PurpleBadgeManager
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
71 g_assert_true(ret);
6b0210915ee3 Create PurpleBadgeManager
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
72
6b0210915ee3 Create PurpleBadgeManager
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
73 /* Make sure it's gone. */
6b0210915ee3 Create PurpleBadgeManager
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
74 found = purple_badge_manager_find(manager, id);
6b0210915ee3 Create PurpleBadgeManager
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
75 g_assert_null(found);
6b0210915ee3 Create PurpleBadgeManager
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
76
6b0210915ee3 Create PurpleBadgeManager
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
77 /* Make sure that another remove returns false. */
6b0210915ee3 Create PurpleBadgeManager
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
78 ret = purple_badge_manager_remove(manager, id);
6b0210915ee3 Create PurpleBadgeManager
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
79 g_assert_false(ret);
6b0210915ee3 Create PurpleBadgeManager
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
80
6b0210915ee3 Create PurpleBadgeManager
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
81 g_assert_finalize_object(manager);
6b0210915ee3 Create PurpleBadgeManager
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
82 g_assert_finalize_object(badge);
6b0210915ee3 Create PurpleBadgeManager
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
83 }
6b0210915ee3 Create PurpleBadgeManager
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
84
6b0210915ee3 Create PurpleBadgeManager
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
85 /******************************************************************************
6b0210915ee3 Create PurpleBadgeManager
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
86 * Main
6b0210915ee3 Create PurpleBadgeManager
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
87 *****************************************************************************/
6b0210915ee3 Create PurpleBadgeManager
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
88 int
6b0210915ee3 Create PurpleBadgeManager
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
89 main(int argc, char *argv[]) {
6b0210915ee3 Create PurpleBadgeManager
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
90 g_test_init(&argc, &argv, NULL);
6b0210915ee3 Create PurpleBadgeManager
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
91 g_test_set_nonfatal_assertions();
6b0210915ee3 Create PurpleBadgeManager
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
92
6b0210915ee3 Create PurpleBadgeManager
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
93 g_test_add_func("/conversation-manager/new",
6b0210915ee3 Create PurpleBadgeManager
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
94 test_purple_badge_manager_new);
6b0210915ee3 Create PurpleBadgeManager
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
95 g_test_add_func("/conversation-manager/add-remove",
6b0210915ee3 Create PurpleBadgeManager
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
96 test_purple_badge_manager_add_remove);
6b0210915ee3 Create PurpleBadgeManager
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
97
6b0210915ee3 Create PurpleBadgeManager
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
98 return g_test_run();
6b0210915ee3 Create PurpleBadgeManager
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
99 }

mercurial