[Telepathy-commits] [telepathy-glib/master] test all support types of param
Guillaume Desmottes
guillaume.desmottes at collabora.co.uk
Thu Mar 26 08:17:38 PDT 2009
---
tests/dbus/params-cm.c | 54 ++++++++++++++++++++++++++++++++++++++++++++---
tests/lib/params-cm.c | 43 +++++++++++++++++++++++++++++++++++++-
tests/lib/params-cm.h | 9 ++++++++
3 files changed, 101 insertions(+), 5 deletions(-)
diff --git a/tests/dbus/params-cm.c b/tests/dbus/params-cm.c
index 14c2283..a91dd21 100644
--- a/tests/dbus/params-cm.c
+++ b/tests/dbus/params-cm.c
@@ -112,15 +112,43 @@ test_set_params (Test *test,
{
GHashTable *parameters;
CMParams *params;
+ gchar *array_of_strings[] = { "Telepathy", "rocks", "!", NULL };
+ guint i;
+ GArray *array_of_bytes;
+ guint8 bytes[] = { 0x1, 0x10, 0xA, 0xB, 0xC };
+ GValue *value;
+
+ array_of_bytes = g_array_new (FALSE, FALSE, sizeof (guint8));
+ g_array_append_vals (array_of_bytes, bytes, sizeof (bytes));
parameters = g_hash_table_new_full (g_str_hash, g_str_equal, NULL,
(GDestroyNotify) tp_g_value_slice_free);
g_hash_table_insert (parameters, "a-string",
tp_g_value_slice_new_static_string ("a string"));
g_hash_table_insert (parameters, "a-int16",
- tp_g_value_slice_new_int (7));
+ tp_g_value_slice_new_int (G_MININT16));
g_hash_table_insert (parameters, "a-int32",
- tp_g_value_slice_new_int (77));
+ tp_g_value_slice_new_int (G_MININT32));
+ g_hash_table_insert (parameters, "a-uint16",
+ tp_g_value_slice_new_uint (G_MAXUINT16));
+ g_hash_table_insert (parameters, "a-uint32",
+ tp_g_value_slice_new_uint (G_MAXUINT32));
+ g_hash_table_insert (parameters, "a-int64",
+ tp_g_value_slice_new_int64 (G_MAXINT64));
+ g_hash_table_insert (parameters, "a-uint64",
+ tp_g_value_slice_new_uint64 (G_MAXUINT64));
+ g_hash_table_insert (parameters, "a-boolean",
+ tp_g_value_slice_new_boolean (TRUE));
+ g_hash_table_insert (parameters, "a-double",
+ tp_g_value_slice_new_double (G_MAXDOUBLE));
+ g_hash_table_insert (parameters, "a-array-of-strings",
+ tp_g_value_slice_new_static_boxed (G_TYPE_STRV, array_of_strings));
+ g_hash_table_insert (parameters, "a-array-of-bytes",
+ tp_g_value_slice_new_static_boxed (DBUS_TYPE_G_UCHAR_ARRAY,
+ array_of_bytes));
+ value = tp_g_value_slice_new (DBUS_TYPE_G_OBJECT_PATH);
+ g_value_set_static_boxed (value, "/A/Object/Path");
+ g_hash_table_insert (parameters, "a-object-path", value);
tp_cli_connection_manager_run_request_connection (test->cm, -1,
"example", parameters, NULL, NULL, &test->error, NULL);
@@ -131,11 +159,29 @@ test_set_params (Test *test,
g_assert (params != NULL);
g_assert (!tp_strdiff (params->a_string, "a string"));
- g_assert_cmpuint (params->a_int16, ==, 7);
- g_assert_cmpuint (params->a_int32, ==, 77);
+ g_assert_cmpint (params->a_int16, ==, G_MININT16);
+ g_assert_cmpint (params->a_int32, ==, G_MININT32);
+ g_assert_cmpuint (params->a_uint16, ==, G_MAXUINT16);
+ g_assert_cmpuint (params->a_uint32, ==, G_MAXUINT32);
+ g_assert_cmpuint (params->a_int64, ==, G_MAXINT64);
+ g_assert_cmpuint (params->a_uint64, ==, G_MAXUINT64);
+ g_assert (params->a_boolean);
+ g_assert_cmpfloat (params->a_double, ==, G_MAXDOUBLE);
+
+ g_assert_cmpuint (g_strv_length (params->a_array_of_strings), ==,
+ g_strv_length (array_of_strings));
+ for (i = 0; array_of_strings[i] != NULL; i++)
+ g_assert (!tp_strdiff (params->a_array_of_strings[i], array_of_strings[i]));
+
+ g_assert_cmpuint (params->a_array_of_bytes->len, ==, array_of_bytes->len);
+ for (i = 0; i < array_of_bytes->len; i++)
+ g_assert (params->a_array_of_bytes->data[i] == array_of_bytes->data[i]);
+
+ g_assert (!tp_strdiff (params->a_object_path, "/A/Object/Path"));
free_cm_params (params);
g_hash_table_destroy (parameters);
+ g_array_free (array_of_bytes, TRUE);
}
int
diff --git a/tests/lib/params-cm.c b/tests/lib/params-cm.c
index 97cb74f..a46be9c 100644
--- a/tests/lib/params-cm.c
+++ b/tests/lib/params-cm.c
@@ -44,13 +44,47 @@ param_connection_manager_init (
ParamConnectionManagerPrivate);
}
-static const TpCMParamSpec param_example_params[] = {
+enum {
+ PARAM_STRING,
+ PARAM_INT16,
+ PARAM_INT32,
+ PARAM_UINT16,
+ PARAM_UINT32,
+ PARAM_INT64,
+ PARAM_UINT64,
+ PARAM_BOOLEAN,
+ PARAM_DOUBLE,
+ PARAM_ARRAY_STRINGS,
+ PARAM_ARRAY_BYTES,
+ PARAM_OBJECT_PATH,
+ NUM_PARAM
+};
+
+static TpCMParamSpec param_example_params[] = {
{ "a-string", "s", G_TYPE_STRING, 0, NULL,
G_STRUCT_OFFSET (CMParams, a_string), NULL, NULL, NULL },
{ "a-int16", "n", G_TYPE_INT, 0, NULL,
G_STRUCT_OFFSET (CMParams, a_int16), NULL, NULL, NULL },
{ "a-int32", "i", G_TYPE_INT, 0, NULL,
G_STRUCT_OFFSET (CMParams, a_int32), NULL, NULL, NULL },
+ { "a-uint16", "q", G_TYPE_UINT, 0, NULL,
+ G_STRUCT_OFFSET (CMParams, a_uint16), NULL, NULL, NULL },
+ { "a-uint32", "u", G_TYPE_UINT, 0, NULL,
+ G_STRUCT_OFFSET (CMParams, a_uint32), NULL, NULL, NULL },
+ { "a-int64", "x", G_TYPE_INT64, 0, NULL,
+ G_STRUCT_OFFSET (CMParams, a_int64), NULL, NULL, NULL },
+ { "a-uint64", "t", G_TYPE_UINT64, 0, NULL,
+ G_STRUCT_OFFSET (CMParams, a_uint64), NULL, NULL, NULL },
+ { "a-boolean", "b", G_TYPE_BOOLEAN, 0, NULL,
+ G_STRUCT_OFFSET (CMParams, a_boolean), NULL, NULL, NULL },
+ { "a-double", "d", G_TYPE_DOUBLE, 0, NULL,
+ G_STRUCT_OFFSET (CMParams, a_double), NULL, NULL, NULL },
+ { "a-array-of-strings", "as", 0, 0, NULL,
+ G_STRUCT_OFFSET (CMParams, a_array_of_strings), NULL, NULL, NULL },
+ { "a-array-of-bytes", "ay", 0, 0, NULL,
+ G_STRUCT_OFFSET (CMParams, a_array_of_bytes), NULL, NULL, NULL },
+ { "a-object-path", "o", 0, 0, NULL,
+ G_STRUCT_OFFSET (CMParams, a_object_path), NULL, NULL, NULL },
{ NULL }
};
@@ -98,6 +132,10 @@ param_connection_manager_class_init (
g_type_class_add_private (klass,
sizeof (ParamConnectionManagerPrivate));
+ param_example_params[PARAM_ARRAY_STRINGS].gtype = G_TYPE_STRV;
+ param_example_params[PARAM_ARRAY_BYTES].gtype = DBUS_TYPE_G_UCHAR_ARRAY;
+ param_example_params[PARAM_OBJECT_PATH].gtype = DBUS_TYPE_G_OBJECT_PATH;
+
base_class->new_connection = new_connection;
base_class->cm_dbus_name = "params_cm";
base_class->protocol_params = example_protocols;
@@ -113,6 +151,9 @@ void
free_cm_params (CMParams *p)
{
g_free (p->a_string);
+ g_strfreev (p->a_array_of_strings);
+ g_array_free (p->a_array_of_bytes, TRUE);
+ g_free (p->a_object_path);
g_slice_free (CMParams, p);
}
diff --git a/tests/lib/params-cm.h b/tests/lib/params-cm.h
index 56dc5c3..57e6248 100644
--- a/tests/lib/params-cm.h
+++ b/tests/lib/params-cm.h
@@ -72,6 +72,15 @@ typedef struct {
gchar *a_string;
gint16 a_int16;
gint32 a_int32;
+ guint16 a_uint16;
+ guint32 a_uint32;
+ gint64 a_int64;
+ guint64 a_uint64;
+ gboolean a_boolean;
+ gdouble a_double;
+ GStrv a_array_of_strings;
+ GArray *a_array_of_bytes;
+ gchar *a_object_path;
} CMParams;
CMParams * param_connection_manager_get_params_last_conn (void);
--
1.5.6.5
More information about the telepathy-commits
mailing list