You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
312 lines
11 KiB
312 lines
11 KiB
if (typeof Test === 'undefined') require('../tester');
|
|
|
|
Test('`is` methods', function () {
|
|
var n;
|
|
|
|
// isEqualTo eq
|
|
// isFinite
|
|
// isGreaterThan gt
|
|
// isGreaterThanOrEqualTo gte
|
|
// isInteger
|
|
// isLessThan lt
|
|
// isLessThanOrEqualTo lte
|
|
// isNaN
|
|
// isNegative
|
|
// isPositive
|
|
// isZero
|
|
// valueOf
|
|
|
|
function t(expected, value) {
|
|
Test.areEqual(expected, value);
|
|
}
|
|
|
|
t(BigNumber.prototype.isEqualTo, BigNumber.prototype.eq);
|
|
t(BigNumber.prototype.isGreaterThan, BigNumber.prototype.gt);
|
|
t(BigNumber.prototype.isGreaterThanOrEqualTo, BigNumber.prototype.gte);
|
|
t(BigNumber.prototype.isLessThan,BigNumber.prototype.lt);
|
|
t(BigNumber.prototype.isLessThanOrEqualTo, BigNumber.prototype.lte);
|
|
|
|
BigNumber.config({
|
|
DECIMAL_PLACES: 20,
|
|
ROUNDING_MODE: 4,
|
|
EXPONENTIAL_AT: 1e+9,
|
|
RANGE: 1e+9
|
|
});
|
|
|
|
n = new BigNumber(1);
|
|
t(true, n.isFinite());
|
|
t(true, n.isInteger());
|
|
t(false, n.isNaN());
|
|
t(false, n.isNegative());
|
|
t(true, n.isPositive());
|
|
t(false, n.isZero());
|
|
t(true, n.isEqualTo(n));
|
|
t(true, n.isEqualTo(n, 2));
|
|
t(true, n.isEqualTo(1, 3));
|
|
t(true, n.isEqualTo(n, 4));
|
|
t(true, n.isEqualTo(1, 5));
|
|
t(true, n.isEqualTo(n, 6));
|
|
t(true, n.isEqualTo(1, 7));
|
|
t(true, n.isEqualTo(n, 8));
|
|
t(true, n.isEqualTo(1, 9));
|
|
t(true, n.isEqualTo(n, 10));
|
|
t(true, n.isEqualTo(n, 11));
|
|
t(true, n.isEqualTo(1, 12));
|
|
t(true, n.isEqualTo(n, 13));
|
|
t(true, n.isEqualTo(1, 14));
|
|
t(true, n.isEqualTo(n, 15));
|
|
t(true, n.isEqualTo(1, 16));
|
|
t(true, n.isEqualTo(n, 17));
|
|
t(true, n.isEqualTo(1, 18));
|
|
t(true, n.isEqualTo(n, 19));
|
|
t(true, n.isEqualTo('1.0', 20));
|
|
t(true, n.isEqualTo('1.00', 21));
|
|
t(true, n.isEqualTo('1.000', 22));
|
|
t(true, n.isEqualTo('1.0000', 23));
|
|
t(true, n.isEqualTo('1.00000', 24));
|
|
t(true, n.isEqualTo('1.000000', 25));
|
|
t(true, n.isEqualTo(new BigNumber(1, 10), 26));
|
|
t(true, n.isEqualTo(new BigNumber(1), 27));
|
|
t(true, n.isEqualTo(1, 28));
|
|
t(true, n.isEqualTo(1, 29));
|
|
t(true, n.isEqualTo(1, 30));
|
|
t(true, n.isEqualTo(1, 31));
|
|
t(true, n.isEqualTo(1, 32));
|
|
t(true, n.isEqualTo(1, 33));
|
|
t(true, n.isEqualTo(1, 34));
|
|
t(true, n.isEqualTo(1, 35));
|
|
t(true, n.isEqualTo(1, 36));
|
|
t(true, n.isGreaterThan(0.99999));
|
|
t(false, n.isGreaterThanOrEqualTo(1.1));
|
|
t(true, n.isLessThan(1.001));
|
|
t(true, n.isLessThanOrEqualTo(2));
|
|
t(true, n.toString() === n.valueOf());
|
|
|
|
n = new BigNumber('-0.1');
|
|
t(true, n.isFinite());
|
|
t(false, n.isInteger());
|
|
t(false, n.isNaN());
|
|
t(true, n.isNegative());
|
|
t(false, n.isPositive());
|
|
t(false, n.isZero());
|
|
t(false, n.isEqualTo(0.1));
|
|
t(false, n.isGreaterThan(-0.1));
|
|
t(true, n.isGreaterThanOrEqualTo(-1));
|
|
t(true, n.isLessThan(-0.01));
|
|
t(false, n.isLessThanOrEqualTo(-1));
|
|
t(true, n.toString() === n.valueOf());
|
|
|
|
n = new BigNumber(Infinity);
|
|
t(false, n.isFinite());
|
|
t(false, n.isInteger());
|
|
t(false, n.isNaN());
|
|
t(false, n.isNegative());
|
|
t(true, n.isPositive());
|
|
t(false, n.isZero());
|
|
t(true, n.eq('Infinity'));
|
|
t(true, n.eq(1/0));
|
|
t(true, n.gt('9e999'));
|
|
t(true, n.gte(Infinity));
|
|
t(false, n.lt(Infinity));
|
|
t(true, n.lte(Infinity));
|
|
t(true, n.toString() === n.valueOf());
|
|
|
|
n = new BigNumber('-Infinity');
|
|
t(false, n.isFinite());
|
|
t(false, n.isInteger());
|
|
t(false, n.isNaN());
|
|
t(true, n.isNegative());
|
|
t(false, n.isPositive());
|
|
t(false, n.isZero());
|
|
t(false, n.isEqualTo(Infinity));
|
|
t(true, n.isEqualTo(-1/0));
|
|
t(false, n.isGreaterThan(-Infinity));
|
|
t(true, n.isGreaterThanOrEqualTo('-Infinity', 8));
|
|
t(true, n.isLessThan(0));
|
|
t(true, n.isLessThanOrEqualTo(Infinity));
|
|
t(true, n.toString() === n.valueOf());
|
|
|
|
n = new BigNumber('0.0000000');
|
|
t(true, n.isFinite());
|
|
t(true, n.isInteger());
|
|
t(false, n.isNaN());
|
|
t(false, n.isNegative());
|
|
t(true, n.isPositive());
|
|
t(true, n.isZero());
|
|
t(true, n.eq(-0));
|
|
t(true, n.gt(-0.000001));
|
|
t(false, n.gte(0.1));
|
|
t(true, n.lt(0.0001));
|
|
t(true, n.lte(-0));
|
|
t(true, n.toString() === n.valueOf());
|
|
|
|
n = new BigNumber(-0);
|
|
t(true, n.isFinite());
|
|
t(true, n.isInteger());
|
|
t(false, n.isNaN());
|
|
t(true, n.isNegative());
|
|
t(false, n.isPositive());
|
|
t(true, n.isZero());
|
|
t(true, n.isEqualTo('0.000'));
|
|
t(true, n.isGreaterThan(-1));
|
|
t(false, n.isGreaterThanOrEqualTo(0.1));
|
|
t(false, n.isLessThan(0));
|
|
t(false, n.isLessThan(0, 36));
|
|
t(true, n.isLessThan(0.1));
|
|
t(true, n.isLessThanOrEqualTo(0));
|
|
t(true, n.valueOf() === '-0');
|
|
t(true, n.toJSON() === '-0');
|
|
t(true, n.toString() === '0');
|
|
|
|
n = new BigNumber('NaN');
|
|
t(false, n.isFinite());
|
|
t(false, n.isInteger());
|
|
t(true, n.isNaN());
|
|
t(false, n.isNegative());
|
|
t(false, n.isPositive());
|
|
t(false, n.isZero());
|
|
t(false, n.eq(NaN));
|
|
t(false, n.eq(Infinity));
|
|
t(false, n.gt(0));
|
|
t(false, n.gte(0));
|
|
t(false, n.lt(1));
|
|
t(false, n.lte(-0));
|
|
t(false, n.lte(-1));
|
|
t(true, n.toString() === n.valueOf());
|
|
|
|
n = new BigNumber('-1.234e+2');
|
|
t(true, n.isFinite());
|
|
t(false, n.isInteger());
|
|
t(false, n.isNaN());
|
|
t(true, n.isNegative());
|
|
t(false, n.isPositive());
|
|
t(false, n.isZero());
|
|
t(true, n.eq(-123.4, 10));
|
|
t(true, n.gt('-ff', 16));
|
|
t(true, n.gte('-1.234e+3'));
|
|
t(true, n.lt(-123.39999));
|
|
t(true, n.lte('-123.4e+0'));
|
|
t(true, n.toString() === n.valueOf());
|
|
|
|
n = new BigNumber('5e-200');
|
|
t(true, n.isFinite());
|
|
t(false, n.isInteger());
|
|
t(false, n.isNaN());
|
|
t(false, n.isNegative());
|
|
t(true, n.isPositive());
|
|
t(false, n.isZero());
|
|
t(true, n.isEqualTo(5e-200));
|
|
t(true, n.isGreaterThan(5e-201));
|
|
t(false, n.isGreaterThanOrEqualTo(1));
|
|
t(true, n.isLessThan(6e-200));
|
|
t(true, n.isLessThanOrEqualTo(5.1e-200));
|
|
t(true, n.toString() === n.valueOf());
|
|
|
|
n = new BigNumber('1');
|
|
t(true, n.isEqualTo(n));
|
|
t(true, n.isEqualTo(n.toString()));
|
|
t(true, n.isEqualTo(n.toString()));
|
|
t(true, n.isEqualTo(n.valueOf()));
|
|
t(true, n.isEqualTo(n.toFixed()));
|
|
t(true, n.isEqualTo(1));
|
|
t(true, n.isEqualTo('1e+0'));
|
|
t(false, n.isEqualTo(-1));
|
|
t(false, n.isEqualTo(0.1));
|
|
|
|
t(true, new BigNumber(10).isGreaterThan(10, 2));
|
|
t(true, new BigNumber(10).isGreaterThan(10, 3));
|
|
t(true, new BigNumber(10).isGreaterThan(10, 4));
|
|
t(true, new BigNumber(10).isGreaterThan(10, 5));
|
|
t(true, new BigNumber(10).isGreaterThan(10, 6));
|
|
t(true, new BigNumber(10).isGreaterThan(10, 7));
|
|
t(true, new BigNumber(10).isGreaterThan(10, 8));
|
|
t(true, new BigNumber(10).isGreaterThan(10, 9));
|
|
t(false, new BigNumber(10).isGreaterThan(10, 10));
|
|
t(false, new BigNumber(10).isGreaterThan(10, 11));
|
|
t(false, new BigNumber(10).isGreaterThan(10, 12));
|
|
t(false, new BigNumber(10).isGreaterThan(10, 13));
|
|
t(true, new BigNumber(10).isLessThan(10, 11));
|
|
t(true, new BigNumber(10).isLessThan(10, 12));
|
|
t(true, new BigNumber(10).isLessThan(10, 13));
|
|
t(true, new BigNumber(10).isLessThan(10, 14));
|
|
t(true, new BigNumber(10).isLessThan(10, 15));
|
|
t(true, new BigNumber(10).isLessThan(10, 16));
|
|
t(true, new BigNumber(10).isLessThan(10, 17));
|
|
t(true, new BigNumber(10).isLessThan(10, 18));
|
|
t(true, new BigNumber(10).isLessThan(10, 19));
|
|
t(true, new BigNumber(10).isLessThan(10, 20));
|
|
t(true, new BigNumber(10).isLessThan(10, 21));
|
|
t(true, new BigNumber(10).isLessThan(10, 22));
|
|
t(true, new BigNumber(10).isLessThan(10, 34));
|
|
t(true, new BigNumber(10).isLessThan(10, 35));
|
|
t(true, new BigNumber(10).isLessThan(10, 36));
|
|
t(false, new BigNumber(NaN).isLessThan(NaN));
|
|
t(false, new BigNumber(Infinity).isLessThan(-Infinity));
|
|
t(false, new BigNumber(Infinity).isLessThan(Infinity));
|
|
t(true, new BigNumber(Infinity, 10).isLessThanOrEqualTo(Infinity, 2));
|
|
t(false, new BigNumber(NaN).isGreaterThanOrEqualTo(NaN));
|
|
t(true, new BigNumber(Infinity).isGreaterThanOrEqualTo(Infinity));
|
|
t(true, new BigNumber(Infinity).isGreaterThanOrEqualTo(-Infinity));
|
|
t(false, new BigNumber(NaN).isGreaterThanOrEqualTo(-Infinity));
|
|
t(true, new BigNumber(-Infinity).isGreaterThanOrEqualTo(-Infinity));
|
|
|
|
t(false, new BigNumber(2, 10).isGreaterThan(10, 2));
|
|
t(false, new BigNumber(10, 2).isLessThan(2, 10));
|
|
t(true, new BigNumber(255).isLessThanOrEqualTo('ff', 16));
|
|
t(true, new BigNumber('a', 16).isGreaterThanOrEqualTo(9, 16));
|
|
t(false, new BigNumber(0).isLessThanOrEqualTo('NaN'));
|
|
t(false, new BigNumber(0).isGreaterThanOrEqualTo(NaN));
|
|
t(false, new BigNumber(NaN, 2).isLessThanOrEqualTo('NaN', 36));
|
|
t(false, new BigNumber(NaN, 36).isGreaterThanOrEqualTo(NaN, 2));
|
|
t(false, new BigNumber(0).isLessThanOrEqualTo(-Infinity));
|
|
t(true, new BigNumber(0).isGreaterThanOrEqualTo(-Infinity));
|
|
t(true, new BigNumber(0).isLessThanOrEqualTo('Infinity', 36));
|
|
t(false, new BigNumber(0).isGreaterThanOrEqualTo('Infinity', 36));
|
|
t(false, new BigNumber(10).isLessThanOrEqualTo(20, 4));
|
|
t(true, new BigNumber(10).isLessThanOrEqualTo(20, 5));
|
|
t(false, new BigNumber(10).isGreaterThanOrEqualTo(20, 6));
|
|
|
|
t(false, new BigNumber(1.23001e-2).isLessThan(1.23e-2));
|
|
t(true, new BigNumber(1.23e-2).lt(1.23001e-2));
|
|
t(false, new BigNumber(1e-2).isLessThan(9.999999e-3));
|
|
t(true, new BigNumber(9.999999e-3).lt(1e-2));
|
|
|
|
t(false, new BigNumber(1.23001e+2).isLessThan(1.23e+2));
|
|
t(true, new BigNumber(1.23e+2).lt(1.23001e+2));
|
|
t(true, new BigNumber(9.999999e+2).isLessThan(1e+3));
|
|
t(false, new BigNumber(1e+3).lt(9.9999999e+2));
|
|
|
|
t(false, new BigNumber(1.23001e-2).isLessThanOrEqualTo(1.23e-2));
|
|
t(true, new BigNumber(1.23e-2).lte(1.23001e-2));
|
|
t(false, new BigNumber(1e-2).isLessThanOrEqualTo(9.999999e-3));
|
|
t(true, new BigNumber(9.999999e-3).lte(1e-2));
|
|
|
|
t(false, new BigNumber(1.23001e+2).isLessThanOrEqualTo(1.23e+2));
|
|
t(true, new BigNumber(1.23e+2).lte(1.23001e+2));
|
|
t(true, new BigNumber(9.999999e+2).isLessThanOrEqualTo(1e+3));
|
|
t(false, new BigNumber(1e+3).lte(9.9999999e+2));
|
|
|
|
t(true, new BigNumber(1.23001e-2).isGreaterThan(1.23e-2));
|
|
t(false, new BigNumber(1.23e-2).gt(1.23001e-2));
|
|
t(true, new BigNumber(1e-2).isGreaterThan(9.999999e-3));
|
|
t(false, new BigNumber(9.999999e-3).gt(1e-2));
|
|
|
|
t(true, new BigNumber(1.23001e+2).isGreaterThan(1.23e+2));
|
|
t(false, new BigNumber(1.23e+2).gt(1.23001e+2));
|
|
t(false, new BigNumber(9.999999e+2).isGreaterThan(1e+3));
|
|
t(true, new BigNumber(1e+3).gt(9.9999999e+2));
|
|
|
|
t(true, new BigNumber(1.23001e-2).isGreaterThanOrEqualTo(1.23e-2));
|
|
t(false, new BigNumber(1.23e-2).gte(1.23001e-2));
|
|
t(true, new BigNumber(1e-2).isGreaterThanOrEqualTo(9.999999e-3));
|
|
t(false, new BigNumber(9.999999e-3).gte(1e-2));
|
|
|
|
t(true, new BigNumber(1.23001e+2).isGreaterThanOrEqualTo(1.23e+2));
|
|
t(false, new BigNumber(1.23e+2).gte(1.23001e+2));
|
|
t(false, new BigNumber(9.999999e+2).isGreaterThanOrEqualTo(1e+3));
|
|
t(true, new BigNumber(1e+3).gte(9.9999999e+2));
|
|
|
|
Test.isException(function () {new BigNumber(1).lt(true, null)}, "new BigNumber(1).lt(true, null)");
|
|
Test.isException(function () {new BigNumber(1).gt('one')}, "new BigNumber(1).gt('one')");
|
|
});
|