Icard/angular-clarity-master(work.../node_modules/numeral/tests/numeral.js

476 lines
15 KiB
JavaScript
Raw Permalink Normal View History

2024-07-16 14:55:36 +00:00
// Node
if (typeof module !== 'undefined' && module.exports) {
var numeral = require('../numeral');
var expect = require('chai').expect;
}
describe('Numeral', function() {
afterEach(function() {
numeral.reset();
});
describe('Default', function() {
it('should set a default format', function() {
numeral.defaultFormat('0,0');
expect(numeral(10000).format()).to.equal('10,000');
});
});
describe('Types', function() {
it('should return a value as correct type', function() {
var tests = [
[1234.56,'number'],
['1234.56','number'],
[0,'number'],
[NaN,'object'],
[null,'object']
],
i;
for (i = 0; i < tests.length; i++) {
expect(typeof numeral(tests[i][0]).value()).to.equal(tests[i][1]);
}
});
});
describe('Value', function() {
it('should return a value', function() {
var tests = [
[1000, 1000],
[0.5, 0.5],
[null, null],
['1,000', 1000],
['not a number', null]
],
num;
for (var i = 0; i < tests.length; i++) {
num = numeral(tests[i][0]);
expect(num.value()).to.equal(tests[i][1]);
}
});
});
describe('Set', function() {
it('should set a value', function() {
var tests = [
[1000,1000],
[-0.25,-0.25]
],
num;
for (var i = 0; i < tests.length; i++) {
num = numeral().set(tests[i][0]);
expect(num.value()).to.equal(tests[i][1]);
}
});
});
describe('Custom Zero', function() {
it('should change zero value', function() {
var tests = [
[0,null,'0','0'],
[0,'N/A','0','N/A'],
[0,'','','']
];
for (var i = 0; i < tests.length; i++) {
numeral.zeroFormat(tests[i][1]);
expect(numeral(tests[i][0]).format(tests[i][2])).to.equal(tests[i][3]);
}
});
});
describe('Custom Null', function() {
it('should change null value', function() {
var tests = [
[null,null,'0','0'],
[null,'N/A','0','N/A'],
[null,'','','']
];
for (var i = 0; i < tests.length; i++) {
numeral.nullFormat(tests[i][1]);
expect(numeral(tests[i][0]).format(tests[i][2])).to.equal(tests[i][3]);
}
});
});
describe('Clone', function() {
it('should clone', function() {
var a = numeral(1000),
b = numeral(a),
c = a.clone(),
aVal = a.value(),
aSet = a.set(2000).value(),
bVal = b.value(),
cVal = c.add(10).value();
expect(aVal).to.equal(1000);
expect(aSet).to.equal(2000);
expect(bVal).to.equal(1000);
expect(cVal).to.equal(1010);
});
});
describe('isNumeral', function() {
it('should return boolean', function() {
var tests = [
[numeral(),true],
[1,false]
];
for (var i = 0; i < tests.length; i++) {
expect(numeral.isNumeral(tests[i][0])).to.equal(tests[i][1]);
}
});
});
describe('Format', function() {
it('should format to a number', function() {
var tests = [
[0, null, '0'],
[0, '0.00', '0.00'],
[null, null, '0'],
[NaN, '0.0', '0.0'],
[1.23,'0,0','1'],
[10000,'0,0.0000','10,000.0000'],
[10000.23,'0,0','10,000'],
[-10000,'0,0.0','-10,000.0'],
[10000.1234,'0.000','10000.123'],
[10000,'0[.]00','10000'],
[10000.1,'0[.]00','10000.10'],
[10000.123,'0[.]00','10000.12'],
[10000.456,'0[.]00','10000.46'],
[10000.001,'0[.]00','10000'],
[10000.45,'0[.]00[0]','10000.45'],
[10000.456,'0[.]00[0]','10000.456'],
[10000,'(0,0.0000)','10,000.0000'],
[-10000,'(0,0.0000)','(10,000.0000)'],
[-12300,'+0,0.0000','-12,300.0000'],
[1230,'+0,0','+1,230'],
[1230,'-0,0','1,230'],
[-1230,'-0,0','-1,230'],
[-1230.4,'0,0.0+','1,230.4-'],
[-1230.4,'0,0.0-','1,230.4-'],
[1230.4,'0,0.0-','1,230.4'],
[100.78, '0', '101'],
[100.28, '0', '100'],
[1.932,'0.0','1.9'],
[1.9687,'0','2'],
[1.9687,'0.0','2.0'],
[-0.23,'.00','-.23'],
[-0.23,'(.00)','(.23)'],
[0.23,'0.00000','0.23000'],
[0.67,'0.0[0000]','0.67'],
[3162.63,'0.0[00000000000000]','3162.63'],
[1.99,'0.[0]','2'],
[1.0501,'0.00[0]','1.05'],
[1.005,'0.00','1.01'],
// leading zero
[0, '00.0', '00.0'],
[0.23, '000.[00]', '000.23'],
[4, '000', '004'],
[10, '00000', '00010'],
[1000, '000,0', '1,000'],
[1000, '00000,0', '01,000'],
[1000, '0000000,0', '0,001,000'],
// abbreviations
[2000000000,'0.0a','2.0b'],
[1230974,'0.0a','1.2m'],
[1460,'0a','1k'],
[-104000,'0 a','-104 k'],
[999950,'0.0a','1.0m'],
[999999999,'0a','1b'],
// forced abbreviations
[-5444333222111, '0,0 ak', '-5,444,333,222 k'],
[5444333222111, '0,0 am', '5,444,333 m'],
[-5444333222111, '0,0 ab', '-5,444 b'],
[-5444333222111, '0,0 at', '-5 t'],
[123456, '0.0[0] ak', '123.46 k'],
[150,'0.0 ak','0.2 k']
],
i,
n,
output;
for (i = 0; i < tests.length; i++) {
n = numeral(tests[i][0]);
output = n.format(tests[i][1]);
expect(output).to.equal(tests[i][2]);
expect(typeof output).to.equal('string');
}
});
});
describe('Unformat', function() {
before(function() {
numeral.zeroFormat('N/A');
numeral.nullFormat('N/A');
});
after(function() {
numeral.reset();
});
it('should unformat a number', function() {
var tests = [
['10,000.123', 10000.123],
['(0.12345)', -0.12345],
['((--0.12345))', 0.12345],
['1.23t', 1230000000000],
['N/A', 0],
['', null],
// Pass Through for Numbers
[0, 0],
[1, 1],
[1.1, 1.1],
[-0, 0],
[-1, -1],
[-1.1, -1.1]
];
for (var i = 0; i < tests.length; i++) {
expect(numeral(tests[i][0]).value()).to.equal(tests[i][1]);
}
});
});
describe('Validate', function() {
var locale = 'en';
describe('Numbers', function() {
it('should validate numbers', function() {
var tests = [
['1000', true],
['1,000', true],
['10,0,0', true],
['10.123', true],
['1,000.123', true],
['1000,123.123', true],
['1000 ', true],
[' 1000 ', true],
[' 1000', true],
[' 1000,100.123', true],
['1.0,00', false],
['1.0.00', false],
['1 000', false],
['1.000,123', false],
['1000.', false],
['1000,', false],
['10..00', false],
['10,,00', false],
['10, 00', false]
];
for (var i = 0; i < tests.length; i++) {
expect(numeral.validate(tests[i][0], locale)).to.equal(tests[i][1]);
}
});
});
describe('Currency', function() {
it('should validate currency', function() {
var tests = [
['$1000', true],
['$1,000', true],
['$10,0,0', true],
['$10.123', true],
['$1,000.123', true],
['$1000 ', true],
[' $1000 ', true],
[' $1000', true],
[' $1000,100.123', true],
['$100.123k', true],
['$100.123m', true],
['$100.123b', true],
['$100.123t', true],
['100,456.123k', true],
[' 100,456.123t ', true],
['$1,00.123k', true],
['%100', false],
[' %1.0.00', false],
[' ^1 000 ', false],
['^1.000 ', false],
['$ 1000.', false],
['%1000', false],
['100,456.123z', false],
['$100$', false],
['$100,213.456l', false],
['aa100,213.456l', false],
['$100,213.456kk', false]
];
for (var i = 0; i < tests.length; i++) {
expect(numeral.validate(tests[i][0], locale)).to.equal(tests[i][1]);
}
});
});
});
describe('Manipulate', function() {
describe('Add', function() {
it('should add', function() {
var tests = [
[1000,10,1010],
[0.5,3,3.5],
[-100,200,100],
[0.1,0.2,0.3],
[0.28,0.01,0.29],
[0.289999,0.000001,0.29],
[0.29,0.01,0.3]
],
num;
for (var i = 0; i < tests.length; i++) {
num = numeral(tests[i][0]);
num.add(tests[i][1]);
expect(num.value()).to.equal(tests[i][2]);
}
});
});
describe('Subtract', function() {
it('should subtract', function() {
var tests = [
[1000,10,990],
[0.5,3,-2.5],
[-100,200,-300],
[0.3,0.1,0.2],
[0.28,0.01,0.27],
[0.29,0.01,0.28]
],
num;
for (var i = 0; i < tests.length; i++) {
num = numeral(tests[i][0]);
num.subtract(tests[i][1]);
expect(num.value()).to.equal(tests[i][2]);
}
});
});
describe('Add', function() {
it('should add', function() {
});
});
describe('Multiply', function() {
it('should multiply', function() {
var tests = [
[1000,10,10000],
[0.5,3,1.5],
[-100,200,-20000],
[0.1,0.2,0.02],
[0.28,0.01,0.0028],
[0.29,0.01,0.0029],
[0.00000231,10000000,23.1]
],
num;
for (var i = 0; i < tests.length; i++) {
num = numeral(tests[i][0]);
num.multiply(tests[i][1]);
expect(num.value()).to.equal(tests[i][2]);
}
});
});
describe('Divide', function() {
it('should divide', function() {
var tests = [
[1000,10,100],
[0.5,3,0.16666666666666666],
[-100,200,-0.5],
[5.3,0.1,53],
[0.28,0.01,28],
[0.29,0.01,29]
],
num;
for (var i = 0; i < tests.length; i++) {
num = numeral(tests[i][0]);
num.divide(tests[i][1]);
expect(num.value()).to.equal(tests[i][2]);
}
});
});
describe('Difference', function() {
it('should find a difference', function() {
var tests = [
[1000,10,990],
[0.5,3,2.5],
[-100,200,300],
[0.3,0.2,0.1],
[0.28,0.01,0.27],
[0.29,0.01,0.28]
],
num;
for (var i = 0; i < tests.length; i++) {
num = numeral(tests[i][0]);
expect(num.difference(tests[i][1])).to.equal(tests[i][2]);
}
});
});
describe('Rounding', function() {
it('should format with rounding', function() {
var tests = [
// value, format string, expected w/ floor, expected w/ ceil
[2280002, '0.00a', '2.28m', '2.29m'],
[10000.23,'0,0','10,000', '10,001'],
[1000.234,'0,0.00','1,000.23', '1,000.24'],
[0.97487823,'0.000','0.974','0.975'],
[-0.433,'0.0','-0.5', '-0.4']
],
i;
for (i = 0; i < tests.length; i++) {
// floor
expect(numeral(tests[i][0]).format(tests[i][1], Math.floor)).to.equal(tests[i][2]);
// ceil
expect(numeral(tests[i][0]).format(tests[i][1], Math.ceil)).to.equal(tests[i][3]);
}
});
});
});
describe('Utilities', function() {
describe('Insert', function() {
it('should insert into string', function() {
var tests = [
['1000', '+', 0, '+1000'],
['1000', '-', 4, '1000-']
],
i;
for (i = 0; i < tests.length; i++) {
expect(numeral._.insert(tests[i][0], tests[i][1], tests[i][2])).to.equal(tests[i][3]);
}
});
});
});
});