UNPKG

@designliquido/foles

Version:

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

192 lines 9.93 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 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"); const importador_1 = require("../fontes/importador"); const estruturas_html_1 = __importDefault(require("../fontes/tradutores/estruturas-html")); describe('Serializador', () => { let lexador; let importador; let avaliador; let serializador; beforeEach(() => { lexador = new lexador_1.Lexador(); importador = new importador_1.Importador(lexador); avaliador = new avaliador_sintatico_1.AvaliadorSintatico(importador); serializador = new serializadores_1.Serializador(); }); describe('Casos de Sucesso', () => { it('Testando tradução das estruturas HTML', () => { for (let index = 0; index < Object.keys(estruturas_html_1.default).length; index += 1) { // Lexador recebe as estruturas FolEs const resultadoLexador = lexador.mapear([ `${Object.keys(estruturas_html_1.default)[index]} {`, " tamanho-fonte: 60px;", "}" ]); // Avaliador Sintático const resultadoAvaliadorSintatico = avaliador.analisar(resultadoLexador.simbolos); // Tradutor deve retornar a estrutura HTML correspondente const resultadoTradutor = serializador.serializar(resultadoAvaliadorSintatico); expect(resultadoTradutor).toContain(Object.values(estruturas_html_1.default)[index]); } }); it('Casos de sucesso - traduzindo 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], '40', 'px'); // Lexador const resultadoLexador = lexador.mapear([ "lmht {", `${valor_quantificador_1.ValorQuantificador[index]}: ${seletor['valor']}${seletor['quantificador']};`, "}" ]); // Avaliador Sintático const resultadoAvaliadorSintatico = avaliador.analisar(resultadoLexador.simbolos); // Tradutor deve funcionar de acordo const resultadoTradutor = serializador.serializar(resultadoAvaliadorSintatico); expect(resultadoTradutor).toBeTruthy(); expect(resultadoTradutor).toContain("html"); expect(resultadoTradutor).toContain(seletor['propriedadeCss']); expect(resultadoTradutor).toContain('40px;'); } }); it('Qualificador', () => { // Lexador const resultadoLexador = lexador.mapear([ "lmht {", " estilo-contorno: pontilhado;", "}" ]); // Avaliador Sintático const resultadoAvaliadorSintatico = avaliador.analisar(resultadoLexador.simbolos); // Serializador deve funcionar de acordo const resultadoSerializador = serializador.serializar(resultadoAvaliadorSintatico); expect(resultadoSerializador).toBeTruthy(); expect(resultadoSerializador).toContain("html"); expect(resultadoSerializador).toContain("outline-style"); expect(resultadoSerializador).toContain('dotted'); }); describe('Exemplos mais elaborados', () => { it('Exemplo 1', () => { const resultadoLexador = lexador.mapear([ '.minha-classe {', ' alinhar-conteudo: inseguro;', ' estilo-contorno: herdar;', ' cor-destaque: hsl(12, 13%, 24%);', ' cor: #f100ff;', ' cor-fundo: vermelho;', ' tamanho-fonte: 16px;', ' largura-maxima: 20cm;', '}', '.minha-classe:sobre {', ' cor-fundo: azul;', '}', '#elemento-caixa {', ' altura: 40px;', '}', '.minha-segunda-classe {', ' margem-superior: 13mm;', '}', '#meu-segundo-id {', ' largura: 400mm;', '}', '%campos {', ' margem-inferior: 50px;', '}', 'lmht {', ' cor-fundo: hsl(50, 80%, 80%);', '}', ]); const resultadoAvaliadorSintatico = avaliador.analisar(resultadoLexador.simbolos); const resultadoSerializador = serializador.serializar(resultadoAvaliadorSintatico); expect(resultadoSerializador).toBeTruthy(); expect(resultadoSerializador).toContain('.minha-classe {'); expect(resultadoSerializador).toContain('align-content: unsafe;'); expect(resultadoSerializador).toContain('outline-style: inherit;'); expect(resultadoSerializador).toContain('accent-color: hsl(12, 13%, 24%);'); expect(resultadoSerializador).toContain('color: #f100ff;'); expect(resultadoSerializador).toContain('background-color: red;'); expect(resultadoSerializador).toContain('font-size: 16px;'); expect(resultadoSerializador).toContain('max-width: 20cm;'); expect(resultadoSerializador).toContain('.minha-classe:hover {'); expect(resultadoSerializador).toContain('background-color: blue;'); expect(resultadoSerializador).toContain('#elemento-caixa {'); expect(resultadoSerializador).toContain('height: 40px;'); expect(resultadoSerializador).toContain('.minha-segunda-classe {'); expect(resultadoSerializador).toContain('margin-top: 13mm;'); expect(resultadoSerializador).toContain('#meu-segundo-id {'); expect(resultadoSerializador).toContain('width: 400mm;'); expect(resultadoSerializador).toContain('html {'); expect(resultadoSerializador).toContain('background-color: hsl(50, 80%, 80%);'); }); it('Exemplo 2', () => { const resultadoLexador = lexador.mapear([ '/** Valores específicos */', 'lmht {', ' recuo: 10px 10px 100px 20px;', ' borda-direita: 2px pontilhado;', '}', 'lmht {', ' recursos-fonte: "c2sc", "hist";', '}', 'lmht {', ' coluna-em-grade: auto / auto;', '}', 'lmht {', ' animação: 3s alternar 1s deslizar;', '}', 'lmht {', ' ajustar-tamanho-fonte: altura-cap 0.5;', '}', 'lmht {', ' propriedade-transicao: todas, test1;', '}', 'lmht {', ' definir-contador: meu-contador 5 contador2 0;', ' ao-mudar: left, top;', ' coluna-em-grade: 3 span;', ' estilo-lista: dentro meu-estilo;', ' fim-linha-em-grade: span 3;', ' fim-coluna-em-grade: span 3;', ' incrementar-contador: meu-contador -4;', ' início-linha-em-grade: span 2;', ' inicio-coluna-em-grade: span 2;', ' linha-em-grade: span some-grid-area;', ' nome-animacao: test_05;', ' propriedade-transicao: test1, animation4;', ' tamanho-grade: span 2;', '}' ]); const resultadoAvaliadorSintatico = avaliador.analisar(resultadoLexador.simbolos); const resultadoSerializador = serializador.serializar(resultadoAvaliadorSintatico); expect(resultadoSerializador).toBeTruthy(); }); }); }); describe('Casos de Falha', () => { it('Casos de Falha - seletores valor-quantificador', () => { for (let index = 0; index < Object.keys(valor_quantificador_1.ValorQuantificador).length; index += 1) { // Lexador - valor e quantificador não informados const resultadoLexador = lexador.mapear([ "lmht {", `${valor_quantificador_1.ValorQuantificador[index]}: ;`, "}" ]); // Tradutor - Não deve ser executado, dado o erro gerado no Avaliador Sintático expect(() => { serializador.serializar(avaliador.analisar(resultadoLexador.simbolos)); }).not.toBeTruthy; expect(() => { serializador.serializar(avaliador.analisar(resultadoLexador.simbolos)); }).toHaveLength(0); } }); }); }); //# sourceMappingURL=serializador.test.js.map