summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSimon McVittie <smcv@debian.org>2020-08-23 16:50:30 +0100
committerChristoph Reiter <reiter.christoph@gmail.com>2020-09-28 15:30:01 +0200
commitc1db8c63f8b715c1ddced5d4e3e227f1f1a2b7b5 (patch)
tree05faa8cadf8d0fd1633089bee9e1268265e9c73e
parent4d9cd54f8d110b5369a999f43dd88a8d2217698c (diff)
downloadgobject-introspection-c1db8c63f8b715c1ddced5d4e3e227f1f1a2b7b5.tar.gz
tests: Add a test-case for a vfunc returning flags in different ways
We already had a test for enums, but flags are not precisely the same, so testing both can give bindings better coverage. Signed-off-by: Simon McVittie <smcv@debian.org>
-rw-r--r--tests/gimarshallingtests.c27
-rw-r--r--tests/gimarshallingtests.h17
2 files changed, 44 insertions, 0 deletions
diff --git a/tests/gimarshallingtests.c b/tests/gimarshallingtests.c
index 53c17818..fbb1273e 100644
--- a/tests/gimarshallingtests.c
+++ b/tests/gimarshallingtests.c
@@ -4767,6 +4767,33 @@ gi_marshalling_tests_object_vfunc_out_enum (GIMarshallingTestsObject *self, GIMa
g_assert_cmpint (local, ==, 0x12345678);
}
+/**
+ * gi_marshalling_tests_object_vfunc_return_flags:
+ */
+GIMarshallingTestsFlags
+gi_marshalling_tests_object_vfunc_return_flags (GIMarshallingTestsObject *self)
+{
+ /* make sure that local variables don't get smashed */
+ GIMarshallingTestsFlags return_value;
+ glong local = 0x12345678;
+ return_value = GI_MARSHALLING_TESTS_OBJECT_GET_CLASS (self)->vfunc_return_flags (self);
+ g_assert_cmpint (local, ==, 0x12345678);
+ return return_value;
+}
+
+/**
+ * gi_marshalling_tests_object_vfunc_out_flags:
+ * @flags: (out):
+ */
+void
+gi_marshalling_tests_object_vfunc_out_flags (GIMarshallingTestsObject *self, GIMarshallingTestsFlags *flags)
+{
+ /* make sure that local variables don't get smashed */
+ gulong local = 0x12345678;
+ GI_MARSHALLING_TESTS_OBJECT_GET_CLASS (self)->vfunc_out_flags (self, flags);
+ g_assert_cmpuint (local, ==, 0x12345678);
+}
+
/* NOTE:
*
diff --git a/tests/gimarshallingtests.h b/tests/gimarshallingtests.h
index 747a075d..656cadd9 100644
--- a/tests/gimarshallingtests.h
+++ b/tests/gimarshallingtests.h
@@ -1515,6 +1515,17 @@ struct _GIMarshallingTestsObjectClass
* @object: (in) (transfer full):
*/
void (* vfunc_in_object_transfer_full) (GIMarshallingTestsObject *self, GObject *object);
+
+ /**
+ * GIMarshallingTestsObjectClass::vfunc_return_flags:
+ */
+ GIMarshallingTestsFlags (* vfunc_return_flags) (GIMarshallingTestsObject *self);
+
+ /**
+ * GIMarshallingTestsObjectClass::vfunc_out_flags:
+ * @flags: (out):
+ */
+ void (* vfunc_out_flags) (GIMarshallingTestsObject *self, GIMarshallingTestsFlags *flags);
};
struct _GIMarshallingTestsObject
@@ -1620,6 +1631,12 @@ GIMarshallingTestsEnum gi_marshalling_tests_object_vfunc_return_enum (GIMarshall
_GI_TEST_EXTERN
void gi_marshalling_tests_object_vfunc_out_enum (GIMarshallingTestsObject *self, GIMarshallingTestsEnum *_enum);
+_GI_TEST_EXTERN
+GIMarshallingTestsFlags gi_marshalling_tests_object_vfunc_return_flags (GIMarshallingTestsObject *self);
+
+_GI_TEST_EXTERN
+void gi_marshalling_tests_object_vfunc_out_flags (GIMarshallingTestsObject *self, GIMarshallingTestsFlags *flags);
+
_GI_TEST_EXTERN
void gi_marshalling_tests_object_get_ref_info_for_vfunc_return_object_transfer_none (GIMarshallingTestsObject *self, guint *ref_count, gboolean *is_floating);