From 32d130f1a5829acc5827d43735e15e9198c2971d Mon Sep 17 00:00:00 2001 From: Philip Chimento Date: Mon, 3 Apr 2017 22:09:04 -0700 Subject: tests: Add marshalling tests for GValue-valued properties This is to test GJS's support of GValues boxed inside GValues. https://bugzilla.gnome.org/show_bug.cgi?id=688128 --- tests/gimarshallingtests.c | 21 +++++++++++++++++++++ tests/gimarshallingtests.h | 1 + 2 files changed, 22 insertions(+) diff --git a/tests/gimarshallingtests.c b/tests/gimarshallingtests.c index 54702a35..40ba5730 100644 --- a/tests/gimarshallingtests.c +++ b/tests/gimarshallingtests.c @@ -5351,6 +5351,7 @@ enum SOME_BOXED_STRUCT_PROPERTY, SOME_VARIANT_PROPERTY, SOME_BOXED_GLIST_PROPERTY, + SOME_GVALUE_PROPERTY, SOME_OBJECT_PROPERTY, SOME_FLAGS_PROPERTY, SOME_ENUM_PROPERTY, @@ -5373,6 +5374,11 @@ gi_marshalling_tests_properties_object_finalize (GObject *obj) self->some_strv = NULL; } + if (self->some_gvalue) { + g_boxed_free (G_TYPE_VALUE, self->some_gvalue); + self->some_gvalue = NULL; + } + G_OBJECT_CLASS (gi_marshalling_tests_properties_object_parent_class)->finalize (obj); } @@ -5426,6 +5432,9 @@ gi_marshalling_tests_properties_object_get_property (GObject *object, case SOME_BOXED_GLIST_PROPERTY: g_value_set_boxed (value, self->some_boxed_glist); break; + case SOME_GVALUE_PROPERTY: + g_value_set_boxed (value, self->some_gvalue); + break; case SOME_VARIANT_PROPERTY: g_value_set_variant (value, self->some_variant); break; @@ -5497,6 +5506,11 @@ gi_marshalling_tests_properties_object_set_property (GObject *object, g_list_free (self->some_boxed_glist); self->some_boxed_glist = g_list_copy (g_value_get_boxed (value)); break; + case SOME_GVALUE_PROPERTY: + if (self->some_gvalue) + g_boxed_free (G_TYPE_VALUE, self->some_gvalue); + self->some_gvalue = g_value_dup_boxed (value); + break; case SOME_VARIANT_PROPERTY: if (self->some_variant != NULL) g_variant_unref (self->some_variant); @@ -5631,6 +5645,13 @@ static void gi_marshalling_tests_properties_object_class_init (GIMarshallingTest gi_marshalling_tests_boxed_glist_get_type (), G_PARAM_READABLE | G_PARAM_WRITABLE | G_PARAM_CONSTRUCT)); + g_object_class_install_property (object_class, SOME_GVALUE_PROPERTY, + g_param_spec_boxed ("some-gvalue", + "some-gvalue", + "some-gvalue", + G_TYPE_VALUE, + G_PARAM_READWRITE | G_PARAM_CONSTRUCT)); + g_object_class_install_property (object_class, SOME_VARIANT_PROPERTY, g_param_spec_variant ("some-variant", "some-variant", diff --git a/tests/gimarshallingtests.h b/tests/gimarshallingtests.h index 25af019b..0c59952e 100644 --- a/tests/gimarshallingtests.h +++ b/tests/gimarshallingtests.h @@ -1970,6 +1970,7 @@ struct _GIMarshallingTestsPropertiesObject { gchar **some_strv; GIMarshallingTestsBoxedStruct* some_boxed_struct; GList* some_boxed_glist; + GValue *some_gvalue; GVariant *some_variant; GObject *some_object; GIMarshallingTestsFlags some_flags; -- cgit v1.2.1