summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPhilip Chimento <philip.chimento@gmail.com>2020-09-20 05:11:20 +0000
committerPhilip Chimento <philip.chimento@gmail.com>2020-09-20 05:11:20 +0000
commit5a673c1067b779bfbb4632a76340e0fa19305b58 (patch)
treeb24ee08141f87c38d8d24a873a5f0f5b2336eed3
parent7c9edf260b7c58a1587aa9b31c9f747bd6964487 (diff)
parentae2952e6167be60663d587a605e38e97d5f4978c (diff)
downloadgobject-introspection-5a673c1067b779bfbb4632a76340e0fa19305b58.tar.gz
Merge branch 'wip/smcv/test-more-flags' into 'master'
gimarshallingtests: Add more tests for flags See merge request GNOME/gobject-introspection!235
-rw-r--r--tests/gimarshallingtests.c55
-rw-r--r--tests/gimarshallingtests.h23
2 files changed, 78 insertions, 0 deletions
diff --git a/tests/gimarshallingtests.c b/tests/gimarshallingtests.c
index 53c17818..483fb619 100644
--- a/tests/gimarshallingtests.c
+++ b/tests/gimarshallingtests.c
@@ -1523,6 +1523,20 @@ gi_marshalling_tests_array_enum_in (GIMarshallingTestsEnum *v, gint length)
}
/**
+ * gi_marshalling_tests_array_flags_in:
+ * @flags: (array length=length) (transfer none):
+ * @length:
+ */
+void
+gi_marshalling_tests_array_flags_in (GIMarshallingTestsFlags *v, gint length)
+{
+ g_assert_cmpint (length, ==, 3);
+ g_assert_cmpint (v[0], ==, GI_MARSHALLING_TESTS_FLAGS_VALUE1);
+ g_assert_cmpint (v[1], ==, GI_MARSHALLING_TESTS_FLAGS_VALUE2);
+ g_assert_cmpint (v[2], ==, GI_MARSHALLING_TESTS_FLAGS_VALUE3);
+}
+
+/**
* gi_marshalling_tests_array_in_guint64_len:
* @ints: (array length=length) (transfer none):
* @length:
@@ -3431,10 +3445,24 @@ gi_marshalling_tests_gvalue_in_with_modification (GValue *value)
void
gi_marshalling_tests_gvalue_in_enum (GValue *value)
{
+ if (!G_VALUE_HOLDS_ENUM (value))
+ g_critical ("Expected enum, got %s", G_VALUE_TYPE_NAME (value));
g_assert (g_value_get_enum (value) == GI_MARSHALLING_TESTS_ENUM_VALUE3);
}
/**
+ * gi_marshalling_tests_gvalue_in_flags:
+ * @value: (transfer none):
+ */
+void
+gi_marshalling_tests_gvalue_in_flags (GValue *value)
+{
+ if (!G_VALUE_HOLDS_FLAGS (value))
+ g_critical ("Expected flags, got %s", G_VALUE_TYPE_NAME (value));
+ g_assert_cmpint (g_value_get_flags (value), ==, GI_MARSHALLING_TESTS_FLAGS_VALUE3);
+}
+
+/**
* gi_marshalling_tests_gvalue_out:
* @value: (out) (transfer none):
*/
@@ -4767,6 +4795,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..5df1035e 100644
--- a/tests/gimarshallingtests.h
+++ b/tests/gimarshallingtests.h
@@ -749,6 +749,9 @@ _GI_TEST_EXTERN
void gi_marshalling_tests_array_enum_in (GIMarshallingTestsEnum *_enum, gint length);
_GI_TEST_EXTERN
+void gi_marshalling_tests_array_flags_in (GIMarshallingTestsFlags *flags, gint length);
+
+_GI_TEST_EXTERN
void gi_marshalling_tests_array_in_guint64_len (const gint *ints, guint64 length);
_GI_TEST_EXTERN
@@ -1117,6 +1120,9 @@ void gi_marshalling_tests_gvalue_in_with_modification (GValue *value);
_GI_TEST_EXTERN
void gi_marshalling_tests_gvalue_in_enum (GValue *value);
+_GI_TEST_EXTERN
+void gi_marshalling_tests_gvalue_in_flags (GValue *value);
+
_GI_TEST_EXTERN
void gi_marshalling_tests_gvalue_out (GValue **value);
@@ -1515,6 +1521,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 +1637,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);