* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
* License as published by the Free Software Foundation; either
- * version 2 of the licence, or (at your option) any later version.
+ * version 2.1 of the License, or (at your option) any later version.
*
* See the included COPYING file for more information.
*
g_variant_serialised_byteswap (two);
- g_assert_cmpint (one.size, ==, two.size);
- g_assert (memcmp (one.data, two.data, one.size) == 0);
+ g_assert_cmpmem (one.data, one.size, two.data, two.size);
tree_instance_free (tree);
g_free (one.data);
G_GNUC_END_IGNORE_DEPRECATIONS
}
+static void
+test_stack_builder_init (void)
+{
+ GVariantBuilder builder = G_VARIANT_BUILDER_INIT (G_VARIANT_TYPE_BYTESTRING);
+ GVariant *variant;
+
+ g_variant_builder_add_value (&builder, g_variant_new_byte ('g'));
+ g_variant_builder_add_value (&builder, g_variant_new_byte ('l'));
+ g_variant_builder_add_value (&builder, g_variant_new_byte ('i'));
+ g_variant_builder_add_value (&builder, g_variant_new_byte ('b'));
+ g_variant_builder_add_value (&builder, g_variant_new_byte ('\0'));
+
+ variant = g_variant_ref_sink (g_variant_builder_end (&builder));
+ g_assert_nonnull (variant);
+ g_assert (g_variant_type_equal (g_variant_get_type (variant),
+ G_VARIANT_TYPE_BYTESTRING));
+ g_assert_cmpuint (g_variant_n_children (variant), ==, 5);
+ g_assert_cmpstr (g_variant_get_bytestring (variant), ==, "glib");
+ g_variant_unref (variant);
+}
+
+static GVariant *
+get_asv (void)
+{
+ GVariantBuilder builder = G_VARIANT_BUILDER_INIT (G_VARIANT_TYPE_VARDICT);
+
+ g_variant_builder_add (&builder, "{s@v}", "foo", g_variant_new_variant (g_variant_new_string ("FOO")));
+ g_variant_builder_add (&builder, "{s@v}", "bar", g_variant_new_variant (g_variant_new_string ("BAR")));
+
+ return g_variant_ref_sink (g_variant_builder_end (&builder));
+}
+
+static void
+test_stack_dict_init (void)
+{
+ GVariant *asv = get_asv ();
+ GVariantDict dict = G_VARIANT_DICT_INIT (asv);
+ GVariant *variant;
+ GVariantIter iter;
+ gchar *key;
+ GVariant *value;
+
+ g_variant_dict_insert_value (&dict, "baz", g_variant_new_string ("BAZ"));
+ g_variant_dict_insert_value (&dict, "quux", g_variant_new_string ("QUUX"));
+
+ variant = g_variant_ref_sink (g_variant_dict_end (&dict));
+ g_assert_nonnull (variant);
+ g_assert (g_variant_type_equal (g_variant_get_type (variant),
+ G_VARIANT_TYPE_VARDICT));
+ g_assert_cmpuint (g_variant_n_children (variant), ==, 4);
+
+ g_variant_iter_init (&iter, variant);
+ while (g_variant_iter_next (&iter, "{sv}", &key, &value))
+ {
+ gchar *strup = g_ascii_strup (key, -1);
+
+ g_assert_cmpstr (strup, ==, g_variant_get_string (value, NULL));
+ g_free (key);
+ g_free (strup);
+ g_variant_unref (value);
+ }
+
+ g_variant_unref (asv);
+ g_variant_unref (variant);
+}
+
int
main (int argc, char **argv)
{
g_test_add_func ("/gvariant/print-context", test_print_context);
g_test_add_func ("/gvariant/error-quark", test_error_quark);
+ g_test_add_func ("/gvariant/stack-builder-init", test_stack_builder_init);
+ g_test_add_func ("/gvariant/stack-dict-init", test_stack_dict_init);
return g_test_run ();
}