summaryrefslogtreecommitdiff
path: root/tests/control_flow/test_guard_unless.zc
diff options
context:
space:
mode:
Diffstat (limited to 'tests/control_flow/test_guard_unless.zc')
-rw-r--r--tests/control_flow/test_guard_unless.zc59
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!";
+
+}