UNPKG

@designliquido/foles

Version:

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

111 lines 5.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 lexador_reverso_1 = require("../fontes/lexador/lexador-reverso"); const css_1 = __importDefault(require("../fontes/tipos-de-simbolos/css")); describe('Lexador Reverso', () => { let lexadorReverso; beforeEach(() => { lexadorReverso = new lexador_reverso_1.LexadorReverso(); }); it('Caso de sucesso - função mapear() monta objeto corretamente', () => { const resultadoLexador = lexadorReverso.mapear([ "html {", " font-size: 12px;", "}" ]); expect(resultadoLexador).toBeTruthy(); expect(resultadoLexador.simbolos).toHaveLength(8); expect(resultadoLexador.erros).toHaveLength(0); // Tipos devem estar mapeados expect(resultadoLexador.simbolos).toEqual(expect.arrayContaining([ expect.objectContaining({ tipo: css_1.default.TAG }), expect.objectContaining({ tipo: css_1.default.CHAVE_ESQUERDA }), expect.objectContaining({ tipo: css_1.default.IDENTIFICADOR }), expect.objectContaining({ tipo: css_1.default.DOIS_PONTOS }), expect.objectContaining({ tipo: css_1.default.NUMERO }), expect.objectContaining({ tipo: css_1.default.QUANTIFICADOR }), expect.objectContaining({ tipo: css_1.default.PONTO_E_VIRGULA }), expect.objectContaining({ tipo: css_1.default.CHAVE_DIREITA }), ])); // Lexemas devem estar mapeados expect(resultadoLexador.simbolos).toEqual(expect.arrayContaining([ expect.objectContaining({ lexema: '12' }), expect.objectContaining({ lexema: 'px' }), ])); }); it('Caso de sucesso - função analisarNumero() mapeia números com denotação pontual', () => { const resultadoLexador = lexadorReverso.mapear([ "html {", " font-size: 1.5;", "}" ]); expect(resultadoLexador).toBeTruthy(); expect(resultadoLexador.simbolos).toHaveLength(7); expect(resultadoLexador.erros).toHaveLength(0); // Tipos devem estar mapeados expect(resultadoLexador.simbolos).toEqual(expect.arrayContaining([ expect.objectContaining({ tipo: css_1.default.TAG }), expect.objectContaining({ tipo: css_1.default.CHAVE_ESQUERDA }), expect.objectContaining({ tipo: css_1.default.IDENTIFICADOR }), expect.objectContaining({ tipo: css_1.default.DOIS_PONTOS }), expect.objectContaining({ tipo: css_1.default.NUMERO }), expect.objectContaining({ tipo: css_1.default.PONTO_E_VIRGULA }), expect.objectContaining({ tipo: css_1.default.CHAVE_DIREITA }), ])); // Lexemas devem estar mapeados expect(resultadoLexador.simbolos).toEqual(expect.arrayContaining([ expect.objectContaining({ lexema: '1.5' }), ])); }); it('Caso de sucesso - mapeamento de classes e IDs', () => { const classeId = ['.', '#']; for (let index = 0; index < classeId.length; index += 1) { const resultadoLexador = lexadorReverso.mapear([ `${classeId[index]}meu-seletor {`, " padding: 10px;", "}" ]); expect(resultadoLexador).toBeTruthy(); expect(resultadoLexador.simbolos).toHaveLength(9); expect(resultadoLexador.erros).toHaveLength(0); // Deve mapear PONTO ou CERQUILHA corretamente if (index === 0) { expect(resultadoLexador.simbolos).toEqual(expect.arrayContaining([ expect.objectContaining({ tipo: css_1.default.PONTO }), ])); } else { expect(resultadoLexador.simbolos).toEqual(expect.arrayContaining([ expect.objectContaining({ tipo: css_1.default.CERQUILHA }), ])); } // Todos os demais tipos devem estar mapeados expect(resultadoLexador.simbolos).toEqual(expect.arrayContaining([ expect.objectContaining({ tipo: css_1.default.CHAVE_ESQUERDA }), expect.objectContaining({ tipo: css_1.default.IDENTIFICADOR }), expect.objectContaining({ tipo: css_1.default.DOIS_PONTOS }), expect.objectContaining({ tipo: css_1.default.NUMERO }), expect.objectContaining({ tipo: css_1.default.QUANTIFICADOR }), expect.objectContaining({ tipo: css_1.default.PONTO_E_VIRGULA }), expect.objectContaining({ tipo: css_1.default.CHAVE_DIREITA }), ])); // Lexemas devem estar mapeados expect(resultadoLexador.simbolos).toEqual(expect.arrayContaining([ expect.objectContaining({ lexema: 'meu-seletor' }), ])); } }); it('Caso de falha - caractere inesperado', () => { const resultadoLexador = lexadorReverso.mapear([ `html {`, " padding: 10px&;", "}" ]); expect(resultadoLexador.erros).toHaveLength(1); expect(resultadoLexador.erros).toEqual([{ "caractere": "&", "linha": 2, "mensagem": "Caractere inesperado." }]); }); }); //# sourceMappingURL=lexador-reverso.test.js.map