(include "/usr/local/var/mlisp/terminal.lsp") (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::assert-equal nil test)) (defun ut::assert-nil (test) (ut::assert-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 (define oks 0) (define errs 0) (for t ut::tests_list (if (eval (index t 1)) (do (set! oks (+ oks 1)) (print (+ (term-green "OK") " -> " (index t 0)))) (do (set! errs (+ errs 1)) (print (+ (term-red "ERR") " -> " (index t 0))))) ) (if (= errs 0) (print (term-green (+ (string oks) " test(s) OK"))) (print (term-red (+ (string errs) " test(s) FAILED")))) )) (define ut::tests_list '()) ; TODO (run-test name) ;; example of usage ;; (ut::define-test "its number 2" '(ut::assert-equal 2 (+ 1 1))) ;; (ut::define-test "tis number 3" '(ut::assert-equal 3 (+ 1 1))) ;; (ut::run-tests)