From d344373c5f7b36cd5bce70c55a164bb2f828719e Mon Sep 17 00:00:00 2001 From: VitBrandao Date: Thu, 21 Nov 2024 15:54:15 -0300 Subject: [PATCH] =?UTF-8?q?Implementa=20testes=20de=20tradu=C3=A7=C3=A3o?= =?UTF-8?q?=20reversa=20de=20modificadores?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- testes/listas/traducao-reversa.ts | 66 +++++++++++++++++++++++++++++ testes/serializador-reverso.test.ts | 34 ++++++++++++--- 2 files changed, 95 insertions(+), 5 deletions(-) create mode 100644 testes/listas/traducao-reversa.ts diff --git a/testes/listas/traducao-reversa.ts b/testes/listas/traducao-reversa.ts new file mode 100644 index 0000000..e5ccf46 --- /dev/null +++ b/testes/listas/traducao-reversa.ts @@ -0,0 +1,66 @@ +export const TraducaoReversa: Array = [ + { + foles: 'estender-borda-imagem', + css: 'border-image-outset', + }, + { + foles: 'deslocar-contorno', + css: 'outline-offset', + }, + { + foles: 'largura-contorno', + css: 'outline-width', + }, + { + foles: 'recortar-margem-vazada', + css: 'overflow-clip-margin', + }, + { + foles: 'perspectiva', + css: 'perspective', + }, + { + foles: 'margem-inferior-rolagem-mouse', + css: 'scroll-margin-bottom', + }, + { + foles: 'margem-esquerda-rolagem-mouse', + css: 'scroll-margin-left', + }, + { + foles: 'margem-direita-rolagem-mouse', + css: 'scroll-margin-right', + }, + { + foles: 'margem-superior-rolagem-mouse', + css: 'scroll-margin-top', + }, + { + foles: 'tabulacao', + css: 'tab-size', + }, + { + foles: 'tabulação', + css: 'tab-size', + }, + { + foles: 'espacamento-palavras', + css: 'word-spacing', + }, + { + foles: 'espaçamento-palavras', + css: 'word-spacing', + }, + { + foles: 'raio-borda', + css: 'border-radius', + }, + { + foles: 'recuo', + css: 'padding', + }, + { + foles: 'regras-coluna', + css: 'column-rules', + }, +]; \ No newline at end of file diff --git a/testes/serializador-reverso.test.ts b/testes/serializador-reverso.test.ts index ab0e75e..d00ad93 100644 --- a/testes/serializador-reverso.test.ts +++ b/testes/serializador-reverso.test.ts @@ -1,10 +1,10 @@ import { AvaliadorSintaticoReverso } from "../fontes/avaliador-sintatico/avaliador-sintatico-reverso"; import { LexadorReverso } from "../fontes/lexador/lexador-reverso"; import { SerializadorReverso } from "../fontes/serializadores/serializador-reverso"; - import estruturasLmht from "../fontes/tradutores/estruturas-lmht"; import { AvaliadorSintaticoInterface, ImportadorInterface, LexadorInterface } from "../fontes/interfaces"; import { Importador } from "../fontes/importador"; +import { TraducaoReversa } from "./listas/traducao-reversa"; describe('Serializador Reverso', () => { let lexadorReverso: LexadorInterface; @@ -19,24 +19,23 @@ describe('Serializador Reverso', () => { serializadorReverso = new SerializadorReverso(); }); - // TODO: Finalizar a lógica em `declaracaoPorSeletor()` (avaliador sintático reverso) it('Testando tradução das estruturas HTML', () => { for (let index = 0; index < Object.keys(estruturasLmht).length; index += 1) { - + // Lexador recebe as estruturas FolEs const resultadoLexador = lexadorReverso.mapear([ `${Object.keys(estruturasLmht)[index]} {`, " font-size: 60px;", "}" ]) - + // Lexador deve montar um objeto de 8 símbolos sem retornar erros expect(resultadoLexador.simbolos).toHaveLength(8); expect(resultadoLexador.erros).toHaveLength(0); // Avaliador Sintático const resultadoAvaliadorSintatico = avaliadorReverso.analisar(resultadoLexador.simbolos); - + // Tradutor deve retornar a estrutura HTML correspondente const resultadoSerializador = serializadorReverso.serializar(resultadoAvaliadorSintatico); @@ -49,4 +48,29 @@ describe('Serializador Reverso', () => { } } }); + + // TODO: Finalizar a lógica em `declaracaoPorSeletor()` (avaliador sintático reverso) para testes abaixo funcionarem + it.skip('Testando tradução reversa dos modificadores', () => { + for (let index = 0; index < Object.keys(TraducaoReversa).length; index += 1) { + + // Lexador recebe as estruturas FolEs + const resultadoLexador = lexadorReverso.mapear([ + `lmht {`, + ` ${TraducaoReversa[index]['css']}: 60px;`, + "}" + ]) + + // Lexador deve montar um objeto de 8 símbolos sem retornar erros + expect(resultadoLexador.simbolos).toHaveLength(8); + expect(resultadoLexador.erros).toHaveLength(0); + + // Avaliador Sintático + const resultadoAvaliadorSintatico = avaliadorReverso.analisar(resultadoLexador.simbolos); + + // Tradutor deve retornar a estrutura HTML correspondente + const resultadoSerializador = serializadorReverso.serializar(resultadoAvaliadorSintatico); + + expect(resultadoSerializador).toContain(TraducaoReversa[index]['foles']); + } + }); }); \ No newline at end of file