libpurple/tests/test_protocol_file_transfer.c

Tue, 02 Jan 2024 00:53:02 -0600

author
Gary Kramlich <grim@reaperworld.com>
date
Tue, 02 Jan 2024 00:53:02 -0600
changeset 42563
25d1b656d792
parent 42375
8e61249e9b10
child 42576
ab1ca778ddb2
permissions
-rw-r--r--

Add default saved presences for available and offline

These will be necessary in the near future so that the account manager has a
known presence to work with when starting up.

Testing Done:
Ran the unit tests under valgrind.

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

42375
8e61249e9b10 Implement ProtocolFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
1 /*
8e61249e9b10 Implement ProtocolFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
2 * Purple - Internet Messaging Library
8e61249e9b10 Implement ProtocolFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
3 * Copyright (C) Pidgin Developers <devel@pidgin.im>
8e61249e9b10 Implement ProtocolFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
4 *
8e61249e9b10 Implement ProtocolFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
5 * Purple is the legal property of its developers, whose names are too numerous
8e61249e9b10 Implement ProtocolFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
6 * to list here. Please refer to the COPYRIGHT file distributed with this
8e61249e9b10 Implement ProtocolFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
7 * source distribution.
8e61249e9b10 Implement ProtocolFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
8 *
8e61249e9b10 Implement ProtocolFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
9 * This program is free software; you can redistribute it and/or modify
8e61249e9b10 Implement ProtocolFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
10 * it under the terms of the GNU General Public License as published by
8e61249e9b10 Implement ProtocolFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
11 * the Free Software Foundation; either version 2 of the License, or
8e61249e9b10 Implement ProtocolFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
12 * (at your option) any later version.
8e61249e9b10 Implement ProtocolFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
13 *
8e61249e9b10 Implement ProtocolFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
14 * This program is distributed in the hope that it will be useful,
8e61249e9b10 Implement ProtocolFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
15 * but WITHOUT ANY WARRANTY; without even the implied warranty of
8e61249e9b10 Implement ProtocolFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
16 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
8e61249e9b10 Implement ProtocolFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
17 * GNU General Public License for more details.
8e61249e9b10 Implement ProtocolFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
18 *
8e61249e9b10 Implement ProtocolFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
19 * You should have received a copy of the GNU General Public License
8e61249e9b10 Implement ProtocolFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
20 * along with this program; if not, see <https://www.gnu.org/licenses/>.
8e61249e9b10 Implement ProtocolFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
21 */
8e61249e9b10 Implement ProtocolFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
22
8e61249e9b10 Implement ProtocolFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
23 #include <glib.h>
8e61249e9b10 Implement ProtocolFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
24
8e61249e9b10 Implement ProtocolFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
25 #include <purple.h>
8e61249e9b10 Implement ProtocolFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
26
8e61249e9b10 Implement ProtocolFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
27 #include "test_ui.h"
8e61249e9b10 Implement ProtocolFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
28
8e61249e9b10 Implement ProtocolFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
29 /******************************************************************************
8e61249e9b10 Implement ProtocolFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
30 * Globals
8e61249e9b10 Implement ProtocolFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
31 *****************************************************************************/
8e61249e9b10 Implement ProtocolFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
32
8e61249e9b10 Implement ProtocolFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
33 /* Since we're using GTask to test asynchronous functions, we need to use a
8e61249e9b10 Implement ProtocolFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
34 * main loop.
8e61249e9b10 Implement ProtocolFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
35 */
8e61249e9b10 Implement ProtocolFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
36 static GMainLoop *loop = NULL;
8e61249e9b10 Implement ProtocolFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
37
8e61249e9b10 Implement ProtocolFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
38 #define TEST_PURPLE_PROTOCOL_FILE_TRANSFER_DOMAIN (g_quark_from_static_string("test-protocol-file-transfer"))
8e61249e9b10 Implement ProtocolFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
39
8e61249e9b10 Implement ProtocolFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
40 /******************************************************************************
8e61249e9b10 Implement ProtocolFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
41 * Helpers
8e61249e9b10 Implement ProtocolFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
42 *****************************************************************************/
8e61249e9b10 Implement ProtocolFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
43 static gboolean
8e61249e9b10 Implement ProtocolFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
44 test_purple_protocol_file_transfer_timeout_cb(gpointer data) {
8e61249e9b10 Implement ProtocolFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
45 g_main_loop_quit(data);
8e61249e9b10 Implement ProtocolFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
46
8e61249e9b10 Implement ProtocolFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
47 g_warning("timed out waiting for the callback function to be called");
8e61249e9b10 Implement ProtocolFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
48
8e61249e9b10 Implement ProtocolFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
49 return G_SOURCE_REMOVE;
8e61249e9b10 Implement ProtocolFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
50 }
8e61249e9b10 Implement ProtocolFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
51
8e61249e9b10 Implement ProtocolFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
52 /******************************************************************************
8e61249e9b10 Implement ProtocolFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
53 * TestProtocolFileTransferEmpty implementation
8e61249e9b10 Implement ProtocolFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
54 *****************************************************************************/
8e61249e9b10 Implement ProtocolFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
55 G_DECLARE_FINAL_TYPE(TestPurpleProtocolFileTransferEmpty,
8e61249e9b10 Implement ProtocolFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
56 test_purple_protocol_file_transfer_empty,
8e61249e9b10 Implement ProtocolFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
57 TEST_PURPLE, PROTOCOL_FILE_TRANSFER_EMPTY, PurpleProtocol)
8e61249e9b10 Implement ProtocolFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
58
8e61249e9b10 Implement ProtocolFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
59 struct _TestPurpleProtocolFileTransferEmpty {
8e61249e9b10 Implement ProtocolFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
60 PurpleProtocol parent;
8e61249e9b10 Implement ProtocolFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
61 };
8e61249e9b10 Implement ProtocolFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
62
8e61249e9b10 Implement ProtocolFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
63 static void
8e61249e9b10 Implement ProtocolFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
64 test_purple_protocol_file_transfer_empty_iface_init(G_GNUC_UNUSED PurpleProtocolFileTransferInterface *iface)
8e61249e9b10 Implement ProtocolFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
65 {
8e61249e9b10 Implement ProtocolFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
66 }
8e61249e9b10 Implement ProtocolFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
67
8e61249e9b10 Implement ProtocolFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
68 G_DEFINE_TYPE_WITH_CODE(TestPurpleProtocolFileTransferEmpty,
8e61249e9b10 Implement ProtocolFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
69 test_purple_protocol_file_transfer_empty,
8e61249e9b10 Implement ProtocolFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
70 PURPLE_TYPE_PROTOCOL,
8e61249e9b10 Implement ProtocolFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
71 G_IMPLEMENT_INTERFACE(PURPLE_TYPE_PROTOCOL_FILE_TRANSFER,
8e61249e9b10 Implement ProtocolFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
72 test_purple_protocol_file_transfer_empty_iface_init))
8e61249e9b10 Implement ProtocolFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
73
8e61249e9b10 Implement ProtocolFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
74 static void
8e61249e9b10 Implement ProtocolFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
75 test_purple_protocol_file_transfer_empty_init(G_GNUC_UNUSED TestPurpleProtocolFileTransferEmpty *empty)
8e61249e9b10 Implement ProtocolFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
76 {
8e61249e9b10 Implement ProtocolFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
77 }
8e61249e9b10 Implement ProtocolFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
78
8e61249e9b10 Implement ProtocolFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
79 static void
8e61249e9b10 Implement ProtocolFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
80 test_purple_protocol_file_transfer_empty_class_init(G_GNUC_UNUSED TestPurpleProtocolFileTransferEmptyClass *klass)
8e61249e9b10 Implement ProtocolFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
81 {
8e61249e9b10 Implement ProtocolFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
82 }
8e61249e9b10 Implement ProtocolFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
83
8e61249e9b10 Implement ProtocolFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
84 /******************************************************************************
8e61249e9b10 Implement ProtocolFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
85 * TestProtocolFileTransferEmpty Tests
8e61249e9b10 Implement ProtocolFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
86 *****************************************************************************/
8e61249e9b10 Implement ProtocolFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
87 static void
8e61249e9b10 Implement ProtocolFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
88 test_purple_protocol_file_transfer_empty_send_async(gconstpointer data) {
8e61249e9b10 Implement ProtocolFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
89 if(g_test_subprocess()) {
8e61249e9b10 Implement ProtocolFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
90 PurpleAccount *account = NULL;
8e61249e9b10 Implement ProtocolFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
91 PurpleContactInfo *remote = NULL;
8e61249e9b10 Implement ProtocolFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
92 PurpleFileTransfer *transfer = NULL;
8e61249e9b10 Implement ProtocolFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
93 PurpleProtocolFileTransfer *protocol_file_transfer = NULL;
8e61249e9b10 Implement ProtocolFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
94 GFile *local_file = NULL;
8e61249e9b10 Implement ProtocolFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
95
8e61249e9b10 Implement ProtocolFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
96 account = purple_account_new("test", "test");
8e61249e9b10 Implement ProtocolFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
97 remote = purple_contact_info_new(NULL);
8e61249e9b10 Implement ProtocolFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
98 local_file = g_file_new_for_path(data);
8e61249e9b10 Implement ProtocolFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
99
8e61249e9b10 Implement ProtocolFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
100 transfer = purple_file_transfer_new_send(account, remote, local_file);
8e61249e9b10 Implement ProtocolFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
101 g_clear_object(&account);
8e61249e9b10 Implement ProtocolFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
102 g_clear_object(&remote);
8e61249e9b10 Implement ProtocolFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
103 g_clear_object(&local_file);
8e61249e9b10 Implement ProtocolFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
104
8e61249e9b10 Implement ProtocolFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
105 protocol_file_transfer = g_object_new(test_purple_protocol_file_transfer_empty_get_type(),
8e61249e9b10 Implement ProtocolFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
106 NULL);
8e61249e9b10 Implement ProtocolFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
107
8e61249e9b10 Implement ProtocolFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
108 purple_protocol_file_transfer_send_async(protocol_file_transfer,
8e61249e9b10 Implement ProtocolFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
109 transfer, NULL, NULL);
8e61249e9b10 Implement ProtocolFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
110
8e61249e9b10 Implement ProtocolFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
111 g_clear_object(&transfer);
8e61249e9b10 Implement ProtocolFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
112 g_clear_object(&protocol_file_transfer);
8e61249e9b10 Implement ProtocolFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
113 }
8e61249e9b10 Implement ProtocolFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
114
8e61249e9b10 Implement ProtocolFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
115 g_test_trap_subprocess(NULL, 0, 0);
8e61249e9b10 Implement ProtocolFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
116 g_test_trap_assert_stderr("*Purple-WARNING*TestPurpleProtocolFileTransferEmpty*send_async*");
8e61249e9b10 Implement ProtocolFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
117 }
8e61249e9b10 Implement ProtocolFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
118
8e61249e9b10 Implement ProtocolFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
119 static void
8e61249e9b10 Implement ProtocolFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
120 test_purple_protocol_file_transfer_empty_send_finish(void) {
8e61249e9b10 Implement ProtocolFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
121 if(g_test_subprocess()) {
8e61249e9b10 Implement ProtocolFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
122 PurpleProtocolFileTransfer *protocol_file_transfer = NULL;
8e61249e9b10 Implement ProtocolFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
123 GError *error = NULL;
8e61249e9b10 Implement ProtocolFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
124 GTask *task = NULL;
8e61249e9b10 Implement ProtocolFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
125 gboolean result = FALSE;
8e61249e9b10 Implement ProtocolFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
126
8e61249e9b10 Implement ProtocolFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
127 protocol_file_transfer = g_object_new(test_purple_protocol_file_transfer_empty_get_type(),
8e61249e9b10 Implement ProtocolFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
128 NULL);
8e61249e9b10 Implement ProtocolFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
129
8e61249e9b10 Implement ProtocolFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
130 task = g_task_new(protocol_file_transfer, NULL, NULL, NULL);
8e61249e9b10 Implement ProtocolFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
131
8e61249e9b10 Implement ProtocolFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
132 result = purple_protocol_file_transfer_send_finish(protocol_file_transfer,
8e61249e9b10 Implement ProtocolFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
133 G_ASYNC_RESULT(task),
8e61249e9b10 Implement ProtocolFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
134 &error);
8e61249e9b10 Implement ProtocolFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
135 g_assert_no_error(error);
8e61249e9b10 Implement ProtocolFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
136 g_assert_false(result);
8e61249e9b10 Implement ProtocolFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
137
8e61249e9b10 Implement ProtocolFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
138 g_clear_object(&task);
8e61249e9b10 Implement ProtocolFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
139 g_clear_object(&protocol_file_transfer);
8e61249e9b10 Implement ProtocolFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
140 }
8e61249e9b10 Implement ProtocolFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
141
8e61249e9b10 Implement ProtocolFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
142 g_test_trap_subprocess(NULL, 0, 0);
8e61249e9b10 Implement ProtocolFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
143 g_test_trap_assert_stderr("*Purple-WARNING*TestPurpleProtocolFileTransferEmpty*send_finish*");
8e61249e9b10 Implement ProtocolFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
144 }
8e61249e9b10 Implement ProtocolFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
145
8e61249e9b10 Implement ProtocolFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
146 static void
8e61249e9b10 Implement ProtocolFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
147 test_purple_protocol_file_transfer_empty_receive_async(void) {
8e61249e9b10 Implement ProtocolFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
148 if(g_test_subprocess()) {
8e61249e9b10 Implement ProtocolFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
149 PurpleAccount *account = NULL;
8e61249e9b10 Implement ProtocolFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
150 PurpleContactInfo *remote = NULL;
8e61249e9b10 Implement ProtocolFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
151 PurpleFileTransfer *transfer = NULL;
8e61249e9b10 Implement ProtocolFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
152 PurpleProtocolFileTransfer *protocol_file_transfer = NULL;
8e61249e9b10 Implement ProtocolFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
153
8e61249e9b10 Implement ProtocolFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
154 account = purple_account_new("test", "test");
8e61249e9b10 Implement ProtocolFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
155 remote = purple_contact_info_new(NULL);
8e61249e9b10 Implement ProtocolFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
156
8e61249e9b10 Implement ProtocolFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
157 transfer = purple_file_transfer_new_receive(account, remote,
8e61249e9b10 Implement ProtocolFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
158 "file.png", 0);
8e61249e9b10 Implement ProtocolFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
159 g_clear_object(&account);
8e61249e9b10 Implement ProtocolFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
160 g_clear_object(&remote);
8e61249e9b10 Implement ProtocolFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
161
8e61249e9b10 Implement ProtocolFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
162 protocol_file_transfer = g_object_new(test_purple_protocol_file_transfer_empty_get_type(),
8e61249e9b10 Implement ProtocolFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
163 NULL);
8e61249e9b10 Implement ProtocolFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
164
8e61249e9b10 Implement ProtocolFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
165 purple_protocol_file_transfer_receive_async(protocol_file_transfer,
8e61249e9b10 Implement ProtocolFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
166 transfer, NULL, NULL);
8e61249e9b10 Implement ProtocolFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
167
8e61249e9b10 Implement ProtocolFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
168 g_clear_object(&transfer);
8e61249e9b10 Implement ProtocolFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
169 g_clear_object(&protocol_file_transfer);
8e61249e9b10 Implement ProtocolFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
170 }
8e61249e9b10 Implement ProtocolFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
171
8e61249e9b10 Implement ProtocolFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
172 g_test_trap_subprocess(NULL, 0, 0);
8e61249e9b10 Implement ProtocolFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
173 g_test_trap_assert_stderr("*Purple-WARNING*TestPurpleProtocolFileTransferEmpty*receive_async*");
8e61249e9b10 Implement ProtocolFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
174 }
8e61249e9b10 Implement ProtocolFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
175
8e61249e9b10 Implement ProtocolFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
176 static void
8e61249e9b10 Implement ProtocolFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
177 test_purple_protocol_file_transfer_empty_receive_finish(void) {
8e61249e9b10 Implement ProtocolFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
178 if(g_test_subprocess()) {
8e61249e9b10 Implement ProtocolFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
179 PurpleProtocolFileTransfer *protocol_file_transfer = NULL;
8e61249e9b10 Implement ProtocolFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
180 GError *error = NULL;
8e61249e9b10 Implement ProtocolFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
181 GTask *task = NULL;
8e61249e9b10 Implement ProtocolFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
182 gboolean result = FALSE;
8e61249e9b10 Implement ProtocolFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
183
8e61249e9b10 Implement ProtocolFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
184 protocol_file_transfer = g_object_new(test_purple_protocol_file_transfer_empty_get_type(),
8e61249e9b10 Implement ProtocolFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
185 NULL);
8e61249e9b10 Implement ProtocolFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
186
8e61249e9b10 Implement ProtocolFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
187 task = g_task_new(protocol_file_transfer, NULL, NULL, NULL);
8e61249e9b10 Implement ProtocolFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
188
8e61249e9b10 Implement ProtocolFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
189 result = purple_protocol_file_transfer_receive_finish(protocol_file_transfer,
8e61249e9b10 Implement ProtocolFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
190 G_ASYNC_RESULT(task),
8e61249e9b10 Implement ProtocolFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
191 &error);
8e61249e9b10 Implement ProtocolFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
192 g_assert_no_error(error);
8e61249e9b10 Implement ProtocolFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
193 g_assert_false(result);
8e61249e9b10 Implement ProtocolFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
194
8e61249e9b10 Implement ProtocolFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
195 g_clear_object(&task);
8e61249e9b10 Implement ProtocolFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
196 g_clear_object(&protocol_file_transfer);
8e61249e9b10 Implement ProtocolFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
197 }
8e61249e9b10 Implement ProtocolFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
198
8e61249e9b10 Implement ProtocolFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
199 g_test_trap_subprocess(NULL, 0, 0);
8e61249e9b10 Implement ProtocolFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
200 g_test_trap_assert_stderr("*Purple-WARNING*TestPurpleProtocolFileTransferEmpty*receive_finish*");
8e61249e9b10 Implement ProtocolFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
201 }
8e61249e9b10 Implement ProtocolFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
202
8e61249e9b10 Implement ProtocolFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
203 /******************************************************************************
8e61249e9b10 Implement ProtocolFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
204 * TestProtocolFileTransfer implementation
8e61249e9b10 Implement ProtocolFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
205 *****************************************************************************/
8e61249e9b10 Implement ProtocolFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
206 G_DECLARE_FINAL_TYPE(TestPurpleProtocolFileTransfer,
8e61249e9b10 Implement ProtocolFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
207 test_purple_protocol_file_transfer, TEST_PURPLE,
8e61249e9b10 Implement ProtocolFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
208 PROTOCOL_FILE_TRANSFER, PurpleProtocol)
8e61249e9b10 Implement ProtocolFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
209
8e61249e9b10 Implement ProtocolFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
210 struct _TestPurpleProtocolFileTransfer {
8e61249e9b10 Implement ProtocolFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
211 PurpleProtocol parent;
8e61249e9b10 Implement ProtocolFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
212
8e61249e9b10 Implement ProtocolFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
213 gboolean should_error;
8e61249e9b10 Implement ProtocolFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
214
8e61249e9b10 Implement ProtocolFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
215 guint send_async;
8e61249e9b10 Implement ProtocolFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
216 guint send_finish;
8e61249e9b10 Implement ProtocolFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
217 guint receive_async;
8e61249e9b10 Implement ProtocolFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
218 guint receive_finish;
8e61249e9b10 Implement ProtocolFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
219 };
8e61249e9b10 Implement ProtocolFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
220
8e61249e9b10 Implement ProtocolFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
221 static void
8e61249e9b10 Implement ProtocolFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
222 test_purple_protocol_file_transfer_send_async(PurpleProtocolFileTransfer *r,
8e61249e9b10 Implement ProtocolFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
223 PurpleFileTransfer *transfer,
8e61249e9b10 Implement ProtocolFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
224 GAsyncReadyCallback callback,
8e61249e9b10 Implement ProtocolFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
225 gpointer data)
8e61249e9b10 Implement ProtocolFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
226 {
8e61249e9b10 Implement ProtocolFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
227 TestPurpleProtocolFileTransfer *protocol_file_transfer = NULL;
8e61249e9b10 Implement ProtocolFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
228 GCancellable *cancellable = NULL;
8e61249e9b10 Implement ProtocolFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
229 GTask *task = NULL;
8e61249e9b10 Implement ProtocolFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
230
8e61249e9b10 Implement ProtocolFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
231 protocol_file_transfer = TEST_PURPLE_PROTOCOL_FILE_TRANSFER(r);
8e61249e9b10 Implement ProtocolFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
232 protocol_file_transfer->send_async += 1;
8e61249e9b10 Implement ProtocolFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
233
8e61249e9b10 Implement ProtocolFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
234 cancellable = purple_file_transfer_get_cancellable(transfer);
8e61249e9b10 Implement ProtocolFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
235
8e61249e9b10 Implement ProtocolFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
236 task = g_task_new(r, cancellable, callback, data);
8e61249e9b10 Implement ProtocolFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
237 if(protocol_file_transfer->should_error) {
8e61249e9b10 Implement ProtocolFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
238 GError *error = g_error_new_literal(TEST_PURPLE_PROTOCOL_FILE_TRANSFER_DOMAIN,
8e61249e9b10 Implement ProtocolFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
239 0, "error");
8e61249e9b10 Implement ProtocolFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
240 g_task_return_error(task, error);
8e61249e9b10 Implement ProtocolFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
241 } else {
8e61249e9b10 Implement ProtocolFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
242 g_task_return_boolean(task, TRUE);
8e61249e9b10 Implement ProtocolFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
243 }
8e61249e9b10 Implement ProtocolFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
244
8e61249e9b10 Implement ProtocolFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
245 g_clear_object(&task);
8e61249e9b10 Implement ProtocolFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
246 }
8e61249e9b10 Implement ProtocolFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
247
8e61249e9b10 Implement ProtocolFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
248 static gboolean
8e61249e9b10 Implement ProtocolFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
249 test_purple_protocol_file_transfer_send_finish(PurpleProtocolFileTransfer *r,
8e61249e9b10 Implement ProtocolFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
250 GAsyncResult *result,
8e61249e9b10 Implement ProtocolFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
251 GError **error)
8e61249e9b10 Implement ProtocolFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
252 {
8e61249e9b10 Implement ProtocolFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
253 TestPurpleProtocolFileTransfer *protocol_file_transfer = NULL;
8e61249e9b10 Implement ProtocolFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
254
8e61249e9b10 Implement ProtocolFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
255 protocol_file_transfer = TEST_PURPLE_PROTOCOL_FILE_TRANSFER(r);
8e61249e9b10 Implement ProtocolFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
256 protocol_file_transfer->send_finish += 1;
8e61249e9b10 Implement ProtocolFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
257
8e61249e9b10 Implement ProtocolFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
258 return g_task_propagate_boolean(G_TASK(result), error);
8e61249e9b10 Implement ProtocolFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
259 }
8e61249e9b10 Implement ProtocolFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
260
8e61249e9b10 Implement ProtocolFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
261 static void
8e61249e9b10 Implement ProtocolFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
262 test_purple_protocol_file_transfer_receive_async(PurpleProtocolFileTransfer *r,
8e61249e9b10 Implement ProtocolFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
263 PurpleFileTransfer *transfer,
8e61249e9b10 Implement ProtocolFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
264 GAsyncReadyCallback callback,
8e61249e9b10 Implement ProtocolFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
265 gpointer data)
8e61249e9b10 Implement ProtocolFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
266 {
8e61249e9b10 Implement ProtocolFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
267 TestPurpleProtocolFileTransfer *protocol_file_transfer = NULL;
8e61249e9b10 Implement ProtocolFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
268 GCancellable *cancellable = NULL;
8e61249e9b10 Implement ProtocolFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
269 GTask *task = NULL;
8e61249e9b10 Implement ProtocolFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
270
8e61249e9b10 Implement ProtocolFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
271 protocol_file_transfer = TEST_PURPLE_PROTOCOL_FILE_TRANSFER(r);
8e61249e9b10 Implement ProtocolFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
272 protocol_file_transfer->receive_async += 1;
8e61249e9b10 Implement ProtocolFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
273
8e61249e9b10 Implement ProtocolFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
274 cancellable = purple_file_transfer_get_cancellable(transfer);
8e61249e9b10 Implement ProtocolFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
275
8e61249e9b10 Implement ProtocolFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
276 task = g_task_new(r, cancellable, callback, data);
8e61249e9b10 Implement ProtocolFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
277 if(protocol_file_transfer->should_error) {
8e61249e9b10 Implement ProtocolFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
278 GError *error = g_error_new_literal(TEST_PURPLE_PROTOCOL_FILE_TRANSFER_DOMAIN,
8e61249e9b10 Implement ProtocolFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
279 0, "error");
8e61249e9b10 Implement ProtocolFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
280 g_task_return_error(task, error);
8e61249e9b10 Implement ProtocolFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
281 } else {
8e61249e9b10 Implement ProtocolFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
282 g_task_return_boolean(task, TRUE);
8e61249e9b10 Implement ProtocolFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
283 }
8e61249e9b10 Implement ProtocolFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
284
8e61249e9b10 Implement ProtocolFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
285 g_clear_object(&task);
8e61249e9b10 Implement ProtocolFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
286 }
8e61249e9b10 Implement ProtocolFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
287
8e61249e9b10 Implement ProtocolFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
288 static gboolean
8e61249e9b10 Implement ProtocolFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
289 test_purple_protocol_file_transfer_receive_finish(PurpleProtocolFileTransfer *r,
8e61249e9b10 Implement ProtocolFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
290 GAsyncResult *result,
8e61249e9b10 Implement ProtocolFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
291 GError **error)
8e61249e9b10 Implement ProtocolFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
292 {
8e61249e9b10 Implement ProtocolFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
293 TestPurpleProtocolFileTransfer *protocol_file_transfer = NULL;
8e61249e9b10 Implement ProtocolFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
294
8e61249e9b10 Implement ProtocolFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
295 protocol_file_transfer = TEST_PURPLE_PROTOCOL_FILE_TRANSFER(r);
8e61249e9b10 Implement ProtocolFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
296 protocol_file_transfer->receive_finish += 1;
8e61249e9b10 Implement ProtocolFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
297
8e61249e9b10 Implement ProtocolFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
298 return g_task_propagate_boolean(G_TASK(result), error);
8e61249e9b10 Implement ProtocolFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
299 }
8e61249e9b10 Implement ProtocolFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
300
8e61249e9b10 Implement ProtocolFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
301 static void
8e61249e9b10 Implement ProtocolFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
302 test_purple_protocol_file_transfer_iface_init(PurpleProtocolFileTransferInterface *iface) {
8e61249e9b10 Implement ProtocolFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
303 iface->send_async = test_purple_protocol_file_transfer_send_async;
8e61249e9b10 Implement ProtocolFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
304 iface->send_finish = test_purple_protocol_file_transfer_send_finish;
8e61249e9b10 Implement ProtocolFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
305 iface->receive_async = test_purple_protocol_file_transfer_receive_async;
8e61249e9b10 Implement ProtocolFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
306 iface->receive_finish = test_purple_protocol_file_transfer_receive_finish;
8e61249e9b10 Implement ProtocolFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
307 }
8e61249e9b10 Implement ProtocolFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
308
8e61249e9b10 Implement ProtocolFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
309 G_DEFINE_TYPE_WITH_CODE(TestPurpleProtocolFileTransfer, test_purple_protocol_file_transfer,
8e61249e9b10 Implement ProtocolFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
310 PURPLE_TYPE_PROTOCOL,
8e61249e9b10 Implement ProtocolFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
311 G_IMPLEMENT_INTERFACE(PURPLE_TYPE_PROTOCOL_FILE_TRANSFER,
8e61249e9b10 Implement ProtocolFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
312 test_purple_protocol_file_transfer_iface_init))
8e61249e9b10 Implement ProtocolFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
313
8e61249e9b10 Implement ProtocolFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
314 static void
8e61249e9b10 Implement ProtocolFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
315 test_purple_protocol_file_transfer_init(TestPurpleProtocolFileTransfer *protocol_file_transfer)
8e61249e9b10 Implement ProtocolFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
316 {
8e61249e9b10 Implement ProtocolFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
317 protocol_file_transfer->send_async = 0;
8e61249e9b10 Implement ProtocolFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
318 protocol_file_transfer->send_finish = 0;
8e61249e9b10 Implement ProtocolFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
319 protocol_file_transfer->receive_async = 0;
8e61249e9b10 Implement ProtocolFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
320 protocol_file_transfer->receive_finish = 0;
8e61249e9b10 Implement ProtocolFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
321 }
8e61249e9b10 Implement ProtocolFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
322
8e61249e9b10 Implement ProtocolFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
323 static void
8e61249e9b10 Implement ProtocolFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
324 test_purple_protocol_file_transfer_class_init(G_GNUC_UNUSED TestPurpleProtocolFileTransferClass *klass)
8e61249e9b10 Implement ProtocolFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
325 {
8e61249e9b10 Implement ProtocolFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
326 }
8e61249e9b10 Implement ProtocolFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
327
8e61249e9b10 Implement ProtocolFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
328 /******************************************************************************
8e61249e9b10 Implement ProtocolFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
329 * TestProtocolFileTransfer send tests
8e61249e9b10 Implement ProtocolFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
330 *****************************************************************************/
8e61249e9b10 Implement ProtocolFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
331 static void
8e61249e9b10 Implement ProtocolFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
332 test_purple_protocol_file_transfer_send_cb(GObject *obj, GAsyncResult *res,
8e61249e9b10 Implement ProtocolFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
333 gpointer data)
8e61249e9b10 Implement ProtocolFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
334 {
8e61249e9b10 Implement ProtocolFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
335 TestPurpleProtocolFileTransfer *test_protocol_file_transfer = NULL;
8e61249e9b10 Implement ProtocolFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
336 PurpleFileTransfer *transfer = data;
8e61249e9b10 Implement ProtocolFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
337 PurpleProtocolFileTransfer *protocol_file_transfer = NULL;
8e61249e9b10 Implement ProtocolFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
338 GError *error = NULL;
8e61249e9b10 Implement ProtocolFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
339 gboolean result = FALSE;
8e61249e9b10 Implement ProtocolFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
340
8e61249e9b10 Implement ProtocolFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
341 protocol_file_transfer = PURPLE_PROTOCOL_FILE_TRANSFER(obj);
8e61249e9b10 Implement ProtocolFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
342 test_protocol_file_transfer = TEST_PURPLE_PROTOCOL_FILE_TRANSFER(obj);
8e61249e9b10 Implement ProtocolFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
343
8e61249e9b10 Implement ProtocolFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
344 result = purple_protocol_file_transfer_send_finish(protocol_file_transfer,
8e61249e9b10 Implement ProtocolFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
345 res, &error);
8e61249e9b10 Implement ProtocolFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
346
8e61249e9b10 Implement ProtocolFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
347 if(test_protocol_file_transfer->should_error) {
8e61249e9b10 Implement ProtocolFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
348 g_assert_error(error, TEST_PURPLE_PROTOCOL_FILE_TRANSFER_DOMAIN, 0);
8e61249e9b10 Implement ProtocolFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
349 g_clear_error(&error);
8e61249e9b10 Implement ProtocolFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
350 g_assert_false(result);
8e61249e9b10 Implement ProtocolFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
351 } else {
8e61249e9b10 Implement ProtocolFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
352 g_assert_no_error(error);
8e61249e9b10 Implement ProtocolFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
353 g_assert_true(result);
8e61249e9b10 Implement ProtocolFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
354 }
8e61249e9b10 Implement ProtocolFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
355
8e61249e9b10 Implement ProtocolFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
356 g_clear_object(&transfer);
8e61249e9b10 Implement ProtocolFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
357
8e61249e9b10 Implement ProtocolFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
358 g_main_loop_quit(loop);
8e61249e9b10 Implement ProtocolFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
359 }
8e61249e9b10 Implement ProtocolFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
360
8e61249e9b10 Implement ProtocolFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
361 static gboolean
8e61249e9b10 Implement ProtocolFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
362 test_purple_protocol_file_transfer_send_idle(gpointer data) {
8e61249e9b10 Implement ProtocolFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
363 PurpleAccount *account = NULL;
8e61249e9b10 Implement ProtocolFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
364 PurpleContactInfo *remote = NULL;
8e61249e9b10 Implement ProtocolFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
365 PurpleFileTransfer *transfer = NULL;
8e61249e9b10 Implement ProtocolFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
366 PurpleProtocolFileTransfer *protocol_file_transfer = data;
8e61249e9b10 Implement ProtocolFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
367 GFile *local_file = NULL;
8e61249e9b10 Implement ProtocolFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
368 const char *filename = NULL;
8e61249e9b10 Implement ProtocolFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
369
8e61249e9b10 Implement ProtocolFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
370 filename = g_object_get_data(G_OBJECT(protocol_file_transfer), "filename");
8e61249e9b10 Implement ProtocolFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
371
8e61249e9b10 Implement ProtocolFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
372 account = purple_account_new("test", "test");
8e61249e9b10 Implement ProtocolFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
373 remote = purple_contact_info_new(NULL);
8e61249e9b10 Implement ProtocolFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
374 local_file = g_file_new_for_path(filename);
8e61249e9b10 Implement ProtocolFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
375
8e61249e9b10 Implement ProtocolFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
376 transfer = purple_file_transfer_new_send(account, remote, local_file);
8e61249e9b10 Implement ProtocolFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
377 g_clear_object(&account);
8e61249e9b10 Implement ProtocolFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
378 g_clear_object(&remote);
8e61249e9b10 Implement ProtocolFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
379 g_clear_object(&local_file);
8e61249e9b10 Implement ProtocolFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
380
8e61249e9b10 Implement ProtocolFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
381 purple_protocol_file_transfer_send_async(protocol_file_transfer, transfer,
8e61249e9b10 Implement ProtocolFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
382 test_purple_protocol_file_transfer_send_cb,
8e61249e9b10 Implement ProtocolFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
383 transfer);
8e61249e9b10 Implement ProtocolFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
384
8e61249e9b10 Implement ProtocolFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
385 return G_SOURCE_REMOVE;
8e61249e9b10 Implement ProtocolFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
386 }
8e61249e9b10 Implement ProtocolFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
387
8e61249e9b10 Implement ProtocolFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
388 static void
8e61249e9b10 Implement ProtocolFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
389 test_purple_protocol_file_transfer_send_normal(gconstpointer data) {
8e61249e9b10 Implement ProtocolFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
390 TestPurpleProtocolFileTransfer *protocol_file_transfer = NULL;
8e61249e9b10 Implement ProtocolFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
391 const char *filename = data;
8e61249e9b10 Implement ProtocolFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
392
8e61249e9b10 Implement ProtocolFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
393 protocol_file_transfer = g_object_new(test_purple_protocol_file_transfer_get_type(),
8e61249e9b10 Implement ProtocolFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
394 NULL);
8e61249e9b10 Implement ProtocolFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
395 g_object_set_data(G_OBJECT(protocol_file_transfer), "filename",
8e61249e9b10 Implement ProtocolFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
396 (gpointer)filename);
8e61249e9b10 Implement ProtocolFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
397
8e61249e9b10 Implement ProtocolFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
398 g_idle_add(test_purple_protocol_file_transfer_send_idle,
8e61249e9b10 Implement ProtocolFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
399 protocol_file_transfer);
8e61249e9b10 Implement ProtocolFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
400 g_timeout_add_seconds(10, test_purple_protocol_file_transfer_timeout_cb, loop);
8e61249e9b10 Implement ProtocolFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
401
8e61249e9b10 Implement ProtocolFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
402 g_main_loop_run(loop);
8e61249e9b10 Implement ProtocolFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
403
8e61249e9b10 Implement ProtocolFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
404 g_assert_cmpuint(protocol_file_transfer->send_async, ==, 1);
8e61249e9b10 Implement ProtocolFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
405 g_assert_cmpuint(protocol_file_transfer->send_finish, ==, 1);
8e61249e9b10 Implement ProtocolFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
406
8e61249e9b10 Implement ProtocolFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
407 g_clear_object(&protocol_file_transfer);
8e61249e9b10 Implement ProtocolFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
408 }
8e61249e9b10 Implement ProtocolFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
409
8e61249e9b10 Implement ProtocolFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
410 static void
8e61249e9b10 Implement ProtocolFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
411 test_purple_protocol_file_transfer_send_error_normal(gconstpointer data) {
8e61249e9b10 Implement ProtocolFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
412 TestPurpleProtocolFileTransfer *protocol_file_transfer = NULL;
8e61249e9b10 Implement ProtocolFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
413 const char *filename = data;
8e61249e9b10 Implement ProtocolFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
414
8e61249e9b10 Implement ProtocolFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
415 protocol_file_transfer = g_object_new(test_purple_protocol_file_transfer_get_type(),
8e61249e9b10 Implement ProtocolFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
416 NULL);
8e61249e9b10 Implement ProtocolFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
417 g_object_set_data(G_OBJECT(protocol_file_transfer), "filename",
8e61249e9b10 Implement ProtocolFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
418 (gpointer)filename);
8e61249e9b10 Implement ProtocolFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
419 protocol_file_transfer->should_error = TRUE;
8e61249e9b10 Implement ProtocolFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
420
8e61249e9b10 Implement ProtocolFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
421 g_idle_add(test_purple_protocol_file_transfer_send_idle,
8e61249e9b10 Implement ProtocolFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
422 protocol_file_transfer);
8e61249e9b10 Implement ProtocolFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
423 g_timeout_add_seconds(10, test_purple_protocol_file_transfer_timeout_cb, loop);
8e61249e9b10 Implement ProtocolFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
424
8e61249e9b10 Implement ProtocolFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
425 g_main_loop_run(loop);
8e61249e9b10 Implement ProtocolFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
426
8e61249e9b10 Implement ProtocolFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
427 g_assert_cmpuint(protocol_file_transfer->send_async, ==, 1);
8e61249e9b10 Implement ProtocolFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
428 g_assert_cmpuint(protocol_file_transfer->send_finish, ==, 1);
8e61249e9b10 Implement ProtocolFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
429
8e61249e9b10 Implement ProtocolFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
430 g_clear_object(&protocol_file_transfer);
8e61249e9b10 Implement ProtocolFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
431 }
8e61249e9b10 Implement ProtocolFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
432
8e61249e9b10 Implement ProtocolFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
433 /******************************************************************************
8e61249e9b10 Implement ProtocolFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
434 * TestProtocolFileTransfer receive tests
8e61249e9b10 Implement ProtocolFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
435 *****************************************************************************/
8e61249e9b10 Implement ProtocolFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
436 static void
8e61249e9b10 Implement ProtocolFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
437 test_purple_protocol_file_transfer_receive_cb(GObject *obj, GAsyncResult *res,
8e61249e9b10 Implement ProtocolFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
438 gpointer data)
8e61249e9b10 Implement ProtocolFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
439 {
8e61249e9b10 Implement ProtocolFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
440 TestPurpleProtocolFileTransfer *test_protocol_file_transfer = NULL;
8e61249e9b10 Implement ProtocolFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
441 PurpleFileTransfer *transfer = data;
8e61249e9b10 Implement ProtocolFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
442 PurpleProtocolFileTransfer *protocol_file_transfer = NULL;
8e61249e9b10 Implement ProtocolFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
443 GError *error = NULL;
8e61249e9b10 Implement ProtocolFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
444 gboolean result = FALSE;
8e61249e9b10 Implement ProtocolFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
445
8e61249e9b10 Implement ProtocolFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
446 protocol_file_transfer = PURPLE_PROTOCOL_FILE_TRANSFER(obj);
8e61249e9b10 Implement ProtocolFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
447 test_protocol_file_transfer = TEST_PURPLE_PROTOCOL_FILE_TRANSFER(obj);
8e61249e9b10 Implement ProtocolFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
448
8e61249e9b10 Implement ProtocolFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
449 result = purple_protocol_file_transfer_receive_finish(protocol_file_transfer,
8e61249e9b10 Implement ProtocolFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
450 res, &error);
8e61249e9b10 Implement ProtocolFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
451
8e61249e9b10 Implement ProtocolFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
452 if(test_protocol_file_transfer->should_error) {
8e61249e9b10 Implement ProtocolFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
453 g_assert_error(error, TEST_PURPLE_PROTOCOL_FILE_TRANSFER_DOMAIN, 0);
8e61249e9b10 Implement ProtocolFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
454 g_clear_error(&error);
8e61249e9b10 Implement ProtocolFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
455 g_assert_false(result);
8e61249e9b10 Implement ProtocolFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
456 } else {
8e61249e9b10 Implement ProtocolFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
457 g_assert_no_error(error);
8e61249e9b10 Implement ProtocolFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
458 g_assert_true(result);
8e61249e9b10 Implement ProtocolFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
459 }
8e61249e9b10 Implement ProtocolFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
460
8e61249e9b10 Implement ProtocolFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
461 g_clear_object(&transfer);
8e61249e9b10 Implement ProtocolFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
462
8e61249e9b10 Implement ProtocolFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
463 g_main_loop_quit(loop);
8e61249e9b10 Implement ProtocolFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
464 }
8e61249e9b10 Implement ProtocolFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
465
8e61249e9b10 Implement ProtocolFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
466 static gboolean
8e61249e9b10 Implement ProtocolFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
467 test_purple_protocol_file_transfer_receive_idle(gpointer data) {
8e61249e9b10 Implement ProtocolFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
468 PurpleAccount *account = NULL;
8e61249e9b10 Implement ProtocolFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
469 PurpleContactInfo *remote = NULL;
8e61249e9b10 Implement ProtocolFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
470 PurpleFileTransfer *transfer = NULL;
8e61249e9b10 Implement ProtocolFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
471 PurpleProtocolFileTransfer *protocol_file_transfer = data;
8e61249e9b10 Implement ProtocolFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
472
8e61249e9b10 Implement ProtocolFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
473 account = purple_account_new("test", "test");
8e61249e9b10 Implement ProtocolFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
474 remote = purple_contact_info_new(NULL);
8e61249e9b10 Implement ProtocolFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
475
8e61249e9b10 Implement ProtocolFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
476 transfer = purple_file_transfer_new_receive(account, remote, "file.png",
8e61249e9b10 Implement ProtocolFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
477 0);
8e61249e9b10 Implement ProtocolFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
478 g_clear_object(&account);
8e61249e9b10 Implement ProtocolFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
479 g_clear_object(&remote);
8e61249e9b10 Implement ProtocolFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
480
8e61249e9b10 Implement ProtocolFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
481 purple_protocol_file_transfer_receive_async(protocol_file_transfer, transfer,
8e61249e9b10 Implement ProtocolFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
482 test_purple_protocol_file_transfer_receive_cb,
8e61249e9b10 Implement ProtocolFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
483 transfer);
8e61249e9b10 Implement ProtocolFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
484
8e61249e9b10 Implement ProtocolFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
485 return G_SOURCE_REMOVE;
8e61249e9b10 Implement ProtocolFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
486 }
8e61249e9b10 Implement ProtocolFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
487
8e61249e9b10 Implement ProtocolFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
488 static void
8e61249e9b10 Implement ProtocolFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
489 test_purple_protocol_file_transfer_receive_normal(void) {
8e61249e9b10 Implement ProtocolFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
490 TestPurpleProtocolFileTransfer *protocol_file_transfer = NULL;
8e61249e9b10 Implement ProtocolFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
491
8e61249e9b10 Implement ProtocolFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
492 protocol_file_transfer = g_object_new(test_purple_protocol_file_transfer_get_type(),
8e61249e9b10 Implement ProtocolFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
493 NULL);
8e61249e9b10 Implement ProtocolFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
494
8e61249e9b10 Implement ProtocolFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
495 g_idle_add(test_purple_protocol_file_transfer_receive_idle,
8e61249e9b10 Implement ProtocolFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
496 protocol_file_transfer);
8e61249e9b10 Implement ProtocolFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
497 g_timeout_add_seconds(10, test_purple_protocol_file_transfer_timeout_cb,
8e61249e9b10 Implement ProtocolFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
498 loop);
8e61249e9b10 Implement ProtocolFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
499
8e61249e9b10 Implement ProtocolFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
500 g_main_loop_run(loop);
8e61249e9b10 Implement ProtocolFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
501
8e61249e9b10 Implement ProtocolFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
502 g_assert_cmpuint(protocol_file_transfer->receive_async, ==, 1);
8e61249e9b10 Implement ProtocolFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
503 g_assert_cmpuint(protocol_file_transfer->receive_finish, ==, 1);
8e61249e9b10 Implement ProtocolFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
504
8e61249e9b10 Implement ProtocolFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
505 g_clear_object(&protocol_file_transfer);
8e61249e9b10 Implement ProtocolFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
506 }
8e61249e9b10 Implement ProtocolFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
507
8e61249e9b10 Implement ProtocolFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
508 static void
8e61249e9b10 Implement ProtocolFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
509 test_purple_protocol_file_transfer_receive_error_normal(void) {
8e61249e9b10 Implement ProtocolFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
510 TestPurpleProtocolFileTransfer *protocol_file_transfer = NULL;
8e61249e9b10 Implement ProtocolFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
511
8e61249e9b10 Implement ProtocolFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
512 protocol_file_transfer = g_object_new(test_purple_protocol_file_transfer_get_type(),
8e61249e9b10 Implement ProtocolFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
513 NULL);
8e61249e9b10 Implement ProtocolFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
514 protocol_file_transfer->should_error = TRUE;
8e61249e9b10 Implement ProtocolFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
515
8e61249e9b10 Implement ProtocolFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
516 g_idle_add(test_purple_protocol_file_transfer_receive_idle,
8e61249e9b10 Implement ProtocolFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
517 protocol_file_transfer);
8e61249e9b10 Implement ProtocolFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
518 g_timeout_add_seconds(10, test_purple_protocol_file_transfer_timeout_cb,
8e61249e9b10 Implement ProtocolFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
519 loop);
8e61249e9b10 Implement ProtocolFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
520
8e61249e9b10 Implement ProtocolFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
521 g_main_loop_run(loop);
8e61249e9b10 Implement ProtocolFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
522
8e61249e9b10 Implement ProtocolFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
523 g_assert_cmpuint(protocol_file_transfer->receive_async, ==, 1);
8e61249e9b10 Implement ProtocolFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
524 g_assert_cmpuint(protocol_file_transfer->receive_finish, ==, 1);
8e61249e9b10 Implement ProtocolFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
525
8e61249e9b10 Implement ProtocolFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
526 g_clear_object(&protocol_file_transfer);
8e61249e9b10 Implement ProtocolFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
527 }
8e61249e9b10 Implement ProtocolFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
528
8e61249e9b10 Implement ProtocolFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
529 /******************************************************************************
8e61249e9b10 Implement ProtocolFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
530 * Main
8e61249e9b10 Implement ProtocolFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
531 *****************************************************************************/
8e61249e9b10 Implement ProtocolFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
532 gint
8e61249e9b10 Implement ProtocolFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
533 main(int argc, char **argv) {
8e61249e9b10 Implement ProtocolFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
534 int ret = 0;
8e61249e9b10 Implement ProtocolFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
535
8e61249e9b10 Implement ProtocolFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
536 g_test_init(&argc, &argv, NULL);
8e61249e9b10 Implement ProtocolFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
537
8e61249e9b10 Implement ProtocolFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
538 test_ui_purple_init();
8e61249e9b10 Implement ProtocolFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
539
8e61249e9b10 Implement ProtocolFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
540 loop = g_main_loop_new(NULL, FALSE);
8e61249e9b10 Implement ProtocolFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
541
8e61249e9b10 Implement ProtocolFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
542 g_test_add_data_func("/protocol-contacts/empty/send-async", argv[0],
8e61249e9b10 Implement ProtocolFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
543 test_purple_protocol_file_transfer_empty_send_async);
8e61249e9b10 Implement ProtocolFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
544 g_test_add_func("/protocol-contacts/empty/send-finish",
8e61249e9b10 Implement ProtocolFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
545 test_purple_protocol_file_transfer_empty_send_finish);
8e61249e9b10 Implement ProtocolFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
546 g_test_add_func("/protocol-contacts/empty/receive-async",
8e61249e9b10 Implement ProtocolFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
547 test_purple_protocol_file_transfer_empty_receive_async);
8e61249e9b10 Implement ProtocolFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
548 g_test_add_func("/protocol-contacts/empty/receive-finish",
8e61249e9b10 Implement ProtocolFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
549 test_purple_protocol_file_transfer_empty_receive_finish);
8e61249e9b10 Implement ProtocolFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
550
8e61249e9b10 Implement ProtocolFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
551 g_test_add_data_func("/protocol-contacts/normal/send-normal", argv[0],
8e61249e9b10 Implement ProtocolFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
552 test_purple_protocol_file_transfer_send_normal);
8e61249e9b10 Implement ProtocolFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
553 g_test_add_data_func("/protocol-contacts/normal/send-error", argv[0],
8e61249e9b10 Implement ProtocolFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
554 test_purple_protocol_file_transfer_send_error_normal);
8e61249e9b10 Implement ProtocolFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
555 g_test_add_func("/protocol-contacts/normal/receive-normal",
8e61249e9b10 Implement ProtocolFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
556 test_purple_protocol_file_transfer_receive_normal);
8e61249e9b10 Implement ProtocolFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
557 g_test_add_func("/protocol-contacts/normal/receive-error",
8e61249e9b10 Implement ProtocolFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
558 test_purple_protocol_file_transfer_receive_error_normal);
8e61249e9b10 Implement ProtocolFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
559
8e61249e9b10 Implement ProtocolFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
560 ret = g_test_run();
8e61249e9b10 Implement ProtocolFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
561
8e61249e9b10 Implement ProtocolFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
562 g_main_loop_unref(loop);
8e61249e9b10 Implement ProtocolFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
563
8e61249e9b10 Implement ProtocolFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
564 test_ui_purple_uninit();
8e61249e9b10 Implement ProtocolFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
565
8e61249e9b10 Implement ProtocolFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
566 return ret;
8e61249e9b10 Implement ProtocolFileTransfer
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
567 }

mercurial