*
(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 [email protected]
Note that posts from new members are moderated - please be patient with your
first post.
To unsubscribe from this group, send email to
[email protected]
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 [email protected].
For more options, visit https://groups.google.com/groups/opt_out.