@designliquido/foles
Version:
Linguagem de folhas de estilo para documentos em geral em português
96 lines • 4.91 kB
JavaScript
;
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);
// Tradutor deve funcionar de acordo
const resultadoTradutor = serializador.serializar(resultadoAvaliadorSintatico);
expect(resultadoTradutor).toBeTruthy();
expect(resultadoTradutor).toContain("html");
expect(resultadoTradutor).toContain("outline-style");
expect(resultadoTradutor).toContain('dotted');
});
});
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