UNPKG

@designliquido/foles

Version:

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

354 lines 16.5 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 superclasse_1 = require("../../fontes/modificadores/superclasse"); const foles_1 = __importDefault(require("../../fontes/tipos-de-simbolos/foles")); const serializadores_1 = require("../../fontes/serializadores"); const declaracoes_1 = require("../../fontes/declaracoes"); const fontes_1 = require("../../fontes/modificadores/atributos/fontes"); describe('Testando Seletores com VALORES ESPECÍFICOS', () => { describe('Testes Unitários', () => { 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 - Valores SVG', () => { const valoresSVG = [ { folEs: "pinturaVisivel", css: "visiblePainted", }, { folEs: "pinturaVisível", css: "visiblePainted", }, { folEs: "preenchimentoVisivel", css: "visibleFill", }, { folEs: "preenchimentoVisível", css: "visibleFill", }, { folEs: "tracoVisivel", css: "visibleStroke", }, { folEs: "traçoVisível", css: "visibleStroke", }, { folEs: "pintado", css: "painted", }, { folEs: "preencher", css: "fill", }, { folEs: "tracado", css: "stroke", }, { folEs: "traçado", css: "stroke", }, { folEs: "delimitarCaixa", css: "bounding-box", }, { folEs: "tudo", css: "all", }, ]; for (let index = 0; index < valoresSVG.length; index += 1) { const seletor = new superclasse_1.SeletorModificador('eventos-ponteiro', valoresSVG[index].folEs, null); // A classe do modificador deve aceitar o valor SVG expect(seletor['valor']).toEqual(valoresSVG[index].folEs); // Lexador const resultadoLexador = lexador.mapear([ "corpo {", `eventos-ponteiro: ${valoresSVG[index].folEs};`, "}" ]); // O Lexador deve montar um objeto de comprimento 7 sem retornar nenhum erro expect(resultadoLexador.simbolos).toHaveLength(7); expect(resultadoLexador.erros).toHaveLength(0); // O valor recebido deve ser mapeado como IDENTIFICADOR expect(resultadoLexador.simbolos).toEqual(expect.arrayContaining([ expect.objectContaining({ tipo: foles_1.default.IDENTIFICADOR }), ])); // Avaliador Sintático const resultadoAvaliadorSintatico = avaliadorSintatico.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); expect(primeiroResultadoTipado.modificadores[0].nomeFoles).toStrictEqual(seletor['nomeFoles']); expect(primeiroResultadoTipado.modificadores[0].propriedadeCss).toStrictEqual(seletor['propriedadeCss']); // Serializador const resultadoSerializador = tradutor.serializar(resultadoAvaliadorSintatico); // O Serializador deve traduzir os valores SVG de acordo expect(resultadoSerializador).toContain(seletor['propriedadeCss']); expect(resultadoSerializador).toContain(valoresSVG[index].css); } }); it('Caso de sucesso - Valor numérico precedido de ponto', () => { const valoresComPonto = [ '.2rem', '.5em', '.10px', ]; for (let index = 0; index < valoresComPonto.length; index += 1) { // Lexador const resultadoLexador = lexador.mapear([ "lmht {", `espacamento-letras: ${valoresComPonto[index]};`, "}" ]); // O Lexador deve montar um objeto de comprimento 9 sem retornar nenhum erro expect(resultadoLexador.simbolos).toHaveLength(9); expect(resultadoLexador.erros).toHaveLength(0); // Avaliador Sintático const resultadoAvaliadorSintatico = avaliadorSintatico.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); // Tradutor const resultadoTradutor = tradutor.serializar(resultadoAvaliadorSintatico); expect(resultadoTradutor).toContain(valoresComPonto[index]); } }); it('Caso de sucesso - Valores do tipo feature-tag-value', () => { const valoresTagValue = [ '"c2sc", "hist"', '"c2sc"', ]; for (let index = 0; index < valoresTagValue.length; index += 1) { // Lexador const resultadoLexador = lexador.mapear([ "lmht {", `recursos-fonte: ${valoresTagValue[index]};`, "}" ]); if (index === 0) { expect(resultadoLexador.simbolos).toHaveLength(9); } else { expect(resultadoLexador.simbolos).toHaveLength(7); } // Avaliador Sintático const resultadoAvaliadorSintatico = avaliadorSintatico.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); expect(primeiroResultadoTipado.modificadores[0].valor).toContain(valoresTagValue[index]); // Tradutor const resultadoTradutor = tradutor.serializar(resultadoAvaliadorSintatico); expect(resultadoTradutor).toContain(valoresTagValue[index]); } }); it('Caso de falha - Valor feature-tag-value com mais de 4 caracteres', () => { // Lexador const resultadoLexador = lexador.mapear([ "lmht {", `recursos-fonte: "cs2af";`, "}" ]); // Avaliador Sintático expect(() => { avaliadorSintatico.analisar(resultadoLexador.simbolos); }).toThrowError(`Propriedade 'recursos-fonte' com valor "cs2af" inválido`); }); it('Caso de sucesso - Valores do tipo fonte de texto', () => { const valoresFonte = []; Object.values(fontes_1.fontes).forEach((fonte) => valoresFonte.push(fonte)); for (let index = 0; index < valoresFonte.length; index += 1) { // Lexador const resultadoLexador = lexador.mapear([ "lmht {", `fonte-texto: "${valoresFonte[index]}";`, "}" ]); expect(resultadoLexador.simbolos).toHaveLength(7); // Avaliador Sintático const resultadoAvaliadorSintatico = avaliadorSintatico.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); expect(primeiroResultadoTipado.modificadores[0].valor).toContain(valoresFonte[index]); // Tradutor const resultadoTradutor = tradutor.serializar(resultadoAvaliadorSintatico); expect(resultadoTradutor).toContain('font-family'); expect(resultadoTradutor).toContain(valoresFonte[index]); } }); it('Caso de sucesso - Valor fonte de texto com 2º parâmetro de grafia', () => { const valoresGrafia = [ "serif", "sans-serif", "monospace", "cursive", "fantasy", "system-ui", "ui-serif", "ui-sans-serif", "ui-monospace", "ui-rounded", "math", "emoji", "fangsong", ]; for (let index = 0; index < valoresGrafia.length; index += 1) { // Lexador const resultadoLexador = lexador.mapear([ "lmht {", `fonte-texto: "Arial", ${valoresGrafia[index]};`, "}" ]); expect(resultadoLexador.simbolos).toHaveLength(9); // Avaliador Sintático const resultadoAvaliadorSintatico = avaliadorSintatico.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); expect(primeiroResultadoTipado.modificadores[0].valor).toContain(valoresGrafia[index]); // Tradutor const resultadoTradutor = tradutor.serializar(resultadoAvaliadorSintatico); expect(resultadoTradutor).toContain('font-family'); expect(resultadoTradutor).toContain(valoresGrafia[index]); } }); it('Caso de sucesso - Valor fonte de texto com 2º parâmetro de grafia em português', () => { const valoresGrafia = [ { css: "serif", foles: "serifa", }, { css: "sans-serif", foles: "sem-serifa", }, { css: "monospace", foles: "monoespaço", }, { css: "monospace", foles: "monoespaco", }, { css: "cursive", foles: "cursiva", }, { css: "fantasy", foles: "fantasia", }, { css: "system-ui", foles: "sistema-iu", }, { css: "ui-serif", foles: "iu-serifa", }, { css: "ui-sans-serif", foles: "iu-sem-serifa", }, { css: "ui-monospace", foles: "iu-monoespaço", }, { css: "ui-monospace", foles: "iu-monoespaco", }, { css: "ui-rounded", foles: "iu-arredondada", }, { css: "math", foles: "matematica", }, { css: "math", foles: "matemática", }, { css: "emoji", foles: "emoji", }, { css: "fangsong", foles: "serifa-chinesa", }, ]; for (let index = 0; index < Object.keys(valoresGrafia).length; index += 1) { // Lexador const resultadoLexador = lexador.mapear([ "lmht {", `fonte-texto: "Arial", ${valoresGrafia[index].foles};`, "}" ]); expect(resultadoLexador.simbolos).toHaveLength(9); // Avaliador Sintático const resultadoAvaliadorSintatico = avaliadorSintatico.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); expect(primeiroResultadoTipado.modificadores[0].valor).toContain(valoresGrafia[index].foles); // Tradutor const resultadoTradutor = tradutor.serializar(resultadoAvaliadorSintatico); expect(resultadoTradutor).toContain('font-family'); expect(resultadoTradutor).toContain(valoresGrafia[index].css); } }); it('Caso de falha - Atribuição de valor fonte inválido', () => { // Lexador const resultadoLexador = lexador.mapear([ "lmht {", `fonte-texto: reservada;`, "}" ]); expect(resultadoLexador.simbolos).toHaveLength(7); // Avaliador Sintático expect(() => { avaliadorSintatico.analisar(resultadoLexador.simbolos); }).toThrow("Propriedade 'fonte-texto' com valor reservada inválido"); }); }); }); //# sourceMappingURL=valores-especificos.test.js.map