diff options
Diffstat (limited to 'tests/control_flow/test_guard_unless.zc')
| -rw-r--r-- | tests/control_flow/test_guard_unless.zc | 59 |
1 files changed, 59 insertions, 0 deletions
diff --git a/tests/control_flow/test_guard_unless.zc b/tests/control_flow/test_guard_unless.zc new file mode 100644 index 0000000..d759551 --- /dev/null +++ b/tests/control_flow/test_guard_unless.zc @@ -0,0 +1,59 @@ + +fn check_positive(x: int) -> int { + unless x > 0 { + return -1; + } + return x * 2; +} + +fn safe_access(ptr: int*) -> int { + guard ptr != NULL else { + return -999; + } + return *ptr; +} + +test "test_guard_unless" { + println "Testing guard and unless..."; + + // Unless with true condition (should NOT enter block) + var res1 = check_positive(10); + if (res1 == 20) { + println " -> unless (pass condition): Passed"; + } else { + println " -> unless (pass condition): Failed"; + exit(1); + } + + // Unless with false condition (should enter block) + var res2 = check_positive(-5); + if (res2 == -1) { + println " -> unless (fail condition): Passed"; + } else { + println " -> unless (fail condition): Failed"; + exit(1); + } + + // Guard with valid pointer + var val = 42; + var p = &val; + var res3 = safe_access(p); + if (res3 == 42) { + println " -> guard (valid ptr): Passed"; + } else { + println " -> guard (valid ptr): Failed"; + exit(1); + } + + // Guard with null pointer + var res4 = safe_access(NULL); + if (res4 == -999) { + println " -> guard (null ptr): Passed"; + } else { + println " -> guard (null ptr): Failed"; + exit(1); + } + + println "All guard/unless tests passed!"; + +} |
