summaryrefslogtreecommitdiff
path: root/tests/asv.c
diff options
context:
space:
mode:
authorSimon McVittie <simon.mcvittie@collabora.co.uk>2008-05-19 17:14:58 +0000
committerSimon McVittie <simon.mcvittie@collabora.co.uk>2008-05-19 17:14:58 +0000
commite43e4f2897e329f25eee38f0b2f44cbee780e21e (patch)
tree69aa960383a6da17978f9787dadfc8c24d033cfe /tests/asv.c
parent93c28cfda2d82469361cc3a0d69bbf959000c678 (diff)
downloadtelepathy-glib-e43e4f2897e329f25eee38f0b2f44cbee780e21e.tar.gz
Add a regression test for tp_asv_get_*
20080519171458-53eee-5158025e588b9814995bc9d1fdafc4a67777cdbf.gz
Diffstat (limited to 'tests/asv.c')
-rw-r--r--tests/asv.c246
1 files changed, 246 insertions, 0 deletions
diff --git a/tests/asv.c b/tests/asv.c
new file mode 100644
index 000000000..842403ee5
--- /dev/null
+++ b/tests/asv.c
@@ -0,0 +1,246 @@
+#include <stdio.h>
+
+#include <glib.h>
+
+#include <telepathy-glib/dbus.h>
+#include <telepathy-glib/util.h>
+
+#include "tests/lib/myassert.h"
+
+static int fail = 0;
+
+static void
+myassert_failed (void)
+{
+ fail = 1;
+}
+
+int main (int argc, char **argv)
+{
+ GHashTable *hash;
+ GValue *value;
+ gboolean valid;
+
+ /* Setup */
+
+ g_type_init ();
+
+ hash = g_hash_table_new_full (g_str_hash, g_str_equal, NULL,
+ (GDestroyNotify) tp_g_value_slice_free);
+
+ value = tp_g_value_slice_new (G_TYPE_BOOLEAN);
+ g_value_set_boolean (value, TRUE);
+ g_hash_table_insert (hash, "b:TRUE", value);
+ value = NULL;
+
+ value = tp_g_value_slice_new (G_TYPE_BOOLEAN);
+ g_value_set_boolean (value, FALSE);
+ g_hash_table_insert (hash, "b:FALSE", value);
+ value = NULL;
+
+ value = tp_g_value_slice_new (G_TYPE_STRING);
+ g_value_set_string (value, "");
+ g_hash_table_insert (hash, "s0", value);
+ value = NULL;
+
+ value = tp_g_value_slice_new (G_TYPE_STRING);
+ g_value_set_string (value, "hello, world!");
+ g_hash_table_insert (hash, "s", value);
+ value = NULL;
+
+ value = tp_g_value_slice_new (G_TYPE_INT);
+ g_value_set_int (value, -0x10000);
+ g_hash_table_insert (hash, "i32:-2**16", value);
+ value = NULL;
+
+ value = tp_g_value_slice_new (G_TYPE_INT);
+ g_value_set_int (value, 0);
+ g_hash_table_insert (hash, "i32:0", value);
+ value = NULL;
+
+ value = tp_g_value_slice_new (G_TYPE_UINT);
+ g_value_set_uint (value, 0);
+ g_hash_table_insert (hash, "u32:0", value);
+ value = NULL;
+
+ value = tp_g_value_slice_new (G_TYPE_INT);
+ g_value_set_int (value, 0x10000);
+ g_hash_table_insert (hash, "i32:2**16", value);
+ value = NULL;
+
+ value = tp_g_value_slice_new (G_TYPE_UINT);
+ g_value_set_uint (value, 0x10000);
+ g_hash_table_insert (hash, "u32:2**16", value);
+ value = NULL;
+
+ value = tp_g_value_slice_new (G_TYPE_INT);
+ g_value_set_int (value, 0x10000 * -0x8000);
+ g_hash_table_insert (hash, "i32:-2**31", value);
+ value = NULL;
+
+ value = tp_g_value_slice_new (G_TYPE_INT);
+ g_value_set_int (value, 0x7FFFFFFF);
+ g_hash_table_insert (hash, "i32:2**31-1", value);
+ value = NULL;
+
+ value = tp_g_value_slice_new (G_TYPE_UINT);
+ g_value_set_uint (value, 0x7FFFFFFF);
+ g_hash_table_insert (hash, "u32:2**31-1", value);
+ value = NULL;
+
+ value = tp_g_value_slice_new (G_TYPE_UINT);
+ g_value_set_uint (value, 0x80000000U);
+ g_hash_table_insert (hash, "u32:2**31", value);
+ value = NULL;
+
+ value = tp_g_value_slice_new (G_TYPE_UINT);
+ g_value_set_uint (value, 0xFFFFFFFFU);
+ g_hash_table_insert (hash, "u32:2**32-1", value);
+ value = NULL;
+
+ value = tp_g_value_slice_new (G_TYPE_UINT64);
+ g_value_set_uint64 (value, 0xFFFFFFFFU);
+ g_hash_table_insert (hash, "u64:2**32-1", value);
+ value = NULL;
+
+ value = tp_g_value_slice_new (G_TYPE_UINT64);
+ g_value_set_uint64 (value, G_GUINT64_CONSTANT (0x100000000));
+ g_hash_table_insert (hash, "u64:2**32", value);
+ value = NULL;
+
+ value = tp_g_value_slice_new (G_TYPE_UINT64);
+ g_value_set_uint64 (value, G_GUINT64_CONSTANT (0xFFFFFFFFFFFFFFFF));
+ g_hash_table_insert (hash, "u64:2**64-1", value);
+ value = NULL;
+
+ /* Tests: tp_asv_get_boolean */
+
+ valid = (gboolean) 123;
+ MYASSERT (!tp_asv_get_boolean (hash, "b:FALSE", NULL), "");
+ MYASSERT (!tp_asv_get_boolean (hash, "b:FALSE", &valid), "");
+ MYASSERT (valid == TRUE, ": %u", (guint) valid);
+
+ valid = (gboolean) 123;
+ MYASSERT (tp_asv_get_boolean (hash, "b:TRUE", NULL), "");
+ MYASSERT (tp_asv_get_boolean (hash, "b:TRUE", &valid), "");
+ MYASSERT (valid == TRUE, ": %u", (guint) valid);
+
+ valid = (gboolean) 123;
+ MYASSERT (!tp_asv_get_boolean (hash, "s", NULL), "");
+ MYASSERT (!tp_asv_get_boolean (hash, "s", &valid), "");
+ MYASSERT (valid == FALSE, ": %u", (guint) valid);
+
+ valid = (gboolean) 123;
+ MYASSERT (!tp_asv_get_boolean (hash, "not-there", NULL), "");
+ MYASSERT (!tp_asv_get_boolean (hash, "not-there", &valid), "");
+ MYASSERT (valid == FALSE, ": %u", (guint) valid);
+
+ valid = (gboolean) 123;
+ MYASSERT (!tp_asv_get_boolean (hash, "i32:2**16", NULL), "");
+ MYASSERT (!tp_asv_get_boolean (hash, "i32:2**16", &valid), "");
+ MYASSERT (valid == FALSE, ": %u", (guint) valid);
+
+ /* Tests: tp_asv_get_uint32 */
+
+ valid = (gboolean) 123;
+ MYASSERT (tp_asv_get_uint32 (hash, "s", NULL) == 0, "");
+ MYASSERT (tp_asv_get_uint32 (hash, "s", &valid) == 0, "");
+ MYASSERT (valid == FALSE, ": %u", (guint) valid);
+
+ valid = (gboolean) 123;
+ MYASSERT (tp_asv_get_uint32 (hash, "b:TRUE", NULL) == 0, "");
+ MYASSERT (tp_asv_get_uint32 (hash, "b:TRUE", &valid) == 0, "");
+ MYASSERT (valid == FALSE, ": %u", (guint) valid);
+
+ valid = (gboolean) 123;
+ MYASSERT (tp_asv_get_uint32 (hash, "not-there", NULL) == 0, "");
+ MYASSERT (tp_asv_get_uint32 (hash, "not-there", &valid) == 0, "");
+ MYASSERT (valid == FALSE, ": %u", (guint) valid);
+
+ valid = (gboolean) 123;
+ MYASSERT (tp_asv_get_uint32 (hash, "i32:0", NULL) == 0, "");
+ MYASSERT (tp_asv_get_uint32 (hash, "i32:0", &valid) == 0, "");
+ MYASSERT (valid == TRUE, ": %u", (guint) valid);
+
+ valid = (gboolean) 123;
+ MYASSERT (tp_asv_get_uint32 (hash, "u32:0", NULL) == 0, "");
+ MYASSERT (tp_asv_get_uint32 (hash, "u32:0", &valid) == 0, "");
+ MYASSERT (valid == TRUE, ": %u", (guint) valid);
+
+ valid = (gboolean) 123;
+ MYASSERT (tp_asv_get_uint32 (hash, "i32:2**16", NULL) == 0x10000, "");
+ MYASSERT (tp_asv_get_uint32 (hash, "i32:2**16", &valid) == 0x10000, "");
+ MYASSERT (valid == TRUE, ": %u", (guint) valid);
+
+ valid = (gboolean) 123;
+ MYASSERT (tp_asv_get_uint32 (hash, "u32:2**16", NULL) == 0x10000, "");
+ MYASSERT (tp_asv_get_uint32 (hash, "u32:2**16", &valid) == 0x10000, "");
+ MYASSERT (valid == TRUE, ": %u", (guint) valid);
+
+ valid = (gboolean) 123;
+ MYASSERT (tp_asv_get_uint32 (hash, "i32:-2**16", NULL) == 0, "");
+ MYASSERT (tp_asv_get_uint32 (hash, "i32:-2**16", &valid) == 0, "");
+ MYASSERT (valid == FALSE, ": %u", (guint) valid);
+
+ valid = (gboolean) 123;
+ MYASSERT (tp_asv_get_uint32 (hash, "i32:-2**31", NULL) == 0, "");
+ MYASSERT (tp_asv_get_uint32 (hash, "i32:-2**31", &valid) == 0, "");
+ MYASSERT (valid == FALSE, ": %u", (guint) valid);
+
+ valid = (gboolean) 123;
+ MYASSERT (tp_asv_get_uint32 (hash, "i32:2**31-1", NULL) == 0x7FFFFFFF, "");
+ MYASSERT (tp_asv_get_uint32 (hash, "i32:2**31-1", &valid) == 0x7FFFFFFF, "");
+ MYASSERT (valid == TRUE, ": %u", (guint) valid);
+
+ valid = (gboolean) 123;
+ MYASSERT (tp_asv_get_uint32 (hash, "u32:2**31-1", NULL) == 0x7FFFFFFF, "");
+ MYASSERT (tp_asv_get_uint32 (hash, "u32:2**31-1", &valid) == 0x7FFFFFFF, "");
+ MYASSERT (valid == TRUE, ": %u", (guint) valid);
+
+ valid = (gboolean) 123;
+ MYASSERT (tp_asv_get_uint32 (hash, "u32:2**31", NULL) == 0x80000000U, "");
+ MYASSERT (tp_asv_get_uint32 (hash, "u32:2**31", &valid) == 0x80000000U, "");
+ MYASSERT (valid == TRUE, ": %u", (guint) valid);
+
+ valid = (gboolean) 123;
+ MYASSERT (tp_asv_get_uint32 (hash, "u32:2**32-1", NULL) == 0xFFFFFFFFU, "");
+ MYASSERT (tp_asv_get_uint32 (hash, "u32:2**32-1", &valid) == 0xFFFFFFFFU,
+ "");
+ MYASSERT (valid == TRUE, ": %u", (guint) valid);
+
+ valid = (gboolean) 123;
+ MYASSERT (tp_asv_get_uint32 (hash, "u64:2**32-1", NULL) == 0xFFFFFFFFU, "");
+ MYASSERT (tp_asv_get_uint32 (hash, "u64:2**32-1", &valid) == 0xFFFFFFFFU,
+ "");
+ MYASSERT (valid == TRUE, ": %u", (guint) valid);
+
+ valid = (gboolean) 123;
+ MYASSERT (tp_asv_get_uint32 (hash, "u64:2**32", NULL) == 0, "");
+ MYASSERT (tp_asv_get_uint32 (hash, "u64:2**32", &valid) == 0, "");
+ MYASSERT (valid == FALSE, ": %u", (guint) valid);
+
+ valid = (gboolean) 123;
+ MYASSERT (tp_asv_get_uint32 (hash, "u64:2**64-1", NULL) == 0, "");
+ MYASSERT (tp_asv_get_uint32 (hash, "u64:2**64-1", &valid) == 0, "");
+ MYASSERT (valid == FALSE, ": %u", (guint) valid);
+
+ /* Tests: tp_asv_get_string */
+
+ MYASSERT (tp_asv_get_string (hash, "s") != NULL, "");
+ MYASSERT (g_str_equal (tp_asv_get_string (hash, "s"), "hello, world!"), "");
+
+ MYASSERT (tp_asv_get_string (hash, "s0") != NULL, "");
+ MYASSERT (g_str_equal (tp_asv_get_string (hash, "s0"), ""), "");
+
+ MYASSERT (tp_asv_get_string (hash, "b:TRUE") == NULL, "");
+ MYASSERT (tp_asv_get_string (hash, "b:FALSE") == NULL, "");
+ MYASSERT (tp_asv_get_string (hash, "not-there") == NULL, "");
+ MYASSERT (tp_asv_get_string (hash, "i32:0") == NULL, "");
+ MYASSERT (tp_asv_get_string (hash, "u32:0") == NULL, "");
+
+ /* Teardown */
+
+ g_hash_table_destroy (hash);
+
+ return fail;
+}