1023dd3b8Sopenharmony_ciif (typeof T === 'undefined') require('../setup');
2023dd3b8Sopenharmony_ci
3023dd3b8Sopenharmony_ciT('isFinite, isInteger, isNaN, isNegative, isZero, isDecimal', function () {
4023dd3b8Sopenharmony_ci
5023dd3b8Sopenharmony_ci  function t(actual) {
6023dd3b8Sopenharmony_ci    T.assert(actual);
7023dd3b8Sopenharmony_ci  }
8023dd3b8Sopenharmony_ci
9023dd3b8Sopenharmony_ci  Decimal.config({
10023dd3b8Sopenharmony_ci    precision: 20,
11023dd3b8Sopenharmony_ci    rounding: 4,
12023dd3b8Sopenharmony_ci    toExpNeg: -7,
13023dd3b8Sopenharmony_ci    toExpPos: 21,
14023dd3b8Sopenharmony_ci    minE: -9e15,
15023dd3b8Sopenharmony_ci    maxE: 9e15
16023dd3b8Sopenharmony_ci  });
17023dd3b8Sopenharmony_ci
18023dd3b8Sopenharmony_ci  var n = new Decimal(1);
19023dd3b8Sopenharmony_ci
20023dd3b8Sopenharmony_ci  t(n.isFinite());
21023dd3b8Sopenharmony_ci  t(!n.isNaN());
22023dd3b8Sopenharmony_ci  t(!n.isNegative());
23023dd3b8Sopenharmony_ci  t(!n.isZero());
24023dd3b8Sopenharmony_ci  t(n.isInteger());
25023dd3b8Sopenharmony_ci  t(n.equals(n));
26023dd3b8Sopenharmony_ci  t(n.equals(1));
27023dd3b8Sopenharmony_ci  t(n.equals('1.0'));
28023dd3b8Sopenharmony_ci  t(n.equals('1.00'));
29023dd3b8Sopenharmony_ci  t(n.equals('1.000'));
30023dd3b8Sopenharmony_ci  t(n.equals('1.0000'));
31023dd3b8Sopenharmony_ci  t(n.equals('1.00000'));
32023dd3b8Sopenharmony_ci  t(n.equals('1.000000'));
33023dd3b8Sopenharmony_ci  t(n.equals(new Decimal(1)));
34023dd3b8Sopenharmony_ci  t(n.equals('0x1'));
35023dd3b8Sopenharmony_ci  t(n.equals('0o1'));
36023dd3b8Sopenharmony_ci  t(n.equals('0b1'));
37023dd3b8Sopenharmony_ci  t(n.greaterThan(0.99999));
38023dd3b8Sopenharmony_ci  t(!n.greaterThanOrEqualTo(1.1));
39023dd3b8Sopenharmony_ci  t(n.lessThan(1.001));
40023dd3b8Sopenharmony_ci  t(n.lessThanOrEqualTo(2));
41023dd3b8Sopenharmony_ci  t(n.toString() === n.valueOf());
42023dd3b8Sopenharmony_ci
43023dd3b8Sopenharmony_ci  n = new Decimal('-0.1');
44023dd3b8Sopenharmony_ci
45023dd3b8Sopenharmony_ci  t(n.isFinite());
46023dd3b8Sopenharmony_ci  t(!n.isNaN());
47023dd3b8Sopenharmony_ci  t(n.isNeg());
48023dd3b8Sopenharmony_ci  t(!n.isZero());
49023dd3b8Sopenharmony_ci  t(!n.isInt());
50023dd3b8Sopenharmony_ci  t(!n.equals(0.1));
51023dd3b8Sopenharmony_ci  t(!n.greaterThan(-0.1));
52023dd3b8Sopenharmony_ci  t(n.greaterThanOrEqualTo(-1));
53023dd3b8Sopenharmony_ci  t(n.lessThan(-0.01));
54023dd3b8Sopenharmony_ci  t(!n.lessThanOrEqualTo(-1));
55023dd3b8Sopenharmony_ci  t(n.toString() === n.valueOf());
56023dd3b8Sopenharmony_ci
57023dd3b8Sopenharmony_ci  n = new Decimal(Infinity);
58023dd3b8Sopenharmony_ci
59023dd3b8Sopenharmony_ci  t(!n.isFinite());
60023dd3b8Sopenharmony_ci  t(!n.isNaN());
61023dd3b8Sopenharmony_ci  t(!n.isNegative());
62023dd3b8Sopenharmony_ci  t(!n.isZero());
63023dd3b8Sopenharmony_ci  t(!n.isInteger());
64023dd3b8Sopenharmony_ci  t(n.eq('Infinity'));
65023dd3b8Sopenharmony_ci  t(n.eq(1/0));
66023dd3b8Sopenharmony_ci  t(n.gt('9e999'));
67023dd3b8Sopenharmony_ci  t(n.gte(Infinity));
68023dd3b8Sopenharmony_ci  t(!n.lt(Infinity));
69023dd3b8Sopenharmony_ci  t(n.lte(Infinity));
70023dd3b8Sopenharmony_ci  t(n.toString() === n.valueOf());
71023dd3b8Sopenharmony_ci
72023dd3b8Sopenharmony_ci  n = new Decimal('-Infinity');
73023dd3b8Sopenharmony_ci
74023dd3b8Sopenharmony_ci  t(!n.isFinite());
75023dd3b8Sopenharmony_ci  t(!n.isNaN());
76023dd3b8Sopenharmony_ci  t(n.isNeg());
77023dd3b8Sopenharmony_ci  t(!n.isZero());
78023dd3b8Sopenharmony_ci  t(!n.isInt());
79023dd3b8Sopenharmony_ci  t(!n.equals(Infinity));
80023dd3b8Sopenharmony_ci  t(n.equals(-1/0));
81023dd3b8Sopenharmony_ci  t(!n.greaterThan(-Infinity));
82023dd3b8Sopenharmony_ci  t(n.greaterThanOrEqualTo('-Infinity', 8));
83023dd3b8Sopenharmony_ci  t(n.lessThan(0));
84023dd3b8Sopenharmony_ci  t(n.lessThanOrEqualTo(Infinity));
85023dd3b8Sopenharmony_ci  t(n.toString() === n.valueOf());
86023dd3b8Sopenharmony_ci
87023dd3b8Sopenharmony_ci  n = new Decimal('0.0000000');
88023dd3b8Sopenharmony_ci
89023dd3b8Sopenharmony_ci  t(n.isFinite());
90023dd3b8Sopenharmony_ci  t(!n.isNaN());
91023dd3b8Sopenharmony_ci  t(!n.isNegative());
92023dd3b8Sopenharmony_ci  t(n.isZero());
93023dd3b8Sopenharmony_ci  t(n.isInteger());
94023dd3b8Sopenharmony_ci  t(n.eq(-0));
95023dd3b8Sopenharmony_ci  t(n.gt(-0.000001));
96023dd3b8Sopenharmony_ci  t(!n.gte(0.1));
97023dd3b8Sopenharmony_ci  t(n.lt(0.0001));
98023dd3b8Sopenharmony_ci  t(n.lte(-0));
99023dd3b8Sopenharmony_ci  t(n.toString() === n.valueOf());
100023dd3b8Sopenharmony_ci
101023dd3b8Sopenharmony_ci  n = new Decimal(-0);
102023dd3b8Sopenharmony_ci
103023dd3b8Sopenharmony_ci  t(n.isFinite());
104023dd3b8Sopenharmony_ci  t(!n.isNaN());
105023dd3b8Sopenharmony_ci  t(n.isNeg());
106023dd3b8Sopenharmony_ci  t(n.isZero());
107023dd3b8Sopenharmony_ci  t(n.isInt());
108023dd3b8Sopenharmony_ci  t(n.equals('0.000'));
109023dd3b8Sopenharmony_ci  t(n.greaterThan(-1));
110023dd3b8Sopenharmony_ci  t(!n.greaterThanOrEqualTo(0.1));
111023dd3b8Sopenharmony_ci  t(!n.lessThan(0));
112023dd3b8Sopenharmony_ci  t(!n.lessThan(0, 36));
113023dd3b8Sopenharmony_ci  t(n.lessThan(0.1));
114023dd3b8Sopenharmony_ci  t(n.lessThanOrEqualTo(0));
115023dd3b8Sopenharmony_ci  t(n.valueOf() === '-0' && n.toString() === '0');
116023dd3b8Sopenharmony_ci
117023dd3b8Sopenharmony_ci  n = new Decimal('NaN');
118023dd3b8Sopenharmony_ci
119023dd3b8Sopenharmony_ci  t(!n.isFinite());
120023dd3b8Sopenharmony_ci  t(n.isNaN());
121023dd3b8Sopenharmony_ci  t(!n.isNegative());
122023dd3b8Sopenharmony_ci  t(!n.isZero());
123023dd3b8Sopenharmony_ci  t(!n.isInteger());
124023dd3b8Sopenharmony_ci  t(!n.eq(NaN));
125023dd3b8Sopenharmony_ci  t(!n.eq(Infinity));
126023dd3b8Sopenharmony_ci  t(!n.gt(0));
127023dd3b8Sopenharmony_ci  t(!n.gte(0));
128023dd3b8Sopenharmony_ci  t(!n.lt(1));
129023dd3b8Sopenharmony_ci  t(!n.lte(-0));
130023dd3b8Sopenharmony_ci  t(!n.lte(-1));
131023dd3b8Sopenharmony_ci  t(n.toString() === n.valueOf());
132023dd3b8Sopenharmony_ci
133023dd3b8Sopenharmony_ci  n = new Decimal('-1.234e+2');
134023dd3b8Sopenharmony_ci
135023dd3b8Sopenharmony_ci  t(n.isFinite());
136023dd3b8Sopenharmony_ci  t(!n.isNaN());
137023dd3b8Sopenharmony_ci  t(n.isNeg());
138023dd3b8Sopenharmony_ci  t(!n.isZero());
139023dd3b8Sopenharmony_ci  t(!n.isInt());
140023dd3b8Sopenharmony_ci  t(n.eq(-123.4));
141023dd3b8Sopenharmony_ci  t(n.gt('-0xff'));
142023dd3b8Sopenharmony_ci  t(n.gte('-1.234e+3'));
143023dd3b8Sopenharmony_ci  t(n.lt(-123.39999));
144023dd3b8Sopenharmony_ci  t(n.lte('-123.4e+0'));
145023dd3b8Sopenharmony_ci  t(n.toString() === n.valueOf());
146023dd3b8Sopenharmony_ci
147023dd3b8Sopenharmony_ci  n = new Decimal('5e-200');
148023dd3b8Sopenharmony_ci
149023dd3b8Sopenharmony_ci  t(n.isFinite());
150023dd3b8Sopenharmony_ci  t(!n.isNaN());
151023dd3b8Sopenharmony_ci  t(!n.isNegative());
152023dd3b8Sopenharmony_ci  t(!n.isZero());
153023dd3b8Sopenharmony_ci  t(!n.isInteger());
154023dd3b8Sopenharmony_ci  t(n.equals(5e-200));
155023dd3b8Sopenharmony_ci  t(n.greaterThan(5e-201));
156023dd3b8Sopenharmony_ci  t(!n.greaterThanOrEqualTo(1));
157023dd3b8Sopenharmony_ci  t(n.lessThan(6e-200));
158023dd3b8Sopenharmony_ci  t(n.lessThanOrEqualTo(5.1e-200));
159023dd3b8Sopenharmony_ci  t(n.toString() === n.valueOf());
160023dd3b8Sopenharmony_ci
161023dd3b8Sopenharmony_ci  n = new Decimal('1');
162023dd3b8Sopenharmony_ci
163023dd3b8Sopenharmony_ci  t(n.equals(n));
164023dd3b8Sopenharmony_ci  t(n.equals(n.toString()));
165023dd3b8Sopenharmony_ci  t(n.equals(n.toString()));
166023dd3b8Sopenharmony_ci  t(n.equals(n.valueOf()));
167023dd3b8Sopenharmony_ci  t(n.equals(n.toFixed()));
168023dd3b8Sopenharmony_ci  t(n.equals(1));
169023dd3b8Sopenharmony_ci  t(n.equals('1e+0'));
170023dd3b8Sopenharmony_ci  t(!n.equals(-1));
171023dd3b8Sopenharmony_ci  t(!n.equals(0.1));
172023dd3b8Sopenharmony_ci
173023dd3b8Sopenharmony_ci  t(!new Decimal(NaN).equals(0));
174023dd3b8Sopenharmony_ci  t(!new Decimal(Infinity).equals(0));
175023dd3b8Sopenharmony_ci  t(!new Decimal(0.1).equals(0));
176023dd3b8Sopenharmony_ci  t(!new Decimal(1e9 + 1).equals(1e9));
177023dd3b8Sopenharmony_ci  t(!new Decimal(1e9 - 1).equals(1e9));
178023dd3b8Sopenharmony_ci  t(new Decimal(1e9 + 1).equals(1e9 + 1));
179023dd3b8Sopenharmony_ci  t(new Decimal(1).equals(1));
180023dd3b8Sopenharmony_ci  t(!new Decimal(1).equals(-1));
181023dd3b8Sopenharmony_ci  t(!new Decimal(NaN).equals(NaN));
182023dd3b8Sopenharmony_ci  t(!new Decimal('NaN').equals('NaN'));
183023dd3b8Sopenharmony_ci
184023dd3b8Sopenharmony_ci  t(!new Decimal(NaN).greaterThan(NaN));
185023dd3b8Sopenharmony_ci  t(!new Decimal(NaN).lessThan(NaN));
186023dd3b8Sopenharmony_ci  t(new Decimal('0xa').lessThanOrEqualTo('0xff'));
187023dd3b8Sopenharmony_ci  t(new Decimal('0xb').greaterThanOrEqualTo('0x9'));
188023dd3b8Sopenharmony_ci
189023dd3b8Sopenharmony_ci  t(!new Decimal(10).greaterThan(10));
190023dd3b8Sopenharmony_ci  t(!new Decimal(10).lessThan(10));
191023dd3b8Sopenharmony_ci  t(!new Decimal(NaN).lessThan(NaN));
192023dd3b8Sopenharmony_ci  t(!new Decimal(Infinity).lessThan(-Infinity));
193023dd3b8Sopenharmony_ci  t(!new Decimal(Infinity).lessThan(Infinity));
194023dd3b8Sopenharmony_ci  t(new Decimal(Infinity).lessThanOrEqualTo(Infinity));
195023dd3b8Sopenharmony_ci  t(!new Decimal(NaN).greaterThanOrEqualTo(NaN));
196023dd3b8Sopenharmony_ci  t(new Decimal(Infinity).greaterThanOrEqualTo(Infinity));
197023dd3b8Sopenharmony_ci  t(new Decimal(Infinity).greaterThanOrEqualTo(-Infinity));
198023dd3b8Sopenharmony_ci  t(!new Decimal(NaN).greaterThanOrEqualTo(-Infinity));
199023dd3b8Sopenharmony_ci  t(new Decimal(-Infinity).greaterThanOrEqualTo(-Infinity));
200023dd3b8Sopenharmony_ci
201023dd3b8Sopenharmony_ci  t(!new Decimal(2).greaterThan(10));
202023dd3b8Sopenharmony_ci  t(!new Decimal(10).lessThan(2));
203023dd3b8Sopenharmony_ci  t(new Decimal(255).lessThanOrEqualTo('0xff'));
204023dd3b8Sopenharmony_ci  t(new Decimal('0xa').greaterThanOrEqualTo('0x9'));
205023dd3b8Sopenharmony_ci  t(!new Decimal(0).lessThanOrEqualTo('NaN'));
206023dd3b8Sopenharmony_ci  t(!new Decimal(0).greaterThanOrEqualTo(NaN));
207023dd3b8Sopenharmony_ci  t(!new Decimal(NaN).lessThanOrEqualTo('NaN'));
208023dd3b8Sopenharmony_ci  t(!new Decimal(NaN).greaterThanOrEqualTo(NaN));
209023dd3b8Sopenharmony_ci  t(!new Decimal(0).lessThanOrEqualTo(-Infinity));
210023dd3b8Sopenharmony_ci  t(new Decimal(0).greaterThanOrEqualTo(-Infinity));
211023dd3b8Sopenharmony_ci  t(new Decimal(0).lessThanOrEqualTo('Infinity'));
212023dd3b8Sopenharmony_ci  t(!new Decimal(0).greaterThanOrEqualTo('Infinity'));
213023dd3b8Sopenharmony_ci  t(new Decimal(10).lessThanOrEqualTo(20));
214023dd3b8Sopenharmony_ci  t(!new Decimal(10).greaterThanOrEqualTo(20));
215023dd3b8Sopenharmony_ci
216023dd3b8Sopenharmony_ci  t(!new Decimal(1.23001e-2).lessThan(1.23e-2));
217023dd3b8Sopenharmony_ci  t(new Decimal(1.23e-2).lt(1.23001e-2));
218023dd3b8Sopenharmony_ci  t(!new Decimal(1e-2).lessThan(9.999999e-3));
219023dd3b8Sopenharmony_ci  t(new Decimal(9.999999e-3).lt(1e-2));
220023dd3b8Sopenharmony_ci
221023dd3b8Sopenharmony_ci  t(!new Decimal(1.23001e+2).lessThan(1.23e+2));
222023dd3b8Sopenharmony_ci  t(new Decimal(1.23e+2).lt(1.23001e+2));
223023dd3b8Sopenharmony_ci  t(new Decimal(9.999999e+2).lessThan(1e+3));
224023dd3b8Sopenharmony_ci  t(!new Decimal(1e+3).lt(9.9999999e+2));
225023dd3b8Sopenharmony_ci
226023dd3b8Sopenharmony_ci  t(!new Decimal(1.23001e-2).lessThanOrEqualTo(1.23e-2));
227023dd3b8Sopenharmony_ci  t(new Decimal(1.23e-2).lte(1.23001e-2));
228023dd3b8Sopenharmony_ci  t(!new Decimal(1e-2).lessThanOrEqualTo(9.999999e-3));
229023dd3b8Sopenharmony_ci  t(new Decimal(9.999999e-3).lte(1e-2));
230023dd3b8Sopenharmony_ci
231023dd3b8Sopenharmony_ci  t(!new Decimal(1.23001e+2).lessThanOrEqualTo(1.23e+2));
232023dd3b8Sopenharmony_ci  t(new Decimal(1.23e+2).lte(1.23001e+2));
233023dd3b8Sopenharmony_ci  t(new Decimal(9.999999e+2).lessThanOrEqualTo(1e+3));
234023dd3b8Sopenharmony_ci  t(!new Decimal(1e+3).lte(9.9999999e+2));
235023dd3b8Sopenharmony_ci
236023dd3b8Sopenharmony_ci  t(new Decimal(1.23001e-2).greaterThan(1.23e-2));
237023dd3b8Sopenharmony_ci  t(!new Decimal(1.23e-2).gt(1.23001e-2));
238023dd3b8Sopenharmony_ci  t(new Decimal(1e-2).greaterThan(9.999999e-3));
239023dd3b8Sopenharmony_ci  t(!new Decimal(9.999999e-3).gt(1e-2));
240023dd3b8Sopenharmony_ci
241023dd3b8Sopenharmony_ci  t(new Decimal(1.23001e+2).greaterThan(1.23e+2));
242023dd3b8Sopenharmony_ci  t(!new Decimal(1.23e+2).gt(1.23001e+2));
243023dd3b8Sopenharmony_ci  t(!new Decimal(9.999999e+2).greaterThan(1e+3));
244023dd3b8Sopenharmony_ci  t(new Decimal(1e+3).gt(9.9999999e+2));
245023dd3b8Sopenharmony_ci
246023dd3b8Sopenharmony_ci  t(new Decimal(1.23001e-2).greaterThanOrEqualTo(1.23e-2));
247023dd3b8Sopenharmony_ci  t(!new Decimal(1.23e-2).gte(1.23001e-2));
248023dd3b8Sopenharmony_ci  t(new Decimal(1e-2).greaterThanOrEqualTo(9.999999e-3));
249023dd3b8Sopenharmony_ci  t(!new Decimal(9.999999e-3).gte(1e-2));
250023dd3b8Sopenharmony_ci
251023dd3b8Sopenharmony_ci  t(new Decimal(1.23001e+2).greaterThanOrEqualTo(1.23e+2));
252023dd3b8Sopenharmony_ci  t(!new Decimal(1.23e+2).gte(1.23001e+2));
253023dd3b8Sopenharmony_ci  t(!new Decimal(9.999999e+2).greaterThanOrEqualTo(1e+3));
254023dd3b8Sopenharmony_ci  t(new Decimal(1e+3).gte(9.9999999e+2));
255023dd3b8Sopenharmony_ci
256023dd3b8Sopenharmony_ci  t(!new Decimal('1.0000000000000000000001').isInteger());
257023dd3b8Sopenharmony_ci  t(!new Decimal('0.999999999999999999999').isInteger());
258023dd3b8Sopenharmony_ci  t(new Decimal('4e4').isInteger());
259023dd3b8Sopenharmony_ci  t(new Decimal('-4e4').isInteger());
260023dd3b8Sopenharmony_ci
261023dd3b8Sopenharmony_ci  // Decimal.isDecimal
262023dd3b8Sopenharmony_ci
263023dd3b8Sopenharmony_ci  t(Decimal.isDecimal(new Decimal(1)));
264023dd3b8Sopenharmony_ci  t(Decimal.isDecimal(new Decimal('-2.3')));
265023dd3b8Sopenharmony_ci  t(Decimal.isDecimal(new Decimal(NaN)));
266023dd3b8Sopenharmony_ci  t(Decimal.isDecimal(new Decimal('Infinity')));
267023dd3b8Sopenharmony_ci
268023dd3b8Sopenharmony_ci  t(!Decimal.isDecimal());
269023dd3b8Sopenharmony_ci  t(!Decimal.isDecimal(0));
270023dd3b8Sopenharmony_ci  t(!Decimal.isDecimal(1));
271023dd3b8Sopenharmony_ci  t(!Decimal.isDecimal('-2.3'));
272023dd3b8Sopenharmony_ci  t(!Decimal.isDecimal(NaN));
273023dd3b8Sopenharmony_ci  t(!Decimal.isDecimal(Infinity));
274023dd3b8Sopenharmony_ci  t(!Decimal.isDecimal(undefined));
275023dd3b8Sopenharmony_ci  t(!Decimal.isDecimal({}));
276023dd3b8Sopenharmony_ci  t(!Decimal.isDecimal({isDecimal: true}));
277023dd3b8Sopenharmony_ci  t(!Decimal.isDecimal(new Number(4)));
278023dd3b8Sopenharmony_ci});
279