UNPKG

@designliquido/foles

Version:

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

88 lines 4.96 kB
"use strict"; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); const avaliador_sintatico_1 = require("../../fontes/avaliador-sintatico"); const importador_1 = require("../../fontes/importador"); const lexador_1 = require("../../fontes/lexador"); const foles_1 = __importDefault(require("../../fontes/tipos-de-simbolos/foles")); const serializadores_1 = require("../../fontes/serializadores"); const pseudoclasses_1 = require("../listas/pseudoclasses"); const declaracoes_1 = require("../../fontes/declaracoes"); const seletor_pseudoclasse_1 = require("../../fontes/pseudoclasses/seletor-pseudoclasse"); describe('Testando Seletores com PSEUDOCLASSES', () => { describe('Testes Unitários', () => { let lexador; let importador; let avaliador; let tradutor; beforeEach(() => { lexador = new lexador_1.Lexador(); importador = new importador_1.Importador(lexador); avaliador = new avaliador_sintatico_1.AvaliadorSintatico(importador); tradutor = new serializadores_1.Serializador(); }); it('Caso de sucesso - Lexador, Avaliador e Tradutor', () => { for (let index = 0; index < pseudoclasses_1.Pseudoclasses.length; index += 1) { // Lexador const resultadoLexador = lexador.mapear([ `divisão:${pseudoclasses_1.Pseudoclasses[index]} {`, 'tamanho-fonte: 12px;', "}" ]); // O Lexador deve montar um objeto de comprimento 7 sem retornar nenhum erro expect(resultadoLexador.simbolos).toHaveLength(10); expect(resultadoLexador.erros).toHaveLength(0); // O Lexador deve mapear o tipo de símbolo Pseudoclasse expect(resultadoLexador.simbolos).toEqual(expect.arrayContaining([ expect.objectContaining({ tipo: foles_1.default.PSEUDO_CLASSE }), ])); // Avaliador Sintático const resultadoAvaliadorSintatico = avaliador.analisar(resultadoLexador.simbolos); // 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); // Serializador const resultadoTradutor = tradutor.serializar(resultadoAvaliadorSintatico); // O Serializador deve traduzir devidamente os termos expect(resultadoTradutor).toContain('div'); expect(resultadoTradutor).toContain(primeiroResultadoTipado.seletores[0].pseudoclasse.pseudoclasseCss); expect(resultadoTradutor).toContain('12px;'); } }); it('Caso de falha - Pseudoclasse inexistente', () => { for (let index = 0; index < pseudoclasses_1.Pseudoclasses.length; index += 1) { // Causar erro de digitação const pseudoclasseIncorreta = pseudoclasses_1.Pseudoclasses[index].replace(pseudoclasses_1.Pseudoclasses[index][0], ''); // Lexador const resultadoLexador = lexador.mapear([ `divisão:${pseudoclasseIncorreta} {`, 'tamanho-fonte: 12px;', "}" ]); // Avaliador Sintático - Erro esperado como retorno expect(() => { avaliador.analisar(resultadoLexador.simbolos); }).toThrow('Esperado nome de pseudoclasse'); // Serializador - Não deve traduzir devido ao erro do Avaliador Sintático expect(() => { tradutor.serializar(avaliador.analisar(resultadoLexador.simbolos)); }).toHaveLength(0); } }); it('Caso de falha - Erro ao instanciar classe SeletorPseudoclasse', () => { for (let index = 0; index < pseudoclasses_1.Pseudoclasses.length; index += 1) { // Causar erro de digitação const pseudoclasseIncorreta = pseudoclasses_1.Pseudoclasses[index].replace(pseudoclasses_1.Pseudoclasses[index][0], ''); expect(() => { new seletor_pseudoclasse_1.SeletorPseudoclasse(pseudoclasseIncorreta); }).toThrow(`A pseudoclasse \'${pseudoclasseIncorreta}\' não existe.`); } }); }); }); //# sourceMappingURL=pseudoclasses.test.js.map