@designliquido/foles
Version:
Linguagem de folhas de estilo para documentos em geral em português
88 lines • 4.66 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 importador_1 = require("../../fontes/importador");
const lexador_1 = require("../../fontes/lexador");
const foles_1 = __importDefault(require("../../fontes/tipos-de-simbolos/foles"));
const serializadores_1 = require("../../fontes/serializadores");
const valor_string_1 = require("../listas/valor-string");
const declaracoes_1 = require("../../fontes/declaracoes");
describe('Testando Seletores com VALORES STRING', () => {
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('Caso de sucesso - Lexador, Avaliador e Tradutor', () => {
for (let index = 0; index < Object.keys(valor_string_1.ValorString).length; index += 1) {
const valoresString = [
"'x'",
'"«" "»" "‹" "›"',
"'foo'",
"'/25B2'",
];
for (let valIndex = 0; valIndex < valoresString.length; valIndex += 1) {
// Lexador
const resultadoLexador = lexador.mapear([
"corpo {",
`${valor_string_1.ValorString[index]}: ${valoresString[valIndex]};`,
"}"
]);
if (valIndex !== 1) {
expect(resultadoLexador.simbolos).toHaveLength(7);
}
else {
expect(resultadoLexador.simbolos).toHaveLength(10);
}
if (valIndex < 1) {
expect(resultadoLexador.simbolos).toEqual(expect.arrayContaining([
expect.objectContaining({ tipo: foles_1.default.TEXTO }),
]));
}
else {
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).toContain(valor_string_1.ValorString[index]);
expect(primeiroResultadoTipado.modificadores[0].valor).toContain(valoresString[valIndex]);
// Tradutor
const resultadoTradutor = tradutor.serializar(resultadoAvaliadorSintatico);
expect(resultadoTradutor).toContain(valoresString[valIndex]);
}
}
});
it('Caso de falha - Avaliador sintático deve retornar erro ', () => {
for (let index = 0; index < Object.keys(valor_string_1.ValorStringAcentuado).length; index += 1) {
// Lexador
const resultadoLexador = lexador.mapear([
"corpo {",
`${valor_string_1.ValorStringAcentuado[index]}: x;`,
"}"
]);
// Avaliador Sintático não deve aceitar o valor string sem aspas
expect(() => {
avaliadorSintatico.analisar(resultadoLexador.simbolos);
}).toThrowError(`Propriedade '${valor_string_1.ValorStringAcentuado[index]}' com valor x inválido`);
}
});
});
});
//# sourceMappingURL=valor-string.test.js.map