From b20ac732d096c1140d856d99f4cf64f6c708de50 Mon Sep 17 00:00:00 2001 From: Philip Chimento Date: Sat, 6 Feb 2016 20:59:11 -0800 Subject: tests: Add regression test for out array of struct This is a regression test for returning out arrays of structs, like gdk_keymap_get_entries_for_keyval() for example. https://bugzilla.gnome.org/show_bug.cgi?id=761658 --- .../Regress.test_array_struct_out.page | 47 ++++++++++++++++++++++ .../Regress.test_array_struct_out.page | 32 +++++++++++++++ .../Regress.test_array_struct_out.page | 45 +++++++++++++++++++++ tests/scanner/Regress-1.0-expected.gir | 23 +++++++++++ tests/scanner/Regress-1.0-sections-expected.txt | 1 + tests/scanner/regress.c | 17 ++++++++ tests/scanner/regress.h | 3 ++ 7 files changed, 168 insertions(+) create mode 100644 tests/scanner/Regress-1.0-C-expected/Regress.test_array_struct_out.page create mode 100644 tests/scanner/Regress-1.0-Gjs-expected/Regress.test_array_struct_out.page create mode 100644 tests/scanner/Regress-1.0-Python-expected/Regress.test_array_struct_out.page diff --git a/tests/scanner/Regress-1.0-C-expected/Regress.test_array_struct_out.page b/tests/scanner/Regress-1.0-C-expected/Regress.test_array_struct_out.page new file mode 100644 index 00000000..84aee10f --- /dev/null +++ b/tests/scanner/Regress-1.0-C-expected/Regress.test_array_struct_out.page @@ -0,0 +1,47 @@ + + + + + + + void + + regress_test_array_struct_out + + RegressTestStructA** + arr + + + int* + len + + + + regress_test_array_struct_out + +void regress_test_array_struct_out (RegressTestStructA** arr, + int* len); + +

This is similar to gdk_keymap_get_entries_for_keyval().

+ + + +<code>arr</code> + + + +<code>len</code> + + + +<code>Returns</code> + + + + +
diff --git a/tests/scanner/Regress-1.0-Gjs-expected/Regress.test_array_struct_out.page b/tests/scanner/Regress-1.0-Gjs-expected/Regress.test_array_struct_out.page new file mode 100644 index 00000000..46c7c13c --- /dev/null +++ b/tests/scanner/Regress-1.0-Gjs-expected/Regress.test_array_struct_out.page @@ -0,0 +1,32 @@ + + + + + + + void + + regress_test_array_struct_out + + + Regress.test_array_struct_out + +function test_array_struct_out(): Array(Regress.TestStructA) { + // Gjs wrapper for regress_test_array_struct_out() +} + +

This is similar to gdk_keymap_get_entries_for_keyval().

+ + + +<code>Returns</code> + + + + +
diff --git a/tests/scanner/Regress-1.0-Python-expected/Regress.test_array_struct_out.page b/tests/scanner/Regress-1.0-Python-expected/Regress.test_array_struct_out.page new file mode 100644 index 00000000..5ca13632 --- /dev/null +++ b/tests/scanner/Regress-1.0-Python-expected/Regress.test_array_struct_out.page @@ -0,0 +1,45 @@ + + + + + + + none + + regress_test_array_struct_out + + [Regress.TestStructA] + arr + + + int + len + + + + Regress.test_array_struct_out + +@accepts([Regress.TestStructA], int) +@returns(none) +def test_array_struct_out(arr, len): + # Python wrapper for regress_test_array_struct_out() + +

This is similar to gdk_keymap_get_entries_for_keyval().

+ + + +<code>arr</code> + + + +<code>len</code> + + + + +
diff --git a/tests/scanner/Regress-1.0-expected.gir b/tests/scanner/Regress-1.0-expected.gir index 06aff1d4..321a7c60 100644 --- a/tests/scanner/Regress-1.0-expected.gir +++ b/tests/scanner/Regress-1.0-expected.gir @@ -5291,6 +5291,29 @@ libgnome-keyring. + + This is similar to gdk_keymap_get_entries_for_keyval(). + + + + + + + + + + + + + + diff --git a/tests/scanner/Regress-1.0-sections-expected.txt b/tests/scanner/Regress-1.0-sections-expected.txt index c7ba75c6..26ace9ab 100644 --- a/tests/scanner/Regress-1.0-sections-expected.txt +++ b/tests/scanner/Regress-1.0-sections-expected.txt @@ -73,6 +73,7 @@ regress_test_array_int_none_out regress_test_array_int_null_in regress_test_array_int_null_out regress_test_array_int_out +regress_test_array_struct_out regress_test_async_ready_callback regress_test_boolean regress_test_boolean_false diff --git a/tests/scanner/regress.c b/tests/scanner/regress.c index fa481054..6eac6f7b 100644 --- a/tests/scanner/regress.c +++ b/tests/scanner/regress.c @@ -1739,6 +1739,23 @@ regress_test_struct_a_parse (RegressTestStructA *a_out, a_out->some_int = 23; } +/** + * regress_test_array_struct_out: + * @arr: (out) (array length=len) (transfer full): + * @len: (out) + * + * This is similar to gdk_keymap_get_entries_for_keyval(). + */ +void +regress_test_array_struct_out (RegressTestStructA **arr, int *len) +{ + *arr = g_new0(RegressTestStructA, 3); + (*arr)[0].some_int = 22; + (*arr)[1].some_int = 33; + (*arr)[2].some_int = 44; + *len = 3; +} + /** * regress_test_struct_b_clone: * @b: the structure diff --git a/tests/scanner/regress.h b/tests/scanner/regress.h index 99cd3112..780f8e21 100644 --- a/tests/scanner/regress.h +++ b/tests/scanner/regress.h @@ -541,6 +541,9 @@ void regress_test_struct_a_clone (RegressTestStructA *a, _GI_TEST_EXTERN void regress_test_struct_a_parse (RegressTestStructA *a_out, const gchar *string); +_GI_TEST_EXTERN +void regress_test_array_struct_out (RegressTestStructA **arr, int *len); + struct _RegressTestStructB { gint8 some_int8; -- cgit v1.2.1