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)))))))
|