Files
rust-mal/tests/forms.mal
teo3300 9af7ada706 Removed MalType::Bool
mplemented instead MalType::T as opposed to Maltype::Nil
2025-06-13 18:30:20 +09:00

59 lines
988 B
Plaintext

; def!
(assert (not (def! FALSE nil)))
(assert (def! TRUE t))
(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 t 1))
(assert (not (if nil 1)))
(assert (not (if nil nil)))
(assert (if nil nil 1))
(assert (if t 1 nil))
(assert-fail '(if t))
(assert-fail '(if nil))
(assert-fail '(if))
; let*
(assert-eq (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))