Hi Andy, Lately I've been exploring the world introduced to me by watching the John > Hughes' quickcheck video from > clojure west. Awesome stuff! > > Eventually I found the "testing for fun and profit"[1] paper which left me > wanting to test my apps using > a model based system like the paper describes. It looks like > test-check-knossos[2] takes a stab at applying > knossos[3] to this problem. > > However the examples in that repo don't capture the the aspect of using > state to generate test commands to be > executed against the system. It's just a random stream of :take/:reset > operations whereas the registry example > in the paper seems to require that the function which generates the > sequence of test commands has access to > the state of the system under test at the start of each command. > > So is there a missing clojure library here? Is anybody working on > something that allows this style of model > testing? If not, would it make sense for someone writing one to leverage > knossos in any way? > > Cheers, > Andy > > [1]: http://people.inf.elte.hu/center/fulltext.pdf > [2]: https://github.com/philandstuff/test-check-knossos > [3]: https://github.com/aphyr/knossos > I've begun to work on such a tool not long ago. Thomas Arts, who gave a talk at our local FP user group meetup [mλ], inspired me to try out the approach you're describing in Clojure. After some experiments I got the library to a state where it could generate test cases for java.util.HashSet. I looked for prior art in the area of concurrency and detection of race conditions. That's when I discovered Philip Potter's Knossos-based approach [pp]. I find it very interesting but I haven't yet had time to try it out. It'd be great to have it integrated, though.
I demonstrated the tentative API in [gist], where some simple properties of HashSet and Clojure vector are checked. The gist also shows how an exemplary failure looks, including shrinking. I'll try to get the implementation to a reasonable state and push it to GitHub soon. Feedback is very welcome! Cheers, Jan Stępień [mλ]: http://www.meetup.com/Munich-Lambda/events/202278902/ [pp]: http://vimeo.com/100976693 [gist]: https://gist.github.com/jstepien/6153312613db1589f1ec -- 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 --- You received this message because you are subscribed to the Google Groups "Clojure" group. To unsubscribe from this group and stop receiving emails from it, send an email to clojure+unsubscr...@googlegroups.com. For more options, visit https://groups.google.com/d/optout.