#include #include #include #include #include "tests/lib/myassert.h" int main (int argc, char **argv) { GHashTable *hash; gboolean valid; static const char * const strv[] = { "Foo", "Bar", NULL }; /* Setup */ g_type_init (); hash = tp_asv_new ( "d:123.2", G_TYPE_DOUBLE, 123.2, "s:test", G_TYPE_STRING, "test", NULL); MYASSERT (tp_asv_size (hash) == 2, "%u != 0", tp_asv_size (hash)); g_hash_table_insert (hash, "d:0", tp_g_value_slice_new_double (0.0)); MYASSERT (tp_asv_size (hash) == 3, "%u != 1", tp_asv_size (hash)); g_hash_table_insert (hash, "d:-123", tp_g_value_slice_new_double (-123.0)); MYASSERT (tp_asv_size (hash) == 4, "%u != 2", tp_asv_size (hash)); g_hash_table_insert (hash, "b:TRUE", tp_g_value_slice_new_boolean (TRUE)); g_hash_table_insert (hash, "b:FALSE", tp_g_value_slice_new_boolean (FALSE)); g_hash_table_insert (hash, "s0", tp_g_value_slice_new_static_string ("")); g_hash_table_insert (hash, "s", tp_g_value_slice_new_string ("hello, world!")); g_hash_table_insert (hash, "o", tp_g_value_slice_new_object_path ("/com/example/Object")); g_hash_table_insert (hash, "i32:-2**16", tp_g_value_slice_new_int (-0x10000)); g_hash_table_insert (hash, "i32:0", tp_g_value_slice_new_int (0)); g_hash_table_insert (hash, "u32:0", tp_g_value_slice_new_uint (0)); g_hash_table_insert (hash, "i64:0", tp_g_value_slice_new_int64 (0)); g_hash_table_insert (hash, "u64:0", tp_g_value_slice_new_uint64 (0)); g_hash_table_insert (hash, "i32:2**16", tp_g_value_slice_new_int (0x10000)); g_hash_table_insert (hash, "u32:2**16", tp_g_value_slice_new_uint (0x10000)); g_hash_table_insert (hash, "i32:-2**31", tp_g_value_slice_new_int (0x10000 * -0x8000)); g_hash_table_insert (hash, "i32:2**31-1", tp_g_value_slice_new_int (0x7FFFffff)); g_hash_table_insert (hash, "u32:2**31-1", tp_g_value_slice_new_uint (0x7FFFffff)); g_hash_table_insert (hash, "u32:2**31", tp_g_value_slice_new_uint (0x80000000U)); g_hash_table_insert (hash, "u32:2**32-1", tp_g_value_slice_new_uint (0xFFFFffffU)); g_hash_table_insert (hash, "u64:2**32-1", tp_g_value_slice_new_uint64 (0xFFFFffffU)); g_hash_table_insert (hash, "u64:2**32", tp_g_value_slice_new_uint64 (G_GUINT64_CONSTANT (0x100000000))); g_hash_table_insert (hash, "i64:-2**63", tp_g_value_slice_new_int64 (G_GINT64_CONSTANT (-0x80000000) * G_GINT64_CONSTANT (0x100000000))); g_hash_table_insert (hash, "i64:2**63-1", tp_g_value_slice_new_int64 (G_GINT64_CONSTANT (0x7FFFffffFFFFffff))); g_hash_table_insert (hash, "u64:2**63-1", tp_g_value_slice_new_uint64 (G_GUINT64_CONSTANT (0x7FFFffffFFFFffff))); g_hash_table_insert (hash, "u64:2**64-1", tp_g_value_slice_new_uint64 (G_GUINT64_CONSTANT (0xFFFFffffFFFFffff))); g_hash_table_insert (hash, "as", tp_g_value_slice_new_boxed (G_TYPE_STRV, strv)); g_hash_table_insert (hash, "as0", tp_g_value_slice_new_boxed (G_TYPE_STRV, strv + 2)); tp_asv_dump (hash); /* 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); valid = (gboolean) 123; MYASSERT (!tp_asv_get_boolean (hash, "d:0", NULL), ""); MYASSERT (!tp_asv_get_boolean (hash, "d:0", &valid), ""); MYASSERT (valid == FALSE, ": %u", (guint) valid); valid = (gboolean) 123; MYASSERT (!tp_asv_get_boolean (hash, "d:-123", NULL), ""); MYASSERT (!tp_asv_get_boolean (hash, "d:-123", &valid), ""); MYASSERT (valid == FALSE, ": %u", (guint) valid); valid = (gboolean) 123; MYASSERT (!tp_asv_get_boolean (hash, "d:123.2", NULL), ""); MYASSERT (!tp_asv_get_boolean (hash, "d:123.2", &valid), ""); MYASSERT (valid == FALSE, ": %u", (guint) valid); /* Tests: tp_asv_get_double */ valid = (gboolean) 123; MYASSERT (tp_asv_get_double (hash, "s", NULL) == 0, ""); MYASSERT (tp_asv_get_double (hash, "s", &valid) == 0, ""); MYASSERT (valid == FALSE, ": %u", (guint) valid); valid = (gboolean) 123; MYASSERT (tp_asv_get_double (hash, "b:TRUE", NULL) == 0, ""); MYASSERT (tp_asv_get_double (hash, "b:TRUE", &valid) == 0, ""); MYASSERT (valid == FALSE, ": %u", (guint) valid); valid = (gboolean) 123; MYASSERT (tp_asv_get_double (hash, "not-there", NULL) == 0.0, ""); MYASSERT (tp_asv_get_double (hash, "not-there", &valid) == 0.0, ""); MYASSERT (valid == FALSE, ": %u", (guint) valid); valid = (gboolean) 123; MYASSERT (tp_asv_get_double (hash, "i32:0", NULL) == 0.0, ""); MYASSERT (tp_asv_get_double (hash, "i32:0", &valid) == 0.0, ""); MYASSERT (valid == TRUE, ": %u", (guint) valid); valid = (gboolean) 123; MYASSERT (tp_asv_get_double (hash, "u32:0", NULL) == 0.0, ""); MYASSERT (tp_asv_get_double (hash, "u32:0", &valid) == 0.0, ""); MYASSERT (valid == TRUE, ": %u", (guint) valid); valid = (gboolean) 123; MYASSERT (tp_asv_get_double (hash, "u32:2**16", NULL) == (double) 0x10000, ""); MYASSERT (tp_asv_get_double (hash, "u32:2**16", &valid) == (double) 0x10000, ""); MYASSERT (valid == TRUE, ": %u", (guint) valid); valid = (gboolean) 123; MYASSERT (tp_asv_get_double (hash, "i32:-2**16", NULL) == (double) -0x10000, ""); MYASSERT (tp_asv_get_double (hash, "i32:-2**16", &valid) == (double) -0x10000, ""); MYASSERT (valid == TRUE, ": %u", (guint) valid); valid = (gboolean) 123; MYASSERT (tp_asv_get_double (hash, "u64:0", NULL) == 0.0, ""); MYASSERT (tp_asv_get_double (hash, "u64:0", &valid) == 0.0, ""); MYASSERT (valid == TRUE, ": %u", (guint) valid); valid = (gboolean) 123; MYASSERT (tp_asv_get_double (hash, "d:0", NULL) == 0.0, ""); MYASSERT (tp_asv_get_double (hash, "d:0", &valid) == 0.0, ""); MYASSERT (valid == TRUE, ": %u", (guint) valid); valid = (gboolean) 123; MYASSERT (tp_asv_get_double (hash, "d:-123", NULL) == -123.0, ""); MYASSERT (tp_asv_get_double (hash, "d:-123", &valid) == -123.0, ""); MYASSERT (valid == TRUE, ": %u", (guint) valid); valid = (gboolean) 123; MYASSERT (tp_asv_get_double (hash, "d:123.2", NULL) == 123.2, ""); MYASSERT (tp_asv_get_double (hash, "d:123.2", &valid) == 123.2, ""); MYASSERT (valid == TRUE, ": %u", (guint) valid); /* Tests: tp_asv_get_int32 */ valid = (gboolean) 123; MYASSERT (tp_asv_get_int32 (hash, "s", NULL) == 0, ""); MYASSERT (tp_asv_get_int32 (hash, "s", &valid) == 0, ""); MYASSERT (valid == FALSE, ": %u", (guint) valid); valid = (gboolean) 123; MYASSERT (tp_asv_get_int32 (hash, "b:TRUE", NULL) == 0, ""); MYASSERT (tp_asv_get_int32 (hash, "b:TRUE", &valid) == 0, ""); MYASSERT (valid == FALSE, ": %u", (guint) valid); valid = (gboolean) 123; MYASSERT (tp_asv_get_int32 (hash, "d:0", NULL) == 0, ""); MYASSERT (tp_asv_get_int32 (hash, "d:0", &valid) == 0, ""); MYASSERT (valid == FALSE, ": %u", (guint) valid); valid = (gboolean) 123; MYASSERT (tp_asv_get_int32 (hash, "not-there", NULL) == 0, ""); MYASSERT (tp_asv_get_int32 (hash, "not-there", &valid) == 0, ""); MYASSERT (valid == FALSE, ": %u", (guint) valid); valid = (gboolean) 123; MYASSERT (tp_asv_get_int32 (hash, "i32:0", NULL) == 0, ""); MYASSERT (tp_asv_get_int32 (hash, "i32:0", &valid) == 0, ""); MYASSERT (valid == TRUE, ": %u", (guint) valid); valid = (gboolean) 123; MYASSERT (tp_asv_get_int32 (hash, "u32:0", NULL) == 0, ""); MYASSERT (tp_asv_get_int32 (hash, "u32:0", &valid) == 0, ""); MYASSERT (valid == TRUE, ": %u", (guint) valid); valid = (gboolean) 123; MYASSERT (tp_asv_get_int32 (hash, "i32:2**16", NULL) == 0x10000, ""); MYASSERT (tp_asv_get_int32 (hash, "i32:2**16", &valid) == 0x10000, ""); MYASSERT (valid == TRUE, ": %u", (guint) valid); valid = (gboolean) 123; MYASSERT (tp_asv_get_int32 (hash, "u32:2**16", NULL) == 0x10000, ""); MYASSERT (tp_asv_get_int32 (hash, "u32:2**16", &valid) == 0x10000, ""); MYASSERT (valid == TRUE, ": %u", (guint) valid); valid = (gboolean) 123; MYASSERT (tp_asv_get_int32 (hash, "i32:-2**16", NULL) == -0x10000, ""); MYASSERT (tp_asv_get_int32 (hash, "i32:-2**16", &valid) == -0x10000, ""); MYASSERT (valid == TRUE, ": %u", (guint) valid); valid = (gboolean) 123; MYASSERT (tp_asv_get_int32 (hash, "i32:-2**31", NULL) == 0x10000 * -0x8000, ""); MYASSERT (tp_asv_get_int32 (hash, "i32:-2**31", &valid) == 0x10000 * -0x8000, ""); MYASSERT (valid == TRUE, ": %u", (guint) valid); valid = (gboolean) 123; MYASSERT (tp_asv_get_int32 (hash, "i32:2**31-1", NULL) == 0x7FFFFFFF, ""); MYASSERT (tp_asv_get_int32 (hash, "i32:2**31-1", &valid) == 0x7FFFFFFF, ""); MYASSERT (valid == TRUE, ": %u", (guint) valid); valid = (gboolean) 123; MYASSERT (tp_asv_get_int32 (hash, "u32:2**31-1", NULL) == 0x7FFFFFFF, ""); MYASSERT (tp_asv_get_int32 (hash, "u32:2**31-1", &valid) == 0x7FFFFFFF, ""); MYASSERT (valid == TRUE, ": %u", (guint) valid); valid = (gboolean) 123; MYASSERT (tp_asv_get_int32 (hash, "u32:2**31", NULL) == 0, ""); MYASSERT (tp_asv_get_int32 (hash, "u32:2**31", &valid) == 0, ""); MYASSERT (valid == FALSE, ": %u", (guint) valid); valid = (gboolean) 123; MYASSERT (tp_asv_get_int32 (hash, "u32:2**32-1", NULL) == 0, ""); MYASSERT (tp_asv_get_int32 (hash, "u32:2**32-1", &valid) == 0, ""); MYASSERT (valid == FALSE, ": %u", (guint) valid); valid = (gboolean) 123; MYASSERT (tp_asv_get_int32 (hash, "u64:2**32-1", NULL) == 0, ""); MYASSERT (tp_asv_get_int32 (hash, "u64:2**32-1", &valid) == 0, ""); MYASSERT (valid == FALSE, ": %u", (guint) valid); valid = (gboolean) 123; MYASSERT (tp_asv_get_int32 (hash, "u64:2**32", NULL) == 0, ""); MYASSERT (tp_asv_get_int32 (hash, "u64:2**32", &valid) == 0, ""); MYASSERT (valid == FALSE, ": %u", (guint) valid); valid = (gboolean) 123; MYASSERT (tp_asv_get_int32 (hash, "u64:2**64-1", NULL) == 0, ""); MYASSERT (tp_asv_get_int32 (hash, "u64:2**64-1", &valid) == 0, ""); MYASSERT (valid == FALSE, ": %u", (guint) valid); valid = (gboolean) 123; MYASSERT (tp_asv_get_int32 (hash, "i64:-2**63", NULL) == 0, ""); MYASSERT (tp_asv_get_int32 (hash, "i64:-2**63", &valid) == 0, ""); MYASSERT (valid == FALSE, ": %u", (guint) valid); valid = (gboolean) 123; MYASSERT (tp_asv_get_int32 (hash, "i64:2**63-1", NULL) == 0, ""); MYASSERT (tp_asv_get_int32 (hash, "i64:2**63-1", &valid) == 0, ""); MYASSERT (valid == FALSE, ": %u", (guint) valid); valid = (gboolean) 123; MYASSERT (tp_asv_get_int32 (hash, "u64:2**63-1", NULL) == 0, ""); MYASSERT (tp_asv_get_int32 (hash, "u64:2**63-1", &valid) == 0, ""); 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, "d:0", NULL) == 0, ""); MYASSERT (tp_asv_get_uint32 (hash, "d:0", &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); valid = (gboolean) 123; MYASSERT (tp_asv_get_uint32 (hash, "i64:-2**63", NULL) == 0, ""); MYASSERT (tp_asv_get_uint32 (hash, "i64:-2**63", &valid) == 0, ""); MYASSERT (valid == FALSE, ": %u", (guint) valid); valid = (gboolean) 123; MYASSERT (tp_asv_get_uint32 (hash, "i64:2**63-1", NULL) == 0, ""); MYASSERT (tp_asv_get_uint32 (hash, "i64:2**63-1", &valid) == 0, ""); MYASSERT (valid == FALSE, ": %u", (guint) valid); valid = (gboolean) 123; MYASSERT (tp_asv_get_uint32 (hash, "u64:2**63-1", NULL) == 0, ""); MYASSERT (tp_asv_get_uint32 (hash, "u64:2**63-1", &valid) == 0, ""); MYASSERT (valid == FALSE, ": %u", (guint) valid); /* Tests: tp_asv_get_int64 */ valid = (gboolean) 123; MYASSERT (tp_asv_get_int64 (hash, "s", NULL) == 0, ""); MYASSERT (tp_asv_get_int64 (hash, "s", &valid) == 0, ""); MYASSERT (valid == FALSE, ": %u", (guint) valid); valid = (gboolean) 123; MYASSERT (tp_asv_get_int64 (hash, "b:TRUE", NULL) == 0, ""); MYASSERT (tp_asv_get_int64 (hash, "b:TRUE", &valid) == 0, ""); MYASSERT (valid == FALSE, ": %u", (guint) valid); valid = (gboolean) 123; MYASSERT (tp_asv_get_int64 (hash, "d:0", NULL) == 0, ""); MYASSERT (tp_asv_get_int64 (hash, "d:0", &valid) == 0, ""); MYASSERT (valid == FALSE, ": %u", (guint) valid); valid = (gboolean) 123; MYASSERT (tp_asv_get_int64 (hash, "not-there", NULL) == 0, ""); MYASSERT (tp_asv_get_int64 (hash, "not-there", &valid) == 0, ""); MYASSERT (valid == FALSE, ": %u", (guint) valid); valid = (gboolean) 123; MYASSERT (tp_asv_get_int64 (hash, "i32:0", NULL) == 0, ""); MYASSERT (tp_asv_get_int64 (hash, "i32:0", &valid) == 0, ""); MYASSERT (valid == TRUE, ": %u", (guint) valid); valid = (gboolean) 123; MYASSERT (tp_asv_get_int64 (hash, "u32:0", NULL) == 0, ""); MYASSERT (tp_asv_get_int64 (hash, "u32:0", &valid) == 0, ""); MYASSERT (valid == TRUE, ": %u", (guint) valid); valid = (gboolean) 123; MYASSERT (tp_asv_get_int64 (hash, "i32:2**16", NULL) == 0x10000, ""); MYASSERT (tp_asv_get_int64 (hash, "i32:2**16", &valid) == 0x10000, ""); MYASSERT (valid == TRUE, ": %u", (guint) valid); valid = (gboolean) 123; MYASSERT (tp_asv_get_int64 (hash, "u32:2**16", NULL) == 0x10000, ""); MYASSERT (tp_asv_get_int64 (hash, "u32:2**16", &valid) == 0x10000, ""); MYASSERT (valid == TRUE, ": %u", (guint) valid); valid = (gboolean) 123; MYASSERT (tp_asv_get_int64 (hash, "i32:-2**16", NULL) == -0x10000, ""); MYASSERT (tp_asv_get_int64 (hash, "i32:-2**16", &valid) == -0x10000, ""); MYASSERT (valid == TRUE, ": %u", (guint) valid); valid = (gboolean) 123; MYASSERT (tp_asv_get_int64 (hash, "i32:-2**31", NULL) == 0x10000 * -0x8000, ""); MYASSERT (tp_asv_get_int64 (hash, "i32:-2**31", &valid) == 0x10000 * -0x8000, ""); MYASSERT (valid == TRUE, ": %u", (guint) valid); valid = (gboolean) 123; MYASSERT (tp_asv_get_int64 (hash, "i32:2**31-1", NULL) == 0x7FFFFFFF, ""); MYASSERT (tp_asv_get_int64 (hash, "i32:2**31-1", &valid) == 0x7FFFFFFF, ""); MYASSERT (valid == TRUE, ": %u", (guint) valid); valid = (gboolean) 123; MYASSERT (tp_asv_get_int64 (hash, "u32:2**31-1", NULL) == 0x7FFFFFFF, ""); MYASSERT (tp_asv_get_int64 (hash, "u32:2**31-1", &valid) == 0x7FFFFFFF, ""); MYASSERT (valid == TRUE, ": %u", (guint) valid); valid = (gboolean) 123; MYASSERT (tp_asv_get_int64 (hash, "u32:2**31", NULL) == G_GINT64_CONSTANT (0x80000000), ""); MYASSERT (tp_asv_get_int64 (hash, "u32:2**31", &valid) == G_GINT64_CONSTANT (0x80000000), ""); MYASSERT (valid == TRUE, ": %u", (guint) valid); valid = (gboolean) 123; MYASSERT (tp_asv_get_int64 (hash, "u32:2**32-1", NULL) == G_GINT64_CONSTANT (0xFFFFFFFF), ""); MYASSERT (tp_asv_get_int64 (hash, "u32:2**32-1", &valid) == G_GINT64_CONSTANT (0xFFFFFFFF), ""); MYASSERT (valid == TRUE, ": %u", (guint) valid); valid = (gboolean) 123; MYASSERT (tp_asv_get_int64 (hash, "u64:2**32-1", NULL) == G_GINT64_CONSTANT (0xFFFFFFFF), ""); MYASSERT (tp_asv_get_int64 (hash, "u64:2**32-1", &valid) == G_GINT64_CONSTANT (0xFFFFFFFF), ""); MYASSERT (valid == TRUE, ": %u", (guint) valid); valid = (gboolean) 123; MYASSERT (tp_asv_get_int64 (hash, "u64:2**32", NULL) == G_GINT64_CONSTANT (0x100000000), ""); MYASSERT (tp_asv_get_int64 (hash, "u64:2**32", &valid) == G_GINT64_CONSTANT (0x100000000), ""); MYASSERT (valid == TRUE, ": %u", (guint) valid); valid = (gboolean) 123; MYASSERT (tp_asv_get_int64 (hash, "u64:2**64-1", NULL) == 0, ""); MYASSERT (tp_asv_get_int64 (hash, "u64:2**64-1", &valid) == 0, ""); MYASSERT (valid == FALSE, ": %u", (guint) valid); valid = (gboolean) 123; MYASSERT (tp_asv_get_int64 (hash, "i64:-2**63", NULL) == G_GINT64_CONSTANT (-0x80000000) * G_GINT64_CONSTANT (0x100000000), ""); MYASSERT (tp_asv_get_int64 (hash, "i64:-2**63", &valid) == G_GINT64_CONSTANT (-0x80000000) * G_GINT64_CONSTANT (0x100000000), ""); MYASSERT (valid == TRUE, ": %u", (guint) valid); valid = (gboolean) 123; MYASSERT (tp_asv_get_int64 (hash, "i64:2**63-1", NULL) == G_GINT64_CONSTANT (0x7FFFFFFFFFFFFFFF), ""); MYASSERT (tp_asv_get_int64 (hash, "i64:2**63-1", &valid) == G_GINT64_CONSTANT (0x7FFFFFFFFFFFFFFF), ""); MYASSERT (valid == TRUE, ": %u", (guint) valid); valid = (gboolean) 123; MYASSERT (tp_asv_get_int64 (hash, "u64:2**63-1", NULL) == G_GINT64_CONSTANT (0x7FFFFFFFFFFFFFFF), ""); MYASSERT (tp_asv_get_int64 (hash, "u64:2**63-1", &valid) == G_GINT64_CONSTANT (0x7FFFFFFFFFFFFFFF), ""); MYASSERT (valid == TRUE, ": %u", (guint) valid); /* Tests: tp_asv_get_uint64 */ valid = (gboolean) 123; MYASSERT (tp_asv_get_uint64 (hash, "s", NULL) == 0, ""); MYASSERT (tp_asv_get_uint64 (hash, "s", &valid) == 0, ""); MYASSERT (valid == FALSE, ": %u", (guint) valid); valid = (gboolean) 123; MYASSERT (tp_asv_get_uint64 (hash, "b:TRUE", NULL) == 0, ""); MYASSERT (tp_asv_get_uint64 (hash, "b:TRUE", &valid) == 0, ""); MYASSERT (valid == FALSE, ": %u", (guint) valid); valid = (gboolean) 123; MYASSERT (tp_asv_get_uint64 (hash, "d:0", NULL) == 0, ""); MYASSERT (tp_asv_get_uint64 (hash, "d:0", &valid) == 0, ""); MYASSERT (valid == FALSE, ": %u", (guint) valid); valid = (gboolean) 123; MYASSERT (tp_asv_get_uint64 (hash, "not-there", NULL) == 0, ""); MYASSERT (tp_asv_get_uint64 (hash, "not-there", &valid) == 0, ""); MYASSERT (valid == FALSE, ": %u", (guint) valid); valid = (gboolean) 123; MYASSERT (tp_asv_get_uint64 (hash, "i32:0", NULL) == 0, ""); MYASSERT (tp_asv_get_uint64 (hash, "i32:0", &valid) == 0, ""); MYASSERT (valid == TRUE, ": %u", (guint) valid); valid = (gboolean) 123; MYASSERT (tp_asv_get_uint64 (hash, "u32:0", NULL) == 0, ""); MYASSERT (tp_asv_get_uint64 (hash, "u32:0", &valid) == 0, ""); MYASSERT (valid == TRUE, ": %u", (guint) valid); valid = (gboolean) 123; MYASSERT (tp_asv_get_uint64 (hash, "i32:2**16", NULL) == 0x10000, ""); MYASSERT (tp_asv_get_uint64 (hash, "i32:2**16", &valid) == 0x10000, ""); MYASSERT (valid == TRUE, ": %u", (guint) valid); valid = (gboolean) 123; MYASSERT (tp_asv_get_uint64 (hash, "u32:2**16", NULL) == 0x10000, ""); MYASSERT (tp_asv_get_uint64 (hash, "u32:2**16", &valid) == 0x10000, ""); MYASSERT (valid == TRUE, ": %u", (guint) valid); valid = (gboolean) 123; MYASSERT (tp_asv_get_uint64 (hash, "i32:-2**16", NULL) == 0, ""); MYASSERT (tp_asv_get_uint64 (hash, "i32:-2**16", &valid) == 0, ""); MYASSERT (valid == FALSE, ": %u", (guint) valid); valid = (gboolean) 123; MYASSERT (tp_asv_get_uint64 (hash, "i32:-2**31", NULL) == 0, ""); MYASSERT (tp_asv_get_uint64 (hash, "i32:-2**31", &valid) == 0, ""); MYASSERT (valid == FALSE, ": %u", (guint) valid); valid = (gboolean) 123; MYASSERT (tp_asv_get_uint64 (hash, "i32:2**31-1", NULL) == 0x7FFFFFFF, ""); MYASSERT (tp_asv_get_uint64 (hash, "i32:2**31-1", &valid) == 0x7FFFFFFF, ""); MYASSERT (valid == TRUE, ": %u", (guint) valid); valid = (gboolean) 123; MYASSERT (tp_asv_get_uint64 (hash, "u32:2**31-1", NULL) == 0x7FFFFFFF, ""); MYASSERT (tp_asv_get_uint64 (hash, "u32:2**31-1", &valid) == 0x7FFFFFFF, ""); MYASSERT (valid == TRUE, ": %u", (guint) valid); valid = (gboolean) 123; MYASSERT (tp_asv_get_uint64 (hash, "u32:2**31", NULL) == 0x80000000U, ""); MYASSERT (tp_asv_get_uint64 (hash, "u32:2**31", &valid) == 0x80000000U, ""); MYASSERT (valid == TRUE, ": %u", (guint) valid); valid = (gboolean) 123; MYASSERT (tp_asv_get_uint64 (hash, "u32:2**32-1", NULL) == 0xFFFFFFFFU, ""); MYASSERT (tp_asv_get_uint64 (hash, "u32:2**32-1", &valid) == 0xFFFFFFFFU, ""); MYASSERT (valid == TRUE, ": %u", (guint) valid); valid = (gboolean) 123; MYASSERT (tp_asv_get_uint64 (hash, "u64:2**32-1", NULL) == 0xFFFFFFFFU, ""); MYASSERT (tp_asv_get_uint64 (hash, "u64:2**32-1", &valid) == 0xFFFFFFFFU, ""); MYASSERT (valid == TRUE, ": %u", (guint) valid); valid = (gboolean) 123; MYASSERT (tp_asv_get_uint64 (hash, "u64:2**32", NULL) == G_GUINT64_CONSTANT (0x100000000), ""); MYASSERT (tp_asv_get_uint64 (hash, "u64:2**32", &valid) == G_GUINT64_CONSTANT (0x100000000), ""); MYASSERT (valid == TRUE, ": %u", (guint) valid); valid = (gboolean) 123; MYASSERT (tp_asv_get_uint64 (hash, "u64:2**64-1", NULL) == G_GUINT64_CONSTANT (0xFFFFffffFFFFffff), ""); MYASSERT (tp_asv_get_uint64 (hash, "u64:2**64-1", &valid) == G_GUINT64_CONSTANT (0xFFFFffffFFFFffff), ""); MYASSERT (valid == TRUE, ": %u", (guint) valid); valid = (gboolean) 123; MYASSERT (tp_asv_get_uint64 (hash, "i64:-2**63", NULL) == 0, ""); MYASSERT (tp_asv_get_uint64 (hash, "i64:-2**63", &valid) == 0, ""); MYASSERT (valid == FALSE, ": %u", (guint) valid); valid = (gboolean) 123; MYASSERT (tp_asv_get_uint64 (hash, "i64:2**63-1", NULL) == G_GUINT64_CONSTANT (0x7FFFffffFFFFffff), ""); MYASSERT (tp_asv_get_uint64 (hash, "i64:2**63-1", &valid) == G_GUINT64_CONSTANT (0x7FFFffffFFFFffff), ""); MYASSERT (valid == TRUE, ": %u", (guint) valid); valid = (gboolean) 123; MYASSERT (tp_asv_get_uint64 (hash, "u64:2**63-1", NULL) == G_GUINT64_CONSTANT (0x7FFFffffFFFFffff), ""); MYASSERT (tp_asv_get_uint64 (hash, "u64:2**63-1", &valid) == G_GUINT64_CONSTANT (0x7FFFffffFFFFffff), ""); MYASSERT (valid == TRUE, ": %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, ""); MYASSERT (tp_asv_get_string (hash, "d:0") == NULL, ""); /* Tests: tp_asv_get_object_path */ MYASSERT (tp_asv_get_object_path (hash, "o") != NULL, ""); MYASSERT (g_str_equal (tp_asv_get_object_path (hash, "o"), "/com/example/Object"), ""); MYASSERT (tp_asv_get_object_path (hash, "s") == NULL, ""); MYASSERT (tp_asv_get_object_path (hash, "s0") == NULL, ""); MYASSERT (tp_asv_get_object_path (hash, "b:TRUE") == NULL, ""); MYASSERT (tp_asv_get_object_path (hash, "b:FALSE") == NULL, ""); MYASSERT (tp_asv_get_object_path (hash, "not-there") == NULL, ""); MYASSERT (tp_asv_get_object_path (hash, "i32:0") == NULL, ""); MYASSERT (tp_asv_get_object_path (hash, "u32:0") == NULL, ""); MYASSERT (tp_asv_get_object_path (hash, "d:0") == NULL, ""); /* Tests: tp_asv_get_strv */ MYASSERT (tp_asv_get_strv (hash, "s") == NULL, ""); MYASSERT (tp_asv_get_strv (hash, "u32:0") == NULL, ""); MYASSERT (tp_asv_get_strv (hash, "as") != NULL, ""); MYASSERT (!tp_strdiff (tp_asv_get_strv (hash, "as")[0], "Foo"), ""); MYASSERT (!tp_strdiff (tp_asv_get_strv (hash, "as")[1], "Bar"), ""); MYASSERT (tp_asv_get_strv (hash, "as")[2] == NULL, ""); MYASSERT (tp_asv_get_strv (hash, "as0") != NULL, ""); MYASSERT (tp_asv_get_strv (hash, "as0")[0] == NULL, ""); /* Tests: tp_asv_lookup */ MYASSERT (G_VALUE_HOLDS_STRING (tp_asv_lookup (hash, "s")), ""); MYASSERT (G_VALUE_HOLDS_UINT (tp_asv_lookup (hash, "u32:0")), ""); MYASSERT (G_VALUE_HOLDS_BOOLEAN (tp_asv_lookup (hash, "b:TRUE")), ""); MYASSERT (G_VALUE_HOLDS_INT (tp_asv_lookup (hash, "i32:0")), ""); MYASSERT (tp_asv_lookup (hash, "not-there") == NULL, ""); /* Teardown */ g_hash_table_destroy (hash); return 0; }