bignumber.js/test/config.js

639 lines
32 KiB
JavaScript

var count = (function config(BigNumber) {
var start = +new Date(),
log,
error,
obj,
undefined,
passed = 0,
total = 0,
MAX = 1e9;
if (typeof window === 'undefined') {
log = console.log;
error = console.error;
} else {
log = function (str) { document.body.innerHTML += str.replace('\n', '<br>') };
error = function (str) { document.body.innerHTML += '<div style="color: red">' +
str.replace('\n', '<br>') + '</div>' };
}
if (!BigNumber && typeof require === 'function') BigNumber = require('../bignumber');
function assert(expected, actual) {
total++;
if (expected !== actual) {
error('\n Test number: ' + total + ' failed');
error(' Expected: ' + expected);
error(' Actual: ' + actual);
//process.exit();
}
else {
passed++;
//log('\n Expected and actual: ' + actual);
}
}
function assertException(func, message) {
var actual;
total++;
try {
func();
} catch (e) {
actual = e;
}
if (actual && actual.name == 'BigNumber Error') {
passed++;
//log('\n Expected and actual: ' + actual);
} else {
error('\n Test number: ' + total + ' failed');
error('\n Expected: ' + message + ' to raise a BigNumber Error.');
error(' Actual: ' + (actual || 'no exception'));
//process.exit();
}
}
log('\n Testing config...');
obj = BigNumber.config({
DECIMAL_PLACES: 100,
ROUNDING_MODE: 0,
EXPONENTIAL_AT: 50,
RANGE: 500,
ERRORS: false
});
assert(true, obj.DECIMAL_PLACES === 100 &&
obj.ROUNDING_MODE === 0 &&
obj.EXPONENTIAL_AT[0] === -50 &&
obj.EXPONENTIAL_AT[1] === 50 &&
obj.RANGE[0] === -500 &&
obj.RANGE[1] === 500 &&
obj.ERRORS === false
);
obj = BigNumber.config( 99, 8, 32, 333, 1 );
assert(true, obj.DECIMAL_PLACES === 99 &&
obj.ROUNDING_MODE === 8 &&
obj.EXPONENTIAL_AT[0] === -32 &&
obj.EXPONENTIAL_AT[1] === 32 &&
obj.RANGE[0] === -333 &&
obj.RANGE[1] === 333 &&
obj.ERRORS === true
);
obj = BigNumber.config({
DECIMAL_PLACES: 40,
ROUNDING_MODE: 4,
EXPONENTIAL_AT: 1E9,
RANGE: 1E9,
ERRORS: true
});
obj = BigNumber.config( null, null, null, null, null );
obj = BigNumber.config( undefined, undefined, undefined, undefined, undefined );
assert(true, typeof obj === 'object');
assert(true, obj.DECIMAL_PLACES === 40);
assert(true, obj.ROUNDING_MODE === 4);
assert(true, typeof obj.EXPONENTIAL_AT === 'object');
assert(true, obj.EXPONENTIAL_AT.length === 2);
assert(true, obj.EXPONENTIAL_AT[0] === -1e9);
assert(true, obj.EXPONENTIAL_AT[1] === 1e9);
assert(true, typeof obj.RANGE === 'object');
assert(true, obj.RANGE.length === 2);
assert(true, obj.RANGE[0] === -1e9);
assert(true, obj.RANGE[1] === 1e9);
assert(true, obj.ERRORS === true);
obj = BigNumber.config({EXPONENTIAL_AT: [-7, 21], RANGE: [-324, 308]});
// DECIMAL_PLACES
assert(0, BigNumber.config(0).DECIMAL_PLACES);
assert(1, BigNumber.config(1).DECIMAL_PLACES);
assert(20, BigNumber.config(20).DECIMAL_PLACES);
assert(300000, BigNumber.config(300000).DECIMAL_PLACES);
assert(4e+8, BigNumber.config(4e8).DECIMAL_PLACES);
assert(123456789, BigNumber.config('123456789').DECIMAL_PLACES);
assert(MAX, BigNumber.config(MAX).DECIMAL_PLACES);
assert(0, BigNumber.config({DECIMAL_PLACES: 0}).DECIMAL_PLACES);
assert(1, BigNumber.config({DECIMAL_PLACES: 1}).DECIMAL_PLACES);
assert(20, BigNumber.config({DECIMAL_PLACES: 20}).DECIMAL_PLACES);
assert(300000, BigNumber.config({DECIMAL_PLACES: 300000}).DECIMAL_PLACES);
assert(4e+8, BigNumber.config({DECIMAL_PLACES: 4e8}).DECIMAL_PLACES);
assert(123456789, BigNumber.config({DECIMAL_PLACES: '123456789'}).DECIMAL_PLACES);
assert(2000, BigNumber.config({DECIMAL_PLACES: '2e+3'}).DECIMAL_PLACES);
assert(MAX, BigNumber.config({DECIMAL_PLACES: MAX}).DECIMAL_PLACES);
assert(MAX, BigNumber.config(null).DECIMAL_PLACES);
assert(MAX, BigNumber.config(undefined).DECIMAL_PLACES);
assert(MAX, BigNumber.config({DECIMAL_PLACES: null}).DECIMAL_PLACES);
assert(MAX, BigNumber.config({DECIMAL_PLACES: undefined}).DECIMAL_PLACES);
assertException(function () {BigNumber.config({DECIMAL_PLACES: -1})}, "DECIMAL_PLACES: -1");
assertException(function () {BigNumber.config({DECIMAL_PLACES: 0.1})}, "DECIMAL_PLACES: 0.1");
assertException(function () {BigNumber.config({DECIMAL_PLACES: 1.1})}, "DECIMAL_PLACES: 1.1");
assertException(function () {BigNumber.config({DECIMAL_PLACES: -1.1})}, "DECIMAL_PLACES: -1.1");
assertException(function () {BigNumber.config({DECIMAL_PLACES: 8.1})}, "DECIMAL_PLACES: 8.1");
assertException(function () {BigNumber.config({DECIMAL_PLACES: MAX + 1})}, "DECIMAL_PLACES: MAX + 1");
assertException(function () {BigNumber.config({DECIMAL_PLACES: []})}, "DECIMAL_PLACES: []");
assertException(function () {BigNumber.config({DECIMAL_PLACES: {}})}, "DECIMAL_PLACES: {}");
assertException(function () {BigNumber.config({DECIMAL_PLACES: ''})}, "DECIMAL_PLACES: ''");
assertException(function () {BigNumber.config({DECIMAL_PLACES: ' '})}, "DECIMAL_PLACES: ' '");
assertException(function () {BigNumber.config({DECIMAL_PLACES: 'hi'})}, "DECIMAL_PLACES: 'hi'");
assertException(function () {BigNumber.config({DECIMAL_PLACES: '1e+999'})}, "DECIMAL_PLACES: '1e+999'");
assertException(function () {BigNumber.config({DECIMAL_PLACES: NaN})}, "DECIMAL_PLACES: NaN");
assertException(function () {BigNumber.config({DECIMAL_PLACES: Infinity})}, "DECIMAL_PLACES: Infinity");
BigNumber.config({ ERRORS: false });
assert(1e9, BigNumber.config(-1).DECIMAL_PLACES);
assert(0, BigNumber.config(0.1).DECIMAL_PLACES);
assert(1, BigNumber.config(1.99).DECIMAL_PLACES);
assert(1, BigNumber.config(-1.1).DECIMAL_PLACES);
assert(8, BigNumber.config(8.7654321).DECIMAL_PLACES);
assert(8, BigNumber.config(MAX + 1).DECIMAL_PLACES);
assert(8, BigNumber.config([]).DECIMAL_PLACES);
assert(8, BigNumber.config({}).DECIMAL_PLACES);
assert(8, BigNumber.config('').DECIMAL_PLACES);
assert(8, BigNumber.config(' ').DECIMAL_PLACES);
assert(8, BigNumber.config('hi').DECIMAL_PLACES);
assert(MAX, BigNumber.config(MAX.toExponential()).DECIMAL_PLACES);
assert(MAX, BigNumber.config(NaN).DECIMAL_PLACES);
assert(MAX, BigNumber.config(Infinity).DECIMAL_PLACES);
assert(MAX, BigNumber.config(new Date).DECIMAL_PLACES);
assert(MAX, BigNumber.config(null).DECIMAL_PLACES);
assert(MAX, BigNumber.config(undefined).DECIMAL_PLACES);
BigNumber.config({ ERRORS: 1 });
// ROUNDING_MODE
assert(0, BigNumber.config(null, 0).ROUNDING_MODE);
assert(1, BigNumber.config(null, 1).ROUNDING_MODE);
assert(2, BigNumber.config(null, 2).ROUNDING_MODE);
assert(3, BigNumber.config(null, 3).ROUNDING_MODE);
assert(4, BigNumber.config(null, 4).ROUNDING_MODE);
assert(5, BigNumber.config(null, 5).ROUNDING_MODE);
assert(6, BigNumber.config(null, 6).ROUNDING_MODE);
assert(7, BigNumber.config(null, 7).ROUNDING_MODE);
assert(8, BigNumber.config(null, 8).ROUNDING_MODE);
assert(0, BigNumber.config({ROUNDING_MODE: 0}).ROUNDING_MODE);
assert(1, BigNumber.config({ROUNDING_MODE: 1}).ROUNDING_MODE);
assert(2, BigNumber.config({ROUNDING_MODE: 2}).ROUNDING_MODE);
assert(3, BigNumber.config({ROUNDING_MODE: 3}).ROUNDING_MODE);
assert(4, BigNumber.config({ROUNDING_MODE: 4}).ROUNDING_MODE);
assert(5, BigNumber.config({ROUNDING_MODE: 5}).ROUNDING_MODE);
assert(6, BigNumber.config({ROUNDING_MODE: 6}).ROUNDING_MODE);
assert(7, BigNumber.config({ROUNDING_MODE: 7}).ROUNDING_MODE);
assert(8, BigNumber.config({ROUNDING_MODE: 8}).ROUNDING_MODE);
assert(8, BigNumber.config(null, null).ROUNDING_MODE);
assert(8, BigNumber.config(null, undefined).ROUNDING_MODE);
assert(8, BigNumber.config({ROUNDING_MODE: null}).ROUNDING_MODE);
assert(8, BigNumber.config({ROUNDING_MODE: undefined}).ROUNDING_MODE);
assertException(function () {BigNumber.config({ROUNDING_MODE: -1})}, "ROUNDING_MODE: -1");
assertException(function () {BigNumber.config({ROUNDING_MODE: 0.1})}, "ROUNDING_MODE: 0.1");
assertException(function () {BigNumber.config({ROUNDING_MODE: 1.1})}, "ROUNDING_MODE: 1.1");
assertException(function () {BigNumber.config({ROUNDING_MODE: -1.1})}, "ROUNDING_MODE: -1.1");
assertException(function () {BigNumber.config({ROUNDING_MODE: 8.1})}, "ROUNDING_MODE: 8.1");
assertException(function () {BigNumber.config({ROUNDING_MODE: 9})}, "ROUNDING_MODE: 9");
assertException(function () {BigNumber.config({ROUNDING_MODE: 11})}, "ROUNDING_MODE: 11");
assertException(function () {BigNumber.config({ROUNDING_MODE: []})}, "ROUNDING_MODE: []");
assertException(function () {BigNumber.config({ROUNDING_MODE: {}})}, "ROUNDING_MODE: {}");
assertException(function () {BigNumber.config({ROUNDING_MODE: ''})}, "ROUNDING_MODE: ''");
assertException(function () {BigNumber.config({ROUNDING_MODE: ' '})}, "ROUNDING_MODE: ' '");
assertException(function () {BigNumber.config({ROUNDING_MODE: 'hi'})}, "ROUNDING_MODE: 'hi'");
assertException(function () {BigNumber.config({ROUNDING_MODE: NaN})}, "ROUNDING_MODE: NaN");
assertException(function () {BigNumber.config({ROUNDING_MODE: Infinity})}, "ROUNDING_MODE: Infinity");
BigNumber.config({ ERRORS: 0 });
assert(8, BigNumber.config(0, -1).ROUNDING_MODE);
assert(0, BigNumber.config(0, 0.1).ROUNDING_MODE);
assert(1, BigNumber.config(0, 1.99).ROUNDING_MODE);
assert(1, BigNumber.config(0, -1.1).ROUNDING_MODE);
assert(8, BigNumber.config(0, 8.01).ROUNDING_MODE);
assert(7, BigNumber.config(0, 7.99).ROUNDING_MODE);
assert(7, BigNumber.config(0, MAX + 1).ROUNDING_MODE);
assert(7, BigNumber.config(0, []).ROUNDING_MODE);
assert(7, BigNumber.config(0, {}).ROUNDING_MODE);
assert(7, BigNumber.config(0, '').ROUNDING_MODE);
assert(7, BigNumber.config(0, ' ').ROUNDING_MODE);
assert(7, BigNumber.config(0, 'hi').ROUNDING_MODE);
assert(1, BigNumber.config(0, '1e+0').ROUNDING_MODE);
assert(1, BigNumber.config(0, NaN).ROUNDING_MODE);
assert(1, BigNumber.config(0, Infinity).ROUNDING_MODE);
assert(1, BigNumber.config(0, new Date).ROUNDING_MODE);
assert(1, BigNumber.config(0, null).ROUNDING_MODE);
assert(1, BigNumber.config(0, undefined).ROUNDING_MODE);
BigNumber.config({ ERRORS: true });
// EXPONENTIAL_AT
assert(true, obj.EXPONENTIAL_AT[0] === -7);
assert(true, obj.EXPONENTIAL_AT[1] === 21);
assertException(function () {BigNumber.config({EXPONENTIAL_AT: [0.1, 1]})}, "EXPONENTIAL_AT: [0.1, 1]");
assertException(function () {BigNumber.config({EXPONENTIAL_AT: [-1, -0.1]})}, "EXPONENTIAL_AT: [-1, -0.1]");
assertException(function () {BigNumber.config({EXPONENTIAL_AT: [1, 1]})}, "EXPONENTIAL_AT: [1, 1]");
assertException(function () {BigNumber.config({EXPONENTIAL_AT: [-1, -1]})}, "EXPONENTIAL_AT: [-1, -1]");
assertException(function () {BigNumber.config({EXPONENTIAL_AT: MAX + 1})}, "EXPONENTIAL_AT: MAX + 1");
assertException(function () {BigNumber.config({EXPONENTIAL_AT: -MAX - 1})}, "EXPONENTIAL_AT: -MAX - 1");
assertException(function () {BigNumber.config({EXPONENTIAL_AT: [-MAX - 1, MAX]})}, "EXPONENTIAL_AT: [-MAX - 1, MAX]");
assertException(function () {BigNumber.config({EXPONENTIAL_AT: [-MAX, MAX + 1]})}, "EXPONENTIAL_AT: [-MAX, MAX + 1]");
assertException(function () {BigNumber.config({EXPONENTIAL_AT: [MAX + 1, -MAX - 1]})}, "EXPONENTIAL_AT: [MAX + 1, -MAX - 1]");
assertException(function () {BigNumber.config({EXPONENTIAL_AT: [-Infinity, Infinity]})}, "EXPONENTIAL_AT: [Infinity, -Infinity]");
assertException(function () {BigNumber.config({EXPONENTIAL_AT: [Infinity, -Infinity]})}, "EXPONENTIAL_AT: [Infinity, -Infinity]");
obj = BigNumber.config();
assert(true, obj.EXPONENTIAL_AT[0] === -7);
assert(true, obj.EXPONENTIAL_AT[1] === 21);
assert(1, BigNumber.config({EXPONENTIAL_AT: 1}).EXPONENTIAL_AT[1]);
assert(-1, BigNumber.config({EXPONENTIAL_AT: 1}).EXPONENTIAL_AT[0]);
obj = BigNumber.config({EXPONENTIAL_AT: 0});
assert(true, obj.EXPONENTIAL_AT[0] === 0 && obj.EXPONENTIAL_AT[1] === 0);
obj = BigNumber.config({EXPONENTIAL_AT: -1});
assert(true, obj.EXPONENTIAL_AT[0] === -1 && obj.EXPONENTIAL_AT[1] === 1);
BigNumber.config({ ERRORS: false });
assert(1, BigNumber.config(0, 0, -1).EXPONENTIAL_AT[1]);
assert(0, BigNumber.config(0, 0, 0.1).EXPONENTIAL_AT[0]);
assert(1, BigNumber.config(0, 0, 1.99).EXPONENTIAL_AT[1]);
assert(-2, BigNumber.config(0, 0, -2.1).EXPONENTIAL_AT[0]);
assert(8, BigNumber.config(0, 0, 8.01).EXPONENTIAL_AT[1]);
assert(-7, BigNumber.config(0, 0, -7.99).EXPONENTIAL_AT[0]);
assert(7, BigNumber.config(0, 0, MAX + 1).EXPONENTIAL_AT[1]);
assert(7, BigNumber.config(0, 0, -MAX - 1).EXPONENTIAL_AT[1]);
assert(-7, BigNumber.config(0, 0, []).EXPONENTIAL_AT[0]);
assert(7, BigNumber.config(0, 0, {}).EXPONENTIAL_AT[1]);
assert(-7, BigNumber.config(0, 0, '').EXPONENTIAL_AT[0]);
assert(7, BigNumber.config(0, 0, ' ').EXPONENTIAL_AT[1]);
assert(-7, BigNumber.config(0, 0, 'hi').EXPONENTIAL_AT[0]);
assert(13000, BigNumber.config(0, 0, '1.3e+4').EXPONENTIAL_AT[1]);
assert(-13000, BigNumber.config(0, 0, NaN).EXPONENTIAL_AT[0]);
assert(13000, BigNumber.config(0, 0, Infinity).EXPONENTIAL_AT[1]);
assert(-13000, BigNumber.config(0, 0, new Date).EXPONENTIAL_AT[0]);
assert(13000, BigNumber.config(0, 0, null).EXPONENTIAL_AT[1]);
assert(-13000, BigNumber.config(0, 0, undefined).EXPONENTIAL_AT[0]);
assert(-98765, BigNumber.config(0, 0, 98765.4321).EXPONENTIAL_AT[0]);
assert(98765, BigNumber.config(0, 0, -98765.4321).EXPONENTIAL_AT[1]);
assert(1, BigNumber.config(0, 0, [-98765.4321, 1]).EXPONENTIAL_AT[1]);
assert(-1, BigNumber.config(0, 0, [-1, 98765.4321]).EXPONENTIAL_AT[0]);
assert(98765, BigNumber.config(0, 0, [-1, 98765.4321]).EXPONENTIAL_AT[1]);
assert(98765, BigNumber.config(0, 0, [-1, null]).EXPONENTIAL_AT[1]);
assert(98765, BigNumber.config(0, 0, [null, 98765.4321]).EXPONENTIAL_AT[1]);
assert(-1, BigNumber.config(0, 0, [null, 98765.4321]).EXPONENTIAL_AT[0]);
BigNumber.config({ ERRORS: true });
// RANGE
assert(true, obj.RANGE[0] === -324);
assert(true, obj.RANGE[1] === 308);
assertException(function () {BigNumber.config({RANGE: [-0.9, 1]})}, "RANGE: [-0.9, 1]");
assertException(function () {BigNumber.config({RANGE: [-1, 0.9]})}, "RANGE: [-1, 0.9]");
assertException(function () {BigNumber.config({RANGE: [0, 1]})}, "RANGE: [0, 1]");
assertException(function () {BigNumber.config({RANGE: [-1, 0]})}, "RANGE: [-1, 0]");
assertException(function () {BigNumber.config({RANGE: 0})}, "RANGE: 0");
assertException(function () {BigNumber.config({RANGE: MAX + 1})}, "RANGE: MAX + 1");
assertException(function () {BigNumber.config({RANGE: -MAX - 1})}, "RANGE: -MAX - 1");
assertException(function () {BigNumber.config({RANGE: [-MAX - 1, MAX + 1]})}, "RANGE: [-MAX - 1, MAX + 1]");
assertException(function () {BigNumber.config({RANGE: [MAX + 1, -MAX - 1]})}, "RANGE: [MAX + 1, -MAX - 1]");
assertException(function () {BigNumber.config({RANGE: Infinity})}, "RANGE: Infinity");
assertException(function () {BigNumber.config({RANGE: "-Infinity"})}, "RANGE: '-Infinity'");
assertException(function () {BigNumber.config({RANGE: [-Infinity, Infinity]})}, "RANGE: [-Infinity, Infinity]");
assertException(function () {BigNumber.config({RANGE: [Infinity, -Infinity]})}, "RANGE: [Infinity, -Infinity]");
obj = BigNumber.config();
assert(true, obj.RANGE[0] === -324);
assert(true, obj.RANGE[1] === 308);
assert(1, BigNumber.config({RANGE: 1}).RANGE[1]);
assert(-1, BigNumber.config({RANGE: 1}).RANGE[0]);
obj = BigNumber.config({RANGE: 1});
assert(true, obj.RANGE[0] === -1 && obj.RANGE[1] === 1);
obj = BigNumber.config({RANGE: -1});
assert(true, obj.RANGE[0] === -1 && obj.RANGE[1] === 1);
BigNumber.config({ ERRORS: 0 });
assert(1, BigNumber.config(0, 0, 0, -1).RANGE[1]);
assert(-1, BigNumber.config(0, 0, 0, 0.1).RANGE[0]);
assert(1, BigNumber.config(0, 0, 0, 1.99).RANGE[1]);
assert(-2, BigNumber.config(0, 0, 0, -2.1).RANGE[0]);
assert(8, BigNumber.config(0, 0, 0, 8.01).RANGE[1]);
assert(-7, BigNumber.config(0, 0, 0, -7.99).RANGE[0]);
assert(7, BigNumber.config(0, 0, 0, MAX + 1).RANGE[1]);
assert(7, BigNumber.config(0, 0, 0, -MAX - 1).RANGE[1]);
assert(-7, BigNumber.config(0, 0, 0, []).RANGE[0]);
assert(7, BigNumber.config(0, 0, 0, {}).RANGE[1]);
assert(-7, BigNumber.config(0, 0, 0, '').RANGE[0]);
assert(7, BigNumber.config(0, 0, 0, ' ').RANGE[1]);
assert(-7, BigNumber.config(0, 0, 0, 'hi').RANGE[0]);
assert(13000, BigNumber.config(0, 0, 0, '1.3e+4').RANGE[1]);
assert(-13000, BigNumber.config(0, 0, 0, NaN).RANGE[0]);
assert(13000, BigNumber.config(0, 0, 0, Infinity).RANGE[1]);
assert(-13000, BigNumber.config(0, 0, 0, new Date).RANGE[0]);
assert(13000, BigNumber.config(0, 0, 0, null).RANGE[1]);
assert(-13000, BigNumber.config(0, 0, 0, undefined).RANGE[0]);
assert(-98765, BigNumber.config(0, 0, 0, 98765.4321).RANGE[0]);
assert(98765, BigNumber.config(0, 0, 0, -98765.4321).RANGE[1]);
assert(1, BigNumber.config(0, 0, 0, [-98765.4321, 1]).RANGE[1]);
assert(-1, BigNumber.config(0, 0, 0, [-1, 98765.4321]).RANGE[0]);
assert(98765, BigNumber.config(0, 0, 0, [-1, 98765.4321]).RANGE[1]);
assert(98765, BigNumber.config(0, 0, 0, [-1, null]).RANGE[1]);
assert(98765, BigNumber.config(0, 0, 0, [null, 98765.4321]).RANGE[1]);
assert(-1, BigNumber.config(0, 0, 0, [null, 98765.4321]).RANGE[0]);
BigNumber.config({ ERRORS: true });
// ERRORS
assert(false, BigNumber.config(null, null, null, null, 0).ERRORS);
assert(true, BigNumber.config(null, null, null, null, 1).ERRORS);
assert(false, BigNumber.config(null, null, null, null, false).ERRORS);
assert(true, BigNumber.config(null, null, null, null, true).ERRORS);
assert(false, BigNumber.config({ERRORS: 0}).ERRORS);
assert(true, BigNumber.config({ERRORS: 1}).ERRORS);
assert(false, BigNumber.config({ERRORS: false}).ERRORS);
assert(true, BigNumber.config({ERRORS: true}).ERRORS);
assert(true, BigNumber.config(null, null, null, null, null).ERRORS);
assert(true, BigNumber.config(null, null, null, null, undefined).ERRORS);
assert(true, BigNumber.config({ERRORS: null}).ERRORS);
assert(true, BigNumber.config({ERRORS: undefined}).ERRORS);
assertException(function () {BigNumber.config({ERRORS: 'hiya'})}, "ERRORS: 'hiya'");
assertException(function () {BigNumber.config({ERRORS: 'true'})}, "ERRORS: 'true'");
assertException(function () {BigNumber.config({ERRORS: 'false'})}, "ERRORS: 'false'");
assertException(function () {BigNumber.config({ERRORS: '0'})}, "ERRORS: '0'");
assertException(function () {BigNumber.config({ERRORS: '1'})}, "ERRORS: '1'");
assertException(function () {BigNumber.config({ERRORS: -1})}, "ERRORS: -1");
assertException(function () {BigNumber.config({ERRORS: 0.1})}, "ERRORS: 0.1");
assertException(function () {BigNumber.config({ERRORS: 1.1})}, "ERRORS: 1.1");
assertException(function () {BigNumber.config({ERRORS: []})}, "ERRORS: []");
assertException(function () {BigNumber.config({ERRORS: {}})}, "ERRORS: {}");
assertException(function () {BigNumber.config({ERRORS: ''})}, "ERRORS: ''");
assertException(function () {BigNumber.config({ERRORS: ' '})}, "ERRORS: ' '");
assertException(function () {BigNumber.config({ERRORS: NaN})}, "ERRORS: NaN");
assertException(function () {BigNumber.config({ERRORS: Infinity})}, "ERRORS: Infinity");
assert(true, BigNumber.config().ERRORS);
BigNumber.config({ ERRORS: false });
assert(false, BigNumber.config(null, null, null, null, 0).ERRORS);
assert(false, BigNumber.config(null, null, null, null, 1.1).ERRORS);
assert(false, BigNumber.config(null, null, null, null, false).ERRORS);
assert(true, BigNumber.config(null, null, null, null, 1).ERRORS);
assert(false, BigNumber.config(null, null, null, null, 0).ERRORS);
assert(false, BigNumber.config(null, null, null, null, '1').ERRORS);
assert(false, BigNumber.config(null, null, null, null, 'true').ERRORS);
assert(false, BigNumber.config(null, null, null, null, false).ERRORS);
assert(false, BigNumber.config({ERRORS: null}).ERRORS);
assert(false, BigNumber.config({ERRORS: undefined}).ERRORS);
assert(false, BigNumber.config({ERRORS: NaN}).ERRORS);
assert(false, BigNumber.config({ERRORS: 'd'}).ERRORS);
assert(false, BigNumber.config({ERRORS: []}).ERRORS);
assert(false, BigNumber.config({ERRORS: {}}).ERRORS);
assert(false, BigNumber.config({ERRORS: new Date}).ERRORS);
assert(true, BigNumber.config({ERRORS: Boolean(1)}).ERRORS);
assert(true, BigNumber.config({ERRORS: Boolean(true)}).ERRORS);
assert(false, BigNumber.config({ERRORS: Boolean(0)}).ERRORS);
assert(false, BigNumber.config({ERRORS: Boolean(false)}).ERRORS);
assert(true, BigNumber.config({ERRORS: Boolean('false')}).ERRORS);
// FORMAT
assertException(function () {BigNumber.config({FORMAT: ''})}, "FORMAT: ''");
assertException(function () {BigNumber.config({FORMAT: 1})}, "FORMAT: 1");
obj = {
decimalSeparator: '.',
groupSeparator: ',',
groupSize: 3,
secondaryGroupSize: 0,
fractionGroupSeparator: '\xA0',
fractionGroupSize: 0
};
assert(obj, BigNumber.config({FORMAT: obj}).FORMAT);
assert('.', BigNumber.config().FORMAT.decimalSeparator);
obj.decimalSeparator = ',';
assert(',', BigNumber.config().FORMAT.decimalSeparator);
assert(obj, BigNumber.config({FORMAT: null}).FORMAT);
BigNumber.config({ ERRORS: false });
assert(obj, BigNumber.config({FORMAT: 2}).FORMAT);
// Test constructor parsing.
BigNumber.config({
DECIMAL_PLACES: 40,
ROUNDING_MODE: 4,
EXPONENTIAL_AT: 1E9,
RANGE: 1E9,
ERRORS: true
});
assert('Infinity', new BigNumber('1e10000000000').toString());
assert('-Infinity', new BigNumber('-1e10000000000').toString());
assert('0', new BigNumber('1e-10000000000').toString());
assert('0', new BigNumber('-1e-10000000000').toString());
assert('NaN', new BigNumber(NaN).toString());
assert('NaN', new BigNumber('NaN').toString());
assert('NaN', new BigNumber(' NaN').toString());
assert('NaN', new BigNumber('NaN ').toString());
assert('NaN', new BigNumber(' NaN ').toString());
assert('NaN', new BigNumber('+NaN').toString());
assert('NaN', new BigNumber(' +NaN').toString());
assert('NaN', new BigNumber('+NaN ').toString());
assert('NaN', new BigNumber(' +NaN ').toString());
assert('NaN', new BigNumber('-NaN').toString());
assert('NaN', new BigNumber(' -NaN').toString());
assert('NaN', new BigNumber('-NaN ').toString());
assert('NaN', new BigNumber(' -NaN ').toString());
assertException(function () {new BigNumber('+ NaN')}, "+ NaN");
assertException(function () {new BigNumber('- NaN')}, "- NaN");
assertException(function () {new BigNumber(' + NaN')}, " + NaN");
assertException(function () {new BigNumber(' - NaN')}, " - NaN");
assertException(function () {new BigNumber('. NaN')}, ". NaN");
assertException(function () {new BigNumber('.-NaN')}, ".-NaN");
assertException(function () {new BigNumber('.+NaN')}, ".+NaN");
assertException(function () {new BigNumber('-.NaN')}, "-.NaN");
assertException(function () {new BigNumber('+.NaN')}, "+.NaN");
assert('Infinity', new BigNumber(Infinity).toString());
assert('Infinity', new BigNumber('Infinity').toString());
assert('Infinity', new BigNumber(' Infinity').toString());
assert('Infinity', new BigNumber('Infinity ').toString());
assert('Infinity', new BigNumber(' Infinity ').toString());
assert('Infinity', new BigNumber('+Infinity').toString());
assert('Infinity', new BigNumber(' +Infinity').toString());
assert('Infinity', new BigNumber('+Infinity ').toString());
assert('Infinity', new BigNumber(' +Infinity ').toString());
assert('-Infinity', new BigNumber('-Infinity').toString());
assert('-Infinity', new BigNumber(' -Infinity').toString());
assert('-Infinity', new BigNumber('-Infinity ').toString());
assert('-Infinity', new BigNumber(' -Infinity ').toString());
assertException(function () {new BigNumber('+ Infinity')}, "+ Infinity");
assertException(function () {new BigNumber(' + Infinity')}, " + Infinity");
assertException(function () {new BigNumber('- Infinity')}, "- Infinity");
assertException(function () {new BigNumber(' - Infinity')}, " - Infinity");
assertException(function () {new BigNumber('.Infinity')}, ".Infinity");
assertException(function () {new BigNumber('. Infinity')}, ". Infinity");
assertException(function () {new BigNumber('.-Infinity')}, ".-Infinity");
assertException(function () {new BigNumber('.+Infinity')}, ".+Infinity");
assertException(function () {new BigNumber('-.Infinity')}, "-.Infinity");
assertException(function () {new BigNumber('+.Infinity')}, "+.Infinity");
assert('0', new BigNumber(0).toString());
assert('0', new BigNumber(-0).toString());
assert('0', new BigNumber('.0').toString());
assert('0', new BigNumber('0.').toString());
assert('0', new BigNumber('-0.').toString());
assert('0', new BigNumber('+0.').toString());
assert('0', new BigNumber('+0').toString());
assert('0', new BigNumber('-0').toString());
assert('0', new BigNumber(' +0').toString());
assert('0', new BigNumber(' -0').toString());
assert('0', new BigNumber(' +0 ').toString());
assert('0', new BigNumber(' -0 ').toString());
assert('0', new BigNumber('+.0').toString());
assert('0', new BigNumber('-.0').toString());
assert('0', new BigNumber(' +.0').toString());
assert('0', new BigNumber(' -.0').toString());
assert('0', new BigNumber(' +.0 ').toString());
assert('0', new BigNumber(' -.0 ').toString());
assertException(function () {new BigNumber('+-0')}, "+-0");
assertException(function () {new BigNumber('-+0')}, "-+0");
assertException(function () {new BigNumber('--0')}, "--0");
assertException(function () {new BigNumber('++0')}, "++0");
assertException(function () {new BigNumber('.-0')}, ".-0");
assertException(function () {new BigNumber('.+0')}, ".+0");
assertException(function () {new BigNumber('0 .')}, "0 .");
assertException(function () {new BigNumber('. 0')}, ". 0");
assertException(function () {new BigNumber('..0')}, "..0");
assertException(function () {new BigNumber('+.-0')}, "+.-0");
assertException(function () {new BigNumber('-.+0')}, "-.+0");
assertException(function () {new BigNumber('+. 0')}, "+. 0");
assertException(function () {new BigNumber('-. 0')}, "-. 0");
assert('2', new BigNumber('+2').toString());
assert('-2', new BigNumber('-2').toString());
assert('2', new BigNumber(' +2').toString());
assert('-2', new BigNumber(' -2').toString());
assert('2', new BigNumber(' +2 ').toString());
assert('-2', new BigNumber(' -2 ').toString());
assert('0.2', new BigNumber('.2').toString());
assert('2', new BigNumber('2.').toString());
assert('-2', new BigNumber('-2.').toString());
assert('2', new BigNumber('+2.').toString());
assert('0.2', new BigNumber('+.2').toString());
assert('-0.2', new BigNumber('-.2').toString());
assert('0.2', new BigNumber(' +.2').toString());
assert('-0.2', new BigNumber(' -.2').toString());
assert('0.2', new BigNumber(' +.2 ').toString());
assert('-0.2', new BigNumber(' -.2 ').toString());
assertException(function () {new BigNumber('+-2')}, "+-2");
assertException(function () {new BigNumber('-+2')}, "-+2");
assertException(function () {new BigNumber('--2')}, "--2");
assertException(function () {new BigNumber('++2')}, "++2");
assertException(function () {new BigNumber('.-2')}, ".-2");
assertException(function () {new BigNumber('.+2')}, ".+2");
assertException(function () {new BigNumber('2 .')}, "2 .");
assertException(function () {new BigNumber('. 2')}, ". 2");
assertException(function () {new BigNumber('..2')}, "..2");
assertException(function () {new BigNumber('+.-2')}, "+.-2");
assertException(function () {new BigNumber('-.+2')}, "-.+2");
assertException(function () {new BigNumber('+. 2')}, "+. 2");
assertException(function () {new BigNumber('-. 2')}, "-. 2");
assertException(function () {new BigNumber('+2..')}, "+2..");
assertException(function () {new BigNumber('-2..')}, "-2..");
assertException(function () {new BigNumber('-.2.')}, "-.2.");
assertException(function () {new BigNumber('+.2.')}, "+.2.");
assertException(function () {new BigNumber('.-20.')}, ".-20.");
assertException(function () {new BigNumber('.+20.')}, ".+20.");
assertException(function () {new BigNumber('. 20.')}, ". 20.");
assertException(function () {new BigNumber(undefined)}, "undefined");
assertException(function () {new BigNumber([])}, "[]");
assertException(function () {new BigNumber('')}, "''");
assertException(function () {new BigNumber(null)}, "null");
assertException(function () {new BigNumber(' ')}, "' '");
assertException(function () {new BigNumber('nan')}, "nan");
assertException(function () {new BigNumber('23er')}, "23er");
assertException(function () {new BigNumber('e4')}, "e4");
assertException(function () {new BigNumber('0x')}, "0x");
assertException(function () {new BigNumber('0x.')}, "0x.");
assertException(function () {new BigNumber('+0x')}, "+0x");
assertException(function () {new BigNumber('.0x1')}, ".0x1");
assertException(function () {new BigNumber('.0x1', 16)}, ".0x1, 16");
assertException(function () {new BigNumber('. 0x1')}, ". 0x1");
assertException(function () {new BigNumber('0x1', 15)}, "0x1, 15");
assertException(function () {new BigNumber('0b')}, "0b");
assertException(function () {new BigNumber('+0b')}, "+0b");
assertException(function () {new BigNumber('0b.')}, "0b.");
assertException(function () {new BigNumber('.0b1')}, ".0b1");
assertException(function () {new BigNumber('. 0b1 ')}, ". 0b1 ");
assertException(function () {new BigNumber('0b1', 3)}, "0b1, 3");
assertException(function () {new BigNumber('0o')}, "0o");
assertException(function () {new BigNumber('0o.')}, "0o.");
assertException(function () {new BigNumber('.0o1')}, ".0o1");
assertException(function () {new BigNumber('.0o1')}, ".0o1");
assertException(function () {new BigNumber('0 o1')}, "0 o1");
assertException(function () {new BigNumber('0o 1')}, "0o 1");
assertException(function () {new BigNumber('0-o1')}, "0o-1");
assertException(function () {new BigNumber('0o1', 16)}, "001, 16");
assertException(function () {new BigNumber('--45')}, "--45");
assertException(function () {new BigNumber('+-2')}, "+-2");
assertException(function () {new BigNumber('0 0')}, "0 0");
assert('15', new BigNumber('0xf', 16).toString());
assert('-10', new BigNumber('-0xa').toString());
assert('255', new BigNumber('0xff').toString());
assert('-3294', new BigNumber('-0xcde').toString());
assert('15.5', new BigNumber('0xf.8').toString());
assert('1', new BigNumber('0b1.', 2).toString());
assert('0', new BigNumber('0b0').toString());
assert('-1', new BigNumber('-0b1').toString());
assert('3', new BigNumber('0b11').toString());
assert('-11', new BigNumber('-0b1011').toString());
assert('1.5', new BigNumber('0b1.1').toString());
assert('-1', new BigNumber(' -0o1 ', 8).toString());
assert('0', new BigNumber('-0o0').toString());
assert('1', new BigNumber('0o1').toString());
assert('63', new BigNumber('0o77').toString());
assert('-102', new BigNumber('-0o146').toString());
assert('0.5', new BigNumber('0o0.4').toString());
log('\n ' + passed + ' of ' + total + ' tests passed in ' + (+new Date() - start) + ' ms \n');
return [passed, total];;
})(this.BigNumber);
if (typeof module !== 'undefined' && module.exports) module.exports = count;