annotate src/clojure/test_clojure/printer.clj @ 10:ef7dbbd6452c

added clojure source goodness
author Robert McIntyre <rlm@mit.edu>
date Sat, 21 Aug 2010 06:25:44 -0400
parents
children
rev   line source
rlm@10 1 ; Copyright (c) Rich Hickey. All rights reserved.
rlm@10 2 ; The use and distribution terms for this software are covered by the
rlm@10 3 ; Eclipse Public License 1.0 (http://opensource.org/licenses/eclipse-1.0.php)
rlm@10 4 ; which can be found in the file epl-v10.html at the root of this distribution.
rlm@10 5 ; By using this software in any fashion, you are agreeing to be bound by
rlm@10 6 ; the terms of this license.
rlm@10 7 ; You must not remove this notice, or any other, from this software.
rlm@10 8
rlm@10 9 ; Author: Stephen C. Gilardi
rlm@10 10
rlm@10 11 ;; clojure.test-clojure.printer
rlm@10 12 ;;
rlm@10 13 ;; scgilardi (gmail)
rlm@10 14 ;; Created 29 October 2008
rlm@10 15
rlm@10 16 (ns clojure.test-clojure.printer
rlm@10 17 (:use clojure.test))
rlm@10 18
rlm@10 19 (deftest print-length-empty-seq
rlm@10 20 (let [coll () val "()"]
rlm@10 21 (is (= val (binding [*print-length* 0] (print-str coll))))
rlm@10 22 (is (= val (binding [*print-length* 1] (print-str coll))))))
rlm@10 23
rlm@10 24 (deftest print-length-seq
rlm@10 25 (let [coll (range 5)
rlm@10 26 length-val '((0 "(...)")
rlm@10 27 (1 "(0 ...)")
rlm@10 28 (2 "(0 1 ...)")
rlm@10 29 (3 "(0 1 2 ...)")
rlm@10 30 (4 "(0 1 2 3 ...)")
rlm@10 31 (5 "(0 1 2 3 4)"))]
rlm@10 32 (doseq [[length val] length-val]
rlm@10 33 (binding [*print-length* length]
rlm@10 34 (is (= val (print-str coll)))))))
rlm@10 35
rlm@10 36 (deftest print-length-empty-vec
rlm@10 37 (let [coll [] val "[]"]
rlm@10 38 (is (= val (binding [*print-length* 0] (print-str coll))))
rlm@10 39 (is (= val (binding [*print-length* 1] (print-str coll))))))
rlm@10 40
rlm@10 41 (deftest print-length-vec
rlm@10 42 (let [coll [0 1 2 3 4]
rlm@10 43 length-val '((0 "[...]")
rlm@10 44 (1 "[0 ...]")
rlm@10 45 (2 "[0 1 ...]")
rlm@10 46 (3 "[0 1 2 ...]")
rlm@10 47 (4 "[0 1 2 3 ...]")
rlm@10 48 (5 "[0 1 2 3 4]"))]
rlm@10 49 (doseq [[length val] length-val]
rlm@10 50 (binding [*print-length* length]
rlm@10 51 (is (= val (print-str coll)))))))
rlm@10 52
rlm@10 53 (deftest print-level-seq
rlm@10 54 (let [coll '(0 (1 (2 (3 (4)))))
rlm@10 55 level-val '((0 "#")
rlm@10 56 (1 "(0 #)")
rlm@10 57 (2 "(0 (1 #))")
rlm@10 58 (3 "(0 (1 (2 #)))")
rlm@10 59 (4 "(0 (1 (2 (3 #))))")
rlm@10 60 (5 "(0 (1 (2 (3 (4)))))"))]
rlm@10 61 (doseq [[level val] level-val]
rlm@10 62 (binding [*print-level* level]
rlm@10 63 (is (= val (print-str coll)))))))
rlm@10 64
rlm@10 65 (deftest print-level-length-coll
rlm@10 66 (let [coll '(if (member x y) (+ (first x) 3) (foo (a b c d "Baz")))
rlm@10 67 level-length-val
rlm@10 68 '((0 1 "#")
rlm@10 69 (1 1 "(if ...)")
rlm@10 70 (1 2 "(if # ...)")
rlm@10 71 (1 3 "(if # # ...)")
rlm@10 72 (1 4 "(if # # #)")
rlm@10 73 (2 1 "(if ...)")
rlm@10 74 (2 2 "(if (member x ...) ...)")
rlm@10 75 (2 3 "(if (member x y) (+ # 3) ...)")
rlm@10 76 (3 2 "(if (member x ...) ...)")
rlm@10 77 (3 3 "(if (member x y) (+ (first x) 3) ...)")
rlm@10 78 (3 4 "(if (member x y) (+ (first x) 3) (foo (a b c d ...)))")
rlm@10 79 (3 5 "(if (member x y) (+ (first x) 3) (foo (a b c d Baz)))"))]
rlm@10 80 (doseq [[level length val] level-length-val]
rlm@10 81 (binding [*print-level* level
rlm@10 82 *print-length* length]
rlm@10 83 (is (= val (print-str coll)))))))