[vala/staging] tests: Add "girwriter" test to increase coverage



commit 7a23383a52bc669a4b43517541d38f4e3d83ccab
Author: Rico Tzschichholz <ricotz ubuntu com>
Date:   Sun May 20 22:01:23 2018 +0200

    tests: Add "girwriter" test to increase coverage
    
    Fixes https://gitlab.gnome.org/GNOME/vala/issues/158

 configure.ac                             |   1 +
 tests/Makefile.am                        |   4 +
 tests/girwriter/GirTest-1.0.gir-expected | 647 +++++++++++++++++++++++++++++++
 tests/girwriter/Makefile.am              |  27 ++
 tests/girwriter/girtest.vala             | 181 +++++++++
 tests/girwriter/girtest.vapi-expected    | 105 +++++
 6 files changed, 965 insertions(+)
---
diff --git a/configure.ac b/configure.ac
index 24b3bcd79..62656404d 100644
--- a/configure.ac
+++ b/configure.ac
@@ -162,6 +162,7 @@ AC_CONFIG_FILES([Makefile
            compiler/Makefile
            vapi/Makefile
            tests/Makefile
+           tests/girwriter/Makefile
            doc/Makefile
            doc/manual/Makefile
            doc/manual/version.xml
diff --git a/tests/Makefile.am b/tests/Makefile.am
index 830a90472..800ee136f 100644
--- a/tests/Makefile.am
+++ b/tests/Makefile.am
@@ -1,5 +1,9 @@
 NULL =
 
+SUBDIRS = \
+       girwriter \
+       $(NULL)
+
 AM_CPPFLAGS = \
        $(GLIB_CFLAGS) \
        $(NULL)
diff --git a/tests/girwriter/GirTest-1.0.gir-expected b/tests/girwriter/GirTest-1.0.gir-expected
new file mode 100644
index 000000000..02edb2aa7
--- /dev/null
+++ b/tests/girwriter/GirTest-1.0.gir-expected
@@ -0,0 +1,647 @@
+<?xml version="1.0"?>
+<repository version="1.2" xmlns="http://www.gtk.org/introspection/core/1.0"; 
xmlns:c="http://www.gtk.org/introspection/c/1.0"; xmlns:glib="http://www.gtk.org/introspection/glib/1.0";>
+<include name="GObject" version="2.0"/>
+<include name="GLib" version="2.0"/>
+<package name="girtest"/>
+<c:include name="girtest.h"/>
+<namespace name="GirTest" version="1.0" c:prefix="GirTest">
+       <enumeration name="EnumTest" c:type="GirTestEnumTest" glib:type-name="GirTestEnumTest" 
glib:get-type="gir_test_enum_test_get_type">
+               <member name="value1" c:identifier="GIR_TEST_ENUM_TEST_VALUE1" value="0"/>
+               <member name="value2" c:identifier="GIR_TEST_ENUM_TEST_VALUE2" value="1"/>
+               <member name="value3" c:identifier="GIR_TEST_ENUM_TEST_VALUE3" value="2"/>
+       </enumeration>
+       <bitfield name="FlagsTest" c:type="GirTestFlagsTest" glib:type-name="GirTestFlagsTest" 
glib:get-type="gir_test_flags_test_get_type">
+               <member name="value1" c:identifier="GIR_TEST_FLAGS_TEST_VALUE1" value="1"/>
+               <member name="value2" c:identifier="GIR_TEST_FLAGS_TEST_VALUE2" value="2"/>
+               <member name="value3" c:identifier="GIR_TEST_FLAGS_TEST_VALUE3" value="4"/>
+       </bitfield>
+       <enumeration name="SkippedEnum" c:type="GirTestSkippedEnum" glib:type-name="GirTestSkippedEnum" 
glib:get-type="gir_test_skipped_enum_get_type" introspectable="0">
+               <member name="value1" c:identifier="GIR_TEST_SKIPPED_ENUM_VALUE1" value="0"/>
+       </enumeration>
+       <enumeration name="SkippedFlags" c:type="GirTestSkippedFlags" glib:type-name="GirTestSkippedFlags" 
glib:get-type="gir_test_skipped_flags_get_type" introspectable="0">
+               <member name="value1" c:identifier="GIR_TEST_SKIPPED_FLAGS_VALUE1" value="0"/>
+       </enumeration>
+       <record name="SkippedStruct" introspectable="0">
+               <constructor name="new" c:identifier="gir_test_skipped_struct_new">
+                       <return-value transfer-ownership="full">
+                               <type name="GirTest.SkippedStruct" c:type="GirTestSkippedStruct*"/>
+                       </return-value>
+               </constructor>
+       </record>
+       <class name="ObjectTest" c:type="GirTestObjectTest" glib:type-name="GirTestObjectTest" 
glib:get-type="gir_test_object_test_get_type" glib:type-struct="ObjectTestClass" parent="GObject.Object">
+               <field name="parent_instance">
+                       <type name="GObject.Object" c:type="GObject"/>
+               </field>
+               <field name="priv">
+                       <type name="ObjectTestPrivate" c:type="GirTestObjectTestPrivate*"/>
+               </field>
+               <field name="field">
+                       <type name="gint" c:type="gint"/>
+               </field>
+               <constructor name="new" c:identifier="gir_test_object_test_new">
+                       <return-value transfer-ownership="full">
+                               <type name="GirTest.ObjectTest" c:type="GirTestObjectTest*"/>
+                       </return-value>
+               </constructor>
+               <constructor name="with_int" c:identifier="gir_test_object_test_new_with_int">
+                       <return-value transfer-ownership="full">
+                               <type name="GirTest.ObjectTest" c:type="GirTestObjectTest*"/>
+                       </return-value>
+                       <parameters>
+                               <parameter name="param" transfer-ownership="none">
+                                       <type name="gint" c:type="gint"/>
+                               </parameter>
+                       </parameters>
+               </constructor>
+               <constructor name="newv" c:identifier="gir_test_object_test_new_newv" introspectable="0">
+                       <return-value transfer-ownership="full">
+                               <type name="GirTest.ObjectTest" c:type="GirTestObjectTest*"/>
+                       </return-value>
+                       <parameters>
+                               <parameter name="param" transfer-ownership="none">
+                                       <type name="gint" c:type="gint"/>
+                               </parameter>
+                               <parameter name="..." transfer-ownership="none">
+                                       <varargs/>
+                               </parameter>
+                       </parameters>
+               </constructor>
+               <constructor name="new_valist" c:identifier="gir_test_object_test_new_new_valist" 
introspectable="0">
+                       <return-value transfer-ownership="full">
+                               <type name="GirTest.ObjectTest" c:type="GirTestObjectTest*"/>
+                       </return-value>
+                       <parameters>
+                               <parameter name="param" transfer-ownership="none">
+                                       <type name="gint" c:type="gint"/>
+                               </parameter>
+                               <parameter name="vargs" transfer-ownership="none">
+                                       <type name="va_list" c:type="va_list"/>
+                               </parameter>
+                       </parameters>
+               </constructor>
+               <function name="full_inout" c:identifier="gir_test_object_test_full_inout">
+                       <return-value transfer-ownership="full">
+                               <type name="none"/>
+                       </return-value>
+                       <parameters>
+                               <parameter name="obj" direction="inout" transfer-ownership="full">
+                                       <type name="GirTest.ObjectTest" c:type="GirTestObjectTest**"/>
+                               </parameter>
+                       </parameters>
+               </function>
+               <function name="full_out" c:identifier="gir_test_object_test_full_out">
+                       <return-value transfer-ownership="full">
+                               <type name="none"/>
+                       </return-value>
+                       <parameters>
+                               <parameter name="obj" direction="out" transfer-ownership="full">
+                                       <type name="GirTest.ObjectTest" c:type="GirTestObjectTest**"/>
+                               </parameter>
+                       </parameters>
+               </function>
+               <function name="full_return" c:identifier="gir_test_object_test_full_return">
+                       <return-value transfer-ownership="full">
+                               <type name="GirTest.ObjectTest" c:type="GirTestObjectTest*"/>
+                       </return-value>
+               </function>
+               <function name="none_inout" c:identifier="gir_test_object_test_none_inout">
+                       <return-value transfer-ownership="full">
+                               <type name="none"/>
+                       </return-value>
+                       <parameters>
+                               <parameter name="obj" direction="inout" transfer-ownership="none">
+                                       <type name="GirTest.ObjectTest" c:type="GirTestObjectTest**"/>
+                               </parameter>
+                       </parameters>
+               </function>
+               <function name="none_out" c:identifier="gir_test_object_test_none_out">
+                       <return-value transfer-ownership="full">
+                               <type name="none"/>
+                       </return-value>
+                       <parameters>
+                               <parameter name="obj" direction="out" transfer-ownership="none">
+                                       <type name="GirTest.ObjectTest" c:type="GirTestObjectTest**"/>
+                               </parameter>
+                       </parameters>
+               </function>
+               <function name="none_return" c:identifier="gir_test_object_test_none_return">
+                       <return-value transfer-ownership="none">
+                               <type name="GirTest.ObjectTest" c:type="GirTestObjectTest*"/>
+                       </return-value>
+               </function>
+               <function name="static_method" c:identifier="gir_test_object_test_static_method">
+                       <return-value transfer-ownership="full">
+                               <type name="none"/>
+                       </return-value>
+               </function>
+               <method name="method_with_default_impl" 
c:identifier="gir_test_object_test_method_with_default_impl">
+                       <return-value transfer-ownership="full">
+                               <type name="none"/>
+                       </return-value>
+                       <parameters>
+                               <parameter name="param" transfer-ownership="none">
+                                       <type name="gint8" c:type="gint8"/>
+                               </parameter>
+                       </parameters>
+               </method>
+               <virtual-method name="method_with_default_impl" invoker="method_with_default_impl">
+                       <return-value transfer-ownership="full">
+                               <type name="none"/>
+                       </return-value>
+                       <parameters>
+                               <parameter name="param" transfer-ownership="none">
+                                       <type name="gint8" c:type="gint8"/>
+                               </parameter>
+                       </parameters>
+               </virtual-method>
+               <method name="int8_in" c:identifier="gir_test_object_test_int8_in">
+                       <return-value transfer-ownership="full">
+                               <type name="none"/>
+                       </return-value>
+                       <parameters>
+                               <parameter name="param" transfer-ownership="none">
+                                       <type name="gint8" c:type="gint8"/>
+                               </parameter>
+                       </parameters>
+               </method>
+               <method name="int8_out" c:identifier="gir_test_object_test_int8_out">
+                       <return-value transfer-ownership="full">
+                               <type name="none"/>
+                       </return-value>
+                       <parameters>
+                               <parameter name="param" direction="out" transfer-ownership="full">
+                                       <type name="gint8" c:type="gint8*"/>
+                               </parameter>
+                       </parameters>
+               </method>
+               <method name="method" c:identifier="gir_test_object_test_method">
+                       <return-value transfer-ownership="full">
+                               <type name="none"/>
+                       </return-value>
+               </method>
+               <method name="method_varargs" c:identifier="gir_test_object_test_method_varargs" 
introspectable="0">
+                       <return-value transfer-ownership="full">
+                               <type name="none"/>
+                       </return-value>
+                       <parameters>
+                               <parameter name="param" transfer-ownership="none">
+                                       <type name="gint" c:type="gint"/>
+                               </parameter>
+                               <parameter name="..." transfer-ownership="none">
+                                       <varargs/>
+                               </parameter>
+                       </parameters>
+               </method>
+               <method name="method_valist" c:identifier="gir_test_object_test_method_valist" 
introspectable="0">
+                       <return-value transfer-ownership="full">
+                               <type name="none"/>
+                       </return-value>
+                       <parameters>
+                               <parameter name="param" transfer-ownership="none">
+                                       <type name="gint" c:type="gint"/>
+                               </parameter>
+                               <parameter name="vargs" transfer-ownership="none">
+                                       <type name="va_list" c:type="va_list"/>
+                               </parameter>
+                       </parameters>
+               </method>
+               <method name="array_in" c:identifier="gir_test_object_test_array_in">
+                       <return-value transfer-ownership="full">
+                               <type name="none"/>
+                       </return-value>
+                       <parameters>
+                               <parameter name="array" transfer-ownership="none">
+                                       <array length="1">
+                                               <type name="gint" c:type="gint"/>
+                                       </array>
+                               </parameter>
+                               <parameter name="array_length1" transfer-ownership="none">
+                                       <type name="gint" c:type="gint"/>
+                               </parameter>
+                       </parameters>
+               </method>
+               <method name="array_inout" c:identifier="gir_test_object_test_array_inout">
+                       <return-value transfer-ownership="full">
+                               <type name="none"/>
+                       </return-value>
+                       <parameters>
+                               <parameter name="array" direction="inout" transfer-ownership="full">
+                                       <array length="1">
+                                               <type name="gint" c:type="gint"/>
+                                       </array>
+                               </parameter>
+                               <parameter name="array_length1" direction="inout" transfer-ownership="none">
+                                       <type name="gint" c:type="gint*"/>
+                               </parameter>
+                       </parameters>
+               </method>
+               <method name="array_out" c:identifier="gir_test_object_test_array_out">
+                       <return-value transfer-ownership="full">
+                               <type name="none"/>
+                       </return-value>
+                       <parameters>
+                               <parameter name="array" direction="out" transfer-ownership="full">
+                                       <array length="1">
+                                               <type name="gint" c:type="gint"/>
+                                       </array>
+                               </parameter>
+                               <parameter name="array_length1" direction="out" transfer-ownership="none">
+                                       <type name="gint" c:type="gint*"/>
+                               </parameter>
+                       </parameters>
+               </method>
+               <method name="array_return" c:identifier="gir_test_object_test_array_return">
+                       <return-value transfer-ownership="full">
+                               <array length="0">
+                                       <type name="gint" c:type="gint"/>
+                               </array>
+                       </return-value>
+                       <parameters>
+                               <parameter name="result_length1" direction="out" transfer-ownership="none">
+                                       <type name="gint" c:type="gint*"/>
+                               </parameter>
+                       </parameters>
+               </method>
+               <method name="int_in_int_in_array_out" 
c:identifier="gir_test_object_test_int_in_int_in_array_out">
+                       <return-value transfer-ownership="full">
+                               <type name="none"/>
+                       </return-value>
+                       <parameters>
+                               <parameter name="param1" transfer-ownership="none">
+                                       <type name="gint" c:type="gint"/>
+                               </parameter>
+                               <parameter name="param2" transfer-ownership="none">
+                                       <type name="gint" c:type="gint"/>
+                               </parameter>
+                               <parameter name="array" direction="out" transfer-ownership="full">
+                                       <array length="3">
+                                               <type name="gint" c:type="gint"/>
+                                       </array>
+                               </parameter>
+                               <parameter name="array_length1" direction="out" transfer-ownership="none">
+                                       <type name="gint" c:type="gint*"/>
+                               </parameter>
+                       </parameters>
+               </method>
+               <method name="int_in_int_in_array_return" 
c:identifier="gir_test_object_test_int_in_int_in_array_return">
+                       <return-value transfer-ownership="full">
+                               <array length="2">
+                                       <type name="gint" c:type="gint"/>
+                               </array>
+                       </return-value>
+                       <parameters>
+                               <parameter name="param1" transfer-ownership="none">
+                                       <type name="gint" c:type="gint"/>
+                               </parameter>
+                               <parameter name="param2" transfer-ownership="none">
+                                       <type name="gint" c:type="gint"/>
+                               </parameter>
+                               <parameter name="result_length1" direction="out" transfer-ownership="none">
+                                       <type name="gint" c:type="gint*"/>
+                               </parameter>
+                       </parameters>
+               </method>
+               <method name="none_in" c:identifier="gir_test_object_test_none_in">
+                       <return-value transfer-ownership="full">
+                               <type name="none"/>
+                       </return-value>
+               </method>
+               <method name="delegate_return" c:identifier="gir_test_object_test_delegate_return">
+                       <return-value transfer-ownership="none" closure="0" scope="notified" destroy="1">
+                               <type name="GirTest.DelegateTest" c:type="GirTestDelegateTest"/>
+                       </return-value>
+                       <parameters>
+                               <parameter name="result_target" direction="out" transfer-ownership="none" 
allow-none="1">
+                                       <type name="gpointer" c:type="void*"/>
+                               </parameter>
+                               <parameter name="result_target_destroy_notify" direction="out" 
transfer-ownership="none" scope="call">
+                                       <type name="GLib.DestroyNotify" c:type="GDestroyNotify"/>
+                               </parameter>
+                       </parameters>
+               </method>
+               <method name="delegate_return_int_in_array_out" 
c:identifier="gir_test_object_test_delegate_return_int_in_array_out">
+                       <return-value transfer-ownership="none" closure="3" scope="notified" destroy="4">
+                               <type name="GirTest.DelegateTest" c:type="GirTestDelegateTest"/>
+                       </return-value>
+                       <parameters>
+                               <parameter name="i1" transfer-ownership="none">
+                                       <type name="gint" c:type="gint"/>
+                               </parameter>
+                               <parameter name="a" direction="out" transfer-ownership="full">
+                                       <array length="2">
+                                               <type name="gint" c:type="gint"/>
+                                       </array>
+                               </parameter>
+                               <parameter name="a_length1" direction="out" transfer-ownership="none">
+                                       <type name="gint" c:type="gint*"/>
+                               </parameter>
+                               <parameter name="result_target" direction="out" transfer-ownership="none" 
allow-none="1">
+                                       <type name="gpointer" c:type="void*"/>
+                               </parameter>
+                               <parameter name="result_target_destroy_notify" direction="out" 
transfer-ownership="none" scope="call">
+                                       <type name="GLib.DestroyNotify" c:type="GDestroyNotify"/>
+                               </parameter>
+                       </parameters>
+               </method>
+               <method name="array_return_int_in_delegate_out" 
c:identifier="gir_test_object_test_array_return_int_in_delegate_out">
+                       <return-value transfer-ownership="full">
+                               <array length="4">
+                                       <type name="gint" c:type="gint"/>
+                               </array>
+                       </return-value>
+                       <parameters>
+                               <parameter name="i1" transfer-ownership="none">
+                                       <type name="gint" c:type="gint"/>
+                               </parameter>
+                               <parameter name="d" direction="out" transfer-ownership="none" closure="2" 
scope="notified" destroy="3">
+                                       <type name="GirTest.DelegateTest" c:type="GirTestDelegateTest"/>
+                               </parameter>
+                               <parameter name="d_target" direction="out" transfer-ownership="none" 
allow-none="1">
+                                       <type name="gpointer" c:type="void*"/>
+                               </parameter>
+                               <parameter name="d_target_destroy_notify" direction="out" 
transfer-ownership="none" scope="call">
+                                       <type name="GLib.DestroyNotify" c:type="GDestroyNotify"/>
+                               </parameter>
+                               <parameter name="result_length1" direction="out" transfer-ownership="none">
+                                       <type name="gint" c:type="gint*"/>
+                               </parameter>
+                       </parameters>
+               </method>
+               <method name="simple_delegate_return" 
c:identifier="gir_test_object_test_simple_delegate_return">
+                       <return-value transfer-ownership="none" scope="call">
+                               <type name="GLib.EqualFunc" c:type="GEqualFunc"/>
+                       </return-value>
+                       <parameters>
+                       </parameters>
+               </method>
+               <method name="skipped_method" c:identifier="gir_test_object_test_skipped_method" 
introspectable="0">
+                       <return-value transfer-ownership="full">
+                               <type name="none"/>
+                       </return-value>
+               </method>
+               <glib:signal name="some-signal">
+                       <return-value transfer-ownership="full">
+                               <type name="none"/>
+                       </return-value>
+                       <parameters>
+                               <parameter name="param" transfer-ownership="none">
+                                       <type name="gint" c:type="gint"/>
+                               </parameter>
+                       </parameters>
+               </glib:signal>
+               <glib:signal name="skipped-signal" introspectable="0">
+                       <return-value transfer-ownership="full">
+                               <type name="none"/>
+                       </return-value>
+                       <parameters>
+                               <parameter name="param" transfer-ownership="none">
+                                       <type name="gint" c:type="gint"/>
+                               </parameter>
+                       </parameters>
+               </glib:signal>
+       </class>
+       <record name="ObjectTestClass" c:type="GirTestObjectTestClass" glib:is-gtype-struct-for="ObjectTest">
+               <field name="parent_class">
+                       <type name="GObject.ObjectClass" c:type="GObjectClass"/>
+               </field>
+               <field name="method_with_default_impl">
+                       <callback name="method_with_default_impl" c:type="method_with_default_impl">
+                               <return-value transfer-ownership="full">
+                                       <type name="none"/>
+                               </return-value>
+                               <parameters>
+                                       <parameter name="self" transfer-ownership="none">
+                                               <type name="GirTest.ObjectTest" c:type="GirTestObjectTest*"/>
+                                       </parameter>
+                                       <parameter name="param" transfer-ownership="none">
+                                               <type name="gint8" c:type="gint8"/>
+                                       </parameter>
+                               </parameters>
+                       </callback>
+               </field>
+       </record>
+       <record name="ObjectTestPrivate" c:type="GirTestObjectTestPrivate" disguised="1"/>
+       <class name="AbstractObjectTest" c:type="GirTestAbstractObjectTest" 
glib:type-name="GirTestAbstractObjectTest" glib:get-type="gir_test_abstract_object_test_get_type" 
glib:type-struct="AbstractObjectTestClass" parent="GObject.Object" abstract="1">
+               <field name="parent_instance">
+                       <type name="GObject.Object" c:type="GObject"/>
+               </field>
+               <field name="priv">
+                       <type name="AbstractObjectTestPrivate" c:type="GirTestAbstractObjectTestPrivate*"/>
+               </field>
+               <method name="method_int8_in" c:identifier="gir_test_abstract_object_test_method_int8_in">
+                       <return-value transfer-ownership="full">
+                               <type name="none"/>
+                       </return-value>
+                       <parameters>
+                               <parameter name="param" transfer-ownership="none">
+                                       <type name="gint8" c:type="gint8"/>
+                               </parameter>
+                       </parameters>
+               </method>
+               <virtual-method name="method_int8_in" invoker="method_int8_in">
+                       <return-value transfer-ownership="full">
+                               <type name="none"/>
+                       </return-value>
+                       <parameters>
+                               <parameter name="param" transfer-ownership="none">
+                                       <type name="gint8" c:type="gint8"/>
+                               </parameter>
+                       </parameters>
+               </virtual-method>
+               <method name="method_int8_inout" 
c:identifier="gir_test_abstract_object_test_method_int8_inout">
+                       <return-value transfer-ownership="full">
+                               <type name="none"/>
+                       </return-value>
+                       <parameters>
+                               <parameter name="param" direction="inout" transfer-ownership="full">
+                                       <type name="gint8" c:type="gint8*"/>
+                               </parameter>
+                       </parameters>
+               </method>
+               <virtual-method name="method_int8_inout" invoker="method_int8_inout">
+                       <return-value transfer-ownership="full">
+                               <type name="none"/>
+                       </return-value>
+                       <parameters>
+                               <parameter name="param" direction="inout" transfer-ownership="full">
+                                       <type name="gint8" c:type="gint8*"/>
+                               </parameter>
+                       </parameters>
+               </virtual-method>
+               <method name="method_int8_out" c:identifier="gir_test_abstract_object_test_method_int8_out">
+                       <return-value transfer-ownership="full">
+                               <type name="none"/>
+                       </return-value>
+                       <parameters>
+                               <parameter name="param" direction="out" transfer-ownership="full">
+                                       <type name="gint8" c:type="gint8*"/>
+                               </parameter>
+                       </parameters>
+               </method>
+               <virtual-method name="method_int8_out" invoker="method_int8_out">
+                       <return-value transfer-ownership="full">
+                               <type name="none"/>
+                       </return-value>
+                       <parameters>
+                               <parameter name="param" direction="out" transfer-ownership="full">
+                                       <type name="gint8" c:type="gint8*"/>
+                               </parameter>
+                       </parameters>
+               </virtual-method>
+       </class>
+       <record name="AbstractObjectTestClass" c:type="GirTestAbstractObjectTestClass" 
glib:is-gtype-struct-for="AbstractObjectTest">
+               <field name="parent_class">
+                       <type name="GObject.ObjectClass" c:type="GObjectClass"/>
+               </field>
+               <field name="method_int8_in">
+                       <callback name="method_int8_in" c:type="method_int8_in">
+                               <return-value transfer-ownership="full">
+                                       <type name="none"/>
+                               </return-value>
+                               <parameters>
+                                       <parameter name="self" transfer-ownership="none">
+                                               <type name="GirTest.AbstractObjectTest" 
c:type="GirTestAbstractObjectTest*"/>
+                                       </parameter>
+                                       <parameter name="param" transfer-ownership="none">
+                                               <type name="gint8" c:type="gint8"/>
+                                       </parameter>
+                               </parameters>
+                       </callback>
+               </field>
+               <field name="method_int8_inout">
+                       <callback name="method_int8_inout" c:type="method_int8_inout">
+                               <return-value transfer-ownership="full">
+                                       <type name="none"/>
+                               </return-value>
+                               <parameters>
+                                       <parameter name="self" transfer-ownership="none">
+                                               <type name="GirTest.AbstractObjectTest" 
c:type="GirTestAbstractObjectTest*"/>
+                                       </parameter>
+                                       <parameter name="param" direction="inout" transfer-ownership="full">
+                                               <type name="gint8" c:type="gint8*"/>
+                                       </parameter>
+                               </parameters>
+                       </callback>
+               </field>
+               <field name="method_int8_out">
+                       <callback name="method_int8_out" c:type="method_int8_out">
+                               <return-value transfer-ownership="full">
+                                       <type name="none"/>
+                               </return-value>
+                               <parameters>
+                                       <parameter name="self" transfer-ownership="none">
+                                               <type name="GirTest.AbstractObjectTest" 
c:type="GirTestAbstractObjectTest*"/>
+                                       </parameter>
+                                       <parameter name="param" direction="out" transfer-ownership="full">
+                                               <type name="gint8" c:type="gint8*"/>
+                                       </parameter>
+                               </parameters>
+                       </callback>
+               </field>
+       </record>
+       <record name="AbstractObjectTestPrivate" c:type="GirTestAbstractObjectTestPrivate" disguised="1"/>
+       <record name="SkippedClass" introspectable="0">
+               <constructor name="new" c:identifier="gir_test_skippedclass_new">
+                       <return-value transfer-ownership="full">
+                               <type name="GirTest.SkippedClass" c:type="GirTestSkippedClass*"/>
+                       </return-value>
+               </constructor>
+       </record>
+       <interface name="InterfaceTest" c:type="GirTestInterfaceTest" glib:type-name="GirTestInterfaceTest" 
glib:get-type="gir_test_interface_test_get_type" glib:type-struct="InterfaceTestIface">
+               <method name="int8_in" c:identifier="gir_test_interface_test_int8_in">
+                       <return-value transfer-ownership="full">
+                               <type name="none"/>
+                       </return-value>
+                       <parameters>
+                               <parameter name="param" transfer-ownership="none">
+                                       <type name="gint8" c:type="gint8"/>
+                               </parameter>
+                       </parameters>
+               </method>
+               <virtual-method name="int8_in" invoker="int8_in">
+                       <return-value transfer-ownership="full">
+                               <type name="none"/>
+                       </return-value>
+                       <parameters>
+                               <parameter name="param" transfer-ownership="none">
+                                       <type name="gint8" c:type="gint8"/>
+                               </parameter>
+                       </parameters>
+               </virtual-method>
+       </interface>
+       <record name="InterfaceTestIface" c:type="GirTestInterfaceTestIface" 
glib:is-gtype-struct-for="InterfaceTest">
+               <field name="parent_iface">
+                       <type name="GObject.TypeInterface" c:type="GTypeInterface"/>
+               </field>
+               <field name="int8_in">
+                       <callback name="int8_in" c:type="int8_in">
+                               <return-value transfer-ownership="full">
+                                       <type name="none"/>
+                               </return-value>
+                               <parameters>
+                                       <parameter name="self" transfer-ownership="none">
+                                               <type name="GirTest.InterfaceTest" 
c:type="GirTestInterfaceTest*"/>
+                                       </parameter>
+                                       <parameter name="param" transfer-ownership="none">
+                                               <type name="gint8" c:type="gint8"/>
+                                       </parameter>
+                               </parameters>
+                       </callback>
+               </field>
+       </record>
+       <interface name="SkippedInterface" c:type="GirTestSkippedInterface" 
glib:type-name="GirTestSkippedInterface" glib:get-type="gir_test_skipped_interface_get_type" 
glib:type-struct="SkippedInterfaceIface" introspectable="0">
+       </interface>
+       <record name="SkippedInterfaceIface" c:type="GirTestSkippedInterfaceIface" 
glib:is-gtype-struct-for="SkippedInterface">
+               <field name="parent_iface">
+                       <type name="GObject.TypeInterface" c:type="GTypeInterface"/>
+               </field>
+       </record>
+       <record name="BoxedStruct">
+               <field name="field_name">
+                       <type name="gint" c:type="gint"/>
+               </field>
+               <function name="init" c:identifier="gir_test_boxed_struct_init">
+                       <return-value transfer-ownership="none">
+                               <type name="none"/>
+                       </return-value>
+                       <parameters>
+                               <parameter name="result" direction="out" transfer-ownership="full" 
caller-allocates="1">
+                                       <type name="GirTest.BoxedStruct" c:type="GirTestBoxedStruct*"/>
+                               </parameter>
+                       </parameters>
+               </function>
+               <method name="inv" c:identifier="gir_test_boxed_struct_inv">
+                       <return-value transfer-ownership="full">
+                               <type name="none"/>
+                       </return-value>
+               </method>
+       </record>
+       <callback name="DelegateTest" c:type="GirTestDelegateTest">
+               <return-value transfer-ownership="full">
+                       <type name="gboolean" c:type="gboolean"/>
+               </return-value>
+               <parameters>
+                       <parameter name="a" transfer-ownership="none" allow-none="1">
+                               <type name="gpointer" c:type="void*"/>
+                       </parameter>
+                       <parameter name="b" transfer-ownership="none" allow-none="1">
+                               <type name="gpointer" c:type="void*"/>
+                       </parameter>
+                       <parameter name="user_data" transfer-ownership="none" closure="2">
+                               <type name="gpointer" c:type="void*"/>
+                       </parameter>
+               </parameters>
+       </callback>
+       <callback name="SkippedDelegate" c:type="GirTestSkippedDelegate" introspectable="0">
+               <return-value transfer-ownership="full">
+                       <type name="none"/>
+               </return-value>
+       </callback>
+       <constant name="CONSTANT_NUMBER" c:identifier="GIR_TEST_CONSTANT_NUMBER" value="42">
+               <type name="gint" c:type="gint"/>
+       </constant>
+       <constant name="CONSTANT_STRING" c:identifier="GIR_TEST_CONSTANT_STRING" value="const ♥ utf8">
+               <type name="utf8" c:type="const gchar*"/>
+       </constant>
+</namespace>
+</repository>
diff --git a/tests/girwriter/Makefile.am b/tests/girwriter/Makefile.am
new file mode 100644
index 000000000..75b096d6a
--- /dev/null
+++ b/tests/girwriter/Makefile.am
@@ -0,0 +1,27 @@
+NULL =
+
+check-girwriter: $(top_builddir)/compiler/valac
+       $(top_builddir)/compiler/valac \
+               -C \
+               --disable-version-header \
+               --vapidir $(top_srcdir)/vapi \
+               --gir GirTest-1.0.gir \
+               --library girtest \
+               $(srcdir)/girtest.vala; \
+       diff -wu $(srcdir)/girtest.vapi-expected girtest.vapi || exit 1; \
+       diff -wu $(srcdir)/GirTest-1.0.gir-expected GirTest-1.0.gir || exit 1; \
+       rm -f GirTest-1.0.gir girtest.vapi girtest.c
+
+check: check-girwriter
+
+EXTRA_DIST = \
+       girtest.vala \
+       girtest.vapi-expected \
+       GirTest-1.0.gir-expected \
+       $(NULL)
+
+CLEANFILES = \
+       girtest.c \
+       girtest.vapi \
+       GirTest-1.0.gir \
+       $(NULL)
diff --git a/tests/girwriter/girtest.vala b/tests/girwriter/girtest.vala
new file mode 100644
index 000000000..c5d4f928b
--- /dev/null
+++ b/tests/girwriter/girtest.vala
@@ -0,0 +1,181 @@
+[GIR (gir_namespace = "GirTest", gir_version = "1.0")]
+namespace GirTest {
+       public struct BoxedStruct {
+               public int field_name;
+
+               public BoxedStruct () {
+               }
+
+               public void inv () {
+               }
+       }
+
+       [GIR (visible = false)]
+       public class SkippedStruct {
+       }
+
+       public const int CONSTANT_NUMBER = 42;
+       public const string CONSTANT_STRING = "const ♥ utf8";
+
+       public enum EnumTest {
+               VALUE1,
+               VALUE2,
+               VALUE3
+       }
+
+       [Flags]
+       public enum FlagsTest {
+               VALUE1,
+               VALUE2,
+               VALUE3
+       }
+
+       [GIR (visible = false)]
+       public enum SkippedEnum {
+               VALUE1
+       }
+
+       [GIR (visible = false)]
+       public enum SkippedFlags {
+               VALUE1
+       }
+
+       public interface InterfaceTest {
+               public virtual void int8_in (int8 param) {
+               }
+       }
+
+       [GIR (visible = false)]
+       public interface SkippedInterface {
+       }
+
+       public delegate bool DelegateTest (void* a, void* b);
+
+       [GIR (visible = false)]
+       public delegate void SkippedDelegate ();
+
+       public class ObjectTest : Object {
+               private static ObjectTest global_instance = new ObjectTest ();
+
+               public signal void some_signal (int param);
+
+               [GIR (visible = false)]
+               public signal void skipped_signal (int param);
+
+               public int field = 42;
+               public ObjectTest () {
+               }
+               public ObjectTest.with_int (int param) {
+                       field = param;
+               }
+               public ObjectTest.newv (int param, ...) {
+                       field = param;
+               }
+               public ObjectTest.new_valist (int param, va_list vargs) {
+                       field = param;
+               }
+               public static void full_inout (ref ObjectTest obj) {
+                       assert (obj.field == 42);
+                       obj = new ObjectTest ();
+               }
+               public static void full_out (out ObjectTest obj) {
+                       obj = new ObjectTest ();
+               }
+               public static ObjectTest full_return () {
+                       return new ObjectTest ();
+               }
+               public static void none_inout (ref unowned ObjectTest obj) {
+                       assert (obj.field == 42);
+                       obj = global_instance;
+               }
+               public static void none_out (out unowned ObjectTest obj) {
+                       obj = global_instance;
+               }
+               public static unowned ObjectTest none_return () {
+                       return global_instance;
+               }
+
+               public static void static_method () {
+               }
+
+               public virtual void method_with_default_impl (int8 param) {
+               }
+
+               public void int8_in (int8 param) {
+               }
+
+               public void int8_out (out int8 param) {
+                       param = 42;
+               }
+
+               public void method () {
+               }
+
+               public void method_varargs (int param, ...) {
+               }
+
+               public void method_valist (int param, va_list vargs) {
+               }
+
+               public void array_in (int[] array) {
+               }
+
+               public void array_inout (ref int[] array) {
+                       assert (array.length > 0);
+                       array = new int[8];
+               }
+
+               public void array_out (out int[] array) {
+                       array = new int[8];
+               }
+
+               public int[] array_return () {
+                       return new int[8];
+               }
+
+               public void int_in_int_in_array_out (int param1, int param2, out int[] array) {
+                       array = new int[8];
+               }
+
+               public int[] int_in_int_in_array_return (int param1, int param2) {
+                       return new int[8];
+               }
+
+               public void none_in () {
+               }
+
+               public DelegateTest delegate_return () {
+                       return (val1, val2) => { return (void*)val1 == (void*)val2; };
+               }
+
+               public DelegateTest delegate_return_int_in_array_out (int i1, out int[] a) {
+                       a = new int[8];
+                       return delegate_return ();
+               }
+
+               public int[] array_return_int_in_delegate_out (int i1, out DelegateTest d) {
+                       d = delegate_return ();
+                       return new int[8];
+               }
+
+               public EqualFunc simple_delegate_return () {
+                       return str_equal;
+               }
+
+               [GIR (visible = false)]
+               public void skipped_method () {
+               }
+       }
+
+       public abstract class AbstractObjectTest : Object {
+               public abstract void method_int8_in (int8 param);
+
+               public abstract void method_int8_inout (ref int8 param);
+
+               public abstract void method_int8_out (out int8 param);
+       }
+
+       [GIR (visible = false)]
+       public class SkippedClass {
+       }
+}
diff --git a/tests/girwriter/girtest.vapi-expected b/tests/girwriter/girtest.vapi-expected
new file mode 100644
index 000000000..9cea4be07
--- /dev/null
+++ b/tests/girwriter/girtest.vapi-expected
@@ -0,0 +1,105 @@
+/* girtest.vapi generated by valac, do not modify. */
+
+[GIR (gir_namespace = "GirTest", gir_version = "1.0")]
+namespace GirTest {
+       [CCode (cheader_filename = "girtest.h")]
+       public abstract class AbstractObjectTest : GLib.Object {
+               public AbstractObjectTest ();
+               public abstract void method_int8_in (int8 param);
+               public abstract void method_int8_inout (ref int8 param);
+               public abstract void method_int8_out (out int8 param);
+       }
+       [CCode (cheader_filename = "girtest.h")]
+       public class ObjectTest : GLib.Object {
+               public int field;
+               public ObjectTest ();
+               public void array_in (int[] array);
+               public void array_inout (ref int[] array);
+               public void array_out (out int[] array);
+               public int[] array_return ();
+               public int[] array_return_int_in_delegate_out (int i1, out GirTest.DelegateTest d);
+               public GirTest.DelegateTest delegate_return ();
+               public GirTest.DelegateTest delegate_return_int_in_array_out (int i1, out int[] a);
+               public static void full_inout (ref GirTest.ObjectTest obj);
+               public static void full_out (out GirTest.ObjectTest obj);
+               public static GirTest.ObjectTest full_return ();
+               public void int8_in (int8 param);
+               public void int8_out (out int8 param);
+               public void int_in_int_in_array_out (int param1, int param2, out int[] array);
+               public int[] int_in_int_in_array_return (int param1, int param2);
+               public void method ();
+               public void method_valist (int param, va_list vargs);
+               public void method_varargs (int param, ...);
+               public virtual void method_with_default_impl (int8 param);
+               public ObjectTest.new_valist (int param, va_list vargs);
+               public ObjectTest.newv (int param, ...);
+               public void none_in ();
+               public static void none_inout (ref unowned GirTest.ObjectTest obj);
+               public static void none_out (out unowned GirTest.ObjectTest obj);
+               public static unowned GirTest.ObjectTest none_return ();
+               public GLib.EqualFunc simple_delegate_return ();
+               [GIR (visible = false)]
+               public void skipped_method ();
+               public static void static_method ();
+               public ObjectTest.with_int (int param);
+               [GIR (visible = false)]
+               public signal void skipped_signal (int param);
+               public signal void some_signal (int param);
+       }
+       [CCode (cheader_filename = "girtest.h")]
+       [GIR (visible = false)]
+       public class SkippedClass {
+               public SkippedClass ();
+       }
+       [CCode (cheader_filename = "girtest.h")]
+       [GIR (visible = false)]
+       public class SkippedStruct {
+               public SkippedStruct ();
+       }
+       [CCode (cheader_filename = "girtest.h")]
+       public interface InterfaceTest {
+               public virtual void int8_in (int8 param);
+       }
+       [CCode (cheader_filename = "girtest.h")]
+       [GIR (visible = false)]
+       public interface SkippedInterface {
+       }
+       [CCode (cheader_filename = "girtest.h")]
+       public struct BoxedStruct {
+               public int field_name;
+               public BoxedStruct ();
+               public void inv ();
+       }
+       [CCode (cheader_filename = "girtest.h")]
+       public enum EnumTest {
+               VALUE1,
+               VALUE2,
+               VALUE3
+       }
+       [CCode (cheader_filename = "girtest.h")]
+       [Flags]
+       public enum FlagsTest {
+               VALUE1,
+               VALUE2,
+               VALUE3
+       }
+       [CCode (cheader_filename = "girtest.h")]
+       [GIR (visible = false)]
+       public enum SkippedEnum {
+               VALUE1
+       }
+       [CCode (cheader_filename = "girtest.h")]
+       [GIR (visible = false)]
+       public enum SkippedFlags {
+               VALUE1
+       }
+       [CCode (cheader_filename = "girtest.h")]
+       public delegate bool DelegateTest (void* a, void* b);
+       [CCode (cheader_filename = "girtest.h")]
+       [GIR (visible = false)]
+       public delegate void SkippedDelegate ();
+       [CCode (cheader_filename = "girtest.h")]
+       public const int CONSTANT_NUMBER;
+       [CCode (cheader_filename = "girtest.h")]
+       public const string CONSTANT_STRING;
+}


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