diff options
Diffstat (limited to 'test')
-rw-r--r-- | test/glib/test-dbus-glib.c | 41 | ||||
-rw-r--r-- | test/glib/test-service-glib.c | 46 | ||||
-rw-r--r-- | test/glib/test-service-glib.xml | 14 |
3 files changed, 90 insertions, 11 deletions
diff --git a/test/glib/test-dbus-glib.c b/test/glib/test-dbus-glib.c index 4fbe797e..786235de 100644 --- a/test/glib/test-dbus-glib.c +++ b/test/glib/test-dbus-glib.c @@ -504,11 +504,11 @@ main (int argc, char **argv) G_TYPE_UINT, &v_UINT32_2, G_TYPE_INVALID)) lose_gerror ("Failed to complete Increment call", error); - g_assert (n_times_echo_cb_entered == 1); - if (v_UINT32_2 != 43) lose ("Increment call returned %d, should be 43", v_UINT32_2); + v_UINT32_2 = 0; + g_print ("Calling Increment (async)\n"); call = dbus_g_proxy_begin_call (proxy, "Increment", increment_received_cb, g_strdup ("moo"), g_free, G_TYPE_UINT, 42, @@ -517,6 +517,30 @@ main (int argc, char **argv) exit_timeout = g_timeout_add (5000, timed_exit, loop); g_main_loop_run (loop); + g_print ("Calling IncrementRetval\n"); + error = NULL; + v_UINT32_2 = 0; + if (!dbus_g_proxy_call (proxy, "IncrementRetval", &error, + G_TYPE_UINT, 42, + G_TYPE_INVALID, + G_TYPE_UINT, &v_UINT32_2, + G_TYPE_INVALID)) + lose_gerror ("Failed to complete Increment call", error); + if (v_UINT32_2 != 43) + lose ("IncrementRetval call returned %d, should be 43", v_UINT32_2); + + g_print ("Calling IncrementRetvalError\n"); + error = NULL; + v_UINT32_2 = 0; + if (!dbus_g_proxy_call (proxy, "IncrementRetvalError", &error, + G_TYPE_UINT, 5, + G_TYPE_INVALID, + G_TYPE_UINT, &v_UINT32_2, + G_TYPE_INVALID)) + lose_gerror ("Failed to complete Increment call", error); + if (v_UINT32_2 != 6) + lose ("IncrementRetval call returned %d, should be 6", v_UINT32_2); + g_print ("Calling ThrowError\n"); if (dbus_g_proxy_call (proxy, "ThrowError", &error, G_TYPE_INVALID, G_TYPE_INVALID) != FALSE) @@ -529,6 +553,19 @@ main (int argc, char **argv) g_print ("ThrowError failed (as expected) returned error: %s\n", error->message); g_clear_error (&error); + g_print ("Calling IncrementRetvalError (for error)\n"); + error = NULL; + v_UINT32_2 = 0; + if (dbus_g_proxy_call (proxy, "IncrementRetvalError", &error, + G_TYPE_UINT, 20, + G_TYPE_INVALID, + G_TYPE_UINT, &v_UINT32_2, + G_TYPE_INVALID) != FALSE) + lose ("IncrementRetvalError call unexpectedly succeeded!"); + if (!dbus_g_error_has_name (error, "org.freedesktop.DBus.Tests.MyObject.Foo")) + lose ("IncrementRetvalError call returned unexpected error \"%s\": %s", dbus_g_error_get_name (error), error->message); + g_clear_error (&error); + error = NULL; g_print ("Calling Uppercase\n"); if (!dbus_g_proxy_call (proxy, "Uppercase", &error, diff --git a/test/glib/test-service-glib.c b/test/glib/test-service-glib.c index 853b401a..e44310f3 100644 --- a/test/glib/test-service-glib.c +++ b/test/glib/test-service-glib.c @@ -52,6 +52,10 @@ gboolean my_object_do_nothing (MyObject *obj, GError **error); gboolean my_object_increment (MyObject *obj, gint32 x, gint32 *ret, GError **error); +gint32 my_object_increment_retval (MyObject *obj, gint32 x); + +gint32 my_object_increment_retval_error (MyObject *obj, gint32 x, GError **error); + gboolean my_object_throw_error (MyObject *obj, GError **error); gboolean my_object_uppercase (MyObject *obj, const char *str, char **ret, GError **error); @@ -91,9 +95,9 @@ gboolean my_object_emit_frobnicate (MyObject *obj, GError **error); gboolean my_object_terminate (MyObject *obj, GError **error); -gboolean my_object_async_increment (MyObject *obj, gint32 x, DBusGMethodInvocation *context); +void my_object_async_increment (MyObject *obj, gint32 x, DBusGMethodInvocation *context); -gboolean my_object_async_throw_error (MyObject *obj, DBusGMethodInvocation *context); +void my_object_async_throw_error (MyObject *obj, DBusGMethodInvocation *context); #include "test-service-glib-glue.h" @@ -283,6 +287,27 @@ my_object_increment (MyObject *obj, gint32 x, gint32 *ret, GError **error) return TRUE; } +gint32 +my_object_increment_retval (MyObject *obj, gint32 x) +{ + return x + 1; +} + +gint32 +my_object_increment_retval_error (MyObject *obj, gint32 x, GError **error) +{ + if (x + 1 > 10) + { + g_set_error (error, + MY_OBJECT_ERROR, + MY_OBJECT_ERROR_FOO, + "%s", + "x is bigger than 9"); + return FALSE; + } + return x + 1; +} + gboolean my_object_throw_error (MyObject *obj, GError **error) { @@ -559,14 +584,13 @@ do_async_increment (IncrementData *data) return FALSE; } -gboolean +void my_object_async_increment (MyObject *obj, gint32 x, DBusGMethodInvocation *context) { IncrementData *data = g_new0 (IncrementData, 1); data->x = x; data->context = context; g_idle_add ((GSourceFunc)do_async_increment, data); - return TRUE; } static gboolean @@ -582,13 +606,12 @@ do_async_error (IncrementData *data) return FALSE; } -gboolean +void my_object_async_throw_error (MyObject *obj, DBusGMethodInvocation *context) { IncrementData *data = g_new0(IncrementData, 1); data->context = context; g_idle_add ((GSourceFunc)do_async_error, data); - return TRUE; } @@ -623,11 +646,16 @@ main (int argc, char **argv) g_printerr ("Launching test-service-glib\n"); - g_log_set_always_fatal (G_LOG_LEVEL_CRITICAL); - g_log_set_always_fatal (G_LOG_LEVEL_WARNING); - loop = g_main_loop_new (NULL, FALSE); + { + GLogLevelFlags fatal_mask; + + fatal_mask = g_log_set_always_fatal (G_LOG_FATAL_MASK); + fatal_mask |= G_LOG_LEVEL_WARNING | G_LOG_LEVEL_CRITICAL; + g_log_set_always_fatal (fatal_mask); + } + error = NULL; connection = dbus_g_bus_get (DBUS_BUS_STARTER, &error); diff --git a/test/glib/test-service-glib.xml b/test/glib/test-service-glib.xml index 84524a10..4ea2b2bb 100644 --- a/test/glib/test-service-glib.xml +++ b/test/glib/test-service-glib.xml @@ -10,6 +10,20 @@ <arg type="u" direction="out" /> </method> + <method name="IncrementRetval"> + <arg type="u" name="x" /> + <arg type="u" direction="out"> + <annotation name="org.freedesktop.DBus.GLib.ReturnVal" value=""/> + </arg> + </method> + + <method name="IncrementRetvalError"> + <arg type="u" name="x" /> + <arg type="u" direction="out"> + <annotation name="org.freedesktop.DBus.GLib.ReturnVal" value="error"/> + </arg> + </method> + <method name="ThrowError"> </method> |