format-number
Version:
Formats numbers with separators every 3 digits and currency etc. Highly configurable.
505 lines (488 loc) • 14.6 kB
JavaScript
var expect = require('expect.js');
var formatFactory = require('..');
//Defaults
describe('defaults', function () {
var format = formatFactory();
describe('512', function () {
it('returns 512', function () {
expect(format('512')).to.be('512');
});
});
describe('6300', function () {
it('returns 6,300', function () {
expect(format('6300')).to.be('6,300');
});
});
describe('76300', function () {
it('returns 76,300', function () {
expect(format('76300')).to.be('76,300');
});
});
describe('976300', function () {
it('returns 976,300', function () {
expect(format('976300')).to.be('976,300');
});
});
describe('1976300', function () {
it('returns 1,976,300', function () {
expect(format('1976300')).to.be('1,976,300');
});
});
describe('56.43', function () {
it('returns 56.43', function () {
expect(format('56.43')).to.be('56.43');
});
});
});
//padRight=2
describe('padRight=2', function () {
var format = formatFactory({padRight: 2});
describe('512', function () {
it('returns 512.00', function () {
expect(format('512')).to.be('512.00');
});
});
describe('512.4', function () {
it('returns 512.40', function () {
expect(format('512.4')).to.be('512.40');
});
});
describe('512.43', function () {
it('returns 512.43', function () {
expect(format('512.43')).to.be('512.43');
});
});
describe('512.435', function () {
it('returns 512.435', function () {
expect(format('512.435')).to.be('512.435');
});
});
});
//truncate=2
describe('truncate=2', function () {
var format = formatFactory({truncate: 2});
describe('512', function () {
it('returns 512', function () {
expect(format('512')).to.be('512');
});
});
describe('512.4', function () {
it('returns 512.4', function () {
expect(format('512.4')).to.be('512.4');
});
});
describe('512.43', function () {
it('returns 512.43', function () {
expect(format('512.43')).to.be('512.43');
});
});
describe('512.435', function () {
it('returns 512.43', function () {
expect(format('512.435')).to.be('512.43');
});
});
});
//round=2
describe('round=2', function () {
var format = formatFactory({round: 2});
describe('512', function () {
it('returns 512', function () {
expect(format('512')).to.be('512');
});
});
describe('512.4', function () {
it('returns 512.4', function () {
expect(format('512.4')).to.be('512.4');
});
});
describe('512.43', function () {
it('returns 512.43', function () {
expect(format('512.43')).to.be('512.43');
});
});
describe('512.435', function () {
it('returns 512.44', function () {
expect(format('512.435')).to.be('512.44');
});
});
describe('512.434', function () {
it('returns 512.43', function () {
expect(format('512.434')).to.be('512.43');
});
});
describe('512.996', function () {
it('returns 513.00', function () {
expect(format('512.996')).to.be('513.00');
});
});
describe('512.9947', function () {
it('returns 513.00', function () {
expect(format('512.9947')).to.be('512.99');
});
});
describe('0.046', function () {
it('returns 0.05', function () {
expect(format('0.046')).to.be('0.05');
});
});
describe('0.096', function () {
it('returns 0.10', function () {
expect(format('0.096')).to.be('0.10');
});
});
});
describe('round=1', function () {
var format = formatFactory({round: 1});
describe('0.249', function () {
it('returns 0.2', function () {
expect(format('0.249')).to.be('0.2');
});
});
});
//round=0
describe('round=0', function () {
var format = formatFactory({round: 0});
describe('512', function () {
it('returns 512', function () {
expect(format('512')).to.be('512');
});
});
describe('512.4', function () {
it('returns 512', function () {
expect(format('512.4')).to.be('512');
});
});
describe('512.43', function () {
it('returns 512', function () {
expect(format('512')).to.be('512');
});
});
describe('512.50', function () {
it('returns 513', function () {
expect(format('512.50')).to.be('513');
});
});
describe('519.6', function () {
it('returns 520', function () {
expect(format('519.6')).to.be('520');
});
});
});
//prefix
describe('prefix=£', function () {
var format = formatFactory({prefix: '£'});
describe('512', function () {
it('returns £512', function () {
expect(format('512')).to.be('£512');
});
});
describe('-512', function () {
it('returns -£512', function () {
expect(format('-512')).to.be('-£512');
});
});
describe('with noUnits override', function () {
describe('512', function () {
it('returns 512', function () {
expect(format('512', {noUnits: true})).to.be('512');
});
});
describe('-512', function () {
it('returns -512', function () {
expect(format('-512', {noUnits: true})).to.be('-512');
});
});
});
describe('`prefix.suffix`', function () {
it('equals "£"', function () {
expect(format.prefix).to.be('£');
});
});
});
//suffix
describe('suffix=" items"', function () {
var format = formatFactory({suffix: ' items'});
describe('512', function () {
it('returns 512 items', function () {
expect(format('512')).to.be('512 items');
});
});
describe('-512', function () {
it('returns -512 items', function () {
expect(format('-512')).to.be('-512 items');
});
});
describe('""', function () {
it('returns ""', function () {
expect(format('')).to.be('');
});
});
describe('with noUnits override', function () {
describe('512', function () {
it('returns 512', function () {
expect(format('512', {noUnits: true})).to.be('512');
});
});
describe('-512', function () {
it('returns -512', function () {
expect(format('-512', {noUnits: true})).to.be('-512');
});
});
});
describe('`format.suffix`', function () {
it('equals " items"', function () {
expect(format.suffix).to.be(' items');
});
});
});
describe('decimal=, separator=.', function() {
var format = formatFactory({decimal: ',', separator: '.'});
describe('512', function() {
it('returns 512', function() {
expect(format('512')).to.be('512')
})
})
describe('1024', function() {
it('returns 1.024', function() {
expect(format('1024')).to.be('1.024')
})
})
describe('512.4', function() {
it('returns 512,4', function() {
expect(format('512.4')).to.be('512,4')
})
})
})
//negativeType
describe('negativeType="brackets"', function () {
var format = formatFactory({negativeType: 'brackets'});
describe('512', function () {
it('returns 512', function () {
expect(format('512')).to.be('512');
});
});
describe('-512', function () {
it('returns (512)', function () {
expect(format('-512')).to.be('(512)');
});
});
});
describe('negativeType="right"', function () {
var format = formatFactory({negativeType: 'right'});
describe('512', function () {
it('returns 512', function () {
expect(format('512')).to.be('512');
});
});
describe('-512', function () {
it('returns 512-', function () {
expect(format('-512')).to.be('512-');
});
});
});
describe('negativeType="left"', function () {
var format = formatFactory({negativeType: 'left'});
describe('512', function () {
it('returns 512', function () {
expect(format('512')).to.be('512');
});
});
describe('-512', function () {
it('returns -512', function () {
expect(format('-512')).to.be('-512');
});
});
});
//negative for backward compatibility
describe('negative="R"', function () {
var format = formatFactory({negative: 'R'});
describe('512', function () {
it('returns 512', function () {
expect(format('512')).to.be('512');
});
});
describe('-512', function () {
it('returns 512-', function () {
expect(format('-512')).to.be('512-');
});
});
});
describe('negative="L"', function () {
var format = formatFactory({negative: 'L'});
describe('512', function () {
it('returns 512', function () {
expect(format('512')).to.be('512');
});
});
describe('-512', function () {
it('returns -512', function () {
expect(format('-512')).to.be('-512');
});
});
});
//negative....Out
describe('negativeLeftOut"', function () {
var format = formatFactory({negativeType: 'brackets', prefix: '£', suffix: '/item',
negativeLeftOut: true, negativeRightOut: false});
describe('512', function () {
it('returns £512/item', function () {
expect(format('512')).to.be('£512/item');
});
});
describe('512', function () {
it('returns (£512)/item', function () {
expect(format('-512')).to.be('(£512)/item');
});
});
});
describe('negativeRightOut"', function () {
var format = formatFactory({negativeType: 'brackets', prefix: '£', suffix: '/item',
negativeLeftOut: false, negativeRightOut: true});
describe('512', function () {
it('returns £512/item', function () {
expect(format('512')).to.be('£512/item');
});
});
describe('512', function () {
it('returns £(512/item)', function () {
expect(format('-512')).to.be('£(512/item)');
});
});
});
describe('negativeLeftOut and negativeRightOut both true"', function () {
var format = formatFactory({negativeType: 'brackets', prefix: '£', suffix: '/item',
negativeLeftOut: true, negativeRightOut: true});
describe('512', function () {
it('returns £512/item', function () {
expect(format('512')).to.be('£512/item');
});
});
describe('512', function () {
it('returns (£512/item)', function () {
expect(format('-512')).to.be('(£512/item)');
});
});
});
describe('negativeLeftOut and negativeRightOut both false"', function () {
var format = formatFactory({negativeType: 'brackets', prefix: '£', suffix: '/item',
negativeLeftOut: false, negativeRightOut: false});
describe('512', function () {
it('returns £512/item', function () {
expect(format('512')).to.be('£512/item');
});
});
describe('512', function () {
it('returns £(512)/item', function () {
expect(format('-512')).to.be('£(512)/item');
});
});
});
//backward compatibility with negativeOut
describe('backward compatibility with negativeOut true"', function () {
var format = formatFactory({negativeType: 'brackets', prefix: '£', suffix: '/item',
negativeOut: true});
describe('512', function () {
it('returns £512/item', function () {
expect(format('512')).to.be('£512/item');
});
});
describe('512', function () {
it('returns (£512/item)', function () {
expect(format('-512')).to.be('(£512/item)');
});
});
});
describe('backward compatibility with negativeOut false"', function () {
var format = formatFactory({negativeType: 'brackets', prefix: '£', suffix: '/item',
negativeOut: false});
describe('512', function () {
it('returns £512/item', function () {
expect(format('512')).to.be('£512/item');
});
});
describe('512', function () {
it('returns £(512)/item', function () {
expect(format('-512')).to.be('£(512)/item');
});
});
});
//separators
describe('integerSeparator = " "', function () {
var format = formatFactory({integerSeparator: " "});
describe('5123423.1234567', function () {
it('returns 5 123 423.1234567', function () {
expect(format('5123423.1234567')).to.be('5 123 423.1234567');
});
});
describe('with noSeparatorOverride', function () {
describe('5123423.1234567', function () {
it('returns 5123423.1234567', function () {
expect(format('5123423.1234567', {noSeparator: true})).to.be('5123423.1234567');
});
});
});
});
describe('decimalsSeparator = " "', function () {
var format = formatFactory({integerSeparator: "", decimalsSeparator: " "});
describe('5123423.1234567', function () {
it('returns 5123423.123 456 7', function () {
expect(format('5123423.1234567')).to.be('5123423.123 456 7');
});
});
describe('with noSeparator override', function () {
describe('5123423.1234567', function () {
it('returns 5123423.1234567', function () {
expect(format('5123423.1234567', {noSeparator: true})).to.be('5123423.1234567');
});
});
});
});
//for backwards compatibility
describe('separator = " "', function () {
var format = formatFactory({separator: " "});
describe('5123423.1234567', function () {
it('returns 5 123 423.1234567', function () {
expect(format('5123423.1234567')).to.be('5 123 423.1234567');
});
});
describe('with noSeparator override', function () {
describe('5123423.1234567', function () {
it('returns 5123423.1234567', function () {
expect(format('5123423.1234567', {noSeparator: true})).to.be('5123423.1234567');
});
});
});
});
//decimal
describe('decimal = "."', function () {
var format = formatFactory({integerSeparator: " ", decimal:"."});
describe('5123423.1234567', function () {
it('returns 5 123 423.1234567', function () {
expect(format('5123423.1234567')).to.be('5 123 423.1234567');
});
});
});
describe('decimal = ","', function () {
var format = formatFactory({integerSeparator: " ", decimal:","});
describe('5123423.1234567', function () {
it('returns 5 123 423,1234567', function () {
expect(format('5123423.1234567')).to.be('5 123 423,1234567');
});
});
});
//miscellaneous
describe('£68,932/item', function () {
it('£68,932/item', function () {
expect(formatFactory({prefix: '£', suffix: '/item'})(68932)).to.be('£68,932/item');
});
});
describe('£68,932/items with no units', function () {
it('68,932', function () {
expect(formatFactory({prefix: '£', suffix: '/item'})(68932, {noUnits: true})).to.be('68,932');
});
});
describe('£68,932/items with no separators', function () {
it('£68932/item', function () {
expect(formatFactory({prefix: '£', suffix: '/item'})(68932, {noSeparator: true})).to.be('£68932/item');
});
});