summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRico Tzschichholz <ricotz@ubuntu.com>2018-02-06 09:01:12 +0100
committerRico Tzschichholz <ricotz@ubuntu.com>2018-02-06 17:52:44 +0100
commit87020808d89ba4507e410aec615a2985f3b57bf8 (patch)
tree079d57ba325b39b082a6edeaf04c874ad14800e0
parent9564db29b14a314ab1f377ac601407fe64048a52 (diff)
downloadvala-87020808d89ba4507e410aec615a2985f3b57bf8.tar.gz
tests: Add various regression "codegen" tests to increase coverage
-rw-r--r--tests/Makefile.am13
-rw-r--r--tests/asynchronous/bug612641.vala10
-rw-r--r--tests/asynchronous/bug626053.vala8
-rw-r--r--tests/delegates/bug519949.test10
-rw-r--r--tests/delegates/bug632017.test7
-rw-r--r--tests/delegates/fields.vala17
-rw-r--r--tests/delegates/wrapper.vala18
-rw-r--r--tests/errors/catch-error-code.vala16
-rw-r--r--tests/methods/bug620673.test8
-rw-r--r--tests/methods/iterator.vala14
-rw-r--r--tests/objects/bug541728.test8
-rw-r--r--tests/objects/bug564011.test9
-rw-r--r--tests/objects/bug564090.test13
-rw-r--r--tests/objects/bug574146.test8
-rw-r--r--tests/objects/bug585344.test11
-rw-r--r--tests/structs/gvalue.vala19
16 files changed, 189 insertions, 0 deletions
diff --git a/tests/Makefile.am b/tests/Makefile.am
index 358b5867f..063c7e8fd 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 \
@@ -200,11 +201,15 @@ TESTS = \
delegates/casting.vala \
delegates/delegates.vala \
delegates/delegates-error.test \
+ 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 \
@@ -232,7 +237,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 \
@@ -293,6 +303,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 \
@@ -312,9 +323,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<G> {
+}
+
+void main () {
+ var foo = new Foo<FooFunc> ();
+}
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<Foo> ();
+ list.append (foo_instance);
+ foreach (var e in list) {
+ assert (e == foo_instance);
+ }
+
+ // GLib.SList
+ var slist = new SList<Foo> ();
+ 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 ();
}