Hi there,

I'm trying to get my head wrapped around test.check
<https://github.com/clojure/test.check/>. My current stumbling block is
custom generators. Of course I've combed through the docs
<https://github.com/clojure/test.check/blob/master/doc/intro.md#record-generators>
and source
<https://github.com/clojure/test.check/blob/master/src/main/clojure/clojure/test/check/generators.clj>.
And I'm pretty sure I need to use *gen-bind* to get this all working. But
it's just not clicking yet.


Let's say I want to create a *user* and a *group*, where a user can belong
to many groups. So let's say I have a generic *create-user* function.

  (defn *create-user* [opts]
    (merge {:id (mu/generate-uuid)
            :username ""
            :password (crypto/base64 12)
            :first-name ""
            :last-name ""
            :email ""
            :country {}}
           opts))


And a generic *create-group* function.

  (defn create [opts]
    (merge {:id (mu/generate-uuid)
            :name ""
            :users []}
           opts))




   1. Now, if I try `*(gen/sample create-user)*`, or `*(gen/sample
   (gen/vector du/create))*`it will fail.
   2. I also want to do the same thing with groups (ie *(gen/sample
   create-user)*).
   3. Additionally however, I want to assert that a created group will
   always have at least 1 user in the `*:users []*` k/v field.


How can I make test.check generators for these data structures?



Tim Washington
Interruptsoftware.com <http://interruptsoftware.com>

-- 
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.

Reply via email to