*
(ns com.samedhi.app.test.behavior-test
  (:require
   [clojure.test.generative :as generative])

  (:use
   [com.samedhi.quizry.app.test.defspec :only [defspec]]
))

*
*... ommited content ...*
*
*
*(def ^:dynamic *view* nil)*
*
*
*(binding [*view* (atom                                                ;; 
this is line 69*
*                  {:old-model [nil nil nil nil nil nil]*
*                   :quiz [nil nil nil nil nil nil nil]*
*                   :loc nil})]*
*  *
*    (defn view [] @*view*)*
*  *
*    (defn random-loc []*
*      (let [loc (-> (view) :loc random-walk-loc)*
*            loc (if (= 0 (g/uniform 0 100)) (f/new-loc) loc)]*
*        (swap! *view* assoc :loc loc)*
*        loc))*
*
*
*    (generative/defspec*
*      check-on-quiz-view*
*      b/quiz-view*
*      [^{:tag `random-loc} loc*
*       ^{:tag (clojure.core/constantly :ignored)} key*
*       ^{:tag `view} value]))*

Gives me the error:
*Exception in thread "main" java.lang.RuntimeException: Can't embed object 
in code, maybe print-dup not defined: Unbound: 
#'com.samedhi.app.test.behavior-test/random-loc, 
compiling:(com/samedhi/app/test/behavior_test.clj:69:1)
*

I vaguely understand that this is saying that something in here does not 
have a print-dup method on it, and as such, cannot be "codified". How do I 
determine what the problem is? 

You might wonder why I am using a binding anyway? defspec is from 
test.generative. This defspec is testing b/quiz-view with the supplied 
argument vector. I have a dependency between the first argument (loc) and 
the third argument (value), hence the shared atom. Furthermore, I wish each 
succesive call to b/quiz-view to be a slight modification of the previous 
value, where the loc has been randomly moved around a bit. Ocasionally (1 
in a 100), I just create a entirely new loc with f/new-loc. All of this 
could have been done with a shared atom. However, it seems that 
test.generative actually uses N-threads, which means I want each thread to 
have its own atom. Hence, by my reasoning, the use of binding and 
^:dynamic. BTW, the tick before random-loc and view allows them to evaluate 
in the the current namespace, as otherwise they would be evaluated in 
clojure.core.generators (I don't really understand why).
 
https://github.com/clojure/test.generative ;; just for reference

I am obviously wrong in my implementation (it does not compile), I could be 
wrong in my reasoning as well, but I am most worried about the fact that I 
have no real idea *what* is not working here. Any help is appreciated.

-- 
-- 
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/groups/opt_out.

Reply via email to