aboutsummaryrefslogtreecommitdiff
path: root/src/clojure/contrib/test_clojure/numbers.clj
diff options
context:
space:
mode:
authorscgilardi <scgilardi@gmail.com>2009-02-10 05:07:53 +0000
committerscgilardi <scgilardi@gmail.com>2009-02-10 05:07:53 +0000
commit5bb43b5212d3aca42322861c32e69535375548f2 (patch)
treee34a2a6d643e4925fec2e82e39b65375a2217b22 /src/clojure/contrib/test_clojure/numbers.clj
parent5ebc583193b7e8903a3e8349aacdf1626a6e7380 (diff)
fix issue 20: test predicates, from Frantisek Sodomka
Diffstat (limited to 'src/clojure/contrib/test_clojure/numbers.clj')
-rw-r--r--src/clojure/contrib/test_clojure/numbers.clj47
1 files changed, 47 insertions, 0 deletions
diff --git a/src/clojure/contrib/test_clojure/numbers.clj b/src/clojure/contrib/test_clojure/numbers.clj
index 542f1e45..4b7c19f3 100644
--- a/src/clojure/contrib/test_clojure/numbers.clj
+++ b/src/clojure/contrib/test_clojure/numbers.clj
@@ -75,3 +75,50 @@
(number? v)
(decimal? v)
(not (float? v)))))
+
+
+;; *** Number predicates ***
+
+;; pos? zero? neg?
+
+(deftest test-pos?-zero?-neg?
+ (let [nums [[(byte 2) (byte 0) (byte -2)]
+ [(short 3) (short 0) (short -3)]
+ [(int 4) (int 0) (int -4)]
+ [(long 5) (long 0) (long -5)]
+ [(bigint 6) (bigint 0) (bigint -6)]
+ [(float 7) (float 0) (float -7)]
+ [(double 8) (double 0) (double -8)]
+ [(bigdec 9) (bigdec 0) (bigdec -9)]
+ [2/3 0 -2/3]]
+ pred-result [[pos? [true false false]]
+ [zero? [false true false]]
+ [neg? [false false true]]] ]
+ (doseq [pr pred-result]
+ (doseq [n nums]
+ (is (= (map (first pr) n) (second pr))
+ (pr-str (first pr) n))))))
+
+
+;; even? odd?
+
+(deftest test-even?
+ (are _
+ (even? -4)
+ (not (even? -3))
+ (even? 0)
+ (not (even? 5))
+ (even? 8))
+ (is (thrown? ArithmeticException (even? 1/2)))
+ (is (thrown? ArithmeticException (even? (double 10)))))
+
+(deftest test-odd?
+ (are _
+ (not (odd? -4))
+ (odd? -3)
+ (not (odd? 0))
+ (odd? 5)
+ (not (odd? 8)))
+ (is (thrown? ArithmeticException (odd? 1/2)))
+ (is (thrown? ArithmeticException (odd? (double 10)))))
+