simple test suite / answer key for contributors

This commit is contained in:
Colin Jones 2010-07-18 11:25:53 -05:00
parent 7538fb9e7a
commit 71018e6940
3 changed files with 120 additions and 0 deletions

View File

@ -0,0 +1,116 @@
(ns path-to-answer-sheet
(:use [path-to-enlightenment :exclude (run)]
[clojure.string :only (join split)]
clojure.test))
(def answers
{"equalities" {"__" [true
2
7
5]}
"lists" {"__" ["1 2 3 4 5"
1
[2 3 4 5]
"()"
[:a :b :c :d :e]
[0 :a :b :c :d :e]
:a
[:b :c :d :e]
"\"No dice!\""
"()"]}
"vectors" {"__" [0
2
[333]
:jelly
:jelly
[:butter :and]]}
"sets" {"__" [#{1 2 3 4 5}
#{1 2 3 4 5}
#{2 3}
#{1 4}]}
"maps" {"__" [0
1
2
2
1
1
"\"Vancouver\""
true
false
"\"February\""
1 "\"January\""
2006 2010 2014
"\"Vancouver\""]}
"functions" {"__" [1024
32 5
1024 2
20 "*"]
"___" ["(fn [f] (f 5))"]}
"conditionals" {"__" [:a
[]
0
:glory
"'doom" 0 ]}
"higher_order_functions" {"__" [4 8 12
"(* x x)"
[false false true false false]
"()"
true
"(< x 31)"
"(* 10 x)" "(< x 4)"
24
100
"(count a)" "(count b)"]}
"runtime_polymorphism" {"__" ["(str (:name a) \" eats veggies.\")"
"(str (:name a) \" eats animals.\")"
"(str \"I don't know what \" (:name a) \" eats.\")"
"\"Hello World!\""
"\"Hello, you silly world.\""
"\"Hello to this group: Peter, Paul, Mary!\"" ]}
"sequence_comprehensions" {"__" [[0 1 2 3 4 5]
"(* index index)"
"(range 10)"
"(odd? index)" "(* index index)"
"[row column]"
]}
"partial_functions" {"__" [4
:a :b :c :d
:c :d]
"___" ["multiply-by-5"]}
})
(defn replace-with [s k replacements]
(let [unreplaced-texts (split s (re-pattern (str "\\b" k "\\b")))]
(join
(butlast
(interleave
unreplaced-texts
(concat replacements (repeat k)))))))
(defn koan-text [koan]
(slurp (str "src/koans/" koan ".clj")))
(defn answers-for [koan sym]
((answers koan {}) sym []))
(defn fill-in-answers [text koan sym]
(replace-with text sym (answers-for koan sym)))
(defn run []
(try
(dorun
(map
(fn [koan]
(load-string
(-> (koan-text koan)
(fill-in-answers koan "__")
(fill-in-answers koan "___"))))
ordered-koans))
(println "\nThe answer key checks out!")
(catch Exception e
(println "\nAnswer sheet fail: " e)
(.printStackTrace e)
(println "Answer sheet fail"))))

2
test.bat Executable file
View File

@ -0,0 +1,2 @@
java -cp lib/clojure-1.2.0-beta1.jar;src clojure.main -e '(load "path_to_answer_sheet")' -e "(do (in-ns 'path-to-answer-sheet) (run))"
echo

2
test.sh Executable file
View File

@ -0,0 +1,2 @@
java -cp lib/clojure-1.2.0-beta1.jar:src clojure.main -e '(load "path_to_answer_sheet")' -e "(do (in-ns 'path-to-answer-sheet) (run))"
echo