Improve gdbus test coverage

This commit is contained in:
Matthias Clasen 2010-07-31 00:13:02 -04:00
parent 116b945c94
commit 8246bf4bde
2 changed files with 171 additions and 8 deletions

View File

@ -865,6 +865,56 @@ test_connection_flush (void)
session_bus_down (); session_bus_down ();
} }
static void
test_connection_basic (void)
{
GDBusConnection *connection;
GError *error;
GDBusCapabilityFlags flags;
const gchar *guid;
const gchar *name;
gboolean closed;
gboolean exit_on_close;
GIOStream *stream;
GCredentials *credentials;
session_bus_up ();
error = NULL;
connection = g_bus_get_sync (G_BUS_TYPE_SESSION, NULL, &error);
g_assert_no_error (error);
g_assert (connection != NULL);
flags = g_dbus_connection_get_capabilities (connection);
g_assert (flags == G_DBUS_CAPABILITY_FLAGS_NONE ||
flags == G_DBUS_CAPABILITY_FLAGS_UNIX_FD_PASSING);
credentials = g_dbus_connection_get_peer_credentials (connection);
g_assert (credentials == NULL);
g_object_get (connection,
"stream", &stream,
"guid", &guid,
"unique-name", &name,
"closed", &closed,
"exit-on-close", &exit_on_close,
"capabilities", &flags,
NULL);
g_assert (G_IS_IO_STREAM (stream));
g_assert (g_dbus_is_guid (guid));
g_assert (g_dbus_is_unique_name (name));
g_assert (!closed);
g_assert (exit_on_close);
g_assert (flags == G_DBUS_CAPABILITY_FLAGS_NONE ||
flags == G_DBUS_CAPABILITY_FLAGS_UNIX_FD_PASSING);
g_object_unref (stream);
g_object_unref (connection);
session_bus_down ();
}
/* ---------------------------------------------------------------------------------------------------- */ /* ---------------------------------------------------------------------------------------------------- */
int int
@ -883,10 +933,11 @@ main (int argc,
g_unsetenv ("DISPLAY"); g_unsetenv ("DISPLAY");
g_setenv ("DBUS_SESSION_BUS_ADDRESS", session_bus_get_temporary_address (), TRUE); g_setenv ("DBUS_SESSION_BUS_ADDRESS", session_bus_get_temporary_address (), TRUE);
g_test_add_func ("/gdbus/connection-life-cycle", test_connection_life_cycle); g_test_add_func ("/gdbus/connection/basic", test_connection_basic);
g_test_add_func ("/gdbus/connection-send", test_connection_send); g_test_add_func ("/gdbus/connection/life-cycle", test_connection_life_cycle);
g_test_add_func ("/gdbus/connection-signals", test_connection_signals); g_test_add_func ("/gdbus/connection/send", test_connection_send);
g_test_add_func ("/gdbus/connection-filter", test_connection_filter); g_test_add_func ("/gdbus/connection/signals", test_connection_signals);
g_test_add_func ("/gdbus/connection-flush", test_connection_flush); g_test_add_func ("/gdbus/connection/filter", test_connection_filter);
g_test_add_func ("/gdbus/connection/flush", test_connection_flush);
return g_test_run(); return g_test_run();
} }

View File

@ -126,7 +126,7 @@ test_methods (GDBusProxy *proxy)
} }
static gboolean static gboolean
strv_equal (const gchar **strv, ...) strv_equal (gchar **strv, ...)
{ {
gint count; gint count;
va_list list; va_list list;
@ -151,7 +151,7 @@ strv_equal (const gchar **strv, ...)
va_end (list); va_end (list);
if (res) if (res)
res = g_strv_length ((gchar**)strv) == count; res = g_strv_length (strv) == count;
return res; return res;
} }
@ -171,6 +171,12 @@ test_properties (GDBusProxy *proxy)
error = NULL; error = NULL;
if (g_dbus_proxy_get_flags (proxy) & G_DBUS_PROXY_FLAGS_DO_NOT_LOAD_PROPERTIES)
{
g_assert (g_dbus_proxy_get_cached_property_names (proxy) == NULL);
return;
}
/* /*
* Check that we can list all cached properties. * Check that we can list all cached properties.
*/ */
@ -200,7 +206,8 @@ test_properties (GDBusProxy *proxy)
"t", "t",
"u", "u",
"x", "x",
"y")); "y",
NULL));
g_strfreev (names); g_strfreev (names);
@ -490,6 +497,51 @@ test_expected_interface (GDBusProxy *proxy)
g_dbus_proxy_set_cached_property (proxy, "y", g_variant_new_byte (42)); g_dbus_proxy_set_cached_property (proxy, "y", g_variant_new_byte (42));
} }
static void
test_basic (GDBusProxy *proxy)
{
GDBusConnection *connection;
GDBusConnection *conn;
GDBusProxyFlags flags;
GDBusInterfaceInfo *info;
const gchar *name;
const gchar *path;
const gchar *interface;
gint timeout;
connection = g_bus_get_sync (G_BUS_TYPE_SESSION, NULL, NULL);
g_assert (g_dbus_proxy_get_connection (proxy) == connection);
g_assert (g_dbus_proxy_get_flags (proxy) == G_DBUS_PROXY_FLAGS_NONE);
g_assert (g_dbus_proxy_get_interface_info (proxy) == NULL);
g_assert_cmpstr (g_dbus_proxy_get_name (proxy), ==, "com.example.TestService");
g_assert_cmpstr (g_dbus_proxy_get_object_path (proxy), ==, "/com/example/TestObject");
g_assert_cmpstr (g_dbus_proxy_get_interface_name (proxy), ==, "com.example.Frob");
g_assert_cmpint (g_dbus_proxy_get_default_timeout (proxy), ==, -1);
g_object_get (proxy,
"g-connection", &conn,
"g-interface-info", &info,
"g-flags", &flags,
"g-name", &name,
"g-object-path", &path,
"g-interface-name", &interface,
"g-default-timeout", &timeout,
NULL);
g_assert (conn == connection);
g_assert (info == NULL);
g_assert_cmpint (flags, ==, G_DBUS_PROXY_FLAGS_NONE);
g_assert_cmpstr (name, ==, "com.example.TestService");
g_assert_cmpstr (path, ==, "/com/example/TestObject");
g_assert_cmpstr (interface, ==, "com.example.Frob");
g_assert_cmpint (timeout, ==, -1);
g_object_unref (conn);
g_object_unref (connection);
}
static void static void
test_proxy (void) test_proxy (void)
{ {
@ -525,6 +577,7 @@ test_proxy (void)
_g_assert_property_notify (proxy, "g-name-owner"); _g_assert_property_notify (proxy, "g-name-owner");
test_basic (proxy);
test_methods (proxy); test_methods (proxy);
test_properties (proxy); test_properties (proxy);
test_signals (proxy); test_signals (proxy);
@ -536,6 +589,63 @@ test_proxy (void)
/* ---------------------------------------------------------------------------------------------------- */ /* ---------------------------------------------------------------------------------------------------- */
static void
proxy_ready (GObject *source,
GAsyncResult *result,
gpointer user_data)
{
GDBusProxy *proxy;
GError *error;
error = NULL;
proxy = g_dbus_proxy_new_for_bus_finish (result, &error);
g_assert_no_error (error);
test_basic (proxy);
test_methods (proxy);
test_properties (proxy);
test_signals (proxy);
test_expected_interface (proxy);
g_object_unref (proxy);
}
static void
test_async (void)
{
g_dbus_proxy_new_for_bus (G_BUS_TYPE_SESSION,
G_DBUS_PROXY_FLAGS_NONE,
NULL, /* GDBusInterfaceInfo */
"com.example.TestService", /* name */
"/com/example/TestObject", /* object path */
"com.example.Frob", /* interface */
NULL, /* GCancellable */
proxy_ready,
NULL);
}
static void
test_no_properties (void)
{
GDBusProxy *proxy;
GError *error;
error = NULL;
proxy = g_dbus_proxy_new_for_bus_sync (G_BUS_TYPE_SESSION,
G_DBUS_PROXY_FLAGS_DO_NOT_LOAD_PROPERTIES,
NULL, /* GDBusInterfaceInfo */
"com.example.TestService", /* name */
"/com/example/TestObject", /* object path */
"com.example.Frob", /* interface */
NULL, /* GCancellable */
&error);
g_assert_no_error (error);
test_properties (proxy);
g_object_unref (proxy);
}
int int
main (int argc, main (int argc,
char *argv[]) char *argv[])
@ -560,6 +670,8 @@ main (int argc,
g_setenv ("DBUS_SESSION_BUS_ADDRESS", session_bus_get_temporary_address (), TRUE); g_setenv ("DBUS_SESSION_BUS_ADDRESS", session_bus_get_temporary_address (), TRUE);
g_test_add_func ("/gdbus/proxy", test_proxy); g_test_add_func ("/gdbus/proxy", test_proxy);
g_test_add_func ("/gdbus/proxy/async", test_async);
g_test_add_func ("/gdbus/proxy/no-properties", test_no_properties);
ret = g_test_run(); ret = g_test_run();