UNPKG

@designliquido/foles

Version:

Linguagem de folhas de estilo para documentos em geral em português

77 lines 4.44 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); const avaliador_sintatico_1 = require("../fontes/avaliador-sintatico"); const declaracoes_1 = require("../fontes/declaracoes"); const importador_1 = require("../fontes/importador"); const lexador_1 = require("../fontes/lexador"); const superclasse_1 = require("../fontes/modificadores/superclasse"); const serializadores_1 = require("../fontes/serializadores"); const valor_quantificador_1 = require("./listas/valor-quantificador"); describe('Avaliador Sintático', () => { let lexador; let importador; let avaliadorSintatico; let tradutor; beforeEach(() => { lexador = new lexador_1.Lexador(); importador = new importador_1.Importador(lexador); avaliadorSintatico = new avaliador_sintatico_1.AvaliadorSintatico(importador); tradutor = new serializadores_1.Serializador(); }); it('Casos de sucesso - testando seletores valor-quantificador', () => { for (let index = 0; index < valor_quantificador_1.ValorQuantificador.length; index += 1) { const seletor = new superclasse_1.SeletorModificador(valor_quantificador_1.ValorQuantificador[index], '25', 'px'); // Lexador const resultadoLexador = lexador.mapear([ "lmht {", `${valor_quantificador_1.ValorQuantificador[index]}: ${seletor['valor']}${seletor['quantificador']};`, "}" ]); // Avaliador Sintático const resultadoAvaliadorSintatico = avaliadorSintatico.analisar(resultadoLexador.simbolos); expect(resultadoAvaliadorSintatico).toBeTruthy(); expect(resultadoAvaliadorSintatico).toHaveLength(1); // O Avaliador deve montar um objeto com os devidos nomes FolEs e CSS expect(resultadoAvaliadorSintatico.length).toBeGreaterThanOrEqual(1); const primeiroResultado = resultadoAvaliadorSintatico[0]; expect(primeiroResultado).toBeInstanceOf(declaracoes_1.BlocoDeclaracao); const primeiroResultadoTipado = primeiroResultado; expect(primeiroResultadoTipado.modificadores.length).toBeGreaterThanOrEqual(1); expect(primeiroResultadoTipado.seletores[0]['estrutura'].tagHtml).toBe('html'); expect(primeiroResultadoTipado.seletores[0]['pseudoclasse']).toBe(undefined); expect(primeiroResultadoTipado.modificadores[0].nomeFoles).toStrictEqual(seletor['nomeFoles']); expect(primeiroResultadoTipado.modificadores[0].propriedadeCss).toStrictEqual(seletor['propriedadeCss']); expect(primeiroResultadoTipado.modificadores[0].valor).toStrictEqual('25'); expect(primeiroResultadoTipado.modificadores[0].quantificador).toStrictEqual('px'); // O resultado do Avaliador deve ser recebido corretamente pelo Tradutor const resultadoTradutor = tradutor.serializar(resultadoAvaliadorSintatico); expect(resultadoTradutor).toBeTruthy(); } }); it('Casos de Falha - mensagens de erro esperadas como retorno', () => { for (let index = 0; index < Object.keys(valor_quantificador_1.ValorQuantificador).length; index += 1) { // Lexador - valor e quantificador não informados let resultadoLexador = lexador.mapear([ "lmht {", `${valor_quantificador_1.ValorQuantificador[index]}: ;`, "}" ]); // Avaliador Sintático deve retornar erro expect(() => { avaliadorSintatico.analisar(resultadoLexador.simbolos); }).toThrow(`Esperado ';' após declaração de valor de modificador '${valor_quantificador_1.ValorQuantificador[index]}'.`); // Causar erro de digitação const seletorIncorreto = valor_quantificador_1.ValorQuantificador[index].replace(valor_quantificador_1.ValorQuantificador[index][0], ''); resultadoLexador = lexador.mapear([ "lmht {", `${seletorIncorreto}: 12px;`, "}" ]); // Erro esperado como retorno - seletor não encontrado expect(() => { avaliadorSintatico.analisar(resultadoLexador.simbolos); }).toThrow(`O seletor '${seletorIncorreto}' não existe.`); } }); }); //# sourceMappingURL=avaliador-sintatico.test.js.map