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 13:27:52 +0100
commit2a04bc398bcca239fa48e2808904d8e25ce1ef3d (patch)
tree8b6dff4125ba5f51838bf06622a52a2491c0336c
parent9564db29b14a314ab1f377ac601407fe64048a52 (diff)
downloadvala-2a04bc398bcca239fa48e2808904d8e25ce1ef3d.tar.gz
tests: Add various regression "codegen" tests to increase coverage
-rw-r--r--tests/Makefile.am11
-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/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
14 files changed, 153 insertions, 0 deletions
diff --git a/tests/Makefile.am b/tests/Makefile.am
index 358b5867f..13b7e8050 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,14 @@ TESTS = \
delegates/casting.vala \
delegates/delegates.vala \
delegates/delegates-error.test \
+ delegates/fields.vala \
delegates/reference_transfer.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 +236,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 \
@@ -312,9 +321,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/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 ();
}