@designliquido/foles
Version:
Linguagem de folhas de estilo para documentos em geral em português
77 lines • 4.44 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
const avaliador_sintatico_1 = require("../fontes/avaliador-sintatico");
const declaracoes_1 = require("../fontes/declaracoes");
const importador_1 = require("../fontes/importador");
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");
describe('Avaliador Sintático', () => {
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 - testando 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], '25', 'px');
// Lexador
const resultadoLexador = lexador.mapear([
"lmht {",
`${valor_quantificador_1.ValorQuantificador[index]}: ${seletor['valor']}${seletor['quantificador']};`,
"}"
]);
// Avaliador Sintático
const resultadoAvaliadorSintatico = avaliadorSintatico.analisar(resultadoLexador.simbolos);
expect(resultadoAvaliadorSintatico).toBeTruthy();
expect(resultadoAvaliadorSintatico).toHaveLength(1);
// 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.seletores[0]['estrutura'].tagHtml).toBe('html');
expect(primeiroResultadoTipado.seletores[0]['pseudoclasse']).toBe(undefined);
expect(primeiroResultadoTipado.modificadores[0].nomeFoles).toStrictEqual(seletor['nomeFoles']);
expect(primeiroResultadoTipado.modificadores[0].propriedadeCss).toStrictEqual(seletor['propriedadeCss']);
expect(primeiroResultadoTipado.modificadores[0].valor).toStrictEqual('25');
expect(primeiroResultadoTipado.modificadores[0].quantificador).toStrictEqual('px');
// O resultado do Avaliador deve ser recebido corretamente pelo Tradutor
const resultadoTradutor = tradutor.serializar(resultadoAvaliadorSintatico);
expect(resultadoTradutor).toBeTruthy();
}
});
it('Casos de Falha - mensagens de erro esperadas como retorno', () => {
for (let index = 0; index < Object.keys(valor_quantificador_1.ValorQuantificador).length; index += 1) {
// Lexador - valor e quantificador não informados
let resultadoLexador = lexador.mapear([
"lmht {",
`${valor_quantificador_1.ValorQuantificador[index]}: ;`,
"}"
]);
// Avaliador Sintático deve retornar erro
expect(() => {
avaliadorSintatico.analisar(resultadoLexador.simbolos);
}).toThrow(`Esperado ';' após declaração de valor de modificador '${valor_quantificador_1.ValorQuantificador[index]}'.`);
// Causar erro de digitação
const seletorIncorreto = valor_quantificador_1.ValorQuantificador[index].replace(valor_quantificador_1.ValorQuantificador[index][0], '');
resultadoLexador = lexador.mapear([
"lmht {",
`${seletorIncorreto}: 12px;`,
"}"
]);
// Erro esperado como retorno - seletor não encontrado
expect(() => {
avaliadorSintatico.analisar(resultadoLexador.simbolos);
}).toThrow(`O seletor '${seletorIncorreto}' não existe.`);
}
});
});
//# sourceMappingURL=avaliador-sintatico.test.js.map