Files
rust-mal/tests/forms.mal
2024-04-16 09:35:35 +09:00

59 lines
1005 B
Plaintext

; def!
(assert (not (def! FALSE nil)))
(assert (def! TRUE true))
(println :def)
(def! value-0 0)
(assert-eq value-0 0)
(assert-eq
((fn* [x]
(def! value-1 1) (+ x value-1))
2)
3)
(assert-fail '(def!))
(assert-fail '(def! a))
(println :do)
; do
(assert-eq
(do 1 2 3)
3)
(assert-eq
(do
(def! do-test-1 1)
(def! do-test-2 2))
2)
(assert-eq 2 do-test-2)
(let* [a 1 b 2]
(def! do-test-3 3)
(assert-eq do-test-3 3))
(assert-eq (do) nil)
; if
(assert (if true 1))
(assert (not (if false 1)))
(assert (not (if false nil)))
(assert (if false nil 1))
(assert (if true 1 nil))
(assert-fail '(if true))
(assert-fail '(if false))
(assert-fail '(if))
; let*
(assert (let* [let-a 1
let-b 2]
(assert-eq let-a 1)
(assert-eq let-b 2)
4) 4)
(assert-fail 'let-a)
; fn*
(def! f (fn* [x] (def! func-var x) (+ func-var 1)))
(assert-fail 'func-var)
(assert-eq (f 1) 2)
(assert-fail '(f 1 2))
(assert-fail '(1 2 3))