diff --git a/stdlib/ut.lsp b/stdlib/ut.lsp new file mode 100644 index 0000000..2701f01 --- /dev/null +++ b/stdlib/ut.lsp @@ -0,0 +1,36 @@ + +(defun ut::assert-equal (value form) (do + (define fvalue (eval form)) + (if (= value fvalue) + 1 + nil + ) + )) + +(defun ut::assert-true (test) + (ut::assert-equal 1 test)) + +(defun ut::assert-false (test) + (ut::asertt-equal nil test)) + + +(defun ut::define-test (name exp_list) + (set! ut::tests_list (push ut::tests_list (list name exp_list)))) + +(defun ut::run-tests () + (do + (for t ut::tests_list + (if (eval (index t 1)) + (print (+ "OK -> " (index t 0))) + (print (+ "ERR -> " (index t 0)))) + ))) + +(define ut::tests_list '()) +; TODO (run-test name) + + +;; example of usage +;; (ut::define-test "je to dvojka" '(ut::assert-equal 2 (+ 1 1))) +;; (ut::define-test "je to trojka" '(ut::assert-equal 3 (+ 1 1))) +;; (ut::run-tests) + diff --git a/tests/test.lsp b/tests/test.lsp index d261f2c..871ea7d 100644 --- a/tests/test.lsp +++ b/tests/test.lsp @@ -1,4 +1,10 @@ ; it is expected to be called from parent directory ie: ml -f tests/test.lisp +(include "/usr/local/var/mlisp/terminal.lsp") + +;; unit tests could be in this way +;; (include "/usr/local/var/mlisp/ut.lsp") +;; (ut::define-test "result of (and (> 2 1) (> 2 1))" '(ut::assert-true (and (> 2 1) (> 2 1)))) +;; (ut::run-tests) (print "Test starts")