libpurple/tests/test_messages.c

Sat, 09 Aug 2025 17:37:27 +0800

author
Gong Zhile <gongzl@stu.hebust.edu.cn>
date
Sat, 09 Aug 2025 17:37:27 +0800
branch
bird-header-fix
changeset 43304
2599d35e9750
parent 43265
7960b5f85729
permissions
-rw-r--r--

Fix the birb header path

The birb header referred would only work with birb provided by wrap casuing
build to fail because of system-installed birb dependency. The commit points
it to the correct path <birb.h>.

See: https://keep.imfreedom.org/birb/birb/file/5bf00c7d7f80/birb/meson.build#l77

42844
74d2c95237e2 Add PurpleMessages
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
1 /*
74d2c95237e2 Add PurpleMessages
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
2 * Purple - Internet Messaging Library
74d2c95237e2 Add PurpleMessages
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
3 * Copyright (C) Pidgin Developers <devel@pidgin.im>
74d2c95237e2 Add PurpleMessages
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
4 *
74d2c95237e2 Add PurpleMessages
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
5 * This library is free software; you can redistribute it and/or
74d2c95237e2 Add PurpleMessages
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
6 * modify it under the terms of the GNU Lesser General Public
74d2c95237e2 Add PurpleMessages
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
7 * License as published by the Free Software Foundation; either
74d2c95237e2 Add PurpleMessages
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
8 * version 2 of the License, or (at your option) any later version.
74d2c95237e2 Add PurpleMessages
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
9 *
74d2c95237e2 Add PurpleMessages
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
10 * This library is distributed in the hope that it will be useful,
74d2c95237e2 Add PurpleMessages
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
11 * but WITHOUT ANY WARRANTY; without even the implied warranty of
74d2c95237e2 Add PurpleMessages
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
12 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
74d2c95237e2 Add PurpleMessages
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
13 * Lesser General Public License for more details.
74d2c95237e2 Add PurpleMessages
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
14 *
74d2c95237e2 Add PurpleMessages
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
15 * You should have received a copy of the GNU Lesser General Public
74d2c95237e2 Add PurpleMessages
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
16 * License along with this library; if not, see <https://www.gnu.org/licenses/>.
74d2c95237e2 Add PurpleMessages
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
17 */
74d2c95237e2 Add PurpleMessages
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
18
74d2c95237e2 Add PurpleMessages
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
19 #include <glib.h>
74d2c95237e2 Add PurpleMessages
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
20
43265
7960b5f85729 Update to birb 0.4 and use the testing helpers in libpurple
Gary Kramlich <grim@reaperworld.com>
parents: 43100
diff changeset
21 #include <birb.h>
42844
74d2c95237e2 Add PurpleMessages
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
22
43265
7960b5f85729 Update to birb 0.4 and use the testing helpers in libpurple
Gary Kramlich <grim@reaperworld.com>
parents: 43100
diff changeset
23 #include <purple.h>
42844
74d2c95237e2 Add PurpleMessages
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
24
74d2c95237e2 Add PurpleMessages
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
25 /******************************************************************************
74d2c95237e2 Add PurpleMessages
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
26 * Tests
74d2c95237e2 Add PurpleMessages
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
27 *****************************************************************************/
74d2c95237e2 Add PurpleMessages
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
28 static void
74d2c95237e2 Add PurpleMessages
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
29 test_purple_message_new_with_conversation(void) {
74d2c95237e2 Add PurpleMessages
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
30 PurpleAccount *account = NULL;
74d2c95237e2 Add PurpleMessages
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
31 PurpleConversation *conversation = NULL;
74d2c95237e2 Add PurpleMessages
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
32 PurpleMessages *messages = NULL;
74d2c95237e2 Add PurpleMessages
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
33
74d2c95237e2 Add PurpleMessages
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
34 account = purple_account_new("test", "test");
74d2c95237e2 Add PurpleMessages
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
35 conversation = g_object_new(
74d2c95237e2 Add PurpleMessages
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
36 PURPLE_TYPE_CONVERSATION,
74d2c95237e2 Add PurpleMessages
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
37 "account", account,
74d2c95237e2 Add PurpleMessages
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
38 NULL);
74d2c95237e2 Add PurpleMessages
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
39
74d2c95237e2 Add PurpleMessages
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
40 messages = purple_messages_new(conversation);
74d2c95237e2 Add PurpleMessages
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
41 g_assert_true(PURPLE_IS_MESSAGES(messages));
74d2c95237e2 Add PurpleMessages
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
42 g_assert_true(G_IS_LIST_MODEL(messages));
74d2c95237e2 Add PurpleMessages
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
43
74d2c95237e2 Add PurpleMessages
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
44 g_assert_finalize_object(messages);
74d2c95237e2 Add PurpleMessages
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
45 g_assert_finalize_object(conversation);
74d2c95237e2 Add PurpleMessages
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
46 g_clear_object(&account);
74d2c95237e2 Add PurpleMessages
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
47 }
74d2c95237e2 Add PurpleMessages
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
48
74d2c95237e2 Add PurpleMessages
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
49 static void
74d2c95237e2 Add PurpleMessages
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
50 test_purple_message_new_without_conversation(void) {
74d2c95237e2 Add PurpleMessages
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
51 if(g_test_subprocess()) {
74d2c95237e2 Add PurpleMessages
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
52 PurpleMessages *messages = NULL;
74d2c95237e2 Add PurpleMessages
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
53
74d2c95237e2 Add PurpleMessages
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
54 messages = purple_messages_new(NULL);
74d2c95237e2 Add PurpleMessages
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
55 g_assert_null(messages);
74d2c95237e2 Add PurpleMessages
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
56
74d2c95237e2 Add PurpleMessages
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
57 g_assert_not_reached();
74d2c95237e2 Add PurpleMessages
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
58 }
74d2c95237e2 Add PurpleMessages
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
59
74d2c95237e2 Add PurpleMessages
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
60 g_test_trap_subprocess(NULL, 0, 0);
74d2c95237e2 Add PurpleMessages
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
61 g_test_trap_assert_stderr("*CRITICAL*IS_CONVERSATION*failed*");
74d2c95237e2 Add PurpleMessages
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
62 }
74d2c95237e2 Add PurpleMessages
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
63
74d2c95237e2 Add PurpleMessages
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
64 static void
74d2c95237e2 Add PurpleMessages
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
65 test_purple_messages_properties(void) {
74d2c95237e2 Add PurpleMessages
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
66 PurpleAccount *account = NULL;
74d2c95237e2 Add PurpleMessages
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
67 PurpleConversation *conversation1 = NULL;
74d2c95237e2 Add PurpleMessages
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
68 PurpleConversation *conversation2 = NULL;
74d2c95237e2 Add PurpleMessages
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
69 PurpleMessages *messages = NULL;
74d2c95237e2 Add PurpleMessages
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
70
74d2c95237e2 Add PurpleMessages
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
71 account = purple_account_new("test", "test");
74d2c95237e2 Add PurpleMessages
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
72 conversation1 = g_object_new(
74d2c95237e2 Add PurpleMessages
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
73 PURPLE_TYPE_CONVERSATION,
74d2c95237e2 Add PurpleMessages
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
74 "account", account,
74d2c95237e2 Add PurpleMessages
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
75 NULL);
74d2c95237e2 Add PurpleMessages
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
76
74d2c95237e2 Add PurpleMessages
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
77 messages = g_object_new(
74d2c95237e2 Add PurpleMessages
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
78 PURPLE_TYPE_MESSAGES,
74d2c95237e2 Add PurpleMessages
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
79 "conversation", conversation1,
74d2c95237e2 Add PurpleMessages
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
80 NULL);
74d2c95237e2 Add PurpleMessages
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
81
74d2c95237e2 Add PurpleMessages
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
82 g_object_get(
74d2c95237e2 Add PurpleMessages
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
83 G_OBJECT(messages),
74d2c95237e2 Add PurpleMessages
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
84 "conversation", &conversation2,
74d2c95237e2 Add PurpleMessages
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
85 NULL);
74d2c95237e2 Add PurpleMessages
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
86
74d2c95237e2 Add PurpleMessages
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
87 g_assert_true(conversation2 == conversation1);
74d2c95237e2 Add PurpleMessages
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
88 g_clear_object(&conversation2);
74d2c95237e2 Add PurpleMessages
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
89
74d2c95237e2 Add PurpleMessages
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
90 g_assert_finalize_object(messages);
74d2c95237e2 Add PurpleMessages
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
91 g_assert_finalize_object(conversation1);
74d2c95237e2 Add PurpleMessages
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
92 g_clear_object(&account);
74d2c95237e2 Add PurpleMessages
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
93 }
74d2c95237e2 Add PurpleMessages
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
94
74d2c95237e2 Add PurpleMessages
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
95 static void
74d2c95237e2 Add PurpleMessages
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
96 test_purple_messages_add_single(void) {
74d2c95237e2 Add PurpleMessages
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
97 PurpleAccount *account = NULL;
43100
e6df74d36862 Change Purple.Message:author to Purple.ConversationMember
Gary Kramlich <grim@reaperworld.com>
parents: 42844
diff changeset
98 PurpleContactInfo *info = NULL;
42844
74d2c95237e2 Add PurpleMessages
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
99 PurpleConversation *conversation = NULL;
43100
e6df74d36862 Change Purple.Message:author to Purple.ConversationMember
Gary Kramlich <grim@reaperworld.com>
parents: 42844
diff changeset
100 PurpleConversationMember *author = NULL;
42844
74d2c95237e2 Add PurpleMessages
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
101 PurpleMessage *message1 = NULL;
74d2c95237e2 Add PurpleMessages
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
102 PurpleMessage *message2 = NULL;
74d2c95237e2 Add PurpleMessages
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
103 PurpleMessages *messages = NULL;
74d2c95237e2 Add PurpleMessages
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
104 guint counter = 0;
74d2c95237e2 Add PurpleMessages
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
105
74d2c95237e2 Add PurpleMessages
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
106 account = purple_account_new("test", "test");
43100
e6df74d36862 Change Purple.Message:author to Purple.ConversationMember
Gary Kramlich <grim@reaperworld.com>
parents: 42844
diff changeset
107 info = purple_account_get_contact_info(account);
42844
74d2c95237e2 Add PurpleMessages
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
108 conversation = g_object_new(
74d2c95237e2 Add PurpleMessages
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
109 PURPLE_TYPE_CONVERSATION,
74d2c95237e2 Add PurpleMessages
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
110 "account", account,
74d2c95237e2 Add PurpleMessages
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
111 NULL);
43100
e6df74d36862 Change Purple.Message:author to Purple.ConversationMember
Gary Kramlich <grim@reaperworld.com>
parents: 42844
diff changeset
112 author = purple_conversation_find_or_add_member(conversation, info, FALSE,
e6df74d36862 Change Purple.Message:author to Purple.ConversationMember
Gary Kramlich <grim@reaperworld.com>
parents: 42844
diff changeset
113 NULL);
42844
74d2c95237e2 Add PurpleMessages
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
114
74d2c95237e2 Add PurpleMessages
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
115 messages = purple_messages_new(conversation);
43265
7960b5f85729 Update to birb 0.4 and use the testing helpers in libpurple
Gary Kramlich <grim@reaperworld.com>
parents: 43100
diff changeset
116 birb_count_list_model_items_changed(G_LIST_MODEL(messages), &counter);
42844
74d2c95237e2 Add PurpleMessages
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
117
43100
e6df74d36862 Change Purple.Message:author to Purple.ConversationMember
Gary Kramlich <grim@reaperworld.com>
parents: 42844
diff changeset
118 message1 = purple_message_new(author, "test message");
42844
74d2c95237e2 Add PurpleMessages
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
119 purple_messages_add(messages, message1);
74d2c95237e2 Add PurpleMessages
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
120 g_assert_cmpuint(counter, ==, 1);
74d2c95237e2 Add PurpleMessages
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
121
74d2c95237e2 Add PurpleMessages
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
122 message2 = g_list_model_get_item(G_LIST_MODEL(messages), 0);
74d2c95237e2 Add PurpleMessages
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
123 g_assert_true(PURPLE_IS_MESSAGE(message2));
74d2c95237e2 Add PurpleMessages
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
124 g_assert_true(message2 == message1);
74d2c95237e2 Add PurpleMessages
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
125 g_clear_object(&message2);
74d2c95237e2 Add PurpleMessages
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
126
74d2c95237e2 Add PurpleMessages
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
127 g_assert_finalize_object(messages);
74d2c95237e2 Add PurpleMessages
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
128 g_assert_finalize_object(message1);
74d2c95237e2 Add PurpleMessages
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
129 g_assert_finalize_object(conversation);
74d2c95237e2 Add PurpleMessages
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
130 g_clear_object(&account);
74d2c95237e2 Add PurpleMessages
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
131 }
74d2c95237e2 Add PurpleMessages
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
132
74d2c95237e2 Add PurpleMessages
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
133 static void
74d2c95237e2 Add PurpleMessages
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
134 test_purple_messages_add_multiple(void) {
74d2c95237e2 Add PurpleMessages
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
135 PurpleAccount *account = NULL;
43100
e6df74d36862 Change Purple.Message:author to Purple.ConversationMember
Gary Kramlich <grim@reaperworld.com>
parents: 42844
diff changeset
136 PurpleContactInfo *info = NULL;
42844
74d2c95237e2 Add PurpleMessages
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
137 PurpleConversation *conversation = NULL;
43100
e6df74d36862 Change Purple.Message:author to Purple.ConversationMember
Gary Kramlich <grim@reaperworld.com>
parents: 42844
diff changeset
138 PurpleConversationMember *author = NULL;
42844
74d2c95237e2 Add PurpleMessages
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
139 PurpleMessage *message = NULL;
74d2c95237e2 Add PurpleMessages
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
140 PurpleMessage *message1 = NULL;
74d2c95237e2 Add PurpleMessages
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
141 PurpleMessage *message2 = NULL;
74d2c95237e2 Add PurpleMessages
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
142 PurpleMessages *messages = NULL;
74d2c95237e2 Add PurpleMessages
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
143 GDateTime *dt1 = NULL;
74d2c95237e2 Add PurpleMessages
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
144 GDateTime *dt2 = NULL;
74d2c95237e2 Add PurpleMessages
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
145 GTimeZone *zone = NULL;
74d2c95237e2 Add PurpleMessages
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
146 guint counter = 0;
74d2c95237e2 Add PurpleMessages
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
147
74d2c95237e2 Add PurpleMessages
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
148 /* This test adds two messages to the collection, the first one has an
74d2c95237e2 Add PurpleMessages
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
149 * older timestamp than the first, which lets us test the automatic
74d2c95237e2 Add PurpleMessages
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
150 * sorting.
74d2c95237e2 Add PurpleMessages
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
151 */
74d2c95237e2 Add PurpleMessages
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
152
74d2c95237e2 Add PurpleMessages
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
153 account = purple_account_new("test", "test");
43100
e6df74d36862 Change Purple.Message:author to Purple.ConversationMember
Gary Kramlich <grim@reaperworld.com>
parents: 42844
diff changeset
154 info = purple_account_get_contact_info(account);
42844
74d2c95237e2 Add PurpleMessages
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
155 conversation = g_object_new(
74d2c95237e2 Add PurpleMessages
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
156 PURPLE_TYPE_CONVERSATION,
74d2c95237e2 Add PurpleMessages
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
157 "account", account,
74d2c95237e2 Add PurpleMessages
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
158 NULL);
43100
e6df74d36862 Change Purple.Message:author to Purple.ConversationMember
Gary Kramlich <grim@reaperworld.com>
parents: 42844
diff changeset
159 author = purple_conversation_find_or_add_member(conversation, info, FALSE,
e6df74d36862 Change Purple.Message:author to Purple.ConversationMember
Gary Kramlich <grim@reaperworld.com>
parents: 42844
diff changeset
160 NULL);
42844
74d2c95237e2 Add PurpleMessages
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
161
74d2c95237e2 Add PurpleMessages
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
162 messages = purple_messages_new(conversation);
43265
7960b5f85729 Update to birb 0.4 and use the testing helpers in libpurple
Gary Kramlich <grim@reaperworld.com>
parents: 43100
diff changeset
163 birb_count_list_model_items_changed(G_LIST_MODEL(messages), &counter);
42844
74d2c95237e2 Add PurpleMessages
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
164
74d2c95237e2 Add PurpleMessages
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
165 zone = g_time_zone_new_utc();
74d2c95237e2 Add PurpleMessages
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
166
43100
e6df74d36862 Change Purple.Message:author to Purple.ConversationMember
Gary Kramlich <grim@reaperworld.com>
parents: 42844
diff changeset
167 message1 = purple_message_new(author, "second message");
42844
74d2c95237e2 Add PurpleMessages
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
168 dt1 = g_date_time_new_from_iso8601("2024-08-07T03:07:33+0000", zone);
74d2c95237e2 Add PurpleMessages
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
169 purple_message_set_timestamp(message1, dt1);
74d2c95237e2 Add PurpleMessages
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
170 g_clear_pointer(&dt1, g_date_time_unref);
74d2c95237e2 Add PurpleMessages
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
171 purple_messages_add(messages, message1);
74d2c95237e2 Add PurpleMessages
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
172 g_assert_cmpuint(counter, ==, 1);
74d2c95237e2 Add PurpleMessages
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
173
43100
e6df74d36862 Change Purple.Message:author to Purple.ConversationMember
Gary Kramlich <grim@reaperworld.com>
parents: 42844
diff changeset
174 message2 = purple_message_new(author, "first message");
42844
74d2c95237e2 Add PurpleMessages
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
175 dt2 = g_date_time_new_from_iso8601("2024-08-07T03:06:33+0000", zone);
74d2c95237e2 Add PurpleMessages
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
176 purple_message_set_timestamp(message2, dt2);
74d2c95237e2 Add PurpleMessages
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
177 g_clear_pointer(&dt2, g_date_time_unref);
74d2c95237e2 Add PurpleMessages
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
178 purple_messages_add(messages, message2);
74d2c95237e2 Add PurpleMessages
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
179 g_assert_cmpuint(counter, ==, 2);
74d2c95237e2 Add PurpleMessages
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
180
74d2c95237e2 Add PurpleMessages
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
181 /* Make sure that the first item in the list is message2. */
74d2c95237e2 Add PurpleMessages
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
182 message = g_list_model_get_item(G_LIST_MODEL(messages), 0);
74d2c95237e2 Add PurpleMessages
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
183 g_assert_true(PURPLE_IS_MESSAGE(message));
74d2c95237e2 Add PurpleMessages
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
184 g_assert_true(message == message2);
74d2c95237e2 Add PurpleMessages
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
185 g_clear_object(&message);
74d2c95237e2 Add PurpleMessages
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
186
74d2c95237e2 Add PurpleMessages
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
187 /* Make sure that the second item in the list is message1. */
74d2c95237e2 Add PurpleMessages
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
188 message = g_list_model_get_item(G_LIST_MODEL(messages), 1);
74d2c95237e2 Add PurpleMessages
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
189 g_assert_true(PURPLE_IS_MESSAGE(message));
74d2c95237e2 Add PurpleMessages
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
190 g_assert_true(message == message1);
74d2c95237e2 Add PurpleMessages
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
191 g_clear_object(&message);
74d2c95237e2 Add PurpleMessages
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
192
74d2c95237e2 Add PurpleMessages
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
193 g_clear_pointer(&zone, g_time_zone_unref);
74d2c95237e2 Add PurpleMessages
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
194 g_assert_finalize_object(messages);
74d2c95237e2 Add PurpleMessages
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
195 g_assert_finalize_object(message1);
74d2c95237e2 Add PurpleMessages
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
196 g_assert_finalize_object(message2);
74d2c95237e2 Add PurpleMessages
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
197 g_assert_finalize_object(conversation);
74d2c95237e2 Add PurpleMessages
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
198 g_clear_object(&account);
74d2c95237e2 Add PurpleMessages
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
199 }
74d2c95237e2 Add PurpleMessages
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
200
74d2c95237e2 Add PurpleMessages
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
201 /******************************************************************************
74d2c95237e2 Add PurpleMessages
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
202 * Main
74d2c95237e2 Add PurpleMessages
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
203 *****************************************************************************/
74d2c95237e2 Add PurpleMessages
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
204 int
74d2c95237e2 Add PurpleMessages
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
205 main(int argc, char *argv[]) {
74d2c95237e2 Add PurpleMessages
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
206 g_test_init(&argc, &argv, NULL);
74d2c95237e2 Add PurpleMessages
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
207 g_test_set_nonfatal_assertions();
74d2c95237e2 Add PurpleMessages
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
208
74d2c95237e2 Add PurpleMessages
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
209 g_test_add_func("/messages/new/with-conversation",
74d2c95237e2 Add PurpleMessages
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
210 test_purple_message_new_with_conversation);
74d2c95237e2 Add PurpleMessages
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
211 g_test_add_func("/messages/new/without-conversation",
74d2c95237e2 Add PurpleMessages
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
212 test_purple_message_new_without_conversation);
74d2c95237e2 Add PurpleMessages
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
213
74d2c95237e2 Add PurpleMessages
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
214 g_test_add_func("/messages/properties", test_purple_messages_properties);
74d2c95237e2 Add PurpleMessages
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
215
74d2c95237e2 Add PurpleMessages
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
216 g_test_add_func("/messages/add/single", test_purple_messages_add_single);
74d2c95237e2 Add PurpleMessages
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
217 g_test_add_func("/messages/add/multiple",
74d2c95237e2 Add PurpleMessages
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
218 test_purple_messages_add_multiple);
74d2c95237e2 Add PurpleMessages
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
219
74d2c95237e2 Add PurpleMessages
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
220 return g_test_run();
74d2c95237e2 Add PurpleMessages
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
221 }

mercurial