summaryrefslogtreecommitdiff
path: root/tests/control_flow/test_match.zc
diff options
context:
space:
mode:
authorZuhaitz Méndez Fernández de Aránguiz <zuhaitz@debian>2026-01-14 23:59:54 +0000
committerZuhaitz Méndez Fernández de Aránguiz <zuhaitz@debian>2026-01-14 23:59:54 +0000
commitdcfdc053cb5f9fb4d5eac0a2233c75126b7a8188 (patch)
treef34f30b382fa22d6fd0af46875a5b4b26d00feff /tests/control_flow/test_match.zc
parenta918df69269a39ef7350a645b5db025d66ecb18a (diff)
Added some of the tests.
Diffstat (limited to 'tests/control_flow/test_match.zc')
-rw-r--r--tests/control_flow/test_match.zc91
1 files changed, 91 insertions, 0 deletions
diff --git a/tests/control_flow/test_match.zc b/tests/control_flow/test_match.zc
new file mode 100644
index 0000000..7646256
--- /dev/null
+++ b/tests/control_flow/test_match.zc
@@ -0,0 +1,91 @@
+
+fn classify_number(n: int) -> int {
+ match n {
+ 0 => { return 100; },
+ 1 => { return 200; },
+ 2 => { return 300; },
+ _ => { return -1; }
+ }
+}
+
+fn get_sign(n: int) -> string {
+ match n {
+ 0 => { return "zero"; },
+ _ => {
+ if (n > 0) {
+ return "positive";
+ }
+ return "negative";
+ }
+ }
+}
+
+test "test_match" {
+ println "Testing match expressions...";
+
+ // Match with exact value (0)
+ var res1 = classify_number(0);
+ if (res1 == 100) {
+ println " -> match 0: Passed";
+ } else {
+ println " -> match 0: Failed";
+ exit(1);
+ }
+
+ // Match with exact value (1)
+ var res2 = classify_number(1);
+ if (res2 == 200) {
+ println " -> match 1: Passed";
+ } else {
+ println " -> match 1: Failed";
+ exit(1);
+ }
+
+ // Match with exact value (2)
+ var res3 = classify_number(2);
+ if (res3 == 300) {
+ println " -> match 2: Passed";
+ } else {
+ println " -> match 2: Failed";
+ exit(1);
+ }
+
+ // Match with default case
+ var res4 = classify_number(99);
+ if (res4 == -1) {
+ println " -> match default: Passed";
+ } else {
+ println " -> match default: Failed";
+ exit(1);
+ }
+
+ // Match with complex body (zero)
+ var sign1 = get_sign(0);
+ if (strcmp(sign1, "zero") == 0) {
+ println " -> match complex (zero): Passed";
+ } else {
+ println " -> match complex (zero): Failed";
+ exit(1);
+ }
+
+ // Match with complex body (positive)
+ var sign2 = get_sign(42);
+ if (strcmp(sign2, "positive") == 0) {
+ println " -> match complex (positive): Passed";
+ } else {
+ println " -> match complex (positive): Failed";
+ exit(1);
+ }
+
+ // Match with complex body (negative)
+ var sign3 = get_sign(-10);
+ if (strcmp(sign3, "negative") == 0) {
+ println " -> match complex (negative): Passed";
+ } else {
+ println " -> match complex (negative): Failed";
+ exit(1);
+ }
+
+ println "All match tests passed!";
+
+}