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 <sritchi...@gmail.com> 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