Hey Tim,

When you write a property, like your `has-agroup`, there's no need to call 
`gen/sample`. You can simply write: (prop/for-all [v my-generator] ...)

-Reid

On Sunday, August 10, 2014 6:04:21 PM UTC-5, frye wrote:
>
> Oook, this is starting to sink in. 
>
> I've gotten a little farther, in that I can run quick-check with my custom 
> generator. However, after a bunch of values had been generated, it fails on 
> a NullPointerException. How can I know where the breakdown is happening? 
>
> => (tc/quick-check 100 u/has-agroup)
> {:email , :last-name , :first-name , :username }
> {:email , :last-name , :first-name , :username 0}
> {:email , :last-name , :first-name Rq, :username 0}
> {:email 5D2, :last-name R4F, :first-name x, :username G0H}
> ...
> {:email 8KQgSr497EPw14X80oEbWC0, :last-name cdkLb8D5ol, :first-name 
> 8DCOXz1U4S3JM641u5I7yPwQ, :username DADOk}
> {:email x, :last-name Qq3h07d6Cbs4, :first-name 6H6Enrwu, :username 
> yf40SClLjJHp1ptbnx4I9xFbwI3}
> *NullPointerException   clojure.test.check.generators/gen-bind/fn--18990 
> (generators.clj:77)*
> bkell.bkell> (pst *e)
> NullPointerException
>         clojure.test.check.generators/gen-bind/fn--18990 
> (generators.clj:77)
>         clojure.test.check.generators/gen-bind/fn--18990 
> (generators.clj:79)
>          clojure.test.check.generators/gen-bind/fn--18990 
> (generators.clj:77)
>         clojure.test.check.generators/gen-fmap/fn--18985 
> (generators.clj:70)
>         clojure.test.check.generators/call-gen (generators.clj:56)
>         clojure.test.check/quick-check (check.clj:57)
>         bkell.bkell/eval19267 (form-init7280611083923741467.clj:1)
>         clojure.lang.Compiler.eval (Compiler.java:6703)
>         clojure.lang.Compiler.eval (Compiler.java:6666)
>         clojure.core/eval (core.clj:2927)
>          clojure.main/repl/read-eval-print--6625/fn--6628 (main.clj:239)
>         clojure.main/repl/read-eval-print--6625 (main.clj:239)
>
>
> This is my domain function: 
>
>   (defn *create-user* 
>     ([] (create {}))
>     ([opts]
>        (println opts)
>        (let [sans-nils (apply merge (for [[k v]
>                                           opts
>                                           :when (not (nil? v))]
>                                       {k v}))]
>
>          (merge {:id (mu/generate-uuid)
>                  :username ""
>                  :password (crypto/base64 12)
>                  :first-name ""
>                  :last-name ""
>                  :email ""
>                  :country {}}
>                 sans-nils))))
>
>
> And these are my test functions. 
>
>   (def gend-user
>     (gen/fmap *du/create-user*
>               (gen/hash-map :username gen/string-alpha-numeric
>                             :first-name gen/string-alpha-numeric
>                             :last-name gen/string-alpha-numeric
>                             :email gen/string-alpha-numeric)))
>
>   (def has-agroup
>     (prop/for-all [v (gen/sample gend-user)]
>                   (-> v nil? not)))
>
>
>
> Tim Washington 
> Interruptsoftware.com <http://interruptsoftware.com> 
>
>
> On Sun, Aug 10, 2014 at 3:02 PM, Sam Ritchie <sritc...@gmail.com 
> <javascript:>> wrote:
>
>> You can to use gen/fmap to build up generators. Here's an example:
>>
>>

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