1023dd3b8Sopenharmony_ciif (typeof T === 'undefined') require('../setup');
2023dd3b8Sopenharmony_ci
3023dd3b8Sopenharmony_ciT('toNumber', function () {
4023dd3b8Sopenharmony_ci
5023dd3b8Sopenharmony_ci  Decimal.config({
6023dd3b8Sopenharmony_ci    precision: 20,
7023dd3b8Sopenharmony_ci    rounding: 4,
8023dd3b8Sopenharmony_ci    toExpNeg: -7,
9023dd3b8Sopenharmony_ci    toExpPos: 21,
10023dd3b8Sopenharmony_ci    minE: -9e15,
11023dd3b8Sopenharmony_ci    maxE: 9e15
12023dd3b8Sopenharmony_ci  });
13023dd3b8Sopenharmony_ci
14023dd3b8Sopenharmony_ci  // Positive zero
15023dd3b8Sopenharmony_ci  var t = function (n) {
16023dd3b8Sopenharmony_ci    T.assert(1 / new Decimal(n).toNumber() === Infinity);
17023dd3b8Sopenharmony_ci  }
18023dd3b8Sopenharmony_ci
19023dd3b8Sopenharmony_ci  t('0');
20023dd3b8Sopenharmony_ci  t('0.0');
21023dd3b8Sopenharmony_ci  t('0.000000000000');
22023dd3b8Sopenharmony_ci  t('0e+0');
23023dd3b8Sopenharmony_ci  t('0e-0');
24023dd3b8Sopenharmony_ci  t('1e-9000000000000000')
25023dd3b8Sopenharmony_ci
26023dd3b8Sopenharmony_ci  // Negative zero
27023dd3b8Sopenharmony_ci  t = function (n) {
28023dd3b8Sopenharmony_ci    T.assert(1 / new Decimal(n).toNumber() === -Infinity);
29023dd3b8Sopenharmony_ci  }
30023dd3b8Sopenharmony_ci
31023dd3b8Sopenharmony_ci  t('-0');
32023dd3b8Sopenharmony_ci  t('-0.0');
33023dd3b8Sopenharmony_ci  t('-0.000000000000');
34023dd3b8Sopenharmony_ci  t('-0e+0');
35023dd3b8Sopenharmony_ci  t('-0e-0');
36023dd3b8Sopenharmony_ci  t('-1e-9000000000000000')
37023dd3b8Sopenharmony_ci
38023dd3b8Sopenharmony_ci  t = function (n, expected) {
39023dd3b8Sopenharmony_ci    T.assertEqual(expected, new Decimal(n).toNumber());
40023dd3b8Sopenharmony_ci  }
41023dd3b8Sopenharmony_ci
42023dd3b8Sopenharmony_ci  t(Infinity, 1 / 0);
43023dd3b8Sopenharmony_ci  t('Infinity', 1 / 0);
44023dd3b8Sopenharmony_ci  t(-Infinity, -1 / 0);
45023dd3b8Sopenharmony_ci  t('-Infinity', -1 / 0);
46023dd3b8Sopenharmony_ci  t(NaN, NaN);
47023dd3b8Sopenharmony_ci  t('NaN', NaN);
48023dd3b8Sopenharmony_ci
49023dd3b8Sopenharmony_ci  t(1, 1);
50023dd3b8Sopenharmony_ci  t('1', 1);
51023dd3b8Sopenharmony_ci  t('1.0', 1);
52023dd3b8Sopenharmony_ci  t('1e+0', 1);
53023dd3b8Sopenharmony_ci  t('1e-0', 1);
54023dd3b8Sopenharmony_ci
55023dd3b8Sopenharmony_ci  t(-1, -1);
56023dd3b8Sopenharmony_ci  t('-1', -1);
57023dd3b8Sopenharmony_ci  t('-1.0', -1);
58023dd3b8Sopenharmony_ci  t('-1e+0', -1);
59023dd3b8Sopenharmony_ci  t('-1e-0', -1);
60023dd3b8Sopenharmony_ci
61023dd3b8Sopenharmony_ci  t('123.456789876543', 123.456789876543);
62023dd3b8Sopenharmony_ci  t('-123.456789876543', -123.456789876543);
63023dd3b8Sopenharmony_ci
64023dd3b8Sopenharmony_ci  t('1.1102230246251565e-16', 1.1102230246251565e-16);
65023dd3b8Sopenharmony_ci  t('-1.1102230246251565e-16', -1.1102230246251565e-16);
66023dd3b8Sopenharmony_ci
67023dd3b8Sopenharmony_ci  t('9007199254740991', 9007199254740991);
68023dd3b8Sopenharmony_ci  t('-9007199254740991', -9007199254740991);
69023dd3b8Sopenharmony_ci
70023dd3b8Sopenharmony_ci  t('5e-324', 5e-324);
71023dd3b8Sopenharmony_ci  t('1.7976931348623157e+308', 1.7976931348623157e+308);
72023dd3b8Sopenharmony_ci
73023dd3b8Sopenharmony_ci  t('9.999999e+9000000000000000', 1 / 0);
74023dd3b8Sopenharmony_ci  t('-9.999999e+9000000000000000', -1 / 0);
75023dd3b8Sopenharmony_ci  t('1e-9000000000000000', 0);
76023dd3b8Sopenharmony_ci  t('-1e-9000000000000000', -0);
77023dd3b8Sopenharmony_ci});
78