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