diff options
Diffstat (limited to 'testsuite')
| -rw-r--r-- | testsuite/fail_compilation/case_non_constant.elna | 16 | ||||
| -rw-r--r-- | testsuite/fail_compilation/case_type_mismatch.elna | 9 | ||||
| -rw-r--r-- | testsuite/runnable/case_else.elna | 14 | ||||
| -rw-r--r-- | testsuite/runnable/case_int.elna | 12 | ||||
| -rw-r--r-- | testsuite/runnable/case_multilabel.elna | 11 | ||||
| -rw-r--r-- | testsuite/runnable/case_record.elna | 17 |
6 files changed, 79 insertions, 0 deletions
diff --git a/testsuite/fail_compilation/case_non_constant.elna b/testsuite/fail_compilation/case_non_constant.elna new file mode 100644 index 0000000..2f19df8 --- /dev/null +++ b/testsuite/fail_compilation/case_non_constant.elna @@ -0,0 +1,16 @@ +type + R = record + a: Int; + b: Int + end + +var + r: R + x: R + +begin + x := r; + case x of + r: (* @Error Expected a constant expression *) + end +end. diff --git a/testsuite/fail_compilation/case_type_mismatch.elna b/testsuite/fail_compilation/case_type_mismatch.elna new file mode 100644 index 0000000..9cdae38 --- /dev/null +++ b/testsuite/fail_compilation/case_type_mismatch.elna @@ -0,0 +1,9 @@ +var + x: Int + +begin + case x of + 1: (* ok *) + | true: (* @Error Invalid operands of type 'Int' and 'Bool' for operator = *) + end +end. diff --git a/testsuite/runnable/case_else.elna b/testsuite/runnable/case_else.elna new file mode 100644 index 0000000..dbec6df --- /dev/null +++ b/testsuite/runnable/case_else.elna @@ -0,0 +1,14 @@ +var + x: Int := 5 + matched: Bool := false + +begin + case x of + 1: assert(false) + | 2: assert(false) + | 3: assert(false) + else + matched := true + end; + assert(matched) +end. diff --git a/testsuite/runnable/case_int.elna b/testsuite/runnable/case_int.elna new file mode 100644 index 0000000..3b770a7 --- /dev/null +++ b/testsuite/runnable/case_int.elna @@ -0,0 +1,12 @@ +var + x: Int := 2 + +begin + case x of + 1: assert(false) + | 2: assert(true) + | 3: assert(false) + else + assert(false) + end +end. diff --git a/testsuite/runnable/case_multilabel.elna b/testsuite/runnable/case_multilabel.elna new file mode 100644 index 0000000..be647d4 --- /dev/null +++ b/testsuite/runnable/case_multilabel.elna @@ -0,0 +1,11 @@ +var + x: Int := 3 + +begin + case x of + 1, 2, 3: assert(true) + | 4, 5: assert(false) + else + assert(false) + end +end. diff --git a/testsuite/runnable/case_record.elna b/testsuite/runnable/case_record.elna new file mode 100644 index 0000000..4f65a5b --- /dev/null +++ b/testsuite/runnable/case_record.elna @@ -0,0 +1,17 @@ +type + R = record + a: Int; + b: Int + end + +var + r: R := R{a: 1, b: 2} + +begin + case r of + R{a: 0, b: 0}: assert(false) + | R{a: 1, b: 2}: assert(true) + else + assert(false) + end +end. |
