diff --git a/Readme.md b/Readme.md index d576d22..3323440 100644 --- a/Readme.md +++ b/Readme.md @@ -68,6 +68,8 @@ utils/local_install.sh (read-url "https://api.nasdaq.com/api/calendar/dividends/") ; hangs in sslclient.cpp line 132 ### TODO +- better formating of help +- unify -f and -run options - add debug support, at least call stack - multiline editing (see kilocpp editor) - execute system command should capture stderr diff --git a/stdlib/ut.lsp b/stdlib/ut.lsp index c26ac04..6260fce 100644 --- a/stdlib/ut.lsp +++ b/stdlib/ut.lsp @@ -15,18 +15,33 @@ (defun ut::define-test (name exp_list) (set! ut::tests_list (push ut::tests_list (list name exp_list)))) + +(defun ut::exec-test (test_name code) (do + (define test_result (eval code)) + (if (first test_result) + (do (print (+ (term-green "OK") " -> " test_name)) + #t + ) + (do (print (+ (term-red "ERR") " -> " test_name)) + (print " " (second test_result) " <> " (third test_result)) + nil + )) +)) + +(defun ut::run-test (name) + (for t ut::tests_list + (if (= (first t) name) + (ut::exec-test (first t) (second t))) + )) + (defun ut::run-tests () (do (define oks 0) (define errs 0) (for t ut::tests_list - (define test_name (first t)) - (define test_result (eval (second t))) - (if (index test_result 0) - (do (set! oks (+ oks 1)) (print (+ (term-green "OK") " -> " test_name))) - (do (set! errs (+ errs 1)) - (print (+ (term-red "ERR") " -> " test_name)) - (print " " (second test_result) " <> " (third test_result)) - )) + (if (ut::exec-test (first t) (second t)) + (set! oks (+ oks 1)) + (set! errs (+ errs 1)) + ) ) (if (= errs 0) (print (term-green (+ (string oks) " test(s) OK"))) @@ -34,7 +49,6 @@ )) (define ut::tests_list '()) -; TODO (run-test name) ;; example of usage diff --git a/tests/test.lsp b/tests/test.lsp index a59641d..0f1b4b3 100644 --- a/tests/test.lsp +++ b/tests/test.lsp @@ -138,11 +138,11 @@ (ut::define-test "result of create table" '(ut::assert-equal ((0 "table created" 0)) (usql "create table a (i integer not null, s varchar(64), f float null, d date null, b boolean)"))) -(ut::define-test "result tcp-client" '(ut::assert-equal "(print \"ABCD\")" (tcp-client "127.0.0.1" 7778 "abcd"))) +(ut::define-test "result of (tcp-client \"abcd\")" '(ut::assert-equal "(print \"ABCD\")" (tcp-client "127.0.0.1" 7778 "abcd"))) -(ut::define-test "result t(find-val-in-list \"a\")" '(ut::assert-equal '("av" "avv") (find-val-in-list fvil_list "a"))) -(ut::define-test "result t(find-val-in-list \"b\")" '(ut::assert-equal "bv" (find-val-in-list fvil_list "b"))) -(ut::define-test "result t(find-val-in-list 31)" '(ut::assert-equal 32 (find-val-in-list fvil_list 31))) +(ut::define-test "result of (find-val-in-list \"a\")" '(ut::assert-equal '("av" "avv") (find-val-in-list fvil_list "a"))) +(ut::define-test "result of (find-val-in-list \"b\")" '(ut::assert-equal "bv" (find-val-in-list fvil_list "b"))) +(ut::define-test "result of (find-val-in-list 31)" '(ut::assert-equal 32 (find-val-in-list fvil_list 31))) (ut::define-test "result of (max (10 9 8 7 6 5 4 3 2 1))" '(ut::assert-equal 10 (max '(10 9 8 7 6 5 4 3 2 1)))) (ut::define-test "result of (max ())" '(ut::assert-equal nil (max '())))