mirror of
https://gitlab.gnome.org/GNOME/glib.git
synced 2025-09-27 17:52:58 +02:00
Add fundamental type and pspec for GVariant
Make G_TYPE_VARIANT a fundamental type instead of boxed, and add g_variant_{set,get,dup}_variant. Add GParamSpecVariant. Bug #610863.
This commit is contained in:
@@ -219,6 +219,15 @@ test_collection (void)
|
||||
error = collect (&value, G_TYPE_BOXED);
|
||||
g_assert (error == NULL);
|
||||
g_assert (g_value_get_gtype (&value) == G_TYPE_BOXED);
|
||||
|
||||
g_value_unset (&value);
|
||||
g_value_init (&value, G_TYPE_VARIANT);
|
||||
error = collect (&value, g_variant_new_uint32 (42));
|
||||
g_assert (error == NULL);
|
||||
g_assert (g_variant_is_of_type (g_value_get_variant (&value), G_VARIANT_TYPE ("u")));
|
||||
g_assert_cmpuint (g_variant_get_uint32 (g_value_get_variant (&value)), ==, 42);
|
||||
|
||||
g_value_unset (&value);
|
||||
}
|
||||
|
||||
static void
|
||||
@@ -357,18 +366,33 @@ test_copying (void)
|
||||
g_assert (error == NULL);
|
||||
g_assert (c == G_TYPE_BOXED);
|
||||
}
|
||||
|
||||
{
|
||||
GVariant *c = NULL;
|
||||
|
||||
g_value_unset (&value);
|
||||
g_value_init (&value, G_TYPE_VARIANT);
|
||||
g_value_set_variant (&value, g_variant_new_uint32 (42));
|
||||
error = lcopy (&value, &c);
|
||||
g_assert (error == NULL);
|
||||
g_assert (c != NULL);
|
||||
g_assert (g_variant_is_of_type (c, G_VARIANT_TYPE ("u")));
|
||||
g_assert_cmpuint (g_variant_get_uint32 (c), ==, 42);
|
||||
g_variant_unref (c);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
int
|
||||
main (int argc, char *argv[])
|
||||
{
|
||||
g_type_init ();
|
||||
|
||||
test_enum_transformation ();
|
||||
test_gtype_value ();
|
||||
test_collection ();
|
||||
test_copying ();
|
||||
g_test_init (&argc, &argv, NULL);
|
||||
g_type_init ();
|
||||
|
||||
return 0;
|
||||
g_test_add_func ("/gvalue/enum-transformation", test_enum_transformation);
|
||||
g_test_add_func ("/gvalue/gtype", test_gtype_value);
|
||||
g_test_add_func ("/gvalue/collection", test_collection);
|
||||
g_test_add_func ("/gvalue/copying", test_copying);
|
||||
|
||||
return g_test_run ();
|
||||
}
|
||||
|
@@ -206,15 +206,47 @@ test_param_spec_gtype (void)
|
||||
g_assert (!modified && g_value_get_gtype (&value) == G_TYPE_PARAM_INT);
|
||||
}
|
||||
|
||||
static void
|
||||
test_param_spec_variant (void)
|
||||
{
|
||||
GParamSpec *pspec;
|
||||
GValue value = { 0, };
|
||||
gboolean modified;
|
||||
|
||||
pspec = g_param_spec_variant ("variant", "nick", "blurb",
|
||||
G_VARIANT_TYPE ("i"),
|
||||
g_variant_new_int32 (42),
|
||||
G_PARAM_READWRITE);
|
||||
|
||||
g_value_init (&value, G_TYPE_VARIANT);
|
||||
g_value_set_variant (&value, g_variant_new_int32 (42));
|
||||
|
||||
g_assert (g_param_value_defaults (pspec, &value));
|
||||
|
||||
modified = g_param_value_validate (pspec, &value);
|
||||
g_assert (!modified);
|
||||
|
||||
g_value_reset (&value);
|
||||
g_value_set_variant (&value, g_variant_new_uint32 (41));
|
||||
modified = g_param_value_validate (pspec, &value);
|
||||
g_assert (modified);
|
||||
g_assert_cmpint (g_variant_get_int32 (g_value_get_variant (&value)), ==, 42);
|
||||
g_value_unset (&value);
|
||||
|
||||
g_param_spec_unref (pspec);
|
||||
}
|
||||
|
||||
int
|
||||
main (int argc, char *argv[])
|
||||
{
|
||||
g_type_init ();
|
||||
|
||||
test_param_spec_char ();
|
||||
test_param_spec_string ();
|
||||
test_param_spec_override ();
|
||||
test_param_spec_gtype ();
|
||||
g_test_init (&argc, &argv, NULL);
|
||||
g_type_init ();
|
||||
|
||||
return 0;
|
||||
g_test_add_func ("/paramspec/char", test_param_spec_char);
|
||||
g_test_add_func ("/paramspec/string", test_param_spec_string);
|
||||
g_test_add_func ("/paramspec/override", test_param_spec_override);
|
||||
g_test_add_func ("/paramspec/gtype", test_param_spec_gtype);
|
||||
g_test_add_func ("/paramspec/variant", test_param_spec_variant);
|
||||
|
||||
return g_test_run ();
|
||||
}
|
||||
|
Reference in New Issue
Block a user