summaryrefslogtreecommitdiff
path: root/tests
diff options
context:
space:
mode:
authorRico Tzschichholz <ricotz@ubuntu.com>2018-05-20 22:01:23 +0200
committerRico Tzschichholz <ricotz@ubuntu.com>2018-08-01 17:40:03 +0200
commit7a23383a52bc669a4b43517541d38f4e3d83ccab (patch)
tree94867910092827775f3f2c6cf365ce1b6991883f /tests
parented1ba8c6cdf8cd0d796b258d22f6977ce2502702 (diff)
downloadvala-7a23383a52bc669a4b43517541d38f4e3d83ccab.tar.gz
tests: Add "girwriter" test to increase coverage
Fixes https://gitlab.gnome.org/GNOME/vala/issues/158
Diffstat (limited to 'tests')
-rw-r--r--tests/Makefile.am4
-rw-r--r--tests/girwriter/GirTest-1.0.gir-expected647
-rw-r--r--tests/girwriter/Makefile.am27
-rw-r--r--tests/girwriter/girtest.vala181
-rw-r--r--tests/girwriter/girtest.vapi-expected105
5 files changed, 964 insertions, 0 deletions
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;
+}