diff --git a/extra/lisp/lisp-tests.factor b/extra/lisp/lisp-tests.factor index 805a1f5ce0..c3316b459f 100644 --- a/extra/lisp/lisp-tests.factor +++ b/extra/lisp/lisp-tests.factor @@ -30,33 +30,31 @@ IN: lisp.test "(lambda (&rest xs) xs)" lisp-string>factor "list" lisp-define { 5 } [ - ! [ 2 3 ] "+" funcall - "(+ 2 3)" lisp-eval + "(+ 2 3)" lisp-eval ] unit-test { 8.3 } [ - ! [ 10.4 2.1 ] "-" funcall - "(- 10.4 2.1)" lisp-eval + "(- 10.4 2.1)" lisp-eval ] unit-test { 3 } [ - "((lambda (x y) (+ x y)) 1 2)" lisp-eval + "((lambda (x y) (+ x y)) 1 2)" lisp-eval ] unit-test { 42 } [ - "((lambda (x y z) (+ x (- y z))) 40 3 1)" lisp-eval + "((lambda (x y z) (+ x (- y z))) 40 3 1)" lisp-eval ] unit-test { "b" } [ - "(cond (#f \"a\") (#t \"b\"))" lisp-eval + "(cond (#f \"a\") (#t \"b\"))" lisp-eval ] unit-test { "b" } [ - "(cond ((< 1 2) \"b\") (#t \"a\"))" lisp-eval + "(cond ((< 1 2) \"b\") (#t \"a\"))" lisp-eval ] unit-test - - { 5 } [ - "(begin (+ 1 4))" lisp-eval + + { +nil+ } [ + "(list)" lisp-eval ] unit-test { { 1 2 3 4 5 } } [ @@ -66,6 +64,18 @@ IN: lisp.test { { 1 2 { 3 { 4 } 5 } } } [ "(list 1 2 (list 3 (list 4) 5))" lisp-eval cons>seq ] unit-test + + { T{ lisp-symbol f "begin" } } [ + "(defmacro begin (&rest body) (list (list (quote lambda) (list) body)))" lisp-eval + ] unit-test + + { t } [ + T{ lisp-symbol f "begin" } lisp-macro? + ] unit-test + + { 5 } [ + "(begin (+ 1 4))" lisp-eval + ] unit-test { T{ lisp-symbol f "if" } } [ "(defmacro if (pred tr fl) (list (quote cond) (list pred tr) (list #t fl)))" lisp-eval @@ -76,11 +86,11 @@ IN: lisp.test ] unit-test { 1 } [ - "(if #t 1 2)" lisp-eval + "(if #t 1 2)" lisp-eval ] unit-test { 3 } [ - "((lambda (x) (if x (begin (+ 1 2)) (- 3 5))) #t)" lisp-eval + "((lambda (x) (if x (+ 1 2) (- 3 5))) #t)" lisp-eval ] unit-test ] with-interactive-vocabs