summaryrefslogtreecommitdiff
path: root/tests/resource-test.c
diff options
context:
space:
mode:
Diffstat (limited to 'tests/resource-test.c')
-rw-r--r--tests/resource-test.c163
1 files changed, 63 insertions, 100 deletions
diff --git a/tests/resource-test.c b/tests/resource-test.c
index 21e2f98e..e41c6032 100644
--- a/tests/resource-test.c
+++ b/tests/resource-test.c
@@ -39,19 +39,6 @@ register_gresource (void)
g_resource_unref (resource);
}
-static void
-check_results (GString *body)
-{
- if (body->len != index_buffer->length) {
- debug_printf (1, " body length mismatch: expected %d, got %d\n",
- (int)index_buffer->length, (int)body->len);
- errors++;
- } else if (memcmp (body->str, index_buffer->data, body->len) != 0) {
- debug_printf (1, " body data mismatch\n");
- errors++;
- }
-}
-
typedef struct {
GString *body;
char buffer[1024];
@@ -65,11 +52,8 @@ stream_closed (GObject *source, GAsyncResult *result, gpointer user_data)
AsyncRequestData *data = user_data;
GError *error = NULL;
- if (!g_input_stream_close_finish (in, result, &error)) {
- debug_printf (1, " close failed: %s\n", error->message);
- g_error_free (error);
- errors++;
- }
+ g_input_stream_close_finish (in, result, &error);
+ g_assert_no_error (error);
g_main_loop_quit (data->loop);
g_object_unref (in);
}
@@ -84,12 +68,10 @@ test_read_ready (GObject *source, GAsyncResult *result, gpointer user_data)
nread = g_input_stream_read_finish (in, result, &error);
if (nread == -1) {
- debug_printf (1, " g_input_stream_read failed: %s\n",
- error->message);
+ g_assert_no_error (error);
g_clear_error (&error);
g_input_stream_close (in, NULL, NULL);
g_object_unref (in);
- errors++;
return;
} else if (nread == 0) {
g_input_stream_close_async (in, G_PRIORITY_DEFAULT, NULL,
@@ -112,10 +94,8 @@ async_request_sent (GObject *source, GAsyncResult *result, gpointer user_data)
in = soup_request_send_finish (SOUP_REQUEST (source), result, &error);
if (!in) {
- debug_printf (1, " soup_request_send_async failed: %s\n",
- error->message);
+ g_assert_no_error (error);
g_clear_error (&error);
- errors++;
return;
}
@@ -136,7 +116,8 @@ do_async_request (SoupRequest *request)
g_main_loop_run (data.loop);
g_main_loop_unref (data.loop);
- check_results (data.body);
+ soup_assert_cmpmem (data.body->str, data.body->len,
+ index_buffer->data, index_buffer->length);
g_string_free (data.body, TRUE);
}
@@ -151,10 +132,8 @@ do_sync_request (SoupRequest *request)
in = soup_request_send (request, NULL, &error);
if (!in) {
- debug_printf (1, " soup_request_send failed: %s\n",
- error->message);
+ g_assert_no_error (error);
g_clear_error (&error);
- errors++;
return;
}
@@ -163,127 +142,111 @@ do_sync_request (SoupRequest *request)
nread = g_input_stream_read (in, buffer, sizeof (buffer),
NULL, &error);
if (nread == -1) {
- debug_printf (1, " g_input_stream_read failed: %s\n",
- error->message);
+ g_assert_no_error (error);
g_clear_error (&error);
- errors++;
break;
}
g_string_append_len (body, buffer, nread);
} while (nread > 0);
- if (!g_input_stream_close (in, NULL, &error)) {
- debug_printf (1, " g_input_stream_close failed: %s\n",
- error->message);
- g_clear_error (&error);
- errors++;
- }
+ g_input_stream_close (in, NULL, &error);
+ g_assert_no_error (error);
+ g_clear_error (&error);
g_object_unref (in);
- check_results (body);
+ soup_assert_cmpmem (body->str, body->len, index_buffer->data, index_buffer->length);
g_string_free (body, TRUE);
}
static void
-do_request_file_test (SoupSession *session,
- gboolean async)
+do_request (const char *uri_string, gconstpointer type)
{
+ SoupSession *session;
SoupRequest *request;
- GFile *index;
- char *uri_string;
- SoupURI *uri;
+ GError *error = NULL;
- index = g_file_new_for_path (SRCDIR "/index.txt");
- uri_string = g_file_get_uri (index);
- g_object_unref (index);
+ session = soup_test_session_new (GPOINTER_TO_SIZE (type),
+ SOUP_SESSION_USE_THREAD_CONTEXT, TRUE,
+ NULL);
- uri = soup_uri_new (uri_string);
- g_free (uri_string);
+ request = soup_session_request (session, uri_string, &error);
+ g_assert_no_error (error);
- request = soup_session_request_uri (session, uri, NULL);
- if (async)
+ if (SOUP_IS_SESSION_ASYNC (session))
do_async_request (request);
else
do_sync_request (request);
+
g_object_unref (request);
+ soup_test_session_abort_unref (session);
+}
- soup_uri_free (uri);
+static void
+do_request_file_test (gconstpointer type)
+{
+ GFile *index;
+ char *uri_string;
+
+ index = g_file_new_for_path (SRCDIR "/index.txt");
+ uri_string = g_file_get_uri (index);
+ g_object_unref (index);
+
+ do_request (uri_string, type);
+ g_free (uri_string);
}
static void
-do_request_data_test (SoupSession *session,
- gboolean async)
+do_request_data_test (gconstpointer type)
{
- SoupRequest *request;
gchar *base64;
char *uri_string;
- SoupURI *uri;
base64 = g_base64_encode ((const guchar *)index_buffer->data, index_buffer->length);
uri_string = g_strdup_printf ("data:text/plain;charset=utf8;base64,%s", base64);
g_free (base64);
- uri = soup_uri_new (uri_string);
+ do_request (uri_string, type);
g_free (uri_string);
-
- request = soup_session_request_uri (session, uri, NULL);
- if (async)
- do_async_request (request);
- else
- do_sync_request (request);
- g_object_unref (request);
-
- soup_uri_free (uri);
}
static void
-do_request_gresource_test (SoupSession *session,
- gboolean async)
+do_request_gresource_test (gconstpointer type)
{
- SoupRequest *request;
- SoupURI *uri;
-
- uri = soup_uri_new ("resource:///org/gnome/libsoup/tests/index.txt");
- request = soup_session_request_uri (session, uri, NULL);
- if (async)
- do_async_request (request);
- else
- do_sync_request (request);
- g_object_unref (request);
-
- soup_uri_free (uri);
+ do_request ("resource:///org/gnome/libsoup/tests/index.txt", type);
}
int
main (int argc, char **argv)
{
- SoupSession *session;
+ int ret;
test_init (argc, argv, NULL);
get_index ();
register_gresource ();
- /* Sync tests */
- session = soup_test_session_new (SOUP_TYPE_SESSION_SYNC, NULL);
-
- do_request_file_test (session, FALSE);
- do_request_data_test (session, FALSE);
- do_request_gresource_test (session, FALSE);
-
- soup_test_session_abort_unref (session);
-
- /* Async tests */
- session = soup_test_session_new (SOUP_TYPE_SESSION_ASYNC,
- SOUP_SESSION_USE_THREAD_CONTEXT, TRUE,
- NULL);
-
- do_request_file_test (session, TRUE);
- do_request_data_test (session, TRUE);
- do_request_gresource_test (session, TRUE);
-
- soup_test_session_abort_unref (session);
+ g_test_add_data_func ("/resource/sync/file",
+ GSIZE_TO_POINTER (SOUP_TYPE_SESSION_SYNC),
+ do_request_file_test);
+ g_test_add_data_func ("/resource/sync/data",
+ GSIZE_TO_POINTER (SOUP_TYPE_SESSION_SYNC),
+ do_request_data_test);
+ g_test_add_data_func ("/resource/sync/gresource",
+ GSIZE_TO_POINTER (SOUP_TYPE_SESSION_SYNC),
+ do_request_gresource_test);
+
+ g_test_add_data_func ("/resource/async/file",
+ GSIZE_TO_POINTER (SOUP_TYPE_SESSION_ASYNC),
+ do_request_file_test);
+ g_test_add_data_func ("/resource/async/data",
+ GSIZE_TO_POINTER (SOUP_TYPE_SESSION_ASYNC),
+ do_request_data_test);
+ g_test_add_data_func ("/resource/async/gresource",
+ GSIZE_TO_POINTER (SOUP_TYPE_SESSION_ASYNC),
+ do_request_gresource_test);
+
+ ret = g_test_run ();
test_cleanup ();
- return errors != 0;
+ return ret;
}