123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245 |
- if (typeof Test === 'undefined') require('../tester');
- Test('config', function () {
- var MAX = 1e9;
- function t(expected, value){
- Test.areEqual(expected, value);
- }
- function tx(fn, msg){
- Test.isException(fn, msg);
- }
- t(BigNumber.config, BigNumber.set);
- var obj = BigNumber.config({
- DECIMAL_PLACES: 100,
- ROUNDING_MODE: 0,
- EXPONENTIAL_AT: 50,
- RANGE: 500
- });
- Test.isTrue(
- 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 = BigNumber.config({
- DECIMAL_PLACES: 40,
- ROUNDING_MODE: 4,
- EXPONENTIAL_AT: 1E9,
- RANGE: 1E9
- });
- t('object', typeof obj);
- t(40, obj.DECIMAL_PLACES);
- t(4, obj.ROUNDING_MODE);
- t('object', typeof obj.EXPONENTIAL_AT);
- t(2, obj.EXPONENTIAL_AT.length);
- t(-1e9, obj.EXPONENTIAL_AT[0]);
- t(1e9, obj.EXPONENTIAL_AT[1]);
- t('object', typeof obj.RANGE);
- t(2, obj.RANGE.length);
- t(-1e9, obj.RANGE[0]);
- t(1e9, obj.RANGE[1]);
- obj = BigNumber.config({EXPONENTIAL_AT: [-7, 21], RANGE: [-324, 308]});
- // DECIMAL_PLACES
- t(0, BigNumber.config({DECIMAL_PLACES: 0}).DECIMAL_PLACES);
- t(1, BigNumber.config({DECIMAL_PLACES: 1}).DECIMAL_PLACES);
- t(20, BigNumber.config({DECIMAL_PLACES: 20}).DECIMAL_PLACES);
- t(300000, BigNumber.config({DECIMAL_PLACES: 300000}).DECIMAL_PLACES);
- t(4e+8, BigNumber.config({DECIMAL_PLACES: 4e8}).DECIMAL_PLACES);
- t(123456789, BigNumber.config({DECIMAL_PLACES: 123456789}).DECIMAL_PLACES);
- t(2000, BigNumber.config({DECIMAL_PLACES: 2e+3}).DECIMAL_PLACES);
- t(MAX, BigNumber.config({DECIMAL_PLACES: MAX}).DECIMAL_PLACES);
- tx(function () {BigNumber.config({DECIMAL_PLACES: -1})}, "DECIMAL_PLACES: -1");
- tx(function () {BigNumber.config({DECIMAL_PLACES: 0.1})}, "DECIMAL_PLACES: 0.1");
- tx(function () {BigNumber.config({DECIMAL_PLACES: 1.1})}, "DECIMAL_PLACES: 1.1");
- tx(function () {BigNumber.config({DECIMAL_PLACES: -1.1})}, "DECIMAL_PLACES: -1.1");
- tx(function () {BigNumber.config({DECIMAL_PLACES: 8.1})}, "DECIMAL_PLACES: 8.1");
- tx(function () {BigNumber.config({DECIMAL_PLACES: MAX + 1})}, "DECIMAL_PLACES: MAX + 1");
- tx(function () {BigNumber.config({DECIMAL_PLACES: []})}, "DECIMAL_PLACES: []");
- tx(function () {BigNumber.config({DECIMAL_PLACES: {}})}, "DECIMAL_PLACES: {}");
- tx(function () {BigNumber.config({DECIMAL_PLACES: ''})}, "DECIMAL_PLACES: ''");
- tx(function () {BigNumber.config({DECIMAL_PLACES: ' '})}, "DECIMAL_PLACES: ' '");
- tx(function () {BigNumber.config({DECIMAL_PLACES: 'hi'})}, "DECIMAL_PLACES: 'hi'");
- tx(function () {BigNumber.config({DECIMAL_PLACES: '1e+999'})}, "DECIMAL_PLACES: '1e+999'");
- tx(function () {BigNumber.config({DECIMAL_PLACES: NaN})}, "DECIMAL_PLACES: NaN");
- tx(function () {BigNumber.config({DECIMAL_PLACES: Infinity})}, "DECIMAL_PLACES: Infinity");
- tx(function () {BigNumber.config({DECIMAL_PLACES: null})}, "DECIMAL_PLACES: null");
- tx(function () {BigNumber.config({DECIMAL_PLACES: undefined})}, "DECIMAL_PLACES: undefined");
- BigNumber.config({DECIMAL_PLACES: 40});
- // ROUNDING_MODE
- t(0, BigNumber.config({ROUNDING_MODE: 0}).ROUNDING_MODE);
- t(1, BigNumber.config({ROUNDING_MODE: 1}).ROUNDING_MODE);
- t(2, BigNumber.config({ROUNDING_MODE: 2}).ROUNDING_MODE);
- t(3, BigNumber.config({ROUNDING_MODE: 3}).ROUNDING_MODE);
- t(4, BigNumber.config({ROUNDING_MODE: 4}).ROUNDING_MODE);
- t(5, BigNumber.config({ROUNDING_MODE: 5}).ROUNDING_MODE);
- t(6, BigNumber.config({ROUNDING_MODE: 6}).ROUNDING_MODE);
- t(7, BigNumber.config({ROUNDING_MODE: 7}).ROUNDING_MODE);
- t(8, BigNumber.config({ROUNDING_MODE: 8}).ROUNDING_MODE);
- t(8, BigNumber.config(null).ROUNDING_MODE);
- t(8, BigNumber.config(undefined).ROUNDING_MODE);
- tx(function () {BigNumber.config({ROUNDING_MODE: -1})}, "ROUNDING_MODE: -1");
- tx(function () {BigNumber.config({ROUNDING_MODE: 0.1})}, "ROUNDING_MODE: 0.1");
- tx(function () {BigNumber.config({ROUNDING_MODE: 1.1})}, "ROUNDING_MODE: 1.1");
- tx(function () {BigNumber.config({ROUNDING_MODE: -1.1})}, "ROUNDING_MODE: -1.1");
- tx(function () {BigNumber.config({ROUNDING_MODE: 8.1})}, "ROUNDING_MODE: 8.1");
- tx(function () {BigNumber.config({ROUNDING_MODE: 9})}, "ROUNDING_MODE: 9");
- tx(function () {BigNumber.config({ROUNDING_MODE: 11})}, "ROUNDING_MODE: 11");
- tx(function () {BigNumber.config({ROUNDING_MODE: []})}, "ROUNDING_MODE: []");
- tx(function () {BigNumber.config({ROUNDING_MODE: {}})}, "ROUNDING_MODE: {}");
- tx(function () {BigNumber.config({ROUNDING_MODE: ''})}, "ROUNDING_MODE: ''");
- tx(function () {BigNumber.config({ROUNDING_MODE: ' '})}, "ROUNDING_MODE: ' '");
- tx(function () {BigNumber.config({ROUNDING_MODE: 'hi'})}, "ROUNDING_MODE: 'hi'");
- tx(function () {BigNumber.config({ROUNDING_MODE: NaN})}, "ROUNDING_MODE: NaN");
- tx(function () {BigNumber.config({ROUNDING_MODE: Infinity})}, "ROUNDING_MODE: Infinity");
- tx(function () {BigNumber.config({ROUNDING_MODE: null})}, "ROUNDING_MODE: null");
- tx(function () {BigNumber.config({ROUNDING_MODE: undefined})}, "ROUNDING_MODE: undefined");
- // EXPONENTIAL_AT
- t(-7, obj.EXPONENTIAL_AT[0]);
- t(21, obj.EXPONENTIAL_AT[1]);
- tx(function () {BigNumber.config({EXPONENTIAL_AT: [0.1, 1]})}, "EXPONENTIAL_AT: [0.1, 1]");
- tx(function () {BigNumber.config({EXPONENTIAL_AT: [-1, -0.1]})}, "EXPONENTIAL_AT: [-1, -0.1]");
- tx(function () {BigNumber.config({EXPONENTIAL_AT: [1, 1]})}, "EXPONENTIAL_AT: [1, 1]");
- tx(function () {BigNumber.config({EXPONENTIAL_AT: [-1, -1]})}, "EXPONENTIAL_AT: [-1, -1]");
- tx(function () {BigNumber.config({EXPONENTIAL_AT: MAX + 1})}, "EXPONENTIAL_AT: MAX + 1");
- tx(function () {BigNumber.config({EXPONENTIAL_AT: -MAX - 1})}, "EXPONENTIAL_AT: -MAX - 1");
- tx(function () {BigNumber.config({EXPONENTIAL_AT: [-MAX - 1, MAX]})}, "EXPONENTIAL_AT: [-MAX - 1, MAX]");
- tx(function () {BigNumber.config({EXPONENTIAL_AT: [-MAX, MAX + 1]})}, "EXPONENTIAL_AT: [-MAX, MAX + 1]");
- tx(function () {BigNumber.config({EXPONENTIAL_AT: [MAX + 1, -MAX - 1]})}, "EXPONENTIAL_AT: [MAX + 1, -MAX - 1]");
- tx(function () {BigNumber.config({EXPONENTIAL_AT: [-Infinity, Infinity]})}, "EXPONENTIAL_AT: [Infinity, -Infinity]");
- tx(function () {BigNumber.config({EXPONENTIAL_AT: [Infinity, -Infinity]})}, "EXPONENTIAL_AT: [Infinity, -Infinity]");
- obj = BigNumber.config();
- t(-7, obj.EXPONENTIAL_AT[0]);
- t(21, obj.EXPONENTIAL_AT[1]);
- t(1, BigNumber.config({EXPONENTIAL_AT: 1}).EXPONENTIAL_AT[1]);
- t(-1, BigNumber.config({EXPONENTIAL_AT: 1}).EXPONENTIAL_AT[0]);
- obj = BigNumber.config({EXPONENTIAL_AT: 0});
- Test.isTrue(obj.EXPONENTIAL_AT[0] === 0 && obj.EXPONENTIAL_AT[1] === 0);
- obj = BigNumber.config({EXPONENTIAL_AT: -1});
- Test.isTrue(obj.EXPONENTIAL_AT[0] === -1 && obj.EXPONENTIAL_AT[1] === 1);
- // RANGE
- BigNumber.config({EXPONENTIAL_AT: [-7, 21], RANGE: [-324, 308]});
- t(-324, obj.RANGE[0]);
- t(308, obj.RANGE[1]);
- tx(function () {BigNumber.config({RANGE: [-0.9, 1]})}, "RANGE: [-0.9, 1]");
- tx(function () {BigNumber.config({RANGE: [-1, 0.9]})}, "RANGE: [-1, 0.9]");
- tx(function () {BigNumber.config({RANGE: [0, 1]})}, "RANGE: [0, 1]");
- tx(function () {BigNumber.config({RANGE: [-1, 0]})}, "RANGE: [-1, 0]");
- tx(function () {BigNumber.config({RANGE: 0})}, "RANGE: 0");
- tx(function () {BigNumber.config({RANGE: MAX + 1})}, "RANGE: MAX + 1");
- tx(function () {BigNumber.config({RANGE: -MAX - 1})}, "RANGE: -MAX - 1");
- tx(function () {BigNumber.config({RANGE: [-MAX - 1, MAX + 1]})}, "RANGE: [-MAX - 1, MAX + 1]");
- tx(function () {BigNumber.config({RANGE: [MAX + 1, -MAX - 1]})}, "RANGE: [MAX + 1, -MAX - 1]");
- tx(function () {BigNumber.config({RANGE: Infinity})}, "RANGE: Infinity");
- tx(function () {BigNumber.config({RANGE: "-Infinity"})}, "RANGE: '-Infinity'");
- tx(function () {BigNumber.config({RANGE: [-Infinity, Infinity]})}, "RANGE: [-Infinity, Infinity]");
- tx(function () {BigNumber.config({RANGE: [Infinity, -Infinity]})}, "RANGE: [Infinity, -Infinity]");
- obj = BigNumber.config();
- t(-324, obj.RANGE[0]);
- t(308, obj.RANGE[1]);
- var hundred = new BigNumber(100);
- t('100', hundred.toString());
- t('100', new BigNumber(hundred).toString());
- t(1, BigNumber.config({RANGE: 1}).RANGE[1]);
- t(-1, BigNumber.config({RANGE: 1}).RANGE[0]);
- obj = BigNumber.config({RANGE: 1});
- Test.isTrue(obj.RANGE[0] === -1 && obj.RANGE[1] === 1);
- obj = BigNumber.config({RANGE: -1});
- Test.isTrue(obj.RANGE[0] === -1 && obj.RANGE[1] === 1);
- t('1', new BigNumber(1).toString());
- t('99', new BigNumber(99).toString());
- t('-99', new BigNumber(-99).toString());
- t('Infinity', new BigNumber(100).toString());
- t('-Infinity', new BigNumber(-100).toString());
- t('0.99', new BigNumber(0.99).toString());
- t('0.1', new BigNumber(0.1).toString());
- t('0', new BigNumber(0.09).toString());
- t('-0', new BigNumber(-0.09).valueOf());
- t('100', hundred.toString());
- t('Infinity', new BigNumber(hundred).toString());
- t('-Infinity', hundred.negated().toString());
- // FORMAT
- tx(function () {BigNumber.config({FORMAT: ''})}, "FORMAT: ''");
- tx(function () {BigNumber.config({FORMAT: 1})}, "FORMAT: 1");
- obj = {
- decimalSeparator: '.',
- groupSeparator: ',',
- groupSize: 3,
- secondaryGroupSize: 0,
- fractionGroupSeparator: '\xA0',
- fractionGroupSize: 0
- };
- t(obj, BigNumber.config({FORMAT: obj}).FORMAT);
- t('.', BigNumber.config().FORMAT.decimalSeparator);
- obj.decimalSeparator = ',';
- t(',', BigNumber.config().FORMAT.decimalSeparator);
- // ALPHABET
- BigNumber.config({ALPHABET: '0123456789abcdefghijklmnopqrstuvwxyz'});
- tx(function () {BigNumber.config({ALPHABET: ''})}, "ALPHABET: ''");
- tx(function () {BigNumber.config({ALPHABET: '1'})}, "ALPHABET: '1'");
- tx(function () {BigNumber.config({ALPHABET: 2})}, "ALPHABET: 2");
- tx(function () {BigNumber.config({ALPHABET: true})}, "ALPHABET: true");
- tx(function () {BigNumber.config({ALPHABET: 'aba'})}, "ALPHABET: 'aba'");
- tx(function () {BigNumber.config({ALPHABET: '0.'})}, "ALPHABET: '0.'");
- tx(function () {BigNumber.config({ALPHABET: '0-'})}, "ALPHABET: '0-'");
- tx(function () {BigNumber.config({ALPHABET: '0+'})}, "ALPHABET: '0+'");
- tx(function () {BigNumber.config({ALPHABET: '0123456789.'})}, "ALPHABET: '0123456789.'");
- BigNumber.config({ALPHABET: '0,'});
- t('0,', BigNumber.config().ALPHABET);
- BigNumber.config({ALPHABET: 'xy'});
- t('xy', BigNumber.config().ALPHABET);
- BigNumber.config({ALPHABET: '0123456789TE'});
- t('0123456789TE', BigNumber.config().ALPHABET);
- BigNumber.config({ALPHABET: '9876543210'});
- t('9876543210', BigNumber.config().ALPHABET);
- BigNumber.config({ALPHABET: '0123456789abcdefghijklmnopqrstuvwxyz'});
- });
|