Skip to content

Commit

Permalink
Implementa testes unitários de valores para o método contraste()
Browse files Browse the repository at this point in the history
  • Loading branch information
VitBrandao committed Mar 28, 2024
1 parent e86aada commit a417b70
Show file tree
Hide file tree
Showing 2 changed files with 69 additions and 4 deletions.
6 changes: 6 additions & 0 deletions testes/listas/metodos.ts
Original file line number Diff line number Diff line change
Expand Up @@ -67,6 +67,11 @@ export const MetodoGradienteLinear: Array<string> = [
'conteúdo',
];

export const MetodoContraste: Array<string> = [
'filtro',
];


export const TraducaoValoresMetodos: Object = {
'altura-maxima': 'max-height',
'altura-máxima': 'max-height',
Expand Down Expand Up @@ -106,4 +111,5 @@ export const TraducaoValoresMetodos: Object = {
'origem-imagem-borda': 'border-image-source',
'conteudo': 'content',
'conteúdo': 'content',
'filtro': 'filter',
}
67 changes: 63 additions & 4 deletions testes/modificadores/metodos.test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ import { AvaliadorSintaticoInterface, ImportadorInterface, LexadorInterface } fr
import { Lexador } from "../../fontes/lexador";
import tiposDeSimbolos from "../../fontes/tipos-de-simbolos/foles";
import { Serializador } from "../../fontes/serializadores";
import { MetodoCalcular, MetodoCurvaCubica, MetodoEncaixarConteudo, MetodoGradienteLinear, MetodoLimitar, MetodoLinear, MetodoMinMax, MetodoPassos, TraducaoValoresMetodos } from "../listas/metodos";
import { MetodoCalcular, MetodoContraste, MetodoCurvaCubica, MetodoEncaixarConteudo, MetodoGradienteLinear, MetodoLimitar, MetodoLinear, MetodoMinMax, MetodoPassos, TraducaoValoresMetodos } from "../listas/metodos";

describe('Testando Seletores que recebem MÉTODOS como valor', () => {
describe('Testes Unitários', () => {
Expand Down Expand Up @@ -419,9 +419,9 @@ describe('Testando Seletores que recebem MÉTODOS como valor', () => {
case 'superior':
expect(resultadoTradutor).toContain('linear-gradient(0deg, blue, red);');
break;
case 'direita':
expect(resultadoTradutor).toContain('linear-gradient(90deg, blue, red);');
break;
case 'direita':
expect(resultadoTradutor).toContain('linear-gradient(90deg, blue, red);');
break;
case 'inferior':
expect(resultadoTradutor).toContain('linear-gradient(180deg, blue, red);');
break;
Expand All @@ -434,5 +434,64 @@ describe('Testando Seletores que recebem MÉTODOS como valor', () => {
}
}
});

it('Atribuindo Método "contrast()"', () => {
for (let index = 0; index < MetodoContraste.length; index += 1) {

const valoresAceitos = ['100px', '100%', '0.1', '0', '1', '1.75'];

for (let valIndex = 0; valIndex < valoresAceitos.length; valIndex += 1) {
// Lexador
const resultadoLexador = lexador.mapear([
"lmht {",
`${MetodoContraste[index]}: contraste(${valoresAceitos[valIndex]});`,
"}"
]);

// O Lexador deve montar um objeto de comprimento 11 caso haja quantificador e 10 caso não haja
if (valIndex === 0 || valIndex === 1) {
expect(resultadoLexador.simbolos).toHaveLength(11);
expect(resultadoLexador.simbolos).toEqual(
expect.arrayContaining([
expect.objectContaining({ tipo: tiposDeSimbolos.NUMERO }),
expect.objectContaining({ tipo: tiposDeSimbolos.QUANTIFICADOR }),
])
);
} else {
expect(resultadoLexador.simbolos).toHaveLength(10);
expect(resultadoLexador.simbolos).toEqual(
expect.arrayContaining([
expect.objectContaining({ tipo: tiposDeSimbolos.NUMERO }),
])
);
}

// O Lexador não deve encontrar erros
expect(resultadoLexador.erros).toHaveLength(0);

// O valor recebido deve ser mapeado como METODO
expect(resultadoLexador.simbolos).toEqual(
expect.arrayContaining([
expect.objectContaining({ tipo: tiposDeSimbolos.METODO }),
])
);


// Avaliador Sintático
const resultadoAvaliadorSintatico = avaliador.analisar(resultadoLexador.simbolos);

// O Avaliador deve montar um objeto com os devidos nomes FolEs e CSS
expect(resultadoAvaliadorSintatico[0].modificadores[0].propriedadeCss).toStrictEqual(
TraducaoValoresMetodos[MetodoContraste[index]]
);

// Tradutor
const resultadoTradutor = tradutor.serializar(resultadoAvaliadorSintatico);

expect(resultadoTradutor).toContain(TraducaoValoresMetodos[MetodoContraste[index]]);
expect(resultadoTradutor).toContain(`contrast(${valoresAceitos[valIndex]});`);
}
}
});
});
});

0 comments on commit a417b70

Please sign in to comment.