@designliquido/foles
Version:
Linguagem de folhas de estilo para documentos em geral em português
354 lines • 16.5 kB
JavaScript
"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 importador_1 = require("../../fontes/importador");
const lexador_1 = require("../../fontes/lexador");
const superclasse_1 = require("../../fontes/modificadores/superclasse");
const foles_1 = __importDefault(require("../../fontes/tipos-de-simbolos/foles"));
const serializadores_1 = require("../../fontes/serializadores");
const declaracoes_1 = require("../../fontes/declaracoes");
const fontes_1 = require("../../fontes/modificadores/atributos/fontes");
describe('Testando Seletores com VALORES ESPECÍFICOS', () => {
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('Casos de sucesso - Valores SVG', () => {
const valoresSVG = [
{
folEs: "pinturaVisivel",
css: "visiblePainted",
},
{
folEs: "pinturaVisível",
css: "visiblePainted",
},
{
folEs: "preenchimentoVisivel",
css: "visibleFill",
},
{
folEs: "preenchimentoVisível",
css: "visibleFill",
},
{
folEs: "tracoVisivel",
css: "visibleStroke",
},
{
folEs: "traçoVisível",
css: "visibleStroke",
},
{
folEs: "pintado",
css: "painted",
},
{
folEs: "preencher",
css: "fill",
},
{
folEs: "tracado",
css: "stroke",
},
{
folEs: "traçado",
css: "stroke",
},
{
folEs: "delimitarCaixa",
css: "bounding-box",
},
{
folEs: "tudo",
css: "all",
},
];
for (let index = 0; index < valoresSVG.length; index += 1) {
const seletor = new superclasse_1.SeletorModificador('eventos-ponteiro', valoresSVG[index].folEs, null);
// A classe do modificador deve aceitar o valor SVG
expect(seletor['valor']).toEqual(valoresSVG[index].folEs);
// Lexador
const resultadoLexador = lexador.mapear([
"corpo {",
`eventos-ponteiro: ${valoresSVG[index].folEs};`,
"}"
]);
// O Lexador deve montar um objeto de comprimento 7 sem retornar nenhum erro
expect(resultadoLexador.simbolos).toHaveLength(7);
expect(resultadoLexador.erros).toHaveLength(0);
// O valor recebido deve ser mapeado como IDENTIFICADOR
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).toStrictEqual(seletor['nomeFoles']);
expect(primeiroResultadoTipado.modificadores[0].propriedadeCss).toStrictEqual(seletor['propriedadeCss']);
// Serializador
const resultadoSerializador = tradutor.serializar(resultadoAvaliadorSintatico);
// O Serializador deve traduzir os valores SVG de acordo
expect(resultadoSerializador).toContain(seletor['propriedadeCss']);
expect(resultadoSerializador).toContain(valoresSVG[index].css);
}
});
it('Caso de sucesso - Valor numérico precedido de ponto', () => {
const valoresComPonto = [
'.2rem',
'.5em',
'.10px',
];
for (let index = 0; index < valoresComPonto.length; index += 1) {
// Lexador
const resultadoLexador = lexador.mapear([
"lmht {",
`espacamento-letras: ${valoresComPonto[index]};`,
"}"
]);
// O Lexador deve montar um objeto de comprimento 9 sem retornar nenhum erro
expect(resultadoLexador.simbolos).toHaveLength(9);
expect(resultadoLexador.erros).toHaveLength(0);
// 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);
// Tradutor
const resultadoTradutor = tradutor.serializar(resultadoAvaliadorSintatico);
expect(resultadoTradutor).toContain(valoresComPonto[index]);
}
});
it('Caso de sucesso - Valores do tipo feature-tag-value', () => {
const valoresTagValue = [
'"c2sc", "hist"',
'"c2sc"',
];
for (let index = 0; index < valoresTagValue.length; index += 1) {
// Lexador
const resultadoLexador = lexador.mapear([
"lmht {",
`recursos-fonte: ${valoresTagValue[index]};`,
"}"
]);
if (index === 0) {
expect(resultadoLexador.simbolos).toHaveLength(9);
}
else {
expect(resultadoLexador.simbolos).toHaveLength(7);
}
// 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].valor).toContain(valoresTagValue[index]);
// Tradutor
const resultadoTradutor = tradutor.serializar(resultadoAvaliadorSintatico);
expect(resultadoTradutor).toContain(valoresTagValue[index]);
}
});
it('Caso de falha - Valor feature-tag-value com mais de 4 caracteres', () => {
// Lexador
const resultadoLexador = lexador.mapear([
"lmht {",
`recursos-fonte: "cs2af";`,
"}"
]);
// Avaliador Sintático
expect(() => {
avaliadorSintatico.analisar(resultadoLexador.simbolos);
}).toThrowError(`Propriedade 'recursos-fonte' com valor "cs2af" inválido`);
});
it('Caso de sucesso - Valores do tipo fonte de texto', () => {
const valoresFonte = [];
Object.values(fontes_1.fontes).forEach((fonte) => valoresFonte.push(fonte));
for (let index = 0; index < valoresFonte.length; index += 1) {
// Lexador
const resultadoLexador = lexador.mapear([
"lmht {",
`fonte-texto: "${valoresFonte[index]}";`,
"}"
]);
expect(resultadoLexador.simbolos).toHaveLength(7);
// 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].valor).toContain(valoresFonte[index]);
// Tradutor
const resultadoTradutor = tradutor.serializar(resultadoAvaliadorSintatico);
expect(resultadoTradutor).toContain('font-family');
expect(resultadoTradutor).toContain(valoresFonte[index]);
}
});
it('Caso de sucesso - Valor fonte de texto com 2º parâmetro de grafia', () => {
const valoresGrafia = [
"serif",
"sans-serif",
"monospace",
"cursive",
"fantasy",
"system-ui",
"ui-serif",
"ui-sans-serif",
"ui-monospace",
"ui-rounded",
"math",
"emoji",
"fangsong",
];
for (let index = 0; index < valoresGrafia.length; index += 1) {
// Lexador
const resultadoLexador = lexador.mapear([
"lmht {",
`fonte-texto: "Arial", ${valoresGrafia[index]};`,
"}"
]);
expect(resultadoLexador.simbolos).toHaveLength(9);
// 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].valor).toContain(valoresGrafia[index]);
// Tradutor
const resultadoTradutor = tradutor.serializar(resultadoAvaliadorSintatico);
expect(resultadoTradutor).toContain('font-family');
expect(resultadoTradutor).toContain(valoresGrafia[index]);
}
});
it('Caso de sucesso - Valor fonte de texto com 2º parâmetro de grafia em português', () => {
const valoresGrafia = [
{
css: "serif",
foles: "serifa",
},
{
css: "sans-serif",
foles: "sem-serifa",
},
{
css: "monospace",
foles: "monoespaço",
},
{
css: "monospace",
foles: "monoespaco",
},
{
css: "cursive",
foles: "cursiva",
},
{
css: "fantasy",
foles: "fantasia",
},
{
css: "system-ui",
foles: "sistema-iu",
},
{
css: "ui-serif",
foles: "iu-serifa",
},
{
css: "ui-sans-serif",
foles: "iu-sem-serifa",
},
{
css: "ui-monospace",
foles: "iu-monoespaço",
},
{
css: "ui-monospace",
foles: "iu-monoespaco",
},
{
css: "ui-rounded",
foles: "iu-arredondada",
},
{
css: "math",
foles: "matematica",
},
{
css: "math",
foles: "matemática",
},
{
css: "emoji",
foles: "emoji",
},
{
css: "fangsong",
foles: "serifa-chinesa",
},
];
for (let index = 0; index < Object.keys(valoresGrafia).length; index += 1) {
// Lexador
const resultadoLexador = lexador.mapear([
"lmht {",
`fonte-texto: "Arial", ${valoresGrafia[index].foles};`,
"}"
]);
expect(resultadoLexador.simbolos).toHaveLength(9);
// 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].valor).toContain(valoresGrafia[index].foles);
// Tradutor
const resultadoTradutor = tradutor.serializar(resultadoAvaliadorSintatico);
expect(resultadoTradutor).toContain('font-family');
expect(resultadoTradutor).toContain(valoresGrafia[index].css);
}
});
it('Caso de falha - Atribuição de valor fonte inválido', () => {
// Lexador
const resultadoLexador = lexador.mapear([
"lmht {",
`fonte-texto: reservada;`,
"}"
]);
expect(resultadoLexador.simbolos).toHaveLength(7);
// Avaliador Sintático
expect(() => {
avaliadorSintatico.analisar(resultadoLexador.simbolos);
}).toThrow("Propriedade 'fonte-texto' com valor reservada inválido");
});
});
});
//# sourceMappingURL=valores-especificos.test.js.map