diff options
| author | Stuart Halloway <stu@thinkrelevance.com> | 2010-10-14 16:38:39 -0400 |
|---|---|---|
| committer | Stuart Halloway <stu@thinkrelevance.com> | 2010-10-15 07:26:44 -0400 |
| commit | 479bb230b410cd39f3ca94120729096a38c8df67 (patch) | |
| tree | 037f11706ab414423a8e2fcb26b0d3dfb7273d5d /test | |
| parent | 11aed8912e8247629398e0c12484401d6f8ca3ed (diff) | |
#453 reflection
Signed-off-by: Stuart Halloway <stu@thinkrelevance.com>
Diffstat (limited to 'test')
| -rw-r--r-- | test/clojure/test_clojure.clj | 1 | ||||
| -rw-r--r-- | test/clojure/test_clojure/reflect.clj | 33 |
2 files changed, 34 insertions, 0 deletions
diff --git a/test/clojure/test_clojure.clj b/test/clojure/test_clojure.clj index a82ed0ae..2f3fc4f8 100644 --- a/test/clojure/test_clojure.clj +++ b/test/clojure/test_clojure.clj @@ -65,6 +65,7 @@ :def :keywords :data + :reflect ]) (def test-namespaces diff --git a/test/clojure/test_clojure/reflect.clj b/test/clojure/test_clojure/reflect.clj new file mode 100644 index 00000000..416092ac --- /dev/null +++ b/test/clojure/test_clojure/reflect.clj @@ -0,0 +1,33 @@ +(ns clojure.test-clojure.reflect + (:use clojure.data [clojure.reflect :as reflect] clojure.test clojure.pprint) + (:import [clojure.reflect AsmReflector JavaReflector])) + +(defn nodiff + [x y] + (let [[x-only y-only common] (diff x y)] + (when (or x-only y-only) + (is false (with-out-str (pprint {:x-only x-only + :y-only y-only + :common common})))))) + +(deftest compare-reflect-and-asm + (let [cl (.getContextClassLoader (Thread/currentThread)) + asm-reflector (AsmReflector. cl) + java-reflector (JavaReflector. cl)] + (doseq [classname '[java.lang.Runnable + java.lang.Object + java.io.FileInputStream + clojure.lang.Compiler + clojure.lang.PersistentVector]] + (nodiff (type-reflect classname :reflector asm-reflector) + (type-reflect classname :reflector java-reflector))))) + +(deftest field-descriptor->class-symbol-test + (are [s d] (= s (@#'reflect/field-descriptor->class-symbol d)) + 'clojure.asm.Type<><> "[[Lclojure/asm/Type;" + 'int "I" + 'java.lang.Object "Ljava.lang.Object;")) + +(deftest internal-name->class-symbol-test + (are [s n] (= s (@#'reflect/internal-name->class-symbol n)) + 'java.lang.Exception "java/lang/Exception")) |
