[gobject-introspection/wip/carlosg/signal-tests] tests: Add "signals" test object




commit e241d266caac2966bbfdf40ea29443e334a6aa47
Author: Carlos Garnacho <carlosg gnome org>
Date:   Wed Mar 3 14:13:47 2021 +0100

    tests: Add "signals" test object
    
    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

 tests/gimarshallingtests.c | 73 ++++++++++++++++++++++++++++++++++++++++++++++
 tests/gimarshallingtests.h | 34 +++++++++++++++++++++
 2 files changed, 107 insertions(+)
---
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_ */


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]