[gobject-introspection] tests: Add regression test for signal w. array+len



commit cd355e86a28bfed7744ac567f06ab18a12d1ad1d
Author: Philip Chimento <philip chimento gmail com>
Date:   Sat Feb 6 20:31:27 2016 -0800

    tests: Add regression test for signal w. array+len
    
    This is a regression test for marshalling callback arguments from signals
    with an array parameter and separate length parameter into closures in
    the introspected language.
    
    https://bugzilla.gnome.org/show_bug.cgi?id=761659

 .../Regress.TestObj-sig-with-array-len-prop.page   |    4 ++-
 ...gress.TestObj.emit_sig_with_array_len_prop.page |   38 ++++++++++++++++++++
 .../Regress.TestObj-sig-with-array-len-prop.page   |    4 ++-
 ...gress.TestObj.emit_sig_with_array_len_prop.page |   26 +++++++++++++
 .../Regress.TestObj-sig-with-array-len-prop.page   |    4 ++-
 ...gress.TestObj.emit_sig_with_array_len_prop.page |   37 +++++++++++++++++++
 tests/scanner/Regress-1.0-expected.gir             |   15 +++++++-
 tests/scanner/Regress-1.0-sections-expected.txt    |    1 +
 tests/scanner/regress.c                            |   14 +++++++-
 tests/scanner/regress.h                            |    3 ++
 10 files changed, 141 insertions(+), 5 deletions(-)
---
diff --git a/tests/scanner/Regress-1.0-C-expected/Regress.TestObj-sig-with-array-len-prop.page 
b/tests/scanner/Regress-1.0-C-expected/Regress.TestObj-sig-with-array-len-prop.page
index dcb254b..ab7407d 100644
--- a/tests/scanner/Regress-1.0-C-expected/Regress.TestObj-sig-with-array-len-prop.page
+++ b/tests/scanner/Regress-1.0-C-expected/Regress.TestObj-sig-with-array-len-prop.page
@@ -14,7 +14,9 @@
 void sig-with-array-len-prop (guint* arr,
                               gint len);
   </code></synopsis>
-  <p>This test signal similar to GSettings::change-event</p>
+<p>This test signal similar to GSettings::change-event.
+You can use this with <link xref="Regress.TestObj.emit_sig_with_array_len_prop"/>, or
+raise from the introspection client language.</p>
 
 <terms>
 <item>
diff --git a/tests/scanner/Regress-1.0-C-expected/Regress.TestObj.emit_sig_with_array_len_prop.page 
b/tests/scanner/Regress-1.0-C-expected/Regress.TestObj.emit_sig_with_array_len_prop.page
new file mode 100644
index 0000000..331e3eb
--- /dev/null
+++ b/tests/scanner/Regress-1.0-C-expected/Regress.TestObj.emit_sig_with_array_len_prop.page
@@ -0,0 +1,38 @@
+<?xml version="1.0"?>
+<page id="Regress.TestObj.emit_sig_with_array_len_prop"
+      type="topic"
+      style="method"
+      xmlns="http://projectmallard.org/1.0/";
+      xmlns:api="http://projectmallard.org/experimental/api/";
+      xmlns:ui="http://projectmallard.org/1.0/ui/";>
+  <info>
+    <link xref="Regress.TestObj" group="method" type="guide"/>
+    <api:function>
+      <api:returns>
+        <api:type>void</api:type>
+      </api:returns>
+      <api:name>regress_test_obj_emit_sig_with_array_len_prop</api:name>
+      <api:arg>
+        <api:type>RegressTestObj*</api:type>
+        <api:name>obj</api:name>
+      </api:arg>
+    </api:function>
+  </info>
+  <title>regress_test_obj_emit_sig_with_array_len_prop</title>
+  <synopsis><code mime="text/x-csrc">
+void regress_test_obj_emit_sig_with_array_len_prop (RegressTestObj* obj);
+  </code></synopsis>
+
+
+<terms>
+<item>
+<title><code>obj</code></title>
+
+</item>
+<item>
+<title><code>Returns</code></title>
+
+</item>
+</terms>
+
+</page>
diff --git a/tests/scanner/Regress-1.0-Gjs-expected/Regress.TestObj-sig-with-array-len-prop.page 
b/tests/scanner/Regress-1.0-Gjs-expected/Regress.TestObj-sig-with-array-len-prop.page
index 6af8b35..588eab4 100644
--- a/tests/scanner/Regress-1.0-Gjs-expected/Regress.TestObj-sig-with-array-len-prop.page
+++ b/tests/scanner/Regress-1.0-Gjs-expected/Regress.TestObj-sig-with-array-len-prop.page
@@ -13,7 +13,9 @@
   <synopsis><code mime="text/x-gjs">
 connect('sig-with-array-len-prop', function (testObj, arr: Array(Number(guint)), ): void);
   </code></synopsis>
-  <p>This test signal similar to GSettings::change-event</p>
+<p>This test signal similar to GSettings::change-event.
+You can use this with <link xref="Regress.TestObj.emit_sig_with_array_len_prop"/>, or
+raise from the introspection client language.</p>
 
 <terms>
 <item>
diff --git a/tests/scanner/Regress-1.0-Gjs-expected/Regress.TestObj.emit_sig_with_array_len_prop.page 
b/tests/scanner/Regress-1.0-Gjs-expected/Regress.TestObj.emit_sig_with_array_len_prop.page
new file mode 100644
index 0000000..014e56d
--- /dev/null
+++ b/tests/scanner/Regress-1.0-Gjs-expected/Regress.TestObj.emit_sig_with_array_len_prop.page
@@ -0,0 +1,26 @@
+<?xml version="1.0"?>
+<page id="Regress.TestObj.emit_sig_with_array_len_prop"
+      type="topic"
+      style="method"
+      xmlns="http://projectmallard.org/1.0/";
+      xmlns:api="http://projectmallard.org/experimental/api/";
+      xmlns:ui="http://projectmallard.org/1.0/ui/";>
+  <info>
+    <link xref="Regress.TestObj" group="method" type="guide"/>
+    <api:function>
+      <api:returns>
+        <api:type>void</api:type>
+      </api:returns>
+      <api:name>regress_test_obj_emit_sig_with_array_len_prop</api:name>
+    </api:function>
+  </info>
+  <title>Regress.TestObj.prototype.emit_sig_with_array_len_prop</title>
+  <synopsis><code mime="text/x-gjs">
+function emit_sig_with_array_len_prop(): void {
+    // Gjs wrapper for regress_test_obj_emit_sig_with_array_len_prop()
+}
+  </code></synopsis>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-Python-expected/Regress.TestObj-sig-with-array-len-prop.page 
b/tests/scanner/Regress-1.0-Python-expected/Regress.TestObj-sig-with-array-len-prop.page
index 2b38065..04c8eb2 100644
--- a/tests/scanner/Regress-1.0-Python-expected/Regress.TestObj-sig-with-array-len-prop.page
+++ b/tests/scanner/Regress-1.0-Python-expected/Regress.TestObj-sig-with-array-len-prop.page
@@ -13,7 +13,9 @@
   <synopsis><code mime="text/x-python">
 def callback(test_obj, arr, len, user_param1, ...)
   </code></synopsis>
-  <p>This test signal similar to GSettings::change-event</p>
+<p>This test signal similar to GSettings::change-event.
+You can use this with <link xref="Regress.TestObj.emit_sig_with_array_len_prop"/>, or
+raise from the introspection client language.</p>
 
 <terms>
 <item>
diff --git a/tests/scanner/Regress-1.0-Python-expected/Regress.TestObj.emit_sig_with_array_len_prop.page 
b/tests/scanner/Regress-1.0-Python-expected/Regress.TestObj.emit_sig_with_array_len_prop.page
new file mode 100644
index 0000000..8c768bb
--- /dev/null
+++ b/tests/scanner/Regress-1.0-Python-expected/Regress.TestObj.emit_sig_with_array_len_prop.page
@@ -0,0 +1,37 @@
+<?xml version="1.0"?>
+<page id="Regress.TestObj.emit_sig_with_array_len_prop"
+      type="topic"
+      style="method"
+      xmlns="http://projectmallard.org/1.0/";
+      xmlns:api="http://projectmallard.org/experimental/api/";
+      xmlns:ui="http://projectmallard.org/1.0/ui/";>
+  <info>
+    <link xref="Regress.TestObj" group="method" type="guide"/>
+    <api:function>
+      <api:returns>
+        <api:type>none</api:type>
+      </api:returns>
+      <api:name>regress_test_obj_emit_sig_with_array_len_prop</api:name>
+      <api:arg>
+        <api:type>Regress.TestObj</api:type>
+        <api:name>self</api:name>
+      </api:arg>
+    </api:function>
+  </info>
+  <title>Regress.TestObj.emit_sig_with_array_len_prop</title>
+  <synopsis><code mime="text/x-python">
+ accepts(Regress.TestObj)
+ returns(none)
+def emit_sig_with_array_len_prop(self):
+    # Python wrapper for regress_test_obj_emit_sig_with_array_len_prop()
+  </code></synopsis>
+
+
+<terms>
+<item>
+<title><code>self</code></title>
+
+</item>
+</terms>
+
+</page>
diff --git a/tests/scanner/Regress-1.0-expected.gir b/tests/scanner/Regress-1.0-expected.gir
index 321a7c6..658b17f 100644
--- a/tests/scanner/Regress-1.0-expected.gir
+++ b/tests/scanner/Regress-1.0-expected.gir
@@ -3056,6 +3056,17 @@ case.</doc>
           </parameter>
         </parameters>
       </method>
+      <method name="emit_sig_with_array_len_prop"
+              c:identifier="regress_test_obj_emit_sig_with_array_len_prop">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+        <parameters>
+          <instance-parameter name="obj" transfer-ownership="none">
+            <type name="TestObj" c:type="RegressTestObj*"/>
+          </instance-parameter>
+        </parameters>
+      </method>
       <method name="emit_sig_with_foreign_struct"
               c:identifier="regress_test_obj_emit_sig_with_foreign_struct">
         <return-value transfer-ownership="none">
@@ -3628,7 +3639,9 @@ raise an error.</doc>
         </return-value>
       </glib:signal>
       <glib:signal name="sig-with-array-len-prop" when="last">
-        <doc xml:space="preserve">This test signal similar to GSettings::change-event</doc>
+        <doc xml:space="preserve">This test signal similar to GSettings::change-event.
+You can use this with regress_test_obj_emit_sig_with_array_len_prop(), or
+raise from the introspection client language.</doc>
         <return-value transfer-ownership="none">
           <type name="none" c:type="void"/>
         </return-value>
diff --git a/tests/scanner/Regress-1.0-sections-expected.txt b/tests/scanner/Regress-1.0-sections-expected.txt
index 26ace9a..4c5100e 100644
--- a/tests/scanner/Regress-1.0-sections-expected.txt
+++ b/tests/scanner/Regress-1.0-sections-expected.txt
@@ -336,6 +336,7 @@ RegressTestInterfaceIface
 RegressTestObj
 RegressTestObjClass
 regress_test_obj_do_matrix
+regress_test_obj_emit_sig_with_array_len_prop
 regress_test_obj_emit_sig_with_foreign_struct
 regress_test_obj_emit_sig_with_int64
 regress_test_obj_emit_sig_with_obj
diff --git a/tests/scanner/regress.c b/tests/scanner/regress.c
index 6eac6f7..c317682 100644
--- a/tests/scanner/regress.c
+++ b/tests/scanner/regress.c
@@ -2329,7 +2329,9 @@ regress_test_obj_class_init (RegressTestObjClass *klass)
    * @arr: (array length=len) (element-type uint) (allow-none): numbers, or %NULL
    * @len: length of @arr, or 0
    *
-   * This test signal similar to GSettings::change-event
+   * This test signal similar to GSettings::change-event.
+   * You can use this with regress_test_obj_emit_sig_with_array_len_prop(), or
+   * raise from the introspection client language.
    */
   regress_test_obj_signals[REGRESS_TEST_OBJ_SIGNAL_SIG_NEW_WITH_ARRAY_LEN_PROP] =
     g_signal_new ("sig-with-array-len-prop",
@@ -2756,6 +2758,16 @@ regress_test_obj_emit_sig_with_uint64 (RegressTestObj *obj)
   g_assert (ret == G_MAXUINT64);
 }
 
+/**
+ * regress_test_obj_emit_sig_with_array_len_prop:
+ */
+void
+regress_test_obj_emit_sig_with_array_len_prop (RegressTestObj *obj)
+{
+  int arr[] = { 0, 1, 2, 3, 4 };
+  g_signal_emit_by_name (obj, "sig-with-array-len-prop", &arr, 5);
+}
+
 int
 regress_test_obj_instance_method (RegressTestObj *obj)
 {
diff --git a/tests/scanner/regress.h b/tests/scanner/regress.h
index 780f8e2..c110690 100644
--- a/tests/scanner/regress.h
+++ b/tests/scanner/regress.h
@@ -828,6 +828,9 @@ _GI_TEST_EXTERN
 void       regress_test_obj_emit_sig_with_uint64 (RegressTestObj *obj);
 
 _GI_TEST_EXTERN
+void       regress_test_obj_emit_sig_with_array_len_prop (RegressTestObj *obj);
+
+_GI_TEST_EXTERN
 int        regress_test_obj_instance_method (RegressTestObj *obj);
 
 _GI_TEST_EXTERN


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