• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1if (typeof T === 'undefined') require('../setup');
2
3T('isFinite, isInteger, isNaN, isNegative, isZero, isDecimal', function () {
4
5  function t(actual) {
6    T.assert(actual);
7  }
8
9  Decimal.config({
10    precision: 20,
11    rounding: 4,
12    toExpNeg: -7,
13    toExpPos: 21,
14    minE: -9e15,
15    maxE: 9e15
16  });
17
18  var n = new Decimal(1);
19
20  t(n.isFinite());
21  t(!n.isNaN());
22  t(!n.isNegative());
23  t(!n.isZero());
24  t(n.isInteger());
25  t(n.equals(n));
26  t(n.equals(1));
27  t(n.equals('1.0'));
28  t(n.equals('1.00'));
29  t(n.equals('1.000'));
30  t(n.equals('1.0000'));
31  t(n.equals('1.00000'));
32  t(n.equals('1.000000'));
33  t(n.equals(new Decimal(1)));
34  t(n.equals('0x1'));
35  t(n.equals('0o1'));
36  t(n.equals('0b1'));
37  t(n.greaterThan(0.99999));
38  t(!n.greaterThanOrEqualTo(1.1));
39  t(n.lessThan(1.001));
40  t(n.lessThanOrEqualTo(2));
41  t(n.toString() === n.valueOf());
42
43  n = new Decimal('-0.1');
44
45  t(n.isFinite());
46  t(!n.isNaN());
47  t(n.isNeg());
48  t(!n.isZero());
49  t(!n.isInt());
50  t(!n.equals(0.1));
51  t(!n.greaterThan(-0.1));
52  t(n.greaterThanOrEqualTo(-1));
53  t(n.lessThan(-0.01));
54  t(!n.lessThanOrEqualTo(-1));
55  t(n.toString() === n.valueOf());
56
57  n = new Decimal(Infinity);
58
59  t(!n.isFinite());
60  t(!n.isNaN());
61  t(!n.isNegative());
62  t(!n.isZero());
63  t(!n.isInteger());
64  t(n.eq('Infinity'));
65  t(n.eq(1/0));
66  t(n.gt('9e999'));
67  t(n.gte(Infinity));
68  t(!n.lt(Infinity));
69  t(n.lte(Infinity));
70  t(n.toString() === n.valueOf());
71
72  n = new Decimal('-Infinity');
73
74  t(!n.isFinite());
75  t(!n.isNaN());
76  t(n.isNeg());
77  t(!n.isZero());
78  t(!n.isInt());
79  t(!n.equals(Infinity));
80  t(n.equals(-1/0));
81  t(!n.greaterThan(-Infinity));
82  t(n.greaterThanOrEqualTo('-Infinity', 8));
83  t(n.lessThan(0));
84  t(n.lessThanOrEqualTo(Infinity));
85  t(n.toString() === n.valueOf());
86
87  n = new Decimal('0.0000000');
88
89  t(n.isFinite());
90  t(!n.isNaN());
91  t(!n.isNegative());
92  t(n.isZero());
93  t(n.isInteger());
94  t(n.eq(-0));
95  t(n.gt(-0.000001));
96  t(!n.gte(0.1));
97  t(n.lt(0.0001));
98  t(n.lte(-0));
99  t(n.toString() === n.valueOf());
100
101  n = new Decimal(-0);
102
103  t(n.isFinite());
104  t(!n.isNaN());
105  t(n.isNeg());
106  t(n.isZero());
107  t(n.isInt());
108  t(n.equals('0.000'));
109  t(n.greaterThan(-1));
110  t(!n.greaterThanOrEqualTo(0.1));
111  t(!n.lessThan(0));
112  t(!n.lessThan(0, 36));
113  t(n.lessThan(0.1));
114  t(n.lessThanOrEqualTo(0));
115  t(n.valueOf() === '-0' && n.toString() === '0');
116
117  n = new Decimal('NaN');
118
119  t(!n.isFinite());
120  t(n.isNaN());
121  t(!n.isNegative());
122  t(!n.isZero());
123  t(!n.isInteger());
124  t(!n.eq(NaN));
125  t(!n.eq(Infinity));
126  t(!n.gt(0));
127  t(!n.gte(0));
128  t(!n.lt(1));
129  t(!n.lte(-0));
130  t(!n.lte(-1));
131  t(n.toString() === n.valueOf());
132
133  n = new Decimal('-1.234e+2');
134
135  t(n.isFinite());
136  t(!n.isNaN());
137  t(n.isNeg());
138  t(!n.isZero());
139  t(!n.isInt());
140  t(n.eq(-123.4));
141  t(n.gt('-0xff'));
142  t(n.gte('-1.234e+3'));
143  t(n.lt(-123.39999));
144  t(n.lte('-123.4e+0'));
145  t(n.toString() === n.valueOf());
146
147  n = new Decimal('5e-200');
148
149  t(n.isFinite());
150  t(!n.isNaN());
151  t(!n.isNegative());
152  t(!n.isZero());
153  t(!n.isInteger());
154  t(n.equals(5e-200));
155  t(n.greaterThan(5e-201));
156  t(!n.greaterThanOrEqualTo(1));
157  t(n.lessThan(6e-200));
158  t(n.lessThanOrEqualTo(5.1e-200));
159  t(n.toString() === n.valueOf());
160
161  n = new Decimal('1');
162
163  t(n.equals(n));
164  t(n.equals(n.toString()));
165  t(n.equals(n.toString()));
166  t(n.equals(n.valueOf()));
167  t(n.equals(n.toFixed()));
168  t(n.equals(1));
169  t(n.equals('1e+0'));
170  t(!n.equals(-1));
171  t(!n.equals(0.1));
172
173  t(!new Decimal(NaN).equals(0));
174  t(!new Decimal(Infinity).equals(0));
175  t(!new Decimal(0.1).equals(0));
176  t(!new Decimal(1e9 + 1).equals(1e9));
177  t(!new Decimal(1e9 - 1).equals(1e9));
178  t(new Decimal(1e9 + 1).equals(1e9 + 1));
179  t(new Decimal(1).equals(1));
180  t(!new Decimal(1).equals(-1));
181  t(!new Decimal(NaN).equals(NaN));
182  t(!new Decimal('NaN').equals('NaN'));
183
184  t(!new Decimal(NaN).greaterThan(NaN));
185  t(!new Decimal(NaN).lessThan(NaN));
186  t(new Decimal('0xa').lessThanOrEqualTo('0xff'));
187  t(new Decimal('0xb').greaterThanOrEqualTo('0x9'));
188
189  t(!new Decimal(10).greaterThan(10));
190  t(!new Decimal(10).lessThan(10));
191  t(!new Decimal(NaN).lessThan(NaN));
192  t(!new Decimal(Infinity).lessThan(-Infinity));
193  t(!new Decimal(Infinity).lessThan(Infinity));
194  t(new Decimal(Infinity).lessThanOrEqualTo(Infinity));
195  t(!new Decimal(NaN).greaterThanOrEqualTo(NaN));
196  t(new Decimal(Infinity).greaterThanOrEqualTo(Infinity));
197  t(new Decimal(Infinity).greaterThanOrEqualTo(-Infinity));
198  t(!new Decimal(NaN).greaterThanOrEqualTo(-Infinity));
199  t(new Decimal(-Infinity).greaterThanOrEqualTo(-Infinity));
200
201  t(!new Decimal(2).greaterThan(10));
202  t(!new Decimal(10).lessThan(2));
203  t(new Decimal(255).lessThanOrEqualTo('0xff'));
204  t(new Decimal('0xa').greaterThanOrEqualTo('0x9'));
205  t(!new Decimal(0).lessThanOrEqualTo('NaN'));
206  t(!new Decimal(0).greaterThanOrEqualTo(NaN));
207  t(!new Decimal(NaN).lessThanOrEqualTo('NaN'));
208  t(!new Decimal(NaN).greaterThanOrEqualTo(NaN));
209  t(!new Decimal(0).lessThanOrEqualTo(-Infinity));
210  t(new Decimal(0).greaterThanOrEqualTo(-Infinity));
211  t(new Decimal(0).lessThanOrEqualTo('Infinity'));
212  t(!new Decimal(0).greaterThanOrEqualTo('Infinity'));
213  t(new Decimal(10).lessThanOrEqualTo(20));
214  t(!new Decimal(10).greaterThanOrEqualTo(20));
215
216  t(!new Decimal(1.23001e-2).lessThan(1.23e-2));
217  t(new Decimal(1.23e-2).lt(1.23001e-2));
218  t(!new Decimal(1e-2).lessThan(9.999999e-3));
219  t(new Decimal(9.999999e-3).lt(1e-2));
220
221  t(!new Decimal(1.23001e+2).lessThan(1.23e+2));
222  t(new Decimal(1.23e+2).lt(1.23001e+2));
223  t(new Decimal(9.999999e+2).lessThan(1e+3));
224  t(!new Decimal(1e+3).lt(9.9999999e+2));
225
226  t(!new Decimal(1.23001e-2).lessThanOrEqualTo(1.23e-2));
227  t(new Decimal(1.23e-2).lte(1.23001e-2));
228  t(!new Decimal(1e-2).lessThanOrEqualTo(9.999999e-3));
229  t(new Decimal(9.999999e-3).lte(1e-2));
230
231  t(!new Decimal(1.23001e+2).lessThanOrEqualTo(1.23e+2));
232  t(new Decimal(1.23e+2).lte(1.23001e+2));
233  t(new Decimal(9.999999e+2).lessThanOrEqualTo(1e+3));
234  t(!new Decimal(1e+3).lte(9.9999999e+2));
235
236  t(new Decimal(1.23001e-2).greaterThan(1.23e-2));
237  t(!new Decimal(1.23e-2).gt(1.23001e-2));
238  t(new Decimal(1e-2).greaterThan(9.999999e-3));
239  t(!new Decimal(9.999999e-3).gt(1e-2));
240
241  t(new Decimal(1.23001e+2).greaterThan(1.23e+2));
242  t(!new Decimal(1.23e+2).gt(1.23001e+2));
243  t(!new Decimal(9.999999e+2).greaterThan(1e+3));
244  t(new Decimal(1e+3).gt(9.9999999e+2));
245
246  t(new Decimal(1.23001e-2).greaterThanOrEqualTo(1.23e-2));
247  t(!new Decimal(1.23e-2).gte(1.23001e-2));
248  t(new Decimal(1e-2).greaterThanOrEqualTo(9.999999e-3));
249  t(!new Decimal(9.999999e-3).gte(1e-2));
250
251  t(new Decimal(1.23001e+2).greaterThanOrEqualTo(1.23e+2));
252  t(!new Decimal(1.23e+2).gte(1.23001e+2));
253  t(!new Decimal(9.999999e+2).greaterThanOrEqualTo(1e+3));
254  t(new Decimal(1e+3).gte(9.9999999e+2));
255
256  t(!new Decimal('1.0000000000000000000001').isInteger());
257  t(!new Decimal('0.999999999999999999999').isInteger());
258  t(new Decimal('4e4').isInteger());
259  t(new Decimal('-4e4').isInteger());
260
261  // Decimal.isDecimal
262
263  t(Decimal.isDecimal(new Decimal(1)));
264  t(Decimal.isDecimal(new Decimal('-2.3')));
265  t(Decimal.isDecimal(new Decimal(NaN)));
266  t(Decimal.isDecimal(new Decimal('Infinity')));
267
268  t(!Decimal.isDecimal());
269  t(!Decimal.isDecimal(0));
270  t(!Decimal.isDecimal(1));
271  t(!Decimal.isDecimal('-2.3'));
272  t(!Decimal.isDecimal(NaN));
273  t(!Decimal.isDecimal(Infinity));
274  t(!Decimal.isDecimal(undefined));
275  t(!Decimal.isDecimal({}));
276  t(!Decimal.isDecimal({isDecimal: true}));
277  t(!Decimal.isDecimal(new Number(4)));
278});
279