const libreria = require('./libreria.js');
// const assert = require('assert');
const assert = require('chai').assert;
const expect = require('chai').expect;
describe('Batería de test para libreria.js', function() {
describe('función metrosAPulgadas()', function() {
it('debe retornar number', () => {
assert.isNumber(libreria.metrosAPulgadas(1));
});
it('debe retornar valor en pulgadas correspondiente a 1 metro', () => {
assert.strictEqual(libreria.metrosAPulgadas(1), 39.3701);
});
});
describe('función binomioAlCuadrado()', function() {
it('debe retornar el cuadrado de la suma de 2 y 3', () => {
assert.strictEqual(libreria.binomioAlCuadrado(2,3), 25);
});
});
describe('función generarRGB()', function() {
it('debe retornar string', () => {
assert.isString(libreria.generarRGB());
});
it('debe retornar string con formato rgb(r,g,b)', () => {
expect(libreria.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', () => {
expect(libreria.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', () => {
expect(libreria.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', () => {
expect(libreria.tablaMultiplicarUL(numero)).to.match(regExp);
});
});
describe('función potencia()', function() {
it('debe retornar 2 elevado a 8', () => {
assert.strictEqual(libreria.potencia(2,8), 256);
});
it('debe retornar 10 elevado a 0', () => {
assert.strictEqual(libreria.potencia(10,0), 1);
});
});
describe('función factorial()', function() {
it('debe retornar factorial de 5', () => {
assert.strictEqual(libreria.factorial(5), 120);
});
it('debe retornar factorial de 0', () => {
assert.strictEqual(libreria.factorial(0), 1);
});
});
describe('función factorialRecursivo()', function() {
it('debe retornar factorial de 5', () => {
assert.strictEqual(libreria.factorialRecursivo(5), 120);
});
it('debe retornar factorial de 0', () => {
assert.strictEqual(libreria.factorialRecursivo(0), 1);
});
});
describe('función esInt()', function() {
it('debe retornar true al pasar 7 como parámetro', () => {
assert.isTrue(libreria.esInt(7));
});
it('debe retornar false al pasar 2.5 como parámetro', () => {
assert.isFalse(libreria.esInt(2.5));
});
it('debe retornar false al pasar "int" como parámetro', () => {
assert.isFalse(libreria.esInt("int"));
});
});
describe('función esImpar()', function() {
it('debe retornar true al pasar 3 como parámetro', () => {
assert.isTrue(libreria.esImpar(3));
});
it('debe retornar false al pasar 2 como parámetro', () => {
assert.isFalse(libreria.esImpar(2));
});
it('debe retornar false al pasar "2.5" como parámetro', () => {
assert.isFalse(libreria.esImpar(2.5));
});
it('debe retornar false al pasar "impar" como parámetro', () => {
assert.isFalse(libreria.esImpar("impar"));
});
it('debe retornar false al pasar "" como parámetro', () => {
assert.isFalse(libreria.esImpar(""));
});
it('debe retornar false al pasar null como parámetro', () => {
assert.isFalse(libreria.esImpar(null));
});
});
describe('función esImparV2()', function() {
it('debe retornar true al pasar 3 como parámetro', () => {
assert.isTrue(libreria.esImparV2(3));
});
it('debe retornar false al pasar 2 como parámetro', () => {
assert.isFalse(libreria.esImparV2(2));
});
it('debe retornar false al pasar "2.5" como parámetro', () => {
assert.isFalse(libreria.esImparV2(2.5));
});
it('debe retornar false al pasar "impar" como parámetro', () => {
assert.isFalse(libreria.esImparV2("impar"));
});
it('debe retornar false al pasar "" como parámetro', () => {
assert.isFalse(libreria.esImparV2(""));
});
it('debe retornar false al pasar null como parámetro', () => {
assert.isFalse(libreria.esImparV2(null));
});
});
});