]> git.ipfire.org Git - thirdparty/vala.git/commitdiff
tests: Add more "delegate" tests to increase coverage
authorRico Tzschichholz <ricotz@ubuntu.com>
Sat, 14 Nov 2020 20:31:03 +0000 (21:31 +0100)
committerRico Tzschichholz <ricotz@ubuntu.com>
Sun, 3 Jan 2021 12:12:19 +0000 (13:12 +0100)
tests/Makefile.am
tests/methods/parameter-ref-delegate.vala [new file with mode: 0644]
tests/methods/return-unowned-delegate.vala [new file with mode: 0644]

index 9d428d5ff529b3d16689a874bfe3b383035ac819..5c72dff8850ee7134f36fa26313fe7bf9cc017bb 100644 (file)
@@ -131,9 +131,11 @@ TESTS = \
        methods/parameter-fixed-array-initializer.vala \
        methods/parameter-ref-array-resize.vala \
        methods/parameter-ref-array-resize-captured.vala \
+       methods/parameter-ref-delegate.vala \
        methods/prepostconditions.vala \
        methods/prepostconditions-captured.vala \
        methods/postconditions.vala \
+       methods/return-unowned-delegate.vala \
        methods/same-name.vala \
        methods/symbolresolution.vala \
        methods/bug540483.vala \
diff --git a/tests/methods/parameter-ref-delegate.vala b/tests/methods/parameter-ref-delegate.vala
new file mode 100644 (file)
index 0000000..432dd94
--- /dev/null
@@ -0,0 +1,26 @@
+delegate int FooFunc ();
+
+void foo (int i, ref FooFunc func) {
+       assert (func () == i);
+       func = () => 4711;
+}
+
+int bar () {
+       return 23;
+}
+
+void main () {
+       {
+               FooFunc func = bar;
+               assert (func () == 23);
+               foo (23, ref func);
+               assert (func () == 4711);
+       }
+       {
+               int i = 42;
+               FooFunc func = () => i;
+               assert (func () == 42);
+               foo (42, ref func);
+               assert (func () == 4711);
+       }
+}
diff --git a/tests/methods/return-unowned-delegate.vala b/tests/methods/return-unowned-delegate.vala
new file mode 100644 (file)
index 0000000..daa6eef
--- /dev/null
@@ -0,0 +1,25 @@
+delegate int FooFunc ();
+
+unowned FooFunc foo () {
+       return (FooFunc) manam;
+}
+
+unowned FooFunc bar () {
+       return () => 4711;
+}
+
+int manam () {
+       return 42;
+}
+
+void main () {
+       {
+               FooFunc func = foo ();
+               assert (func == (FooFunc) manam);
+               assert (func () == 42);
+       }
+       {
+               FooFunc func = bar ();
+               assert (func () == 4711);
+       }
+}