number-2-letters
Version:
Convert numbers to words - their written form.
325 lines (283 loc) • 12.3 kB
JavaScript
; /* global describe, it, before */
var should = require('should');
var writtenNumber = require('..');
describe('written-number', function() {
describe('writtenNumber(n, { lang: \'en\', ... })', function() {
before(function() {
writtenNumber.defaults.lang = 'en';
});
it('gets exposed', function() {
should.exist(writtenNumber);
writtenNumber.should.be.instanceof(Function);
});
it('doesn\'t blow up weirdly with invalid input', function() {
writtenNumber('asdfasdfasdf').should.equal('');
writtenNumber('0.as').should.equal('');
writtenNumber('0.123').should.equal('zero');
writtenNumber('0.8').should.equal('one');
writtenNumber('2.8').should.equal('three');
writtenNumber('asdf.8').should.equal('');
writtenNumber('120391938123..').should.equal('');
writtenNumber('1000000000.123').should.equal('one billion');
writtenNumber('1/3').should.equal('');
writtenNumber(1/3).should.equal('zero');
writtenNumber('1/2').should.equal('');
writtenNumber('1.123/2').should.equal('');
});
it('correctly converts numbers < 10', function() {
writtenNumber(1000000000).should.equal('one billion');
writtenNumber(3).should.equal('three');
writtenNumber(8).should.equal('eight');
});
it('correctly converts numbers < 20', function() {
writtenNumber(13).should.equal('thirteen');
writtenNumber(19).should.equal('nineteen');
});
it('correctly converts numbers < 100', function() {
writtenNumber(20).should.equal('twenty');
writtenNumber(25).should.equal('twenty-five');
writtenNumber(88).should.equal('eighty-eight');
writtenNumber(73).should.equal('seventy-three');
});
it('correctly converts numbers < 1000', function() {
writtenNumber(200).should.equal('two hundred');
writtenNumber(242).should.equal('two hundred and forty-two');
writtenNumber(1234).should.equal(
'one thousand two hundred and thirty-four'
);
writtenNumber(4323).should.equal(
'four thousand three hundred and twenty-three'
);
});
it('correctly converts numbers > 1000', function() {
writtenNumber(4323000).should.equal(
'four million three hundred twenty-three thousand'
);
writtenNumber(4323055).should.equal(
'four million three hundred twenty-three thousand and fifty-five'
);
writtenNumber(1570025).should.equal(
'one million five hundred seventy thousand and twenty-five'
);
});
it('correctly converts numbers > 1 000 000 000', function() {
writtenNumber(1000000000).should.equal('one billion');
writtenNumber(2580000000).should.equal(
'two billion five hundred eighty million'
);
writtenNumber(1000000000000).should.equal('one trillion');
writtenNumber(3627000000000).should.equal(
'three trillion six hundred twenty-seven billion'
);
});
});
describe('writtenNumber(n, { lang: \'es\', ... })', function() {
before(function() {
writtenNumber.defaults.lang = 'es';
});
it('gets exposed', function() {
should.exist(writtenNumber);
writtenNumber.should.be.instanceof(Function);
});
it('correctly converts numbers < 10', function() {
writtenNumber(3).should.equal('tres');
writtenNumber(8).should.equal('ocho');
});
it('correctly converts numbers < 20', function() {
writtenNumber(13).should.equal('trece');
writtenNumber(16).should.equal('dieciséis');
writtenNumber(19).should.equal('diecinueve');
});
it('correctly converts numbers < 100', function() {
writtenNumber(20).should.equal('veinte');
writtenNumber(25).should.equal('veinticinco');
writtenNumber(88).should.equal('ochenta y ocho');
writtenNumber(73).should.equal('setenta y tres');
});
it('correctly converts numbers < 1000', function() {
writtenNumber(144).should.equal('ciento cuarenta y cuatro');
writtenNumber(200).should.equal('doscientos');
writtenNumber(1234).should.equal('mil doscientos treinta y cuatro');
writtenNumber(4323).should.equal('cuatro mil trescientos veintitrés');
writtenNumber(242).should.equal('doscientos cuarenta y dos');
});
it('correctly converts numbers > 1000', function() {
writtenNumber(4323000).should.equal(
'cuatro millones trescientos veintitrés mil'
);
writtenNumber(4323055).should.equal(
'cuatro millones trescientos veintitrés mil cincuenta y cinco'
);
writtenNumber(1570025).should.equal(
'un millón quinientos setenta mil veinticinco'
);
});
it('correctly converts numbers > 1 000 000 000', function() {
writtenNumber(1000000000).should.equal('mil millones');
writtenNumber(2580000000).should.equal(
'dos mil quinientos ochenta millones'
);
writtenNumber(1000000000000).should.equal('un billón');
writtenNumber(3627000000000).should.equal(
'tres billones seiscientos veintisiete mil millones'
);
});
});
describe('writtenNumber(n, { lang: \'pt\', ... })', function() {
before(function() {
writtenNumber.defaults.lang = 'pt';
});
it('gets exposed', function() {
should.exist(writtenNumber);
writtenNumber.should.be.instanceof(Function);
});
it('correctly converts numbers < 10', function() {
writtenNumber(3).should.equal('três');
writtenNumber(8).should.equal('oito');
});
it('correctly converts numbers < 20', function() {
writtenNumber(13).should.equal('treze');
writtenNumber(19).should.equal('dezenove');
});
it('correctly converts numbers < 100', function() {
writtenNumber(20).should.equal('vinte');
writtenNumber(25).should.equal('vinte e cinco');
writtenNumber(88).should.equal('oitenta e oito');
writtenNumber(73).should.equal('setenta e três');
});
it('correctly converts numbers < 1000', function() {
writtenNumber(144).should.equal('cento e quarenta e quatro');
writtenNumber(200).should.equal('duzentos');
writtenNumber(1234).should.equal('mil duzentos e trinta e quatro');
writtenNumber(4323).should.equal('quatro mil trezentos e vinte e três');
writtenNumber(242).should.equal('duzentos e quarenta e dois');
});
it('correctly converts numbers > 1000', function() {
writtenNumber(4323000).should.equal(
'quatro milhões trezentos e vinte e três mil'
);
writtenNumber(4323055).should.equal(
'quatro milhões trezentos e vinte e três mil e cinquenta e cinco'
);
writtenNumber(1570025).should.equal(
'um milhão quinhentos e setenta mil e vinte e cinco'
);
});
it('correctly converts numbers > 1 000 000 000', function() {
writtenNumber(1000000000).should.equal('um bilhão');
writtenNumber(2580000000).should.equal(
'dois bilhões quinhentos e oitenta milhões'
);
writtenNumber(1000000000000000).should.equal('um quadrilhão');
writtenNumber(3627000000000).should.equal(
'três trilhões seiscentos e vinte e sete bilhões'
);
});
});
describe('writtenNumber(n, { lang: \'fr\', ... })', function() {
before(function() {
writtenNumber.defaults.lang = 'fr';
});
it('gets exposed', function() {
should.exist(writtenNumber);
writtenNumber.should.be.instanceof(Function);
});
it('correctly converts numbers < 10', function() {
writtenNumber(3).should.equal('trois');
writtenNumber(8).should.equal('huit');
});
it('correctly converts numbers < 20', function() {
writtenNumber(13).should.equal('treize');
writtenNumber(19).should.equal('dix-neuf');
});
it('correctly converts numbers < 100', function() {
writtenNumber(20).should.equal('vingt');
writtenNumber(25).should.equal('vingt-cinq');
writtenNumber(73).should.equal('soixante-treize');
writtenNumber(80).should.equal('quatre-vingts');
writtenNumber(88).should.equal('quatre-vingt-huit');
writtenNumber(90).should.equal('quatre-vingt-dix');
writtenNumber(91).should.equal('quatre-vingt-onze');
});
it('correctly converts numbers < 1000', function() {
writtenNumber(100).should.equal('cent');
writtenNumber(110).should.equal('cent dix');
writtenNumber(200).should.equal('deux cents');
writtenNumber(242).should.equal('deux cent quarante-deux');
});
it('correctly converts numbers > 1000', function() {
writtenNumber(1234).should.equal('mille deux cent trente-quatre');
writtenNumber(4000).should.equal('quatre mille');
writtenNumber(4323).should.equal('quatre mille trois cent vingt-trois');
writtenNumber(1000000).should.equal('un million');
writtenNumber(2000000).should.equal('deux millions');
writtenNumber(2000001).should.equal('deux millions un');
writtenNumber(4323000).should.equal('quatre millions trois cent vingt-trois mille');
writtenNumber(4323055).should.equal('quatre millions trois cent vingt-trois mille cinquante-cinq');
writtenNumber(1570025).should.equal('un million cinq cent soixante-dix mille vingt-cinq');
});
it('correctly converts numbers > 1 000 000 000', function() {
writtenNumber(1000000000).should.equal('un milliard');
writtenNumber(2580000000).should.equal(
'deux milliards cinq cent quatre-vingts millions'
);
writtenNumber(1000000000000).should.equal('un billion');
writtenNumber(3627000000000).should.equal(
'trois billions six cent vingt-sept milliards'
);
});
});
describe('writtenNumber(n, { lang: \'it\', ... })', function() {
before(function() {
writtenNumber.defaults.lang = 'it';
});
it('gets exposed', function() {
should.exist(writtenNumber);
writtenNumber.should.be.instanceof(Function);
});
it('correctly converts numbers < 10', function() {
writtenNumber(3).should.equal('tre');
writtenNumber(8).should.equal('otto');
});
it('correctly converts numbers < 20', function() {
writtenNumber(13).should.equal('tredici');
writtenNumber(19).should.equal('diciannove');
});
it('correctly converts numbers < 100', function() {
writtenNumber(20).should.equal('venti');
writtenNumber(23).should.equal('ventitré');
writtenNumber(73).should.equal('settantatré');
writtenNumber(80).should.equal('ottanta');
writtenNumber(88).should.equal('ottantotto');
writtenNumber(90).should.equal('novanta');
writtenNumber(91).should.equal('novantuno');
});
it('correctly converts numbers < 1000', function() {
writtenNumber(100).should.equal('cento');
writtenNumber(101).should.equal('centuno');
writtenNumber(201).should.equal('duecentuno');
writtenNumber(242).should.equal('due cento quarantadue');
});
it('correctly converts numbers > 1000', function() {
writtenNumber(1234).should.equal('mille due cento trentaquattro');
writtenNumber(4000).should.equal('quattro mila');
writtenNumber(4323).should.equal('quattro mila tre cento ventitré');
writtenNumber(1000000).should.equal('un milione');
writtenNumber(2000000).should.equal('due milioni');
writtenNumber(2000001).should.equal('due milioni un');
writtenNumber(4323000).should.equal('quattro milioni tre cento ventitré mila');
writtenNumber(4323055).should.equal('quattro milioni tre cento ventitré mila cinquantacinque');
writtenNumber(1570025).should.equal('un milione cinque cento settanta mila venticinque');
});
it('correctly converts numbers > 1 000 000 000', function() {
writtenNumber(1000000000).should.equal('un miliardo');
writtenNumber(2580000000).should.equal(
'due miliardi cinque cento ottanta milioni'
);
writtenNumber(1000000000000).should.equal('un bilione');
writtenNumber(3627000000000).should.equal(
'tre bilioni sei cento ventisette miliardi'
);
});
});
});