Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- (defmacro defcomparisontest
- "Define a GReQL/FunQL comparison test with name n on graph g that asserts the
- equality of the results evaluating greql and all funqls."
- [n g greql & funqls]
- `(deftest ~n
- ~g ;; ensure the graph is loaded, if it is given as memoized function.
- (println "####################################################")
- (println "Comparison test:" ~(name n))
- (let [gr# (do
- (print "GReQL evaluation time:")
- (jvalue-unpack (time (greql-eval ~g ~greql))))]
- (doseq [funql# '~funqls]
- (print "FunQL evaluation time:")
- (is (= gr#
- (time (let [r# (eval funql#)]
- (if (instance? clojure.lang.LazySeq r#)
- (doall r#)
- r#)))))))))
- funql.test.core> (macroexpand-1 '(defcomparisontest first-100-edges-in-eseq (gbjg) "edgeSeq(E[0], E[99])" (take 100 (eseq (gbjg)))))
- (clojure.test/deftest first-100-edges-in-eseq (gbjg)
- (clojure.core/println "####################################################")
- (clojure.core/println "Comparison test:" "first-100-edges-in-eseq")
- (clojure.core/let [gr__16923__auto__
- (do
- (clojure.core/print "GReQL evaluation time:")
- (funql.test.core/jvalue-unpack
- (clojure.core/time
- (funql.test.core/greql-eval (gbjg) "edgeSeq(E[0], E[99])"))))]
- (clojure.core/doseq [funql__16924__auto__ (quote ((take 100 (eseq (gbjg)))))]
- (clojure.core/print "FunQL evaluation time:")
- (clojure.test/is
- (clojure.core/=
- gr__16923__auto__
- (clojure.core/time
- (clojure.core/let [r__16925__auto__ (clojure.core/eval funql__16924__auto__)]
- (if (clojure.core/instance? clojure.lang.LazySeq r__16925__auto__)
- (clojure.core/doall r__16925__auto__)
- r__16925__auto__))))))))
- But I get this error when running the test. eseq is a function in funql.core, which my test file uses in its ns declaration.
- actual: clojure.lang.Compiler$CompilerException: java.lang.Exception: Unable to resolve symbol: eseq in this context (NO_SOURCE_FILE:395)
- at clojure.lang.Compiler.analyze (Compiler.java:5205)
- clojure.lang.Compiler.analyze (Compiler.java:5151)
- clojure.lang.Compiler$InvokeExpr.parse (Compiler.java:3036)
- clojure.lang.Compiler.analyzeSeq (Compiler.java:5371)
- clojure.lang.Compiler.analyze (Compiler.java:5190)
- clojure.lang.Compiler.analyze (Compiler.java:5151)
- clojure.lang.Compiler$InvokeExpr.parse (Compiler.java:3057)
- clojure.lang.Compiler.analyzeSeq (Compiler.java:5371)
- clojure.lang.Compiler.analyze (Compiler.java:5190)
- clojure.lang.Compiler.analyze (Compiler.java:5151)
- clojure.lang.Compiler$BodyExpr$Parser.parse (Compiler.java:4670)
- clojure.lang.Compiler$FnMethod.parse (Compiler.java:4328)
- clojure.lang.Compiler$FnExpr.parse (Compiler.java:3173)
- clojure.lang.Compiler.analyzeSeq (Compiler.java:5367)
- clojure.lang.Compiler.analyze (Compiler.java:5190)
- clojure.lang.Compiler.eval (Compiler.java:5421)
- clojure.lang.Compiler.eval (Compiler.java:5391)
- clojure.core$eval.invoke (core.clj:2382)
- funql.test.core$fn__774$fn__786.invoke (core.clj:393)
- funql.test.core/fn (core.clj:393)
- ...
- Caused by: java.lang.Exception: Unable to resolve symbol: eseq in this context
- at clojure.lang.Compiler.resolveIn (Compiler.java:5677)
- clojure.lang.Compiler.resolve (Compiler.java:5621)
- clojure.lang.Compiler.analyzeSymbol (Compiler.java:5584)
- clojure.lang.Compiler.analyze (Compiler.java:5172)
- clojure.lang.Compiler.analyze (Compiler.java:5151)
- clojure.lang.Compiler$InvokeExpr.parse (Compiler.java:3036)
- clojure.lang.Compiler.analyzeSeq (Compiler.java:5371)
- clojure.lang.Compiler.analyze (Compiler.java:5190)
- clojure.lang.Compiler.analyze (Compiler.java:5151)
- clojure.lang.Compiler$InvokeExpr.parse (Compiler.java:3057)
- clojure.lang.Compiler.analyzeSeq (Compiler.java:5371)
- clojure.lang.Compiler.analyze (Compiler.java:5190)
- clojure.lang.Compiler.analyze (Compiler.java:5151)
- clojure.lang.Compiler$BodyExpr$Parser.parse (Compiler.java:4670)
- clojure.lang.Compiler$FnMethod.parse (Compiler.java:4328)
- clojure.lang.Compiler$FnExpr.parse (Compiler.java:3173)
- clojure.lang.Compiler.analyzeSeq (Compiler.java:5367)
- clojure.lang.Compiler.analyze (Compiler.java:5190)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement