Skip to content

Instantly share code, notes, and snippets.

Embed
What would you like to do?
4clojure in an editor
;; 1. Common test utility
(require '[clojure.walk :as walk])
(defmacro to-test [name & source]
`(defn ~(symbol (str name "-test")) [] ~@(for [case (filter list? source)]
`(assert ~(walk/postwalk-replace {'__ name} case)))))
;; 2. for each problem I write:
(def pNN
(fn ...solution here...))
;; 3. type (to-test solution-fn-name )
;; 4. copy paste the problem test cases from 4clojure into the to-test
;; form (the text will include "test not run")
;; example problem 21:
(to-test pNN
(= (__ 2 [1 2 3 4 5]) '(3 4 5 1 2))
test not run
(= (__ -2 [1 2 3 4 5]) '(4 5 1 2 3))
test not run
(= (__ 6 [1 2 3 4 5]) '(2 3 4 5 1))
test not run
(= (__ 1 '(:a :b :c)) '(:b :c :a))
test not run
(= (__ -4 '(:a :b :c)) '(:c :a :b))
)
;; 5. run (pNN-test) to run all the created assertions of the test
;; case
;; 6. edit pNN and test again
;; 7. (pNN-test) returns nil for succes!
;; 8. copy the (fn ...) body from pNN into 4clojure
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
You can’t perform that action at this time.