Skip to content

Instantly share code, notes, and snippets.

@codeboost
Last active September 8, 2020 23:21
Show Gist options
  • Save codeboost/e70217cc40bff90ec9016e7f3bd7cd99 to your computer and use it in GitHub Desktop.
Save codeboost/e70217cc40bff90ec9016e7f3bd7cd99 to your computer and use it in GitHub Desktop.
The test
(ns user.dustin.minitest2
(:require
[meander.epsilon :as m]))
(defn error [& args]
(apply println args))
(defn run-tests [formv]
(let [parsed (m/rewrite formv
[] []
[!xs ... '=> ?v & ?more]
[[[!xs ...] ?v] & (m/cata ?more)])]
(doseq [[forms expected] parsed]
(let [e (eval expected)
v (eval (last forms))]
(if (= v e)
(println "test passed" (last forms) '=> expected)
(error "test failed" (last forms) '=> expected e))))))
(defmacro tests [& forms]
`(run-tests (vec '~forms)))
(tests
1
1
1
(inc 42) => 43
(inc 3) => 4
nil => nil
nil => true)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment