From: Rico Tzschichholz Date: Tue, 6 Feb 2018 08:01:12 +0000 (+0100) Subject: tests: Add various regression "codegen" tests to increase coverage X-Git-Tag: 0.38.8~10 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=7a6fdb04c1d0ddfa8bb962d9341650a41786a077;p=thirdparty%2Fvala.git tests: Add various regression "codegen" tests to increase coverage --- diff --git a/tests/Makefile.am b/tests/Makefile.am index b300092fb..6981da6b9 100644 --- a/tests/Makefile.am +++ b/tests/Makefile.am @@ -79,6 +79,7 @@ TESTS = \ methods/bug599892.vala \ methods/bug613483.vala \ methods/bug615450.test \ + methods/bug620673.test \ methods/bug620673.vala \ methods/bug622570.vala \ methods/bug626783.vala \ @@ -170,11 +171,15 @@ TESTS = \ structs/bug777194.vala \ delegates/casting.vala \ delegates/delegates.vala \ + delegates/fields.vala \ delegates/reference_transfer.vala \ + delegates/wrapper.vala \ + delegates/bug519949.test \ delegates/bug539166.vala \ delegates/bug595610.vala \ delegates/bug595639.vala \ delegates/bug598869.test \ + delegates/bug632017.test \ delegates/bug638415.vala \ delegates/bug639751.vala \ delegates/bug659778.vala \ @@ -201,7 +206,12 @@ TESTS = \ objects/test-026.vala \ objects/test-029.vala \ objects/test-034.vala \ + objects/bug541728.test \ + objects/bug564011.test \ + objects/bug564090.test \ objects/bug566909.vala \ + objects/bug574146.test \ + objects/bug585344.test \ objects/bug587905.test \ objects/bug588203.vala \ objects/bug589928.vala \ @@ -261,6 +271,7 @@ TESTS = \ objects/bug779955.vala \ objects/bug783897.vala \ objects/bug788964.vala \ + errors/catch-error-code.vala \ errors/errors.vala \ errors/bug567181.vala \ errors/bug579101.vala \ @@ -280,9 +291,11 @@ TESTS = \ asynchronous/bug599568.vala \ asynchronous/bug600827.vala \ asynchronous/bug601558.vala \ + asynchronous/bug612641.vala \ asynchronous/bug613484.vala \ asynchronous/bug614294.vala \ asynchronous/bug620740.vala \ + asynchronous/bug626053.vala \ asynchronous/bug639591.vala \ asynchronous/bug640721.vala \ asynchronous/bug641182.vala \ diff --git a/tests/asynchronous/bug612641.vala b/tests/asynchronous/bug612641.vala new file mode 100644 index 000000000..5b626340d --- /dev/null +++ b/tests/asynchronous/bug612641.vala @@ -0,0 +1,10 @@ +delegate void FooFunc (); + +class Foo { + async FooFunc foo () { + return () => {}; + } +} + +void main () { +} diff --git a/tests/asynchronous/bug626053.vala b/tests/asynchronous/bug626053.vala new file mode 100644 index 000000000..cb1fa3ae4 --- /dev/null +++ b/tests/asynchronous/bug626053.vala @@ -0,0 +1,8 @@ +class Foo { + async string[] foo () { + return { "foo", "bar" }; + } +} + +void main () { +} diff --git a/tests/delegates/bug519949.test b/tests/delegates/bug519949.test new file mode 100644 index 000000000..a8283e4d4 --- /dev/null +++ b/tests/delegates/bug519949.test @@ -0,0 +1,10 @@ +Invalid Code + +delegate void FooFunc (); + +class Foo { +} + +void main () { + var foo = new Foo (); +} diff --git a/tests/delegates/bug632017.test b/tests/delegates/bug632017.test new file mode 100644 index 000000000..afc8362ed --- /dev/null +++ b/tests/delegates/bug632017.test @@ -0,0 +1,7 @@ +Invalid Code + +delegate void FooFunc (); + +void main() { + var array = new FooFunc[3]; +} diff --git a/tests/delegates/fields.vala b/tests/delegates/fields.vala new file mode 100644 index 000000000..ff6828905 --- /dev/null +++ b/tests/delegates/fields.vala @@ -0,0 +1,17 @@ +delegate void FooFunc (); + +[CCode (has_target = false)] +delegate void FooFuncTargetless (); + +FooFunc foo; +unowned FooFunc foo_unowned; +FooFuncTargetless foo_targetless; + +void func () { +} + +void main () { + foo = func; + foo_unowned = func; + foo_targetless = func; +} diff --git a/tests/delegates/wrapper.vala b/tests/delegates/wrapper.vala new file mode 100644 index 000000000..01b95188e --- /dev/null +++ b/tests/delegates/wrapper.vala @@ -0,0 +1,18 @@ +delegate void FooFunc ([CCode (array_length = false, array_null_terminated = true)] string[] a); +delegate void BarFunc (owned FooFunc func); + +void foo (string[] a) { + assert (a.length == 2); + assert (a[1] == "bar"); +} + +void bar (owned FooFunc func) { + string[] ia = { "foo", "bar" }; + func (ia); +} + +void main () { + FooFunc f = foo; + BarFunc b = bar; + b ((owned) f); +} diff --git a/tests/errors/catch-error-code.vala b/tests/errors/catch-error-code.vala new file mode 100644 index 000000000..10bfd9db3 --- /dev/null +++ b/tests/errors/catch-error-code.vala @@ -0,0 +1,16 @@ +errordomain FooError { + BAR, + FOO +} + +void main () { + bool cond = false; + try { + if (cond) + throw new FooError.BAR ("bad"); + throw new FooError.FOO ("worse"); + } catch (FooError.FOO e) { + } catch (FooError e) { + assert_not_reached (); + } +} diff --git a/tests/methods/bug620673.test b/tests/methods/bug620673.test new file mode 100644 index 000000000..26fbcbd5b --- /dev/null +++ b/tests/methods/bug620673.test @@ -0,0 +1,8 @@ +Invalid Code + +void foo () { + va_list args = va_list (); +} + +void main () { +} diff --git a/tests/methods/iterator.vala b/tests/methods/iterator.vala index 3dd99666f..68d573e35 100644 --- a/tests/methods/iterator.vala +++ b/tests/methods/iterator.vala @@ -69,4 +69,18 @@ void main () { foreach (var foo3 in collection3) { assert (foo3 == foo_instance); } + + // GLib.List + var list = new List (); + list.append (foo_instance); + foreach (var e in list) { + assert (e == foo_instance); + } + + // GLib.SList + var slist = new SList (); + slist.append (foo_instance); + foreach (var e in slist) { + assert (e == foo_instance); + } } diff --git a/tests/objects/bug541728.test b/tests/objects/bug541728.test new file mode 100644 index 000000000..37fb72b61 --- /dev/null +++ b/tests/objects/bug541728.test @@ -0,0 +1,8 @@ +Invalid Code + +class Foo { + public string bar { get; construct; } +} + +void main () { +} diff --git a/tests/objects/bug564011.test b/tests/objects/bug564011.test new file mode 100644 index 000000000..1bf9d32f0 --- /dev/null +++ b/tests/objects/bug564011.test @@ -0,0 +1,9 @@ +Invalid Code + +class Foo { + static ~Foo () { + } +} + +void main () { +} diff --git a/tests/objects/bug564090.test b/tests/objects/bug564090.test new file mode 100644 index 000000000..6e62a4a6f --- /dev/null +++ b/tests/objects/bug564090.test @@ -0,0 +1,13 @@ +Invalid Code + +[Compact] +class Foo { + class int x = 1; + + class construct { + x = 2; + } +} + +void main () { +} diff --git a/tests/objects/bug574146.test b/tests/objects/bug574146.test new file mode 100644 index 000000000..40c3e87d2 --- /dev/null +++ b/tests/objects/bug574146.test @@ -0,0 +1,8 @@ +Invalid Code + +class Foo : Object { + public int[] bar { get; construct; } +} + +void main () { +} diff --git a/tests/objects/bug585344.test b/tests/objects/bug585344.test new file mode 100644 index 000000000..68559a677 --- /dev/null +++ b/tests/objects/bug585344.test @@ -0,0 +1,11 @@ +Invalid Code + +[Compact] +class Foo { +} + +void main () { + var foo = new Foo (); + if (foo is Foo) { + } +} diff --git a/tests/structs/gvalue.vala b/tests/structs/gvalue.vala index c17c9d9c9..927db0304 100644 --- a/tests/structs/gvalue.vala +++ b/tests/structs/gvalue.vala @@ -55,10 +55,29 @@ bool make_bool () { return true; } +struct FooStruct { + public int i; +} + +void test_try_cast_value () { + FooStruct s = { 42 }; + Value vs = s; + + FooStruct s2 = (FooStruct) vs; + assert (s2.i == 42); + + string[] sarray = { "hello", "vala", "world" }; + Value va = sarray; + + string[] sarray2 = (string[]) va; + assert (sarray[1] == "vala"); +} + void main () { test_value (); test_value_array (); test_nullable_value (); test_nullable_value_array (); take_value (make_bool ()); + test_try_cast_value (); }