aboutsummaryrefslogtreecommitdiffhomepage
path: root/test
diff options
context:
space:
mode:
authorJosef Pospíšil <josef.pospisil@laststar.eu>2020-06-25 14:18:15 +0200
committerJosef Pospíšil <josef.pospisil@laststar.eu>2020-06-25 14:18:15 +0200
commit8cdd9874de313c2eff9cc4065ef0870b35ff50e3 (patch)
tree9b7d138b0eed5677a60427117b8d6bf672b6372a /test
parentMerge 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.janet47
-rw-r--r--test/suite0.janet10
-rw-r--r--test/suite1.janet6
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)