libpurple/tests/test_messages.c

Thu, 05 Dec 2024 21:31:16 -0600

author
Gary Kramlich <grim@reaperworld.com>
date
Thu, 05 Dec 2024 21:31:16 -0600
changeset 43100
e6df74d36862
parent 42844
74d2c95237e2
child 43265
7960b5f85729
permissions
-rw-r--r--

Change Purple.Message:author to Purple.ConversationMember

This is necessary to show conversation specific nick names and badges in each
message and potentially more.

Testing Done:
* Sent some messages to Echo on the demo protocol plugin.
* Verified that the ircv3 status conversation was working properly.
* Called in the turtles.

Reviewed at https://reviews.imfreedom.org/r/3692/

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
74d2c95237e2 Add PurpleMessages
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
21 #include <purple.h>
74d2c95237e2 Add PurpleMessages
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
22
74d2c95237e2 Add PurpleMessages
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
23 /******************************************************************************
74d2c95237e2 Add PurpleMessages
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
24 * Callbacks
74d2c95237e2 Add PurpleMessages
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
25 *****************************************************************************/
74d2c95237e2 Add PurpleMessages
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
26 static void
74d2c95237e2 Add PurpleMessages
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
27 test_purple_messages_items_changed_counter(G_GNUC_UNUSED GListModel *model,
74d2c95237e2 Add PurpleMessages
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
28 G_GNUC_UNUSED guint position,
74d2c95237e2 Add PurpleMessages
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
29 G_GNUC_UNUSED guint removed,
74d2c95237e2 Add PurpleMessages
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
30 G_GNUC_UNUSED guint added,
74d2c95237e2 Add PurpleMessages
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
31 gpointer data)
74d2c95237e2 Add PurpleMessages
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
32 {
74d2c95237e2 Add PurpleMessages
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
33 guint *counter = data;
74d2c95237e2 Add PurpleMessages
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
34
74d2c95237e2 Add PurpleMessages
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
35 *counter = *counter + 1;
74d2c95237e2 Add PurpleMessages
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
36 }
74d2c95237e2 Add PurpleMessages
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
37
74d2c95237e2 Add PurpleMessages
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
38 /******************************************************************************
74d2c95237e2 Add PurpleMessages
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
39 * Tests
74d2c95237e2 Add PurpleMessages
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
40 *****************************************************************************/
74d2c95237e2 Add PurpleMessages
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
41 static void
74d2c95237e2 Add PurpleMessages
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
42 test_purple_message_new_with_conversation(void) {
74d2c95237e2 Add PurpleMessages
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
43 PurpleAccount *account = NULL;
74d2c95237e2 Add PurpleMessages
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
44 PurpleConversation *conversation = NULL;
74d2c95237e2 Add PurpleMessages
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
45 PurpleMessages *messages = NULL;
74d2c95237e2 Add PurpleMessages
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
46
74d2c95237e2 Add PurpleMessages
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
47 account = purple_account_new("test", "test");
74d2c95237e2 Add PurpleMessages
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
48 conversation = g_object_new(
74d2c95237e2 Add PurpleMessages
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
49 PURPLE_TYPE_CONVERSATION,
74d2c95237e2 Add PurpleMessages
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
50 "account", account,
74d2c95237e2 Add PurpleMessages
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
51 NULL);
74d2c95237e2 Add PurpleMessages
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
52
74d2c95237e2 Add PurpleMessages
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
53 messages = purple_messages_new(conversation);
74d2c95237e2 Add PurpleMessages
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
54 g_assert_true(PURPLE_IS_MESSAGES(messages));
74d2c95237e2 Add PurpleMessages
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
55 g_assert_true(G_IS_LIST_MODEL(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_finalize_object(messages);
74d2c95237e2 Add PurpleMessages
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
58 g_assert_finalize_object(conversation);
74d2c95237e2 Add PurpleMessages
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
59 g_clear_object(&account);
74d2c95237e2 Add PurpleMessages
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
60 }
74d2c95237e2 Add PurpleMessages
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
61
74d2c95237e2 Add PurpleMessages
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
62 static void
74d2c95237e2 Add PurpleMessages
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
63 test_purple_message_new_without_conversation(void) {
74d2c95237e2 Add PurpleMessages
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
64 if(g_test_subprocess()) {
74d2c95237e2 Add PurpleMessages
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
65 PurpleMessages *messages = NULL;
74d2c95237e2 Add PurpleMessages
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
66
74d2c95237e2 Add PurpleMessages
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
67 messages = purple_messages_new(NULL);
74d2c95237e2 Add PurpleMessages
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
68 g_assert_null(messages);
74d2c95237e2 Add PurpleMessages
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
69
74d2c95237e2 Add PurpleMessages
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
70 g_assert_not_reached();
74d2c95237e2 Add PurpleMessages
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
71 }
74d2c95237e2 Add PurpleMessages
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
72
74d2c95237e2 Add PurpleMessages
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
73 g_test_trap_subprocess(NULL, 0, 0);
74d2c95237e2 Add PurpleMessages
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
74 g_test_trap_assert_stderr("*CRITICAL*IS_CONVERSATION*failed*");
74d2c95237e2 Add PurpleMessages
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
75 }
74d2c95237e2 Add PurpleMessages
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
76
74d2c95237e2 Add PurpleMessages
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
77 static void
74d2c95237e2 Add PurpleMessages
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
78 test_purple_messages_properties(void) {
74d2c95237e2 Add PurpleMessages
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
79 PurpleAccount *account = NULL;
74d2c95237e2 Add PurpleMessages
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
80 PurpleConversation *conversation1 = NULL;
74d2c95237e2 Add PurpleMessages
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
81 PurpleConversation *conversation2 = NULL;
74d2c95237e2 Add PurpleMessages
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
82 PurpleMessages *messages = NULL;
74d2c95237e2 Add PurpleMessages
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
83
74d2c95237e2 Add PurpleMessages
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
84 account = purple_account_new("test", "test");
74d2c95237e2 Add PurpleMessages
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
85 conversation1 = g_object_new(
74d2c95237e2 Add PurpleMessages
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
86 PURPLE_TYPE_CONVERSATION,
74d2c95237e2 Add PurpleMessages
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
87 "account", account,
74d2c95237e2 Add PurpleMessages
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
88 NULL);
74d2c95237e2 Add PurpleMessages
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
89
74d2c95237e2 Add PurpleMessages
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
90 messages = g_object_new(
74d2c95237e2 Add PurpleMessages
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
91 PURPLE_TYPE_MESSAGES,
74d2c95237e2 Add PurpleMessages
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
92 "conversation", conversation1,
74d2c95237e2 Add PurpleMessages
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
93 NULL);
74d2c95237e2 Add PurpleMessages
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
94
74d2c95237e2 Add PurpleMessages
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
95 g_object_get(
74d2c95237e2 Add PurpleMessages
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
96 G_OBJECT(messages),
74d2c95237e2 Add PurpleMessages
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
97 "conversation", &conversation2,
74d2c95237e2 Add PurpleMessages
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
98 NULL);
74d2c95237e2 Add PurpleMessages
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
99
74d2c95237e2 Add PurpleMessages
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
100 g_assert_true(conversation2 == conversation1);
74d2c95237e2 Add PurpleMessages
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
101 g_clear_object(&conversation2);
74d2c95237e2 Add PurpleMessages
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
102
74d2c95237e2 Add PurpleMessages
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
103 g_assert_finalize_object(messages);
74d2c95237e2 Add PurpleMessages
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
104 g_assert_finalize_object(conversation1);
74d2c95237e2 Add PurpleMessages
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
105 g_clear_object(&account);
74d2c95237e2 Add PurpleMessages
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
106 }
74d2c95237e2 Add PurpleMessages
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
107
74d2c95237e2 Add PurpleMessages
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
108 static void
74d2c95237e2 Add PurpleMessages
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
109 test_purple_messages_add_single(void) {
74d2c95237e2 Add PurpleMessages
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
110 PurpleAccount *account = NULL;
43100
e6df74d36862 Change Purple.Message:author to Purple.ConversationMember
Gary Kramlich <grim@reaperworld.com>
parents: 42844
diff changeset
111 PurpleContactInfo *info = NULL;
42844
74d2c95237e2 Add PurpleMessages
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
112 PurpleConversation *conversation = NULL;
43100
e6df74d36862 Change Purple.Message:author to Purple.ConversationMember
Gary Kramlich <grim@reaperworld.com>
parents: 42844
diff changeset
113 PurpleConversationMember *author = NULL;
42844
74d2c95237e2 Add PurpleMessages
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
114 PurpleMessage *message1 = NULL;
74d2c95237e2 Add PurpleMessages
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
115 PurpleMessage *message2 = NULL;
74d2c95237e2 Add PurpleMessages
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
116 PurpleMessages *messages = NULL;
74d2c95237e2 Add PurpleMessages
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
117 guint counter = 0;
74d2c95237e2 Add PurpleMessages
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
118
74d2c95237e2 Add PurpleMessages
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
119 account = purple_account_new("test", "test");
43100
e6df74d36862 Change Purple.Message:author to Purple.ConversationMember
Gary Kramlich <grim@reaperworld.com>
parents: 42844
diff changeset
120 info = purple_account_get_contact_info(account);
42844
74d2c95237e2 Add PurpleMessages
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
121 conversation = g_object_new(
74d2c95237e2 Add PurpleMessages
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
122 PURPLE_TYPE_CONVERSATION,
74d2c95237e2 Add PurpleMessages
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
123 "account", account,
74d2c95237e2 Add PurpleMessages
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
124 NULL);
43100
e6df74d36862 Change Purple.Message:author to Purple.ConversationMember
Gary Kramlich <grim@reaperworld.com>
parents: 42844
diff changeset
125 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
126 NULL);
42844
74d2c95237e2 Add PurpleMessages
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
127
74d2c95237e2 Add PurpleMessages
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
128 messages = purple_messages_new(conversation);
74d2c95237e2 Add PurpleMessages
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
129 g_signal_connect(messages, "items-changed",
74d2c95237e2 Add PurpleMessages
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
130 G_CALLBACK(test_purple_messages_items_changed_counter),
74d2c95237e2 Add PurpleMessages
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
131 &counter);
74d2c95237e2 Add PurpleMessages
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
132
43100
e6df74d36862 Change Purple.Message:author to Purple.ConversationMember
Gary Kramlich <grim@reaperworld.com>
parents: 42844
diff changeset
133 message1 = purple_message_new(author, "test message");
42844
74d2c95237e2 Add PurpleMessages
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
134 purple_messages_add(messages, message1);
74d2c95237e2 Add PurpleMessages
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
135 g_assert_cmpuint(counter, ==, 1);
74d2c95237e2 Add PurpleMessages
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
136
74d2c95237e2 Add PurpleMessages
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
137 message2 = g_list_model_get_item(G_LIST_MODEL(messages), 0);
74d2c95237e2 Add PurpleMessages
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
138 g_assert_true(PURPLE_IS_MESSAGE(message2));
74d2c95237e2 Add PurpleMessages
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
139 g_assert_true(message2 == message1);
74d2c95237e2 Add PurpleMessages
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
140 g_clear_object(&message2);
74d2c95237e2 Add PurpleMessages
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
141
74d2c95237e2 Add PurpleMessages
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
142 g_assert_finalize_object(messages);
74d2c95237e2 Add PurpleMessages
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
143 g_assert_finalize_object(message1);
74d2c95237e2 Add PurpleMessages
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
144 g_assert_finalize_object(conversation);
74d2c95237e2 Add PurpleMessages
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
145 g_clear_object(&account);
74d2c95237e2 Add PurpleMessages
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
146 }
74d2c95237e2 Add PurpleMessages
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
147
74d2c95237e2 Add PurpleMessages
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
148 static void
74d2c95237e2 Add PurpleMessages
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
149 test_purple_messages_add_multiple(void) {
74d2c95237e2 Add PurpleMessages
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
150 PurpleAccount *account = NULL;
43100
e6df74d36862 Change Purple.Message:author to Purple.ConversationMember
Gary Kramlich <grim@reaperworld.com>
parents: 42844
diff changeset
151 PurpleContactInfo *info = NULL;
42844
74d2c95237e2 Add PurpleMessages
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
152 PurpleConversation *conversation = NULL;
43100
e6df74d36862 Change Purple.Message:author to Purple.ConversationMember
Gary Kramlich <grim@reaperworld.com>
parents: 42844
diff changeset
153 PurpleConversationMember *author = NULL;
42844
74d2c95237e2 Add PurpleMessages
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
154 PurpleMessage *message = NULL;
74d2c95237e2 Add PurpleMessages
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
155 PurpleMessage *message1 = NULL;
74d2c95237e2 Add PurpleMessages
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
156 PurpleMessage *message2 = NULL;
74d2c95237e2 Add PurpleMessages
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
157 PurpleMessages *messages = NULL;
74d2c95237e2 Add PurpleMessages
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
158 GDateTime *dt1 = NULL;
74d2c95237e2 Add PurpleMessages
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
159 GDateTime *dt2 = NULL;
74d2c95237e2 Add PurpleMessages
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
160 GTimeZone *zone = NULL;
74d2c95237e2 Add PurpleMessages
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
161 guint counter = 0;
74d2c95237e2 Add PurpleMessages
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
162
74d2c95237e2 Add PurpleMessages
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
163 /* This test adds two messages to the collection, the first one has an
74d2c95237e2 Add PurpleMessages
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
164 * older timestamp than the first, which lets us test the automatic
74d2c95237e2 Add PurpleMessages
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
165 * sorting.
74d2c95237e2 Add PurpleMessages
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
166 */
74d2c95237e2 Add PurpleMessages
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
167
74d2c95237e2 Add PurpleMessages
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
168 account = purple_account_new("test", "test");
43100
e6df74d36862 Change Purple.Message:author to Purple.ConversationMember
Gary Kramlich <grim@reaperworld.com>
parents: 42844
diff changeset
169 info = purple_account_get_contact_info(account);
42844
74d2c95237e2 Add PurpleMessages
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
170 conversation = g_object_new(
74d2c95237e2 Add PurpleMessages
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
171 PURPLE_TYPE_CONVERSATION,
74d2c95237e2 Add PurpleMessages
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
172 "account", account,
74d2c95237e2 Add PurpleMessages
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
173 NULL);
43100
e6df74d36862 Change Purple.Message:author to Purple.ConversationMember
Gary Kramlich <grim@reaperworld.com>
parents: 42844
diff changeset
174 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
175 NULL);
42844
74d2c95237e2 Add PurpleMessages
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
176
74d2c95237e2 Add PurpleMessages
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
177 messages = purple_messages_new(conversation);
74d2c95237e2 Add PurpleMessages
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
178 g_signal_connect(messages, "items-changed",
74d2c95237e2 Add PurpleMessages
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
179 G_CALLBACK(test_purple_messages_items_changed_counter),
74d2c95237e2 Add PurpleMessages
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
180 &counter);
74d2c95237e2 Add PurpleMessages
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
181
74d2c95237e2 Add PurpleMessages
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
182 zone = g_time_zone_new_utc();
74d2c95237e2 Add PurpleMessages
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
183
43100
e6df74d36862 Change Purple.Message:author to Purple.ConversationMember
Gary Kramlich <grim@reaperworld.com>
parents: 42844
diff changeset
184 message1 = purple_message_new(author, "second message");
42844
74d2c95237e2 Add PurpleMessages
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
185 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
186 purple_message_set_timestamp(message1, dt1);
74d2c95237e2 Add PurpleMessages
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
187 g_clear_pointer(&dt1, g_date_time_unref);
74d2c95237e2 Add PurpleMessages
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
188 purple_messages_add(messages, message1);
74d2c95237e2 Add PurpleMessages
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
189 g_assert_cmpuint(counter, ==, 1);
74d2c95237e2 Add PurpleMessages
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
190
43100
e6df74d36862 Change Purple.Message:author to Purple.ConversationMember
Gary Kramlich <grim@reaperworld.com>
parents: 42844
diff changeset
191 message2 = purple_message_new(author, "first message");
42844
74d2c95237e2 Add PurpleMessages
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
192 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
193 purple_message_set_timestamp(message2, dt2);
74d2c95237e2 Add PurpleMessages
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
194 g_clear_pointer(&dt2, g_date_time_unref);
74d2c95237e2 Add PurpleMessages
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
195 purple_messages_add(messages, message2);
74d2c95237e2 Add PurpleMessages
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
196 g_assert_cmpuint(counter, ==, 2);
74d2c95237e2 Add PurpleMessages
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
197
74d2c95237e2 Add PurpleMessages
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
198 /* Make sure that the first item in the list is message2. */
74d2c95237e2 Add PurpleMessages
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
199 message = g_list_model_get_item(G_LIST_MODEL(messages), 0);
74d2c95237e2 Add PurpleMessages
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
200 g_assert_true(PURPLE_IS_MESSAGE(message));
74d2c95237e2 Add PurpleMessages
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
201 g_assert_true(message == message2);
74d2c95237e2 Add PurpleMessages
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
202 g_clear_object(&message);
74d2c95237e2 Add PurpleMessages
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
203
74d2c95237e2 Add PurpleMessages
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
204 /* Make sure that the second item in the list is message1. */
74d2c95237e2 Add PurpleMessages
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
205 message = g_list_model_get_item(G_LIST_MODEL(messages), 1);
74d2c95237e2 Add PurpleMessages
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
206 g_assert_true(PURPLE_IS_MESSAGE(message));
74d2c95237e2 Add PurpleMessages
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
207 g_assert_true(message == message1);
74d2c95237e2 Add PurpleMessages
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
208 g_clear_object(&message);
74d2c95237e2 Add PurpleMessages
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
209
74d2c95237e2 Add PurpleMessages
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
210 g_clear_pointer(&zone, g_time_zone_unref);
74d2c95237e2 Add PurpleMessages
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
211 g_assert_finalize_object(messages);
74d2c95237e2 Add PurpleMessages
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
212 g_assert_finalize_object(message1);
74d2c95237e2 Add PurpleMessages
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
213 g_assert_finalize_object(message2);
74d2c95237e2 Add PurpleMessages
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
214 g_assert_finalize_object(conversation);
74d2c95237e2 Add PurpleMessages
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
215 g_clear_object(&account);
74d2c95237e2 Add PurpleMessages
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
216 }
74d2c95237e2 Add PurpleMessages
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
217
74d2c95237e2 Add PurpleMessages
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
218 /******************************************************************************
74d2c95237e2 Add PurpleMessages
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
219 * Main
74d2c95237e2 Add PurpleMessages
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
220 *****************************************************************************/
74d2c95237e2 Add PurpleMessages
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
221 int
74d2c95237e2 Add PurpleMessages
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
222 main(int argc, char *argv[]) {
74d2c95237e2 Add PurpleMessages
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
223 g_test_init(&argc, &argv, NULL);
74d2c95237e2 Add PurpleMessages
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
224 g_test_set_nonfatal_assertions();
74d2c95237e2 Add PurpleMessages
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
225
74d2c95237e2 Add PurpleMessages
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
226 g_test_add_func("/messages/new/with-conversation",
74d2c95237e2 Add PurpleMessages
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
227 test_purple_message_new_with_conversation);
74d2c95237e2 Add PurpleMessages
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
228 g_test_add_func("/messages/new/without-conversation",
74d2c95237e2 Add PurpleMessages
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
229 test_purple_message_new_without_conversation);
74d2c95237e2 Add PurpleMessages
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
230
74d2c95237e2 Add PurpleMessages
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
231 g_test_add_func("/messages/properties", test_purple_messages_properties);
74d2c95237e2 Add PurpleMessages
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
232
74d2c95237e2 Add PurpleMessages
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
233 g_test_add_func("/messages/add/single", test_purple_messages_add_single);
74d2c95237e2 Add PurpleMessages
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
234 g_test_add_func("/messages/add/multiple",
74d2c95237e2 Add PurpleMessages
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
235 test_purple_messages_add_multiple);
74d2c95237e2 Add PurpleMessages
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
236
74d2c95237e2 Add PurpleMessages
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
237 return g_test_run();
74d2c95237e2 Add PurpleMessages
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
238 }

mercurial