diff --git a/testes/listas/metodos.ts b/testes/listas/metodos.ts index 681c9dd..55977d3 100644 --- a/testes/listas/metodos.ts +++ b/testes/listas/metodos.ts @@ -67,6 +67,11 @@ export const MetodoGradienteLinear: Array = [ 'conteúdo', ]; +export const MetodoContraste: Array = [ + 'filtro', +]; + + export const TraducaoValoresMetodos: Object = { 'altura-maxima': 'max-height', 'altura-máxima': 'max-height', @@ -106,4 +111,5 @@ export const TraducaoValoresMetodos: Object = { 'origem-imagem-borda': 'border-image-source', 'conteudo': 'content', 'conteúdo': 'content', + 'filtro': 'filter', } diff --git a/testes/modificadores/metodos.test.ts b/testes/modificadores/metodos.test.ts index 131e54d..46545bd 100644 --- a/testes/modificadores/metodos.test.ts +++ b/testes/modificadores/metodos.test.ts @@ -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', () => { @@ -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; @@ -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]});`); + } + } + }); }); });