[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