diff options
author | Rich Hickey <richhickey@gmail.com> | 2010-06-15 23:13:05 -0400 |
---|---|---|
committer | Rich Hickey <richhickey@gmail.com> | 2010-06-15 23:13:05 -0400 |
commit | 6ab3e4cd672092823a04c944210a23c29142785d (patch) | |
tree | f54d634e3fb26e623e21692879f4cd94f261e7fb /test | |
parent | 8fbafa92faacb92a9bd49fa1e9b7e2c8c0747c07 (diff) |
Unify numeric semantics around longs, with throw on overflow. Allow numeric literals to be primitive initializers. Canonicalize boxing of integers, if it fits in int, is Integer, else Long, thus primitive coercions can't be used to get particular boxed types, use Long/valueOf etc. Ask for BigIntegers if you want arbitrary precision, new literal number format - append 'N' for BigInteger. BigIntegers do not reduce automatically, are contagious. New particular names for unchecked ops - unchecked-xxx-int or unchecked-xxx-long. You should need far fewer hints for primitive perf, and avoid int casts and any casting of numeric literals, see:
http://gist.github.com/440102
Diffstat (limited to 'test')
-rw-r--r-- | test/clojure/test_clojure/java_interop.clj | 2 | ||||
-rw-r--r-- | test/clojure/test_clojure/numbers.clj | 57 |
2 files changed, 3 insertions, 56 deletions
diff --git a/test/clojure/test_clojure/java_interop.clj b/test/clojure/test_clojure/java_interop.clj index 1113472f..057397fe 100644 --- a/test/clojure/test_clojure/java_interop.clj +++ b/test/clojure/test_clojure/java_interop.clj @@ -142,7 +142,7 @@ (defmacro deftest-type-array [type-array type] `(deftest ~(symbol (str "test-" type-array)) ; correct type - (is (= (class (first (~type-array [1 2]))) (class (~type 1)))) + #_(is (= (class (first (~type-array [1 2]))) (class (~type 1)))) ; given size (and empty) (are [x] (and (= (alength (~type-array x)) x) diff --git a/test/clojure/test_clojure/numbers.clj b/test/clojure/test_clojure/numbers.clj index efcdaf75..65fec994 100644 --- a/test/clojure/test_clojure/numbers.clj +++ b/test/clojure/test_clojure/numbers.clj @@ -22,59 +22,6 @@ ;; *** Types *** -(deftest Coerced-Byte - (let [v (byte 3)] - (are [x] (true? x) - (instance? Byte v) - (number? v) - (integer? v) - (rational? v)))) - -(deftest Coerced-Short - (let [v (short 3)] - (are [x] (true? x) - (instance? Short v) - (number? v) - (integer? v) - (rational? v)))) - -(deftest Coerced-Integer - (let [v (int 3)] - (are [x] (true? x) - (instance? Integer v) - (number? v) - (integer? v) - (rational? v)))) - -(deftest Coerced-Long - (let [v (long 3)] - (are [x] (true? x) - (instance? Long v) - (number? v) - (integer? v) - (rational? v)))) - -(deftest Coerced-BigInteger - (let [v (bigint 3)] - (are [x] (true? x) - (instance? BigInteger v) - (number? v) - (integer? v) - (rational? v)))) - -(deftest Coerced-Float - (let [v (float 3)] - (are [x] (true? x) - (instance? Float v) - (number? v) - (float? v)))) - -(deftest Coerced-Double - (let [v (double 3)] - (are [x] (true? x) - (instance? Double v) - (number? v) - (float? v)))) (deftest Coerced-BigDecimal (let [v (bigdec 3)] @@ -407,7 +354,7 @@ Math/pow overflows to Infinity." 2r00101110 (apply bit-shift-left [2r00010111 1]) 2r01 (bit-shift-left 2r10 -1) (expt 2 32) (bit-shift-left 1 32) - (expt 2 10000) (bit-shift-left 1 10000) + (expt 2N 10000) (bit-shift-left 1N 10000) )) (deftest test-bit-shift-right @@ -420,7 +367,7 @@ Math/pow overflows to Infinity." 2r0001011 (apply bit-shift-right [2r00010111 1]) 2r100 (bit-shift-right 2r10 -1) 1 (bit-shift-right (expt 2 32) 32) - 1 (bit-shift-right (expt 2 10000) 10000) + 1N (bit-shift-right (expt 2N 10000) 10000) )) |