describe('Batería de test para libreria.js', function(done) {
let inputNumber, inputInteger, inputFloat;
this.timeout(60000);
before(function() {
inputNumber = promptNumero();
inputInteger = promptEntero();
inputFloat = promptFloat();
});
describe('función metrosAPulgadas()', function() {
it('debe retornar number', () => {
chai.assert.isNumber(metrosAPulgadas(1));
});
it('debe retornar valor en pulgadas correspondiente a 1 metro', () => {
chai.assert.strictEqual(metrosAPulgadas(1), 39.3701);
});
});
describe('función binomioAlCuadrado()', function() {
it('debe retornar el cuadrado de la suma de 2 y 3', () => {
chai.assert.strictEqual(binomioAlCuadrado(2,3), 25);
});
});
describe('función generarRGB()', function() {
it('debe retornar string', () => {
chai.assert.isString(generarRGB());
});
it('debe retornar string con formato rgb(r,g,b)', () => {
chai.expect(generarRGB()).to.match(/^rgb\((25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9]?[0-9]),(25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9]?[0-9]),(25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9]?[0-9])\)$/);
});
});
describe('función generarRGBHex()', function() {
it('debe retornar string con formato color hexadecimal', () => {
chai.expect(generarRGBHex()).to.match(/^#([A-Fa-f0-9]{6})/);
});
});
describe('función tablaMultiplicar()', function() {
let numero;
let regExp;
before(function() {
numero = Math.round(Math.random() * 10);
regExp = new RegExp(`\\s*(${numero} ?[x|X|*] ?\\d{1,} ?= ?\\d{1,}\\s*){9,}`, "g");
});
it('debe retornar un string de la tabla de multiplicar de un número entero', () => {
chai.expect(tablaMultiplicar(numero)).to.match(regExp);
});
});
describe('función tablaMultiplicarUL()', function() {
let numero;
let regExp;
before(function() {
numero = Math.round(Math.random() * 10);
regExp = new RegExp(`^
\\s?((\\s*- ${numero} ?[x|X|*] ?\\d{1,} ?= ?\\d{1,}
\\s?){9,})\\s?
$`, "g");
});
it('debe retornar un string de la tabla de multiplicar de un número entero en formato lista desordenada HTML', () => {
chai.expect(tablaMultiplicarUL(numero)).to.match(regExp);
});
});
describe('función potencia()', function() {
it('debe retornar 2 elevado a 8', () => {
chai.assert.strictEqual(potencia(2,8), 256);
});
it('debe retornar 10 elevado a 0', () => {
chai.assert.strictEqual(potencia(10,0), 1);
});
});
describe('función factorial()', function() {
it('debe retornar factorial de 5', () => {
chai.assert.strictEqual(factorial(5), 120);
});
it('debe retornar factorial de 0', () => {
chai.assert.strictEqual(factorial(0), 1);
});
});
describe('función factorialRecursivo()', function() {
it('debe retornar factorial de 5', () => {
chai.assert.strictEqual(factorialRecursivo(5), 120);
});
it('debe retornar factorial de 0', () => {
chai.assert.strictEqual(factorialRecursivo(0), 1);
});
});
describe('función esInt()', function() {
it('debe retornar true al pasar 7 como parámetro', () => {
chai.assert.isTrue(esInt(7));
});
it('debe retornar false al pasar 2.5 como parámetro', () => {
chai.assert.isFalse(esInt(2.5));
});
it('debe retornar false al pasar "int" como parámetro', () => {
chai.assert.isFalse(esInt("int"));
});
});
describe('función esImpar()', function() {
it('debe retornar true al pasar 3 como parámetro', () => {
chai.assert.isTrue(esImpar(3));
});
it('debe retornar false al pasar 2 como parámetro', () => {
chai.assert.isFalse(esImpar(2));
});
it('debe retornar false al pasar "2.5" como parámetro', () => {
chai.assert.isFalse(esImpar(2.5));
});
it('debe retornar false al pasar "impar" como parámetro', () => {
chai.assert.isFalse(esImpar("impar"));
});
it('debe retornar false al pasar "" como parámetro', () => {
chai.assert.isFalse(esImpar(""));
});
it('debe retornar false al pasar null como parámetro', () => {
chai.assert.isFalse(esImpar(null));
});
});
describe('función esImparV2()', function() {
it('debe retornar true al pasar 3 como parámetro', () => {
chai.assert.isTrue(esImparV2(3));
});
it('debe retornar false al pasar 2 como parámetro', () => {
chai.assert.isFalse(esImparV2(2));
});
it('debe retornar false al pasar "2.5" como parámetro', () => {
chai.assert.isFalse(esImparV2(2.5));
});
it('debe retornar false al pasar "impar" como parámetro', () => {
chai.assert.isFalse(esImparV2("impar"));
});
it('debe retornar false al pasar "" como parámetro', () => {
chai.assert.isFalse(esImparV2(""));
});
it('debe retornar false al pasar null como parámetro', () => {
chai.assert.isFalse(esImparV2(null));
});
});
describe('función promptNumero()', function() {
it('debe retornar número si usuario introduce número', () => {
chai.assert.isNumber(inputNumber);
});
it('debe retornar null si usuario no introduce nada o cancela', () => {
chai.expect(inputNumber).to.be.null;
});
});
describe('función promptEntero()', function() {
it('debe retornar número entero si usuario introduce número entero', () => {
chai.expect(inputInteger).to.not.be.null;
chai.expect(inputInteger % 1).to.equal(0);
});
it('debe retornar null si usuario no introduce nada o cancela', () => {
chai.expect(inputInteger).to.be.null;
});
});
describe('función promptFloat()', function() {
it('debe retornar número decimal si usuario introduce número decimal', () => {
chai.expect(inputFloat).to.not.be.null;
chai.expect(inputFloat % 1).to.not.equal(0);
});
it('debe retornar null si usuario no introduce nada o cancela', () => {
chai.expect(inputFloat).to.be.null;
});
});
done();
});