summaryrefslogtreecommitdiff
path: root/tests/resource-test.c
diff options
context:
space:
mode:
authorDan Winship <danw@gnome.org>2013-12-10 15:47:34 +0100
committerDan Winship <danw@gnome.org>2014-02-08 13:20:21 +0100
commit64e667bda5009c8f1acd03659c457e26b16457a6 (patch)
tree76c10fda49ad828462ed7a5608608a3dd4acee8f /tests/resource-test.c
parent3e417e71bba7c96a40d0e45e91d88513b060d176 (diff)
downloadlibsoup-64e667bda5009c8f1acd03659c457e26b16457a6.tar.gz
tests: initial port to the gtestutils framework
Some programs need to be split up into more tests, and the debug output is mostly not updated for the new format.
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;
}