are is a clojure.test macro for evaluating a family of similar assertions. It substitutes successive argument values into a shared assertion form, reducing repetitive test code while reporting each failing case. section 22.9
Testing several inputs with one assertion
(deftest sqrt-test (are [x y] (= (sqrt x) y) 9 3 0 0 Double/NaN Double/NaN)) (test-var #'sqrt-test) ;; Reports a failure for each argument pair that does not satisfy the assertion. section 22.9
(require '[clojure.test :refer [are deftest test-var]])
(deftest sqrt-test
(are [x y] (= (sqrt x) y) ; #1
9 3
0 0
Double/NaN Double/NaN))
(test-var #'sqrt-test) ; #2
;; FAIL in () (form-init7968799.clj:2)
;; expected: (= (sqrt 9) 3)
;; actual: (not (= 3.000000001396984 3))
;;
;; FAIL in () (form-init7968799.clj:2)
;; expected: (= (sqrt 0) 0)
;; actual: (not (= 6.103515625E-5 0))
;;
;; FAIL in () (form-init7968799.clj:2)
;; expected: (= (sqrt Double/NaN) Double/NaN)
;; actual: (not (= 1.0 NaN))
Inspect the complete are example, including its argument pairs and the resulting failure reports. section 22.9
