-
Notifications
You must be signed in to change notification settings - Fork 4
/
test_util.clj
32 lines (27 loc) · 918 Bytes
/
test_util.clj
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
(in-ns 'atom-finder.util)
(require '[clojure.test :refer :all])
(defn find-lines
"Find all lines marked with <true> in test file"
[pat filepath]
(let [regex (re-pattern pat)]
(->>
filepath
slurp-lines
(map #(re-find regex %))
(keep-indexed #(if %2 (inc %1))))))
(def true-lines (partial find-lines "<true>"))
(defmacro test-atom-lines
"Compare the results of an atom classifier with a regex search"
[filename pat atom-finder]
`(let [filepath# (resource-path ~filename)
expected# (find-lines ~pat filepath#)
lines# (->> filepath#
parse-file
(~atom-finder)
(map loc)
(map :line))]
(is (empty? (sort (sym-diff (set expected#) (set lines#)))))))
(defn parse-resource
"Parse a file in the resource directory"
[filename]
(->> filename resource-path parse-file))