aboutsummaryrefslogtreecommitdiff
path: root/src/clojure/contrib/test_clojure/printer.clj
diff options
context:
space:
mode:
authorscgilardi <scgilardi@gmail.com>2008-11-12 22:31:20 +0000
committerscgilardi <scgilardi@gmail.com>2008-11-12 22:31:20 +0000
commit6f7a77e9cdc8df4f58fd86eed0dcd0dd6fc2d6fd (patch)
tree84939b269427bb8213c7db3e002628aa13816bd3 /src/clojure/contrib/test_clojure/printer.clj
parentdb748f4c8b6f37da894b3c8f7a3bb683eea3f0aa (diff)
first cut at changes for Clojure SVN 1094+, my contribs and ones they depend on now load again
Diffstat (limited to 'src/clojure/contrib/test_clojure/printer.clj')
-rw-r--r--src/clojure/contrib/test_clojure/printer.clj81
1 files changed, 81 insertions, 0 deletions
diff --git a/src/clojure/contrib/test_clojure/printer.clj b/src/clojure/contrib/test_clojure/printer.clj
new file mode 100644
index 00000000..0ec1b680
--- /dev/null
+++ b/src/clojure/contrib/test_clojure/printer.clj
@@ -0,0 +1,81 @@
+;; Copyright (c) Stephen C. Gilardi. All rights reserved. The use and
+;; distribution terms for this software are covered by the Common Public
+;; License 1.0 (http://opensource.org/licenses/cpl.php) which can be found
+;; in the file CPL.TXT at the root of this distribution. By using this
+;; software in any fashion, you are agreeing to be bound by the terms of
+;; this license. You must not remove this notice, or any other, from this
+;; software.
+;;
+;; clojure.contrib.test-clojure.printer
+;;
+;; scgilardi (gmail)
+;; Created 29 October 2008
+
+(ns clojure.contrib.test-clojure.printer
+ (:use clojure.contrib.test-is))
+
+(deftest print-length-empty-seq
+ (let [coll () val "()"]
+ (is (= val (binding [*print-length* 0] (print-str coll))))
+ (is (= val (binding [*print-length* 1] (print-str coll))))))
+
+(deftest print-length-seq
+ (let [coll (range 5)
+ length-val '((0 "(...)")
+ (1 "(0 ...)")
+ (2 "(0 1 ...)")
+ (3 "(0 1 2 ...)")
+ (4 "(0 1 2 3 ...)")
+ (5 "(0 1 2 3 4)"))]
+ (doseq [[length val] length-val]
+ (binding [*print-length* length]
+ (is (= val (print-str coll)))))))
+
+(deftest print-length-empty-vec
+ (let [coll [] val "[]"]
+ (is (= val (binding [*print-length* 0] (print-str coll))))
+ (is (= val (binding [*print-length* 1] (print-str coll))))))
+
+(deftest print-length-vec
+ (let [coll [0 1 2 3 4]
+ length-val '((0 "[...]")
+ (1 "[0 ...]")
+ (2 "[0 1 ...]")
+ (3 "[0 1 2 ...]")
+ (4 "[0 1 2 3 ...]")
+ (5 "[0 1 2 3 4]"))]
+ (doseq [[length val] length-val]
+ (binding [*print-length* length]
+ (is (= val (print-str coll)))))))
+
+(deftest print-level-seq
+ (let [coll '(0 (1 (2 (3 (4)))))
+ level-val '((0 "#")
+ (1 "(0 #)")
+ (2 "(0 (1 #))")
+ (3 "(0 (1 (2 #)))")
+ (4 "(0 (1 (2 (3 #))))")
+ (5 "(0 (1 (2 (3 (4)))))"))]
+ (doseq [[level val] level-val]
+ (binding [*print-level* level]
+ (is (= val (print-str coll)))))))
+
+(deftest print-level-length-coll
+ (let [coll '(if (member x y) (+ (first x) 3) (foo (a b c d "Baz")))
+ level-length-val
+ '((0 1 "#")
+ (1 1 "(if ...)")
+ (1 2 "(if # ...)")
+ (1 3 "(if # # ...)")
+ (1 4 "(if # # #)")
+ (2 1 "(if ...)")
+ (2 2 "(if (member x ...) ...)")
+ (2 3 "(if (member x y) (+ # 3) ...)")
+ (3 2 "(if (member x ...) ...)")
+ (3 3 "(if (member x y) (+ (first x) 3) ...)")
+ (3 4 "(if (member x y) (+ (first x) 3) (foo (a b c d ...)))")
+ (3 5 "(if (member x y) (+ (first x) 3) (foo (a b c d Baz)))"))]
+ (doseq [[level length val] level-length-val]
+ (binding [*print-level* level
+ *print-length* length]
+ (is (= val (print-str coll)))))))