if (typeof T === 'undefined') require('../setup'); T('isFinite, isInteger, isNaN, isNegative, isZero, isDecimal', function () { function t(actual) { T.assert(actual); } Decimal.config({ precision: 20, rounding: 4, toExpNeg: -7, toExpPos: 21, minE: -9e15, maxE: 9e15 }); var n = new Decimal(1); t(n.isFinite()); t(!n.isNaN()); t(!n.isNegative()); t(!n.isZero()); t(n.isInteger()); t(n.equals(n)); t(n.equals(1)); t(n.equals('1.0')); t(n.equals('1.00')); t(n.equals('1.000')); t(n.equals('1.0000')); t(n.equals('1.00000')); t(n.equals('1.000000')); t(n.equals(new Decimal(1))); t(n.equals('0x1')); t(n.equals('0o1')); t(n.equals('0b1')); t(n.greaterThan(0.99999)); t(!n.greaterThanOrEqualTo(1.1)); t(n.lessThan(1.001)); t(n.lessThanOrEqualTo(2)); t(n.toString() === n.valueOf()); n = new Decimal('-0.1'); t(n.isFinite()); t(!n.isNaN()); t(n.isNeg()); t(!n.isZero()); t(!n.isInt()); t(!n.equals(0.1)); t(!n.greaterThan(-0.1)); t(n.greaterThanOrEqualTo(-1)); t(n.lessThan(-0.01)); t(!n.lessThanOrEqualTo(-1)); t(n.toString() === n.valueOf()); n = new Decimal(Infinity); t(!n.isFinite()); t(!n.isNaN()); t(!n.isNegative()); t(!n.isZero()); t(!n.isInteger()); t(n.eq('Infinity')); t(n.eq(1/0)); t(n.gt('9e999')); t(n.gte(Infinity)); t(!n.lt(Infinity)); t(n.lte(Infinity)); t(n.toString() === n.valueOf()); n = new Decimal('-Infinity'); t(!n.isFinite()); t(!n.isNaN()); t(n.isNeg()); t(!n.isZero()); t(!n.isInt()); t(!n.equals(Infinity)); t(n.equals(-1/0)); t(!n.greaterThan(-Infinity)); t(n.greaterThanOrEqualTo('-Infinity', 8)); t(n.lessThan(0)); t(n.lessThanOrEqualTo(Infinity)); t(n.toString() === n.valueOf()); n = new Decimal('0.0000000'); t(n.isFinite()); t(!n.isNaN()); t(!n.isNegative()); t(n.isZero()); t(n.isInteger()); t(n.eq(-0)); t(n.gt(-0.000001)); t(!n.gte(0.1)); t(n.lt(0.0001)); t(n.lte(-0)); t(n.toString() === n.valueOf()); n = new Decimal(-0); t(n.isFinite()); t(!n.isNaN()); t(n.isNeg()); t(n.isZero()); t(n.isInt()); t(n.equals('0.000')); t(n.greaterThan(-1)); t(!n.greaterThanOrEqualTo(0.1)); t(!n.lessThan(0)); t(!n.lessThan(0, 36)); t(n.lessThan(0.1)); t(n.lessThanOrEqualTo(0)); t(n.valueOf() === '-0' && n.toString() === '0'); n = new Decimal('NaN'); t(!n.isFinite()); t(n.isNaN()); t(!n.isNegative()); t(!n.isZero()); t(!n.isInteger()); t(!n.eq(NaN)); t(!n.eq(Infinity)); t(!n.gt(0)); t(!n.gte(0)); t(!n.lt(1)); t(!n.lte(-0)); t(!n.lte(-1)); t(n.toString() === n.valueOf()); n = new Decimal('-1.234e+2'); t(n.isFinite()); t(!n.isNaN()); t(n.isNeg()); t(!n.isZero()); t(!n.isInt()); t(n.eq(-123.4)); t(n.gt('-0xff')); t(n.gte('-1.234e+3')); t(n.lt(-123.39999)); t(n.lte('-123.4e+0')); t(n.toString() === n.valueOf()); n = new Decimal('5e-200'); t(n.isFinite()); t(!n.isNaN()); t(!n.isNegative()); t(!n.isZero()); t(!n.isInteger()); t(n.equals(5e-200)); t(n.greaterThan(5e-201)); t(!n.greaterThanOrEqualTo(1)); t(n.lessThan(6e-200)); t(n.lessThanOrEqualTo(5.1e-200)); t(n.toString() === n.valueOf()); n = new Decimal('1'); t(n.equals(n)); t(n.equals(n.toString())); t(n.equals(n.toString())); t(n.equals(n.valueOf())); t(n.equals(n.toFixed())); t(n.equals(1)); t(n.equals('1e+0')); t(!n.equals(-1)); t(!n.equals(0.1)); t(!new Decimal(NaN).equals(0)); t(!new Decimal(Infinity).equals(0)); t(!new Decimal(0.1).equals(0)); t(!new Decimal(1e9 + 1).equals(1e9)); t(!new Decimal(1e9 - 1).equals(1e9)); t(new Decimal(1e9 + 1).equals(1e9 + 1)); t(new Decimal(1).equals(1)); t(!new Decimal(1).equals(-1)); t(!new Decimal(NaN).equals(NaN)); t(!new Decimal('NaN').equals('NaN')); t(!new Decimal(NaN).greaterThan(NaN)); t(!new Decimal(NaN).lessThan(NaN)); t(new Decimal('0xa').lessThanOrEqualTo('0xff')); t(new Decimal('0xb').greaterThanOrEqualTo('0x9')); t(!new Decimal(10).greaterThan(10)); t(!new Decimal(10).lessThan(10)); t(!new Decimal(NaN).lessThan(NaN)); t(!new Decimal(Infinity).lessThan(-Infinity)); t(!new Decimal(Infinity).lessThan(Infinity)); t(new Decimal(Infinity).lessThanOrEqualTo(Infinity)); t(!new Decimal(NaN).greaterThanOrEqualTo(NaN)); t(new Decimal(Infinity).greaterThanOrEqualTo(Infinity)); t(new Decimal(Infinity).greaterThanOrEqualTo(-Infinity)); t(!new Decimal(NaN).greaterThanOrEqualTo(-Infinity)); t(new Decimal(-Infinity).greaterThanOrEqualTo(-Infinity)); t(!new Decimal(2).greaterThan(10)); t(!new Decimal(10).lessThan(2)); t(new Decimal(255).lessThanOrEqualTo('0xff')); t(new Decimal('0xa').greaterThanOrEqualTo('0x9')); t(!new Decimal(0).lessThanOrEqualTo('NaN')); t(!new Decimal(0).greaterThanOrEqualTo(NaN)); t(!new Decimal(NaN).lessThanOrEqualTo('NaN')); t(!new Decimal(NaN).greaterThanOrEqualTo(NaN)); t(!new Decimal(0).lessThanOrEqualTo(-Infinity)); t(new Decimal(0).greaterThanOrEqualTo(-Infinity)); t(new Decimal(0).lessThanOrEqualTo('Infinity')); t(!new Decimal(0).greaterThanOrEqualTo('Infinity')); t(new Decimal(10).lessThanOrEqualTo(20)); t(!new Decimal(10).greaterThanOrEqualTo(20)); t(!new Decimal(1.23001e-2).lessThan(1.23e-2)); t(new Decimal(1.23e-2).lt(1.23001e-2)); t(!new Decimal(1e-2).lessThan(9.999999e-3)); t(new Decimal(9.999999e-3).lt(1e-2)); t(!new Decimal(1.23001e+2).lessThan(1.23e+2)); t(new Decimal(1.23e+2).lt(1.23001e+2)); t(new Decimal(9.999999e+2).lessThan(1e+3)); t(!new Decimal(1e+3).lt(9.9999999e+2)); t(!new Decimal(1.23001e-2).lessThanOrEqualTo(1.23e-2)); t(new Decimal(1.23e-2).lte(1.23001e-2)); t(!new Decimal(1e-2).lessThanOrEqualTo(9.999999e-3)); t(new Decimal(9.999999e-3).lte(1e-2)); t(!new Decimal(1.23001e+2).lessThanOrEqualTo(1.23e+2)); t(new Decimal(1.23e+2).lte(1.23001e+2)); t(new Decimal(9.999999e+2).lessThanOrEqualTo(1e+3)); t(!new Decimal(1e+3).lte(9.9999999e+2)); t(new Decimal(1.23001e-2).greaterThan(1.23e-2)); t(!new Decimal(1.23e-2).gt(1.23001e-2)); t(new Decimal(1e-2).greaterThan(9.999999e-3)); t(!new Decimal(9.999999e-3).gt(1e-2)); t(new Decimal(1.23001e+2).greaterThan(1.23e+2)); t(!new Decimal(1.23e+2).gt(1.23001e+2)); t(!new Decimal(9.999999e+2).greaterThan(1e+3)); t(new Decimal(1e+3).gt(9.9999999e+2)); t(new Decimal(1.23001e-2).greaterThanOrEqualTo(1.23e-2)); t(!new Decimal(1.23e-2).gte(1.23001e-2)); t(new Decimal(1e-2).greaterThanOrEqualTo(9.999999e-3)); t(!new Decimal(9.999999e-3).gte(1e-2)); t(new Decimal(1.23001e+2).greaterThanOrEqualTo(1.23e+2)); t(!new Decimal(1.23e+2).gte(1.23001e+2)); t(!new Decimal(9.999999e+2).greaterThanOrEqualTo(1e+3)); t(new Decimal(1e+3).gte(9.9999999e+2)); t(!new Decimal('1.0000000000000000000001').isInteger()); t(!new Decimal('0.999999999999999999999').isInteger()); t(new Decimal('4e4').isInteger()); t(new Decimal('-4e4').isInteger()); // Decimal.isDecimal t(Decimal.isDecimal(new Decimal(1))); t(Decimal.isDecimal(new Decimal('-2.3'))); t(Decimal.isDecimal(new Decimal(NaN))); t(Decimal.isDecimal(new Decimal('Infinity'))); t(!Decimal.isDecimal()); t(!Decimal.isDecimal(0)); t(!Decimal.isDecimal(1)); t(!Decimal.isDecimal('-2.3')); t(!Decimal.isDecimal(NaN)); t(!Decimal.isDecimal(Infinity)); t(!Decimal.isDecimal(undefined)); t(!Decimal.isDecimal({})); t(!Decimal.isDecimal({isDecimal: true})); t(!Decimal.isDecimal(new Number(4))); });