diff options
author | Xavier Claessens <xclaesse@gmail.com> | 2010-05-11 16:43:51 +0200 |
---|---|---|
committer | Xavier Claessens <xclaesse@gmail.com> | 2010-05-19 12:36:22 +0200 |
commit | ba6a69a8813615dddb46e3fbd2e9ec657414c8b9 (patch) | |
tree | 96602e79e87bb0092d994630479d43579b8ebd41 | |
parent | c055dba60e1a47337c6ad3eaa76157f6ecd6b065 (diff) |
Add unit test for avatar requirements
-rw-r--r-- | tests/dbus/contacts.c | 48 | ||||
-rw-r--r-- | tests/lib/contacts-conn.c | 48 | ||||
-rw-r--r-- | tests/lib/contacts-conn.h | 1 |
3 files changed, 97 insertions, 0 deletions
diff --git a/tests/dbus/contacts.c b/tests/dbus/contacts.c index f1ce9735..b6d586c4 100644 --- a/tests/dbus/contacts.c +++ b/tests/dbus/contacts.c @@ -98,6 +98,53 @@ finish (gpointer r) } static void +prepare_avatar_requirements_cb (GObject *object, + GAsyncResult *res, + gpointer user_data) +{ + TpConnection *connection = TP_CONNECTION (object); + Result *result = user_data; + + tp_proxy_prepare_finish (connection, res, &result->error); + if (result->error == NULL) + { + TpAvatarRequirements *req; + + req = tp_connection_get_avatar_requirements (connection); + MYASSERT (req != NULL, ""); + MYASSERT_SAME_UINT (req->minimum_width, 1); + MYASSERT_SAME_UINT (req->minimum_height, 2); + MYASSERT_SAME_UINT (req->recommended_width, 3); + MYASSERT_SAME_UINT (req->recommended_height, 4); + MYASSERT_SAME_UINT (req->maximum_width, 5); + MYASSERT_SAME_UINT (req->maximum_height, 6); + MYASSERT_SAME_UINT (req->maximum_bytes, 7); + MYASSERT (req->supported_mime_types != NULL, ""); + MYASSERT_SAME_STRING (req->supported_mime_types[0], "image/png"); + MYASSERT (req->supported_mime_types[1] == NULL, ""); + } + + finish (result); +} + +static void +test_avatar_requirements (ContactsConnection *service_conn, + TpConnection *client_conn) +{ + Result result = { g_main_loop_new (NULL, FALSE), NULL, NULL, NULL }; + GQuark features[] = { TP_CONNECTION_FEATURE_AVATAR_REQUIREMENTS, 0 }; + + g_message (G_STRFUNC); + + tp_proxy_prepare_async (TP_PROXY (client_conn), features, + prepare_avatar_requirements_cb, &result); + g_main_loop_run (result.loop); + + test_assert_no_error (result.error); + g_main_loop_unref (result.loop); +} + +static void test_by_handle (ContactsConnection *service_conn, TpConnection *client_conn) { @@ -1310,6 +1357,7 @@ main (int argc, /* Tests */ + test_avatar_requirements (service_conn, client_conn); test_by_handle (service_conn, client_conn); test_no_features (service_conn, client_conn); test_features (service_conn, client_conn); diff --git a/tests/lib/contacts-conn.c b/tests/lib/contacts-conn.c index 46ca198b..f07238ad 100644 --- a/tests/lib/contacts-conn.c +++ b/tests/lib/contacts-conn.c @@ -25,6 +25,8 @@ static void init_aliasing (gpointer, gpointer); static void init_avatars (gpointer, gpointer); static void init_location (gpointer, gpointer); static void init_contact_caps (gpointer, gpointer); +static void conn_avatars_properties_getter (GObject *object, GQuark interface, + GQuark name, GValue *value, gpointer getter_data); G_DEFINE_TYPE_WITH_CODE (ContactsConnection, contacts_connection, @@ -48,6 +50,20 @@ G_DEFINE_TYPE_WITH_CODE (ContactsConnection, /* type definition stuff */ +static const char *mimetypes[] = { "image/png", NULL }; +static TpDBusPropertiesMixinPropImpl conn_avatars_properties[] = { + { "MinimumAvatarWidth", GUINT_TO_POINTER (1), NULL }, + { "MinimumAvatarHeight", GUINT_TO_POINTER (2), NULL }, + { "RecommendedAvatarWidth", GUINT_TO_POINTER (3), NULL }, + { "RecommendedAvatarHeight", GUINT_TO_POINTER (4), NULL }, + { "MaximumAvatarWidth", GUINT_TO_POINTER (5), NULL }, + { "MaximumAvatarHeight", GUINT_TO_POINTER (6), NULL }, + { "MaximumAvatarBytes", GUINT_TO_POINTER (7), NULL }, + /* special-cased - it's the only one with a non-guint value */ + { "SupportedAvatarMIMETypes", NULL, NULL }, + { NULL } +}; + enum { N_SIGNALS @@ -345,6 +361,14 @@ contacts_connection_class_init (ContactsConnectionClass *klass) TP_IFACE_CONNECTION_INTERFACE_CONTACT_CAPABILITIES, TP_IFACE_CONNECTION_INTERFACE_REQUESTS, NULL }; + static TpDBusPropertiesMixinIfaceImpl prop_interfaces[] = { + { TP_IFACE_CONNECTION_INTERFACE_AVATARS, + conn_avatars_properties_getter, + NULL, + conn_avatars_properties, + }, + { NULL } + }; object_class->constructed = constructed; object_class->finalize = finalize; @@ -361,6 +385,10 @@ contacts_connection_class_init (ContactsConnectionClass *klass) my_set_own_status, my_statuses); tp_presence_mixin_simple_presence_init_dbus_properties (object_class); + + klass->properties_class.interfaces = prop_interfaces; + tp_dbus_properties_mixin_class_init (object_class, + G_STRUCT_OFFSET (ContactsConnectionClass, properties_class)); } void @@ -704,6 +732,26 @@ my_get_known_avatar_tokens (TpSvcConnectionInterfaceAvatars *avatars, } static void +conn_avatars_properties_getter (GObject *object, + GQuark interface, + GQuark name, + GValue *value, + gpointer getter_data) +{ + GQuark q_mime_types = g_quark_from_static_string ( + "SupportedAvatarMIMETypes"); + + if (name == q_mime_types) + { + g_value_set_static_boxed (value, mimetypes); + } + else + { + g_value_set_uint (value, GPOINTER_TO_UINT (getter_data)); + } +} + +static void init_avatars (gpointer g_iface, gpointer iface_data) { diff --git a/tests/lib/contacts-conn.h b/tests/lib/contacts-conn.h index 0b6dd24a..64352cf2 100644 --- a/tests/lib/contacts-conn.h +++ b/tests/lib/contacts-conn.h @@ -30,6 +30,7 @@ struct _ContactsConnectionClass { TpPresenceMixinClass presence_mixin; TpContactsMixinClass contacts_mixin; + TpDBusPropertiesMixinClass properties_class; }; struct _ContactsConnection { |