summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCarlos Garnacho <carlosg@gnome.org>2021-03-03 14:13:47 +0100
committerCarlos Garnacho <carlosg@gnome.org>2021-03-03 14:18:22 +0100
commite241d266caac2966bbfdf40ea29443e334a6aa47 (patch)
treefbada38425ac081695f6353de782b002cd501b44
parent869bbfa6f47d128946313a8518a54ec085439a70 (diff)
downloadgobject-introspection-wip/carlosg/signal-tests.tar.gz
tests: Add "signals" test objectwip/carlosg/signal-tests
It is worth to test marshalling of signal arguments, add a basic (and barebones) object to add signals and emission methods to, so bindings can test the signal handlers. Related: https://gitlab.gnome.org/GNOME/gjs/-/issues/377
-rw-r--r--tests/gimarshallingtests.c73
-rw-r--r--tests/gimarshallingtests.h34
2 files changed, 107 insertions, 0 deletions
diff --git a/tests/gimarshallingtests.c b/tests/gimarshallingtests.c
index 483fb619..46ac0fbf 100644
--- a/tests/gimarshallingtests.c
+++ b/tests/gimarshallingtests.c
@@ -5895,3 +5895,76 @@ gi_marshalling_tests_properties_object_new (void)
{
return g_object_new (GI_MARSHALLING_TESTS_TYPE_PROPERTIES_OBJECT, NULL);
}
+
+G_DEFINE_TYPE (GIMarshallingTestsSignalsObject, gi_marshalling_tests_signals_object, G_TYPE_OBJECT);
+
+static void
+gi_marshalling_tests_signals_object_init (GIMarshallingTestsSignalsObject *object G_GNUC_UNUSED)
+{
+}
+
+static void
+gi_marshalling_tests_signals_object_finalize (GObject *object)
+{
+ G_OBJECT_CLASS (gi_marshalling_tests_signals_object_parent_class)->finalize (object);
+}
+
+static void
+gi_marshalling_tests_signals_object_class_init (GIMarshallingTestsSignalsObjectClass *klass)
+{
+ GObjectClass *object_class = G_OBJECT_CLASS (klass);
+
+ object_class->finalize = gi_marshalling_tests_signals_object_finalize;
+
+ /**
+ * GIMarshallingTestsSignalsObject::some-boxed-gptrarray-utf8:
+ * @self:
+ * @arg: (element-type utf8):
+ */
+ g_signal_new ("some-boxed-gptrarray-utf8",
+ G_TYPE_FROM_CLASS (klass),
+ G_SIGNAL_RUN_LAST,
+ 0, NULL, NULL, NULL,
+ G_TYPE_NONE, 1,
+ G_TYPE_PTR_ARRAY);
+
+ /**
+ * GIMarshallingTestsSignalsObject::some-boxed-gptrarray-boxed-struct:
+ * @self:
+ * @arg: (element-type GIMarshallingTestsBoxedStruct):
+ */
+ g_signal_new ("some-boxed-gptrarray-boxed-struct",
+ G_TYPE_FROM_CLASS (klass),
+ G_SIGNAL_RUN_LAST,
+ 0, NULL, NULL, NULL,
+ G_TYPE_NONE, 1,
+ G_TYPE_PTR_ARRAY);
+}
+
+GIMarshallingTestsSignalsObject *
+gi_marshalling_tests_signals_object_new (void)
+{
+ return g_object_new (GI_MARSHALLING_TESTS_TYPE_SIGNALS_OBJECT, NULL);
+}
+
+void
+gi_marshalling_tests_signals_object_emit_boxed_gptrarray_utf8 (GIMarshallingTestsSignalsObject *object)
+{
+ GPtrArray *ptrarray;
+
+ ptrarray = gi_marshalling_tests_gptrarray_utf8_full_return ();
+ g_signal_emit_by_name (object, "some-boxed-gptrarray-utf8",
+ ptrarray);
+ g_ptr_array_unref (ptrarray);
+}
+
+void
+gi_marshalling_tests_signals_object_emit_boxed_gptrarray_boxed_struct (GIMarshallingTestsSignalsObject *object)
+{
+ GPtrArray *ptrarray;
+
+ ptrarray = gi_marshalling_tests_gptrarray_boxed_struct_full_return ();
+ g_signal_emit_by_name (object, "some-boxed-gptrarray-boxed-struct",
+ ptrarray);
+ g_ptr_array_unref (ptrarray);
+}
diff --git a/tests/gimarshallingtests.h b/tests/gimarshallingtests.h
index 5df1035e..c605c5a5 100644
--- a/tests/gimarshallingtests.h
+++ b/tests/gimarshallingtests.h
@@ -2049,4 +2049,38 @@ GType gi_marshalling_tests_properties_object_get_type (void) G_GNUC_CONST;
_GI_TEST_EXTERN
GIMarshallingTestsPropertiesObject *gi_marshalling_tests_properties_object_new (void);
+/* Signals object */
+
+#define GI_MARSHALLING_TESTS_TYPE_SIGNALS_OBJECT (gi_marshalling_tests_signals_object_get_type ())
+#define GI_MARSHALLING_TESTS_SIGNALS_OBJECT(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), GI_MARSHALLING_TESTS_TYPE_SIGNALS_OBJECT, GIMarshallingTestsSignalsObject))
+#define GI_MARSHALLING_TESTS_SIGNALS_OBJECT_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), GI_MARSHALLING_TESTS_TYPE_SIGNALS_OBJECT, GIMarshallingTestsSignalsObjectClass))
+#define GI_MARSHALLING_TESTS_IS_SIGNALS_OBJECT(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), GI_MARSHALLING_TESTS_TYPE_SIGNALS_OBJECT))
+#define GI_MARSHALLING_TESTS_IS_SIGNALS_OBJECT_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), GI_MARSHALLING_TESTS_TYPE_SIGNALS_OBJECT))
+#define GI_MARSHALLING_TESTS_SIGNALS_OBJECT_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), GI_MARSHALLING_TESTS_TYPE_SIGNALS_OBJECT, GIMarshallingTestsSignalsObjectClass))
+
+typedef struct _GIMarshallingTestsSignalsObject GIMarshallingTestsSignalsObject;
+typedef struct _GIMarshallingTestsSignalsObjectClass GIMarshallingTestsSignalsObjectClass;
+
+struct _GIMarshallingTestsSignalsObject {
+ GObject parent_instance;
+};
+
+struct _GIMarshallingTestsSignalsObjectClass {
+ GObjectClass parent_class;
+};
+
+
+_GI_TEST_EXTERN
+GType gi_marshalling_tests_signals_object_get_type (void) G_GNUC_CONST;
+
+
+_GI_TEST_EXTERN
+GIMarshallingTestsSignalsObject *gi_marshalling_tests_signals_object_new (void);
+
+_GI_TEST_EXTERN
+void gi_marshalling_tests_signals_object_emit_boxed_gptrarray_utf8 (GIMarshallingTestsSignalsObject *object);
+
+_GI_TEST_EXTERN
+void gi_marshalling_tests_signals_object_emit_boxed_gptrarray_boxed_struct (GIMarshallingTestsSignalsObject *object);
+
#endif /* _GI_MARSHALLING_TESTS_H_ */