Shameless Self-promotion Dept: Here's how I'd write your three tests in Midje.
https://github.com/marick/Midje
(fact "chains of locations are handled"
(distances "Boston,MA" "Albany,NY" "LosAngeles,CA") => [2.0, 2.0]
(provided (dist-in-miles anything anything) => 2.0))
(fact "can convert distances from origin to a map keyed by destination"
(map-of-distances ...origin... "Newport", "LA") => { "Newport" 55, "LA" 3000 }
(provided
(dist-in-miles ...origin... "Newport") => 55
(dist-in-miles ...origin... "LA") => 3000))
;; (fact "can also produce map of total distance (distance * number of visits)"
;; (relative-distances ...origin..., "Newport" 1, "LA" 2) => { "NewPort"
365.0, "LA" 730.0 }
;; (provided
;; (dist-in-miles ...origin... anything) => 365.0))
The last test is commented out because you have a three argument fmap, which
isn't the one from generic.functor.
I didn't have the laziness problem. I don't know if that was by accident or
because Midje applies an #'eagerly function before checking. (Note: I found
that #'doall isn't always enough, because you can be bitten in the same way by
laziness in nested expressions, so #'eagerly walks the whole tree, not just the
top level.)
-----
Brian Marick, Artisanal Labrador
Contract programming in Ruby and Clojure
Author of /Ring/ (forthcoming; sample: http://bit.ly/hfdf9T)
www.exampler.com, www.exampler.com/blog, www.twitter.com/marick
--
You received this message because you are subscribed to the Google
Groups "Clojure" group.
To post to this group, send email to [email protected]
Note that posts from new members are moderated - please be patient with your
first post.
To unsubscribe from this group, send email to
[email protected]
For more options, visit this group at
http://groups.google.com/group/clojure?hl=en