summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorXavier Claessens <xclaesse@gmail.com>2010-05-11 16:43:51 +0200
committerXavier Claessens <xclaesse@gmail.com>2010-05-19 12:36:22 +0200
commitba6a69a8813615dddb46e3fbd2e9ec657414c8b9 (patch)
tree96602e79e87bb0092d994630479d43579b8ebd41
parentc055dba60e1a47337c6ad3eaa76157f6ecd6b065 (diff)
Add unit test for avatar requirements
-rw-r--r--tests/dbus/contacts.c48
-rw-r--r--tests/lib/contacts-conn.c48
-rw-r--r--tests/lib/contacts-conn.h1
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 {