diff options
Diffstat (limited to 'tests/control-flow.lisp')
| -rw-r--r-- | tests/control-flow.lisp | 36 |
1 files changed, 36 insertions, 0 deletions
diff --git a/tests/control-flow.lisp b/tests/control-flow.lisp new file mode 100644 index 0000000..75095ec --- /dev/null +++ b/tests/control-flow.lisp @@ -0,0 +1,36 @@ +(assert-error (if (error "") 1 2)) + +(defmacro inmacro x (progn ,@x)) + +(let ((i 0)) + (while #t + (if (> i 4) + (break) + nil) + (incq i)) + (assert (= i 5))) + +(let ((i 0)) + (while #t + (if (> i 4) + (let () (break)) + nil) + (incq i)) + (assert (= i 5))) + +(let ((flag 0) + (i 0)) + (while (< i 10) + (incq i) + (continue) + (setq flag 1)) + (assert (= i 10)) + (assert (= flag 0))) + +(assert-error (funcall (lambda () (break)))) +(assert-error (funcall (lambda () (continue)))) +(assert (= 1 (funcall (lambda () (return 1))))) +(assert (= 1 (funcall (lambda () (inmacro (return 1) (return 2)))))) +(assert (= 1 (funcall (lambda () (while #t (return 1)))))) +(assert (= 1 (funcall (lambda () (let () (return 1)))))) +(assert (= 1 (funcall (lambda () (let ((x (return 1))) (return 2)))))) |
