diff options
| author | 2020-06-25 14:18:15 +0200 | |
|---|---|---|
| committer | 2020-06-25 14:18:15 +0200 | |
| commit | 8cdd9874de313c2eff9cc4065ef0870b35ff50e3 (patch) | |
| tree | 9b7d138b0eed5677a60427117b8d6bf672b6372a /test | |
| parent | Merge pull request #4 from pepe/remove-logs (diff) | |
Start with the test suite
Only fmt and misc, as low hanging fruits. Requesting a direction approval.
Diffstat (limited to 'test')
| -rw-r--r-- | test/helper.janet | 47 | ||||
| -rw-r--r-- | test/suite0.janet | 10 | ||||
| -rw-r--r-- | test/suite1.janet | 6 |
3 files changed, 63 insertions, 0 deletions
diff --git a/test/helper.janet b/test/helper.janet new file mode 100644 index 0000000..373eb81 --- /dev/null +++ b/test/helper.janet @@ -0,0 +1,47 @@ +# Helper code for running tests + +(var num-tests-passed 0) +(var num-tests-run 0) +(var suite-num 0) +(var numchecks 0) +(var start-time 0) + +(defn assert + "Override's the default assert with some nice error handling." + [x &opt e] + (default e "assert error") + (++ num-tests-run) + (when x (++ num-tests-passed)) + (if x + (do + (when (= numchecks 25) + (set numchecks 0) + (print)) + (++ numchecks) + (file/write stdout "\e[32m✔\e[0m")) + (do + (file/write stdout "\n\e[31m✘\e[0m ") + (set numchecks 0) + (print e))) + x) + +(defmacro assert-error + [msg & forms] + (def errsym (keyword (gensym))) + ~(assert (= ,errsym (try (do ,;forms) ([_] ,errsym))) ,msg)) + +(defmacro assert-no-error + [msg & forms] + (def errsym (keyword (gensym))) + ~(assert (not= ,errsym (try (do ,;forms) ([_] ,errsym))) ,msg)) + +(defn start-suite [x] + (set suite-num x) + (set start-time (os/clock)) + (print "\nRunning test suite " x " tests...\n ")) + +(defn end-suite [] + (def delta (- (os/clock) start-time)) + (printf "\n\nTest suite %d finished in %.3f seconds" suite-num delta) + (print num-tests-passed " of " num-tests-run " tests passed.\n") + (if (not= num-tests-passed num-tests-run) (os/exit 1))) diff --git a/test/suite0.janet b/test/suite0.janet new file mode 100644 index 0000000..6c45016 --- /dev/null +++ b/test/suite0.janet @@ -0,0 +1,10 @@ +(use test/helper) +(import spork/fmt) + +(start-suite 0) +# only testing format-print as other fns are dependent on it +(def b @"") +(with-dyns [:out b] + (fmt/format-print "(\n print\n \"HOHOHO\")")) +(assert (deep= b @"(print\n \"HOHOHO\")\n") "format-print") +(end-suite) diff --git a/test/suite1.janet b/test/suite1.janet new file mode 100644 index 0000000..716d901 --- /dev/null +++ b/test/suite1.janet @@ -0,0 +1,6 @@ +(use test/helper) +(import spork/misc) + +(start-suite 1) +(assert (= (misc/dedent " a\n b\n c\n d") "a\n b\n c\n d") "dedent") +(end-suite) |
