summaryrefslogtreecommitdiff
path: root/tests/methods
diff options
context:
space:
mode:
authorRico Tzschichholz <ricotz@ubuntu.com>2020-01-15 15:52:49 +0100
committerRico Tzschichholz <ricotz@ubuntu.com>2020-01-15 15:52:49 +0100
commit98ab3da89640b8b8a6c67044b4df1194672774bb (patch)
treedf8c01f363a605cc9fed4ae6df8d09bb4fc81f6d /tests/methods
parent8021ad3876ede6b19a8e075ab0f0a23a999d0b50 (diff)
downloadvala-98ab3da89640b8b8a6c67044b4df1194672774bb.tar.gz
Add further support for params arrays
This brings support for params-arrays in normal vala source code. The parameter is a null-terminated array which is represented as variadic parameter in generated C. This feature is considered experimental for now. Fixes https://gitlab.gnome.org/GNOME/vala/issues/128
Diffstat (limited to 'tests/methods')
-rw-r--r--tests/methods/params-array.vala42
1 files changed, 42 insertions, 0 deletions
diff --git a/tests/methods/params-array.vala b/tests/methods/params-array.vala
new file mode 100644
index 000000000..3c76d7048
--- /dev/null
+++ b/tests/methods/params-array.vala
@@ -0,0 +1,42 @@
+void foo (params string[] strv) {
+ assert (strv.length == 3);
+ assert (strv[0] == "foo");
+ assert (strv[1] == "bar");
+ assert (strv[2] == "manam");
+}
+
+void bar (params int[] intv) {
+ assert (intv.length == 3);
+ assert (intv[0] == 23);
+ assert (intv[1] == 42);
+ assert (intv[2] == 4711);
+}
+
+void manam (params Value?[] valuev) {
+ assert (valuev.length == 3);
+ assert (valuev[0] == "foo");
+ assert (valuev[1] == 4711);
+ assert (valuev[2] == 3.1415);
+}
+
+void manam_owned (params owned Value?[] valuev) {
+ assert (valuev.length == 3);
+ assert (valuev[0] == "foo");
+ assert (valuev[1] == 4711);
+ assert (valuev[2] == 3.1415);
+}
+
+void minim (params Variant[] variantv) {
+ assert (variantv.length == 3);
+ assert ((string) variantv[0] == "foo");
+ assert ((int) variantv[1] == 4711);
+ assert ((double) variantv[2] == 3.1415);
+}
+
+void main () {
+ foo ("foo", "bar", "manam");
+ bar (23, 42, 4711);
+ manam ("foo", 4711, 3.1415);
+ manam_owned ("foo", 4711, 3.1415);
+ minim ("foo", 4711, 3.1415);
+}