@@ -7,6 +7,10 @@ import Float64 from "float64"
77import BI from "bigint"
88
99// Constants Test
10+ assert Number.nan != Number.nan
11+
12+ assert Number.infinity == 1.0 / 0.0
13+
1014assert Number.pi == 3.141592653589793
1115
1216assert Number.tau == 6.283185307179586
@@ -15,6 +19,10 @@ assert Number.e == 2.718281828459045
1519// Operations Tests
1620// add
1721assert Number.add(25, 5) == 30
22+ assert Number.add(Number.infinity, 10) == Number.infinity
23+ assert Number.add(Number.infinity, Number.infinity) == Number.infinity
24+ assert Number.isNaN(Number.add(Number.infinity, Number.nan))
25+ assert Number.isNaN(Number.add(Number.nan, Number.nan))
1826// Rational addition tests
1927{
2028 let (+) = Number.add
@@ -28,6 +36,10 @@ assert Number.add(25, 5) == 30
2836}
2937// sub
3038assert Number.sub(25, 5) == 20
39+ assert Number.sub(Number.infinity, 10) == Number.infinity
40+ assert Number.isNaN(Number.sub(Number.infinity, Number.infinity))
41+ assert Number.isNaN(Number.sub(Number.infinity, Number.nan))
42+ assert Number.isNaN(Number.sub(Number.nan, Number.nan))
3143// Rational subtraction tests
3244{
3345 let (-) = Number.sub
@@ -42,7 +54,11 @@ assert Number.sub(25, 5) == 20
4254}
4355// mul
4456assert Number.mul(5, 5) == 25
45- // Rational mult tests
57+ assert Number.mul(Number.infinity, 10) == Number.infinity
58+ assert Number.mul(Number.infinity, Number.infinity) == Number.infinity
59+ assert Number.isNaN(Number.mul(Number.infinity, Number.nan))
60+ assert Number.isNaN(Number.mul(Number.nan, Number.nan))
61+ // Rational mul tests
4662{
4763 let (*) = Number.mul
4864 assert 2/3 * 4 == 8/3
@@ -56,6 +72,10 @@ assert Number.mul(5, 5) == 25
5672}
5773// div
5874assert Number.div(25, 5) == 5
75+ assert Number.div(Number.infinity, 10) == Number.infinity
76+ assert Number.isNaN(Number.div(Number.infinity, Number.infinity))
77+ assert Number.isNaN(Number.div(Number.infinity, Number.nan))
78+ assert Number.isNaN(Number.div(Number.nan, Number.nan))
5979// Rational div tests
6080{
6181 let (/) = Number.div
@@ -74,55 +94,79 @@ assert Number.sqrt(25.0) == 5.0
7494assert Number.sqrt(35) == 5.916079783099616
7595assert Number.sqrt(2/4) == 0.7071067811865476
7696assert Number.sqrt(9266609011276477657) == 3044110545.180066
97+ assert Number.sqrt(Number.infinity) == Number.infinity
98+ assert Number.isNaN(Number.sqrt(Number.nan))
7799// min
100+ assert Number.min(5, 5) == 5
78101assert Number.min(5, 6) == 5
79102assert Number.min(6, 5) == 5
80103assert Number.min(1/2, 1/4) == 1/4
81104assert Number.min(0.5, 0.25) == 0.25
82105assert Number.min(355894508425808343204914141312, 6) == 6
106+ assert Number.min(Number.infinity, 10) == 10
107+ assert Number.isNaN(Number.min(Number.nan, 10))
108+ assert Number.isNaN(Number.min(Number.nan, Number.infinity))
109+
83110// max
111+ assert Number.max(5, 5) == 5
84112assert Number.max(6, 5) == 6
85113assert Number.max(5, 6) == 6
86114assert Number.max(1/2, 1/4) == 1/2
87115assert Number.max(0.5, 0.25) == 0.5
88116assert Number.max(BI.toNumber(1234t), BI.toNumber(12t)) == BI.toNumber(1234t)
89117assert Number.max(355894508425808343204914141312, 6) ==
90118355894508425808343204914141312
119+ assert Number.max(Number.infinity, 10) == Number.infinity
120+ assert Number.max(Number.nan, 10) == 10
121+ assert Number.max(Number.nan, Number.infinity) == Number.infinity
122+
91123// ceil
92124assert Number.ceil(-25.5) == -25
93125assert Number.ceil(25.5) == 26
94126assert Number.ceil(25) == 25
95127assert Number.ceil(22/7) == 4
96128assert Number.ceil(BI.toNumber(1234t)) == BI.toNumber(1234t)
129+ assert Number.isNaN(Number.ceil(Number.nan))
130+ assert Number.ceil(Number.infinity) == Number.infinity
97131// floor
98132assert Number.floor(-25.5) == -26
99133assert Number.floor(25.5) == 25
100134assert Number.floor(25) == 25
101135assert Number.floor(22/7) == 3
102136assert Number.floor(BI.toNumber(1234t)) == BI.toNumber(1234t)
137+ assert Number.isNaN(Number.floor(Number.nan))
138+ assert Number.floor(Number.infinity) == Number.infinity
103139// trunc
104140assert Number.trunc(-25.5) == -25
105141assert Number.trunc(25.5) == 25
106142assert Number.trunc(25) == 25
107143assert Number.trunc(22/7) == 3
108144assert Number.trunc(BI.toNumber(1234t)) == BI.toNumber(1234t)
145+ assert Number.isNaN(Number.trunc(Number.nan))
146+ assert Number.trunc(Number.infinity) == Number.infinity
109147// round
110148assert Number.round(-25.5) == -26
111149assert Number.round(-25.25) == -25
112150assert Number.round(25.25) == 25
113151assert Number.round(25.5) == 26
114152assert Number.round(22/7) == 3
115153assert Number.round(BI.toNumber(1234t)) == BI.toNumber(1234t)
154+ assert Number.isNaN(Number.round(Number.nan))
155+ assert Number.round(Number.infinity) == Number.infinity
116156// abs
117157assert Number.abs(-25.5) == 25.5
118158assert Number.abs(25.5) == 25.5
119159assert Number.abs(-1/2) == 1/2
160+ assert Number.isNaN(Number.abs(Number.nan))
161+ assert Number.abs(Number.infinity) == Number.infinity
120162// neg
121163assert Number.neg(-25.5) == 25.5
122164assert Number.neg(25.5) == -25.5
123165assert Number.neg(1/2) == -1/2
124166assert Number.neg(BI.toNumber(1234t)) == BI.toNumber(-1234t)
125167assert Number.neg(BI.toNumber(-1234t)) == BI.toNumber(1234t)
168+ assert Number.isNaN(Number.neg(Number.nan))
169+ assert Number.neg(Number.infinity) == Number.infinity * -1
126170
127171// isFloat
128172assert Number.isFloat(0.0)
@@ -132,7 +176,8 @@ assert Number.isFloat(9e6)
132176assert Number.isFloat(0) == false
133177assert Number.isFloat(10) == false
134178assert Number.isFloat(2/3) == false
135-
179+ assert Number.isFloat(Number.infinity) == true
180+ assert Number.isFloat(Number.nan) == true
136181// isInteger
137182assert Number.isInteger(0)
138183assert Number.isInteger(9)
@@ -141,16 +186,20 @@ assert Number.isInteger(9_223_372_036_854_775_808)
141186assert Number.isInteger(0.0) == false
142187assert Number.isInteger(9e6) == false
143188assert Number.isInteger(2/3) == false
189+ assert Number.isInteger(Number.infinity) == false
190+ assert Number.isInteger(Number.nan) == false
144191
145192// isRational
146193assert Number.isRational(1/2)
147194assert Number.isRational(6/5)
148195assert Number.isRational(1) == false
149196assert Number.isRational(1.5) == false
197+ assert Number.isRational(Number.infinity) == false
198+ assert Number.isRational(Number.nan) == false
150199
151200// isFinite
152- assert Number.isFinite(0.0 / 0.0 ) == false // NaN
153- assert Number.isFinite(1.0 / 0.0 ) == false // infinity
201+ assert Number.isFinite(Number.nan ) == false // NaN
202+ assert Number.isFinite(Number.infinity ) == false // infinity
154203assert Number.isFinite(-1.0 / 0.0) == false // -infinity
155204assert Number.isFinite(1)
156205assert Number.isFinite(1.0)
@@ -165,7 +214,7 @@ assert Number.isFinite(-1/2)
165214assert Number.isFinite(BI.toNumber(-141435902485091384901384t))
166215
167216// isNaN
168- assert Number.isNaN(0.0 / 0.0 )
217+ assert Number.isNaN(Number.nan )
169218assert Number.isNaN(1) == false
170219assert Number.isNaN(1.0) == false
171220assert Number.isNaN(0) == false
@@ -176,14 +225,14 @@ assert Number.isNaN(25.76) == false
176225assert Number.isNaN(-25.00) == false
177226assert Number.isNaN(1/2) == false
178227assert Number.isNaN(-1/2) == false
179- assert Number.isNaN(1.0 / 0.0 ) == false // infinity
228+ assert Number.isNaN(Number.infinity ) == false // infinity
180229assert Number.isNaN(-1.0 / 0.0) == false // -infinity
181230assert Number.isNaN(BI.toNumber(1t)) == false
182231
183232// isInfinite
184- assert Number.isInfinite(1.0 / 0.0 ) // infinity
233+ assert Number.isInfinite(Number.infinity ) // infinity
185234assert Number.isInfinite(-1.0 / 0.0) // -infinity
186- assert Number.isInfinite(0.0 / 0.0 ) == false // NaN
235+ assert Number.isInfinite(Number.nan ) == false // NaN
187236assert Number.isInfinite(1) == false
188237assert Number.isInfinite(1.0) == false
189238assert Number.isInfinite(0) == false
@@ -251,8 +300,12 @@ assert Number.sin(0.0) == 0
251300assert Number.sin(1) > 0.84147 && Number.sin(1) < 0.84148
252301assert Number.sin(-1) < -0.84147 && Number.sin(-1) > -0.84148
253302assert Number.sin(20) > 0.91294 && Number.sin(20) < 0.91295
303+ assert Number.isNaN(Number.sin(Number.infinity))
304+ assert Number.isNaN(Number.sin(Number.nan))
254305
255306// Number.cos
256307assert Number.cos(1) > 0.5403 && Number.cos(1) < 0.5404
257308assert Number.cos(-1) > 0.5403 && Number.cos(-1) < 0.5404
258309assert Number.cos(15) < -0.7596 && Number.cos(15) > -0.7597
310+ assert Number.isNaN(Number.cos(Number.infinity))
311+ assert Number.isNaN(Number.cos(Number.nan))
0 commit comments