diff options
author | Ryan Lortie <desrt@desrt.ca> | 2009-01-05 06:58:22 +0000 |
---|---|---|
committer | Ryan Lortie <ryanl@src.gnome.org> | 2009-01-05 06:58:22 +0000 |
commit | 481559a031db00b32d2ac65277e50eafd9923b05 (patch) | |
tree | e500a52021643618430461c2074c95b6e5a50214 | |
parent | 876f03f8074e4cb4d92b3a74bba465a0e07f2633 (diff) |
improve add new simple-async-result test new file to test
2009-01-05 Ryan Lortie <desrt@desrt.ca>
* tests/.gitignore: improve
* tests/Makefile.am: add new simple-async-result test
* tests/simple-async-result.c: new file to test GSimpleAsyncResult
svn path=/trunk/; revision=7767
-rw-r--r-- | gio/ChangeLog | 6 | ||||
-rw-r--r-- | gio/tests/.gitignore | 5 | ||||
-rw-r--r-- | gio/tests/Makefile.am | 5 | ||||
-rw-r--r-- | gio/tests/simple-async-result.c | 107 |
4 files changed, 122 insertions, 1 deletions
diff --git a/gio/ChangeLog b/gio/ChangeLog index 69bea0e55..6736067ab 100644 --- a/gio/ChangeLog +++ b/gio/ChangeLog @@ -1,5 +1,11 @@ 2009-01-05 Ryan Lortie <desrt@desrt.ca> + * tests/.gitignore: improve + * tests/Makefile.am: add new simple-async-result test + * tests/simple-async-result.c: new file to test GSimpleAsyncResult + +2009-01-05 Ryan Lortie <desrt@desrt.ca> + * gio.symbols: * ../docs/reference/gio/gio-sections.txt: * gsimpleasyncresult.h: diff --git a/gio/tests/.gitignore b/gio/tests/.gitignore index 1e382a80a..e770aaa2d 100644 --- a/gio/tests/.gitignore +++ b/gio/tests/.gitignore @@ -1,3 +1,8 @@ +buffered-input-stream +desktop-app-info +g-icon +simple-async-result +unix-streams data-input-stream data-output-stream g-file diff --git a/gio/tests/Makefile.am b/gio/tests/Makefile.am index 1e7a48333..abfe8836e 100644 --- a/gio/tests/Makefile.am +++ b/gio/tests/Makefile.am @@ -24,7 +24,8 @@ TEST_PROGS += \ data-input-stream \ data-output-stream \ g-icon \ - buffered-input-stream + buffered-input-stream \ + simple-async-result if OS_UNIX TEST_PROGS += live-g-file unix-streams desktop-app-info @@ -64,5 +65,7 @@ unix_streams_SOURCES = unix-streams.c unix_streams_LDADD = $(progs_ldadd) \ $(top_builddir)/gthread/libgthread-2.0.la +simple_async_result_SOURCES = simple-async-result.c +simple_async_result_LDADD = $(progs_ldadd) DISTCLEAN_FILES = applications/mimeinfo.cache diff --git a/gio/tests/simple-async-result.c b/gio/tests/simple-async-result.c new file mode 100644 index 000000000..2c4f62b50 --- /dev/null +++ b/gio/tests/simple-async-result.c @@ -0,0 +1,107 @@ +/* + * Copyright © 2009 Ryan Lortie + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License as published + * by the Free Software Foundation; either version 2 of the licence or (at + * your option) any later version. + * + * See the included COPYING file for more information. + */ + +#include <glib/glib.h> +#include <gio/gio.h> +#include <stdlib.h> +#include <string.h> + +static GObject *got_source; +static GAsyncResult *got_result; +static gpointer got_user_data; + +static void +ensure_destroyed (gpointer obj) +{ + g_object_add_weak_pointer (obj, &obj); + g_object_unref (obj); + g_assert (obj == NULL); +} + +static void +reset (void) +{ + got_source = NULL; + + if (got_result) + ensure_destroyed (got_result); + + got_result = NULL; + got_user_data = NULL; +} + +static void +check (gpointer a, gpointer b, gpointer c) +{ + g_assert (a == got_source); + g_assert (b == got_result); + g_assert (c == got_user_data); +} + +static void +callback_func (GObject *source, + GAsyncResult *result, + gpointer user_data) +{ + got_source = source; + got_result = g_object_ref (result); + got_user_data = user_data; +} + +static void +test_simple_async (void) +{ + GSimpleAsyncResult *result; + GObject *a, *b, *c; + + a = g_object_new (G_TYPE_OBJECT, NULL); + b = g_object_new (G_TYPE_OBJECT, NULL); + c = g_object_new (G_TYPE_OBJECT, NULL); + + result = g_simple_async_result_new (a, callback_func, b, test_simple_async); + check (NULL, NULL, NULL); + g_simple_async_result_complete (result); + check (a, result, b); + g_object_unref (result); + + g_assert (g_simple_async_result_is_valid (got_result, a, test_simple_async)); + g_assert (!g_simple_async_result_is_valid (got_result, b, test_simple_async)); + g_assert (!g_simple_async_result_is_valid (got_result, c, test_simple_async)); + g_assert (!g_simple_async_result_is_valid (got_result, b, callback_func)); + g_assert (!g_simple_async_result_is_valid ((gpointer) a, NULL, NULL)); + reset (); + reset (); + reset (); + + result = g_simple_async_result_new (a, callback_func, b, test_simple_async); + check (NULL, NULL, NULL); + g_simple_async_result_complete_in_idle (result); + g_object_unref (result); + check (NULL, NULL, NULL); + g_main_context_iteration (NULL, FALSE); + check (a, result, b); + reset (); + + ensure_destroyed (a); + ensure_destroyed (b); + ensure_destroyed (c); +} + +int +main (int argc, char **argv) +{ + g_type_init (); + g_test_init (&argc, &argv, NULL); + + g_test_add_func ("/gio/simple-async-result/test", test_simple_async); + + return g_test_run(); +} |