diff options
| author | Zuhaitz Méndez Fernández de Aránguiz <zuhaitz@debian> | 2026-01-18 11:32:57 +0000 |
|---|---|---|
| committer | Zuhaitz Méndez Fernández de Aránguiz <zuhaitz@debian> | 2026-01-18 11:32:57 +0000 |
| commit | 977add96ffb28354e487c6587ae02e2cc82f03ac (patch) | |
| tree | d93229cf7bd8aec3ce5ced504523a7259f3f548d /tests | |
| parent | 26d4d700f3b20579e48306b3171eedf1a09b060b (diff) | |
Related to #68
Diffstat (limited to 'tests')
| -rw-r--r-- | tests/control_flow/test_match.zc | 52 |
1 files changed, 52 insertions, 0 deletions
diff --git a/tests/control_flow/test_match.zc b/tests/control_flow/test_match.zc index 7646256..bf757b1 100644 --- a/tests/control_flow/test_match.zc +++ b/tests/control_flow/test_match.zc @@ -20,6 +20,16 @@ fn get_sign(n: int) -> string { } } +fn classify_extended(n: int) -> int { + match n { + 1 || 2 => { return 100; }, // OR pattern with || + 3 or 4 => { return 200; }, // OR pattern with 'or' + 5..8 => { return 300; }, // Range exclusive (5, 6, 7) + 10..=15 => { return 400; }, // Range inclusive (10-15) + _ => { return -1; } + } +} + test "test_match" { println "Testing match expressions..."; @@ -86,6 +96,48 @@ test "test_match" { exit(1); } + // OR pattern with || + var or1 = classify_extended(1); + var or2 = classify_extended(2); + if (or1 == 100 && or2 == 100) { + println " -> match OR (||): Passed"; + } else { + println " -> match OR (||): Failed"; + exit(1); + } + + // OR pattern with 'or' + var or3 = classify_extended(3); + var or4 = classify_extended(4); + if (or3 == 200 && or4 == 200) { + println " -> match OR (or): Passed"; + } else { + println " -> match OR (or): Failed"; + exit(1); + } + + // Range exclusive (5..8 matches 5, 6, 7) + var r5 = classify_extended(5); + var r7 = classify_extended(7); + var r8 = classify_extended(8); // Should NOT match + if (r5 == 300 && r7 == 300 && r8 == -1) { + println " -> match range exclusive: Passed"; + } else { + println " -> match range exclusive: Failed"; + exit(1); + } + + // Range inclusive (10..=15 matches 10-15) + var r10 = classify_extended(10); + var r15 = classify_extended(15); + var r16 = classify_extended(16); // Should NOT match + if (r10 == 400 && r15 == 400 && r16 == -1) { + println " -> match range inclusive: Passed"; + } else { + println " -> match range inclusive: Failed"; + exit(1); + } + println "All match tests passed!"; } |
