Hey Brian, I just got your latest version of Midje via lein, and I'm able to use it. I had been getting a stack trace previously. Midje is nice, because I can do more specialized stubbing with it than with the code I got from Amit Rathore's blog/book.
Also, this is the fmap I wrote (with the list's help) to that takes multiple maps. It only works for maps. (defn fmap [f & maps] (into {} (for [k (keys (first maps))] [k (apply f (map #(get % k) maps))]))) Best, Alex On Fri, Dec 10, 2010 at 11:02 AM, Brian Marick <mar...@exampler.com> wrote: > 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 clojure@googlegroups.com > Note that posts from new members are moderated - please be patient with > your first post. > To unsubscribe from this group, send email to > clojure+unsubscr...@googlegroups.com<clojure%2bunsubscr...@googlegroups.com> > For more options, visit this group at > http://groups.google.com/group/clojure?hl=en > -- You received this message because you are subscribed to the Google Groups "Clojure" group. To post to this group, send email to clojure@googlegroups.com Note that posts from new members are moderated - please be patient with your first post. To unsubscribe from this group, send email to clojure+unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/clojure?hl=en