lvh
lvh

Reputation: 760

How do I test a predicate against a seq of args?

I've generated a seq of arg lists, e.g.:

[[a b c] [d e f] [g h i]]

... such that (map (partial apply f) that-seq) should produce a list of the same result. I want to check if all of these indeed produce that same result. Normally, you'd use the are macro for something like this, but I don't have a literal bunch of exprs to test against: I have a seq. So, I guess I want the "equivalent" of (apply are ...). As far as I can tell, my options are:

Are there any better ways to do this?

Upvotes: 0

Views: 67

Answers (2)

Leon Grapenthin
Leon Grapenthin

Reputation: 9276

Use this for more accurate reporting

(testing "blake2b defaults are accurate"
  (doseq [args-variation blake2b-empty-args-variations]
    (is (= (seq empty-string-digest)
           (seq (blake2b args-variation)))
        (str "Args variation: " (seq args-variation)))))

Upvotes: 1

lvh
lvh

Reputation: 760

FYI, for now, I've gone with:

(testing "blake2b defaults are accurate"
  (let [results (map #(apply blake2b %) blake2b-empty-args-variations)]
    (is (every? (partial array-eq empty-string-digest) results))))

Upvotes: 0

Related Questions