-
Notifications
You must be signed in to change notification settings - Fork 37
Expand file tree
/
Copy pathdec.cljc
More file actions
36 lines (32 loc) · 1.15 KB
/
dec.cljc
File metadata and controls
36 lines (32 loc) · 1.15 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
(ns clojure.core-test.dec
(:require [clojure.test :as t :refer [are deftest is testing]]
[clojure.core-test.portability #?(:cljs :refer-macros :default :refer) [when-var-exists] :as p]))
(when-var-exists dec
(deftest test-dec
(testing "common"
(are [in ex] (= (dec in) ex)
1 0
0 -1
1N 0N
0N -1N
14412 14411
-3 -4
7.4 6.4
##Inf ##Inf
##-Inf ##-Inf
#?@(:cljs []
:default
[3/2 1/2
1/2 -1/2]))
(is (NaN? (dec ##NaN))))
(testing "underflow"
#?(:clj (is (p/thrown? (dec Long/MIN_VALUE)))
:cljr (is (p/thrown? (dec Int64/MinValue)))
:cljs (is (= (dec js/Number.MIN_SAFE_INTEGER) (- js/Number.MIN_SAFE_INTEGER 2)))
:phel (is (= (dec php/PHP_INT_MIN) (dec php/PHP_INT_MIN)))
:lpy [] ; Python integers cannot underflow
:default (is false "TODO underflow")))
(testing "dec-nil"
;; ClojureScript says (= -1 (dec nil)) because JavaScript casts null to 0
#?(:cljs (is (= -1 (dec nil)))
:default (is (p/thrown? (dec nil)))))))