diff options
Diffstat (limited to 'tests/resource-test.c')
-rw-r--r-- | tests/resource-test.c | 163 |
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; } |