From 7a23383a52bc669a4b43517541d38f4e3d83ccab Mon Sep 17 00:00:00 2001 From: Rico Tzschichholz Date: Sun, 20 May 2018 22:01:23 +0200 Subject: tests: Add "girwriter" test to increase coverage Fixes https://gitlab.gnome.org/GNOME/vala/issues/158 --- 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 +++++ 5 files changed, 964 insertions(+) create mode 100644 tests/girwriter/GirTest-1.0.gir-expected create mode 100644 tests/girwriter/Makefile.am create mode 100644 tests/girwriter/girtest.vala create mode 100644 tests/girwriter/girtest.vapi-expected (limited to 'tests') 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 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 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; +} -- cgit v1.2.1