diff options
author | Stuart Sierra <mail@stuartsierra.com> | 2008-11-17 01:26:53 +0000 |
---|---|---|
committer | Stuart Sierra <mail@stuartsierra.com> | 2008-11-17 01:26:53 +0000 |
commit | facfbecd912d043d464237185c726882f429398f (patch) | |
tree | e43b367be839738d67ddb04ca2551e0ca2d6c9ef /src/clojure | |
parent | 76bc4f1f19f85b246963b3da1eece3b5400820a4 (diff) |
test_is.clj: *test-out* defaults to *out*; added each= and all-true
Diffstat (limited to 'src/clojure')
-rw-r--r-- | src/clojure/contrib/test_clojure/numbers.clj | 68 | ||||
-rw-r--r-- | src/clojure/contrib/test_is.clj | 26 |
2 files changed, 61 insertions, 33 deletions
diff --git a/src/clojure/contrib/test_clojure/numbers.clj b/src/clojure/contrib/test_clojure/numbers.clj index 0e5432ad..54431a9f 100644 --- a/src/clojure/contrib/test_clojure/numbers.clj +++ b/src/clojure/contrib/test_clojure/numbers.clj @@ -16,54 +16,62 @@ (deftest Coerced-Byte (let [v (byte 3)] - (is (instance? Byte v)) - (is (number? v)) - (is (integer? v)) - (is (rational? v)))) + (all-true + (instance? Byte v) + (number? v) + (integer? v) + (rational? v)))) (deftest Coerced-Short (let [v (short 3)] - (is (instance? Short v)) - (is (number? v)) - (is (integer? v)) - (is (rational? v)))) + (all-true + (instance? Short v) + (number? v) + (integer? v) + (rational? v)))) (deftest Coerced-Integer (let [v (int 3)] - (is (instance? Integer v)) - (is (number? v)) - (is (integer? v)) - (is (rational? v)))) + (all-true + (instance? Integer v) + (number? v) + (integer? v) + (rational? v)))) (deftest Coerced-Long (let [v (long 3)] - (is (instance? Long v)) - (is (number? v)) - (is (integer? v)) - (is (rational? v)))) + (all-true + (instance? Long v) + (number? v) + (integer? v) + (rational? v)))) (deftest Coerced-BigInteger (let [v (bigint 3)] - (is (instance? BigInteger v)) - (is (number? v)) - (is (integer? v)) - (is (rational? v)))) + (all-true + (instance? BigInteger v) + (number? v) + (integer? v) + (rational? v)))) (deftest Coerced-Float (let [v (float 3)] - (is (instance? Float v)) - (is (number? v)) - (is (float? v)))) + (all-true + (instance? Float v) + (number? v) + (float? v)))) (deftest Coerced-Double (let [v (double 3)] - (is (instance? Double v)) - (is (number? v)) - (is (float? v)))) + (all-true + (instance? Double v) + (number? v) + (float? v)))) (deftest Coerced-BigDecimal (let [v (bigdec 3)] - (is (instance? BigDecimal v)) - (is (number? v)) - (is (decimal? v)) - (is (not (float? v))))) + (all-true + (instance? BigDecimal v) + (number? v) + (decimal? v) + (not (float? v))))) diff --git a/src/clojure/contrib/test_is.clj b/src/clojure/contrib/test_is.clj index 8374b772..9ea0edcc 100644 --- a/src/clojure/contrib/test_is.clj +++ b/src/clojure/contrib/test_is.clj @@ -49,12 +49,13 @@ ;; need to recompile functions after changing a macro definition. -(ns clojure.contrib.test-is) +(ns clojure.contrib.test-is + (:import (java.io PrintWriter))) (def #^{:doc "PrintWriter to which test results are printed; defaults to - System.err."} - *test-out* (. System err)) + Standard Output."} + *test-out* (PrintWriter. *out*)) ;;; PRIVATE @@ -195,6 +196,25 @@ (failure (str "expected " ~(pr-str form) " to throw " ~class ", but threw " e#) ~message))))) +(defmacro all-true + "Convenience macro; every body expression is tested with 'is'." + [& body] + `(do ~@(map (fn [expr] (list 'is expr)) + body))) + +(defmacro each= + "Convenience macro for doing a bunch of equality tests. Same as + doing (is (= ...)) on each pair. + + (each= (test-expr-1) expected-value1 + (test-expr-2) expected-value2 + (test-expr-3) expected-value3) + " + [& forms] + `(all-true + ~@(map (fn [[expr expected]] (list '= expr expected)) + (partition 2 forms)))) + (defn print-results "Prints a summary of the results from test-ns to *test-out*." [r] |