From a62855702c3bc0b10370ef25d622a32e227283bd Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?St=C3=A9phane=20Seng?= Date: Sun, 14 Jul 2019 21:47:40 +0000 Subject: gimarshallingtests: Add a marshalling test case for GPtrArrays and GArrays of structures Prior to this, the only marshalling test cases available for GPtrArrays were for GPtrArrays of strings. This commit adds a marshalling test case for GPtrArrays of structures, with the same objective than the gi_marshalling_tests_array_zero_terminated_return_struct() test case. This also adds a similar marshalling test case for GArrays of structures, for completeness. This is a follow-up to https://gitlab.gnome.org/GNOME/gjs/issues/9 where a regression has been detected with these types of GPtrArrays. --- tests/gimarshallingtests.c | 46 ++++++++++++++++++++++++++++++++++++++++++++++ tests/gimarshallingtests.h | 6 ++++++ 2 files changed, 52 insertions(+) diff --git a/tests/gimarshallingtests.c b/tests/gimarshallingtests.c index 2c826f07..92868016 100644 --- a/tests/gimarshallingtests.c +++ b/tests/gimarshallingtests.c @@ -1954,6 +1954,29 @@ gi_marshalling_tests_garray_utf8_full_return (void) return array; } +/** + * gi_marshalling_tests_garray_boxed_struct_full_return: + * + * Returns: (element-type GIMarshallingTestsBoxedStruct) (transfer full): + */ +GArray * +gi_marshalling_tests_garray_boxed_struct_full_return (void) +{ + GArray *array = NULL; + static const glong long_values[] = { 42, 43, 44 }; + gint i; + + array = g_array_new (TRUE, TRUE, sizeof (GIMarshallingTestsBoxedStruct)); + for (i = 0; i < 3; i++) + { + GIMarshallingTestsBoxedStruct *new_struct = gi_marshalling_tests_boxed_struct_new (); + new_struct->long_ = long_values[i]; + g_array_append_val (array, *new_struct); + } + + return array; +} + /** * gi_marshalling_tests_garray_int_none_in: * @array_: (element-type gint) (transfer none): @@ -2245,6 +2268,29 @@ gi_marshalling_tests_gptrarray_utf8_full_return (void) return parray; } +/** + * gi_marshalling_tests_gptrarray_boxed_struct_full_return: + * + * Returns: (element-type GIMarshallingTestsBoxedStruct) (transfer full): + */ +GPtrArray * +gi_marshalling_tests_gptrarray_boxed_struct_full_return (void) +{ + GPtrArray *parray = NULL; + static const glong long_values[] = { 42, 43, 44 }; + gint i; + + parray = g_ptr_array_new (); + for (i = 0; i < 3; i++) + { + GIMarshallingTestsBoxedStruct *new_struct = gi_marshalling_tests_boxed_struct_new (); + new_struct->long_ = long_values[i]; + g_ptr_array_add (parray, (gpointer) new_struct); + } + + return parray; +} + /** * gi_marshalling_tests_gptrarray_utf8_none_in: * @parray_: (element-type utf8) (transfer none): diff --git a/tests/gimarshallingtests.h b/tests/gimarshallingtests.h index 7837acba..d5357ec9 100644 --- a/tests/gimarshallingtests.h +++ b/tests/gimarshallingtests.h @@ -834,6 +834,9 @@ GArray *gi_marshalling_tests_garray_utf8_container_return (void); _GI_TEST_EXTERN GArray *gi_marshalling_tests_garray_utf8_full_return (void); +_GI_TEST_EXTERN +GArray *gi_marshalling_tests_garray_boxed_struct_full_return (void); + _GI_TEST_EXTERN void gi_marshalling_tests_garray_int_none_in (GArray *array_); @@ -884,6 +887,9 @@ GPtrArray *gi_marshalling_tests_gptrarray_utf8_container_return (void); _GI_TEST_EXTERN GPtrArray *gi_marshalling_tests_gptrarray_utf8_full_return (void); +_GI_TEST_EXTERN +GPtrArray *gi_marshalling_tests_gptrarray_boxed_struct_full_return (void); + _GI_TEST_EXTERN void gi_marshalling_tests_gptrarray_utf8_none_in (GPtrArray *parray_); -- cgit v1.2.1