|
14 | 14 | ;; Created 29 October 2008
|
15 | 15 |
|
16 | 16 | (ns clojure.test-clojure.printer
|
17 |
| - (:use clojure.test)) |
| 17 | + (:use clojure.test) |
| 18 | + (:require [clojure.pprint :refer [pprint]])) |
18 | 19 |
|
19 | 20 | (deftest print-length-empty-seq
|
20 | 21 | (let [coll () val "()"]
|
|
135 | 136 | {:with "even" :more 'data})))))))
|
136 | 137 |
|
137 | 138 | (deftest print-ns-maps
|
138 |
| - (is (= "#:user{:a 1}" (binding [*print-namespace-maps* true] (pr-str {:user/a 1})))) |
139 |
| - (is (= "{:user/a 1}" (binding [*print-namespace-maps* false] (pr-str {:user/a 1})))) |
| 139 | + (are [m s-on pp-on s-off] |
| 140 | + (and (= s-on (binding [*print-namespace-maps* true] (pr-str m))) |
| 141 | + (= pp-on (binding [*print-namespace-maps* true] (with-out-str (pprint m)))) |
| 142 | + (= s-off (binding [*print-namespace-maps* false] (pr-str m)))) |
| 143 | + {} "{}" "{}\n" "{}" |
| 144 | + {:a 1, :b 2} "{:a 1, :b 2}" "{:a 1, :b 2}\n" "{:a 1, :b 2}" |
| 145 | + {:user/a 1} "#:user{:a 1}" "#:user{:a 1}\n" "{:user/a 1}" |
| 146 | + {:user/a 1, :user/b 2} "#:user{:a 1, :b 2}" "#:user{:a 1, :b 2}\n" "{:user/a 1, :user/b 2}" |
| 147 | + {:user/a 1, :b 2} "{:user/a 1, :b 2}" "{:user/a 1, :b 2}\n" "{:user/a 1, :b 2}" |
| 148 | + {:user/a 1, 'user/b 2} "#:user{:a 1, b 2}" "#:user{:a 1, b 2}\n" "{:user/a 1, user/b 2}" |
| 149 | + {:user/a 1, :foo/b 2} "{:user/a 1, :foo/b 2}" "{:user/a 1, :foo/b 2}\n" "{:user/a 1, :foo/b 2}" |
| 150 | + |
| 151 | + {:user/a 1, :user/b 2, 100 200} |
| 152 | + "{:user/a 1, :user/b 2, 100 200}" |
| 153 | + "{:user/a 1, :user/b 2, 100 200}\n" |
| 154 | + "{:user/a 1, :user/b 2, 100 200}" |
| 155 | + |
| 156 | + ;; CLJ-2469 |
| 157 | + (struct (create-struct :q/a :q/b :q/c) 1 2 3) |
| 158 | + "#:q{:a 1, :b 2, :c 3}" |
| 159 | + "#:q{:a 1, :b 2, :c 3}\n" |
| 160 | + "{:q/a 1, :q/b 2, :q/c 3}" |
| 161 | + |
| 162 | + ;; CLJ-2537 |
| 163 | + {:x.y/a {:rem 0}, :x.y/b {:rem 1}} |
| 164 | + "#:x.y{:a {:rem 0}, :b {:rem 1}}" |
| 165 | + "#:x.y{:a {:rem 0}, :b {:rem 1}}\n" |
| 166 | + "{:x.y/a {:rem 0}, :x.y/b {:rem 1}}" |
| 167 | + |
| 168 | + (into (sorted-map-by (fn [k1 k2] |
| 169 | + (when-not (every? qualified-ident? [k1 k2]) |
| 170 | + (throw (RuntimeException. (str "Invalid keys:" [k1 k2])))) |
| 171 | + (compare k1 k2)) |
| 172 | + :x.y/a {:rem 0}, :x.y/b {:rem 1})) |
| 173 | + "#:x.y{:a {:rem 0}, :b {:rem 1}}" |
| 174 | + "#:x.y{:a {:rem 0}, :b {:rem 1}}\n" |
| 175 | + "{:x.y/a {:rem 0}, :x.y/b {:rem 1}}" |
| 176 | + |
| 177 | + (sorted-map-by #(compare %2 %1) :k/a 1 :k/b 2 :k/c 3 :k/d 4 :k/e 5 :k/f 6 :k/g 7 :k/h 8 :k/i 9) |
| 178 | + "#:k{:i 9, :h 8, :g 7, :f 6, :e 5, :d 4, :c 3, :b 2, :a 1}" |
| 179 | + "#:k{:i 9, :h 8, :g 7, :f 6, :e 5, :d 4, :c 3, :b 2, :a 1}\n" |
| 180 | + "{:k/i 9, :k/h 8, :k/g 7, :k/f 6, :k/e 5, :k/d 4, :k/c 3, :k/b 2, :k/a 1}") |
| 181 | + |
140 | 182 | (let [date-map (bean (java.util.Date. 0))]
|
141 | 183 | (is (= (binding [*print-namespace-maps* true] (pr-str date-map))
|
142 | 184 | (binding [*print-namespace-maps* false] (pr-str date-map))))))
|
|
0 commit comments