@designliquido/foles 0.9.4 → 0.9.6
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/execucao.js +9 -2
- package/execucao.js.map +1 -1
- package/fontes/avaliador-sintatico/avaliador-sintatico-reverso.js +288 -211
- package/fontes/avaliador-sintatico/avaliador-sintatico-reverso.js.map +1 -1
- package/fontes/avaliador-sintatico/avaliador-sintatico.js +87 -0
- package/fontes/avaliador-sintatico/avaliador-sintatico.js.map +1 -1
- package/fontes/estruturas/estrutura.d.ts +1 -0
- package/fontes/estruturas/estrutura.js.map +1 -1
- package/fontes/foles.js +5 -4
- package/fontes/foles.js.map +1 -1
- package/fontes/lexador/palavras-reservadas/css.d.ts +21 -13
- package/fontes/lexador/palavras-reservadas/css.js +21 -13
- package/fontes/lexador/palavras-reservadas/css.js.map +1 -1
- package/fontes/lexador/palavras-reservadas/foles.d.ts +10 -0
- package/fontes/lexador/palavras-reservadas/foles.js +10 -0
- package/fontes/lexador/palavras-reservadas/foles.js.map +1 -1
- package/fontes/modificadores/borda-mascara.js +3 -3
- package/fontes/modificadores/caminho-recorte.d.ts +9 -0
- package/fontes/modificadores/caminho-recorte.js +39 -0
- package/fontes/modificadores/caminho-recorte.js.map +1 -0
- package/fontes/modificadores/conteudo.js +2 -2
- package/fontes/modificadores/conteudo.js.map +1 -1
- package/fontes/modificadores/dicionario/dicionario-modificadores.js +2 -0
- package/fontes/modificadores/dicionario/dicionario-modificadores.js.map +1 -1
- package/fontes/modificadores/dicionario/dicionario-reverso-modificadores.js +16 -0
- package/fontes/modificadores/dicionario/dicionario-reverso-modificadores.js.map +1 -1
- package/fontes/modificadores/imagem-borda.d.ts +3 -1
- package/fontes/modificadores/imagem-borda.js +1 -1
- package/fontes/modificadores/imagem-borda.js.map +1 -1
- package/fontes/modificadores/imagem-fundo.d.ts +2 -1
- package/fontes/modificadores/imagem-fundo.js.map +1 -1
- package/fontes/modificadores/limite-forma-imagem.js +1 -1
- package/fontes/modificadores/sombra-caixa.d.ts +3 -1
- package/fontes/modificadores/sombra-caixa.js +1 -1
- package/fontes/modificadores/sombra-caixa.js.map +1 -1
- package/fontes/modificadores/superclasse/modificador.d.ts +2 -1
- package/fontes/modificadores/superclasse/modificador.js.map +1 -1
- package/fontes/modificadores/superclasse/seletor-modificador.d.ts +2 -1
- package/fontes/modificadores/superclasse/seletor-modificador.js.map +1 -1
- package/fontes/modificadores/transformar.js +1 -0
- package/fontes/modificadores/transformar.js.map +1 -1
- package/fontes/modificadores/validacoes/atribuicao-abreviada.d.ts +3 -1
- package/fontes/modificadores/validacoes/atribuicao-abreviada.js +18 -6
- package/fontes/modificadores/validacoes/atribuicao-abreviada.js.map +1 -1
- package/fontes/modificadores/validacoes/comum.d.ts +3 -1
- package/fontes/modificadores/validacoes/comum.js +15 -3
- package/fontes/modificadores/validacoes/comum.js.map +1 -1
- package/fontes/modificadores/validacoes/condicao-extra.d.ts +3 -1
- package/fontes/modificadores/validacoes/condicao-extra.js +16 -4
- package/fontes/modificadores/validacoes/condicao-extra.js.map +1 -1
- package/fontes/modificadores/validacoes/cor.d.ts +2 -1
- package/fontes/modificadores/validacoes/cor.js +17 -6
- package/fontes/modificadores/validacoes/cor.js.map +1 -1
- package/fontes/modificadores/validacoes/fonte.d.ts +3 -1
- package/fontes/modificadores/validacoes/fonte.js +15 -3
- package/fontes/modificadores/validacoes/fonte.js.map +1 -1
- package/fontes/modificadores/validacoes/identificacao-personalizada.d.ts +3 -1
- package/fontes/modificadores/validacoes/identificacao-personalizada.js.map +1 -1
- package/fontes/modificadores/validacoes/multiplos-qualitativos.d.ts +3 -1
- package/fontes/modificadores/validacoes/multiplos-qualitativos.js +27 -16
- package/fontes/modificadores/validacoes/multiplos-qualitativos.js.map +1 -1
- package/fontes/modificadores/validacoes/numerica.d.ts +3 -1
- package/fontes/modificadores/validacoes/numerica.js +21 -9
- package/fontes/modificadores/validacoes/numerica.js.map +1 -1
- package/fontes/modificadores/validacoes/quantificador.js +3 -3
- package/fontes/modificadores/variacao-fonte-alternativa.d.ts +3 -1
- package/fontes/modificadores/variacao-fonte-alternativa.js +14 -1
- package/fontes/modificadores/variacao-fonte-alternativa.js.map +1 -1
- package/fontes/seletores/seletor-estrutura.js.map +1 -1
- package/fontes/serializadores/serializador.js +39 -22
- package/fontes/serializadores/serializador.js.map +1 -1
- package/fontes/tradutores/tradutor.js +3 -2
- package/fontes/tradutores/tradutor.js.map +1 -1
- package/fontes/valores/dicionario-valores.js +18 -0
- package/fontes/valores/dicionario-valores.js.map +1 -1
- package/fontes/valores/metodos/css/annotation.d.ts +8 -0
- package/fontes/valores/metodos/css/annotation.js +25 -0
- package/fontes/valores/metodos/css/annotation.js.map +1 -0
- package/fontes/valores/metodos/css/character-variant.d.ts +8 -0
- package/fontes/valores/metodos/css/character-variant.js +19 -0
- package/fontes/valores/metodos/css/character-variant.js.map +1 -0
- package/fontes/valores/metodos/css/counter.d.ts +10 -0
- package/fontes/valores/metodos/css/counter.js +55 -0
- package/fontes/valores/metodos/css/counter.js.map +1 -0
- package/fontes/valores/metodos/css/ornaments.d.ts +8 -0
- package/fontes/valores/metodos/css/ornaments.js +25 -0
- package/fontes/valores/metodos/css/ornaments.js.map +1 -0
- package/fontes/valores/metodos/css/rotate3d.d.ts +12 -0
- package/fontes/valores/metodos/css/rotate3d.js +26 -0
- package/fontes/valores/metodos/css/rotate3d.js.map +1 -0
- package/fontes/valores/metodos/css/styleset.d.ts +10 -0
- package/fontes/valores/metodos/css/styleset.js +29 -0
- package/fontes/valores/metodos/css/styleset.js.map +1 -0
- package/fontes/valores/metodos/css/stylistic.d.ts +8 -0
- package/fontes/valores/metodos/css/stylistic.js +19 -0
- package/fontes/valores/metodos/css/stylistic.js.map +1 -0
- package/fontes/valores/metodos/css/swash.d.ts +8 -0
- package/fontes/valores/metodos/css/swash.js +19 -0
- package/fontes/valores/metodos/css/swash.js.map +1 -0
- package/fontes/valores/metodos/foles/anotacao.d.ts +8 -0
- package/fontes/valores/metodos/foles/anotacao.js +25 -0
- package/fontes/valores/metodos/foles/anotacao.js.map +1 -0
- package/fontes/valores/metodos/foles/conjunto-estilos.d.ts +10 -0
- package/fontes/valores/metodos/foles/conjunto-estilos.js +29 -0
- package/fontes/valores/metodos/foles/conjunto-estilos.js.map +1 -0
- package/fontes/valores/metodos/foles/contador.d.ts +10 -0
- package/fontes/valores/metodos/foles/contador.js +70 -0
- package/fontes/valores/metodos/foles/contador.js.map +1 -0
- package/fontes/valores/metodos/foles/espirrar.d.ts +8 -0
- package/fontes/valores/metodos/foles/espirrar.js +19 -0
- package/fontes/valores/metodos/foles/espirrar.js.map +1 -0
- package/fontes/valores/metodos/foles/estilistico.d.ts +8 -0
- package/fontes/valores/metodos/foles/estilistico.js +19 -0
- package/fontes/valores/metodos/foles/estilistico.js.map +1 -0
- package/fontes/valores/metodos/foles/ornamentos.d.ts +8 -0
- package/fontes/valores/metodos/foles/ornamentos.js +25 -0
- package/fontes/valores/metodos/foles/ornamentos.js.map +1 -0
- package/fontes/valores/metodos/foles/rotacionar-3d.d.ts +12 -0
- package/fontes/valores/metodos/foles/rotacionar-3d.js +29 -0
- package/fontes/valores/metodos/foles/rotacionar-3d.js.map +1 -0
- package/fontes/valores/metodos/foles/variar-caractere.d.ts +8 -0
- package/fontes/valores/metodos/foles/variar-caractere.js +19 -0
- package/fontes/valores/metodos/foles/variar-caractere.js.map +1 -0
- package/package.json +1 -1
- package/testes/modificadores/atribuicao-abreviada.test.js.map +1 -1
- package/testes/modificadores/metodos-reversos.test.js +69 -0
- package/testes/modificadores/metodos-reversos.test.js.map +1 -1
- package/testes/modificadores/metodos.test.js +545 -0
- package/testes/modificadores/metodos.test.js.map +1 -1
- package/testes/serializador.test.js +102 -6
- package/testes/serializador.test.js.map +1 -1
- package/testes/tradutor.test.js +1 -1
- package/testes/tradutor.test.js.map +1 -1
|
@@ -11,6 +11,7 @@ const serializadores_1 = require("../../fontes/serializadores");
|
|
|
11
11
|
const metodos_1 = require("../listas/metodos");
|
|
12
12
|
const declaracoes_1 = require("../../fontes/declaracoes");
|
|
13
13
|
const seletor_valor_1 = require("../../fontes/valores/seletor-valor");
|
|
14
|
+
const contador_1 = require("../../fontes/valores/metodos/foles/contador");
|
|
14
15
|
describe('Testando Seletores que recebem MÉTODOS como valor', () => {
|
|
15
16
|
describe('Testes Unitários', () => {
|
|
16
17
|
let lexador;
|
|
@@ -23,6 +24,111 @@ describe('Testando Seletores que recebem MÉTODOS como valor', () => {
|
|
|
23
24
|
avaliador = new avaliador_sintatico_1.AvaliadorSintatico(importador);
|
|
24
25
|
tradutor = new serializadores_1.Serializador();
|
|
25
26
|
});
|
|
27
|
+
it('Atribuindo Método "anotação()" com valor numérico - caso de sucesso', () => {
|
|
28
|
+
const formasAceitas = ['anotação', 'anotacao'];
|
|
29
|
+
const valoresAceitos = ['1', '2', '12', '20'];
|
|
30
|
+
for (let valIndex = 0; valIndex < formasAceitas.length; valIndex += 1) {
|
|
31
|
+
for (let index = 0; index < valoresAceitos.length; index += 1) {
|
|
32
|
+
// Lexador
|
|
33
|
+
const resultadoLexador = lexador.mapear([
|
|
34
|
+
"lmht {",
|
|
35
|
+
`variacao-fonte-alternativa: ${formasAceitas[valIndex]}(${valoresAceitos[index]});`,
|
|
36
|
+
"}"
|
|
37
|
+
]);
|
|
38
|
+
// O Lexador não deve encontrar erros
|
|
39
|
+
expect(resultadoLexador.erros).toHaveLength(0);
|
|
40
|
+
// O valor recebido deve ser mapeado como METODO
|
|
41
|
+
expect(resultadoLexador.simbolos).toEqual(expect.arrayContaining([
|
|
42
|
+
expect.objectContaining({ tipo: foles_1.default.METODO }),
|
|
43
|
+
]));
|
|
44
|
+
// O Lexador deve montar um objeto de comprimento 10, incluindo mapeamento de valores numéricos
|
|
45
|
+
expect(resultadoLexador.simbolos).toHaveLength(10);
|
|
46
|
+
expect(resultadoLexador.simbolos).toEqual(expect.arrayContaining([
|
|
47
|
+
expect.objectContaining({ tipo: foles_1.default.NUMERO }),
|
|
48
|
+
]));
|
|
49
|
+
// Avaliador Sintático
|
|
50
|
+
const resultadoAvaliadorSintatico = avaliador.analisar(resultadoLexador.simbolos);
|
|
51
|
+
// O Avaliador deve montar um objeto com os devidos nomes FolEs e CSS
|
|
52
|
+
expect(resultadoAvaliadorSintatico.length).toBeGreaterThanOrEqual(1);
|
|
53
|
+
const primeiroResultado = resultadoAvaliadorSintatico[0];
|
|
54
|
+
expect(primeiroResultado).toBeInstanceOf(declaracoes_1.BlocoDeclaracao);
|
|
55
|
+
const primeiroResultadoTipado = primeiroResultado;
|
|
56
|
+
expect(primeiroResultadoTipado.modificadores.length).toBeGreaterThanOrEqual(1);
|
|
57
|
+
expect(primeiroResultadoTipado.modificadores[0].propriedadeCss).toStrictEqual('font-variant-alternates');
|
|
58
|
+
// Tradutor
|
|
59
|
+
const resultadoTradutor = tradutor.serializar(resultadoAvaliadorSintatico);
|
|
60
|
+
// O Tradutor deve serializar de acordo e traduzir anotação para annotation
|
|
61
|
+
expect(resultadoTradutor).toContain('font-variant-alternates');
|
|
62
|
+
expect(resultadoTradutor).toContain(`annotation(${valoresAceitos[index]});`);
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
});
|
|
66
|
+
it('Atribuindo Método "anotação()" com valor numérico - caso de falha', () => {
|
|
67
|
+
const valoresAceitos = ['0', '100', '300'];
|
|
68
|
+
for (let index = 0; index < valoresAceitos.length; index += 1) {
|
|
69
|
+
// Lexador
|
|
70
|
+
const resultadoLexador = lexador.mapear([
|
|
71
|
+
"lmht {",
|
|
72
|
+
`variacao-fonte-alternativa: anotação(${valoresAceitos[index]});`,
|
|
73
|
+
"}"
|
|
74
|
+
]);
|
|
75
|
+
const resultadoAvaliadorSintatico = avaliador.analisar(resultadoLexador.simbolos);
|
|
76
|
+
expect(() => {
|
|
77
|
+
tradutor.serializar(resultadoAvaliadorSintatico);
|
|
78
|
+
}).toThrow('O valor da função anotação() deve estar entre 1 e 99');
|
|
79
|
+
}
|
|
80
|
+
});
|
|
81
|
+
it('Atribuindo Método "anotação()" com valor string - caso de sucesso', () => {
|
|
82
|
+
const formasAceitas = ['anotação', 'anotacao'];
|
|
83
|
+
const valoresAceitos = ['floral', 'ruby', 'circle'];
|
|
84
|
+
for (let valIndex = 0; valIndex < formasAceitas.length; valIndex += 1) {
|
|
85
|
+
for (let index = 0; index < valoresAceitos.length; index += 1) {
|
|
86
|
+
// Lexador
|
|
87
|
+
const resultadoLexador = lexador.mapear([
|
|
88
|
+
"lmht {",
|
|
89
|
+
`variacao-fonte-alternativa: ${formasAceitas[valIndex]}('${valoresAceitos[index]}');`,
|
|
90
|
+
"}"
|
|
91
|
+
]);
|
|
92
|
+
// O Lexador não deve encontrar erros
|
|
93
|
+
expect(resultadoLexador.erros).toHaveLength(0);
|
|
94
|
+
// O valor recebido deve ser mapeado como METODO
|
|
95
|
+
expect(resultadoLexador.simbolos).toEqual(expect.arrayContaining([
|
|
96
|
+
expect.objectContaining({ tipo: foles_1.default.METODO }),
|
|
97
|
+
]));
|
|
98
|
+
// O Lexador deve montar um objeto de comprimento 10
|
|
99
|
+
expect(resultadoLexador.simbolos).toHaveLength(10);
|
|
100
|
+
// Avaliador Sintático
|
|
101
|
+
const resultadoAvaliadorSintatico = avaliador.analisar(resultadoLexador.simbolos);
|
|
102
|
+
// O Avaliador deve montar um objeto com os devidos nomes FolEs e CSS
|
|
103
|
+
expect(resultadoAvaliadorSintatico.length).toBeGreaterThanOrEqual(1);
|
|
104
|
+
const primeiroResultado = resultadoAvaliadorSintatico[0];
|
|
105
|
+
expect(primeiroResultado).toBeInstanceOf(declaracoes_1.BlocoDeclaracao);
|
|
106
|
+
const primeiroResultadoTipado = primeiroResultado;
|
|
107
|
+
expect(primeiroResultadoTipado.modificadores.length).toBeGreaterThanOrEqual(1);
|
|
108
|
+
expect(primeiroResultadoTipado.modificadores[0].propriedadeCss).toStrictEqual('font-variant-alternates');
|
|
109
|
+
// Tradutor
|
|
110
|
+
const resultadoTradutor = tradutor.serializar(resultadoAvaliadorSintatico);
|
|
111
|
+
// O Tradutor deve serializar de acordo e traduzir anotação para annotation e conter o valor string
|
|
112
|
+
expect(resultadoTradutor).toContain('font-variant-alternates');
|
|
113
|
+
expect(resultadoTradutor).toContain(`annotation('${valoresAceitos[index]}');`);
|
|
114
|
+
}
|
|
115
|
+
}
|
|
116
|
+
});
|
|
117
|
+
it('Atribuindo Método "anotação()" com valor string - caso de falha', () => {
|
|
118
|
+
const valoresAceitos = ['--valorPersonalizado', 'herdar', 'inicial'];
|
|
119
|
+
for (let index = 0; index < valoresAceitos.length; index += 1) {
|
|
120
|
+
// Lexador
|
|
121
|
+
const resultadoLexador = lexador.mapear([
|
|
122
|
+
"lmht {",
|
|
123
|
+
`variacao-fonte-alternativa: anotação(${valoresAceitos[index]});`,
|
|
124
|
+
"}"
|
|
125
|
+
]);
|
|
126
|
+
const resultadoAvaliadorSintatico = avaliador.analisar(resultadoLexador.simbolos);
|
|
127
|
+
expect(() => {
|
|
128
|
+
tradutor.serializar(resultadoAvaliadorSintatico);
|
|
129
|
+
}).toThrow(`Propriedade 'variação-fonte-alternativa' com valor personalizado ${valoresAceitos[index]} inválido.`);
|
|
130
|
+
}
|
|
131
|
+
});
|
|
26
132
|
it('Atribuindo Método "borrar()"', () => {
|
|
27
133
|
for (let index = 0; index < metodos_1.MetodoBorrar.length; index += 1) {
|
|
28
134
|
const valoresAceitos = ['100px', '100%', '0.1', '0', '1', '1.75'];
|
|
@@ -154,6 +260,119 @@ describe('Testando Seletores que recebem MÉTODOS como valor', () => {
|
|
|
154
260
|
expect(resultadoTradutor).toContain('calc(100px - 80px);');
|
|
155
261
|
}
|
|
156
262
|
});
|
|
263
|
+
it('Atribuindo Método "conjunto-estilos()" - caso de sucesso', () => {
|
|
264
|
+
const valoresAceitos = ['1', '1, 2', '6, 12, 18'];
|
|
265
|
+
for (let index = 0; index < valoresAceitos.length; index += 1) {
|
|
266
|
+
// Lexador
|
|
267
|
+
const resultadoLexador = lexador.mapear([
|
|
268
|
+
"lmht {",
|
|
269
|
+
`variacao-fonte-alternativa: conjunto-estilos(${valoresAceitos[index]});`,
|
|
270
|
+
"}"
|
|
271
|
+
]);
|
|
272
|
+
// O Lexador não deve encontrar erros
|
|
273
|
+
expect(resultadoLexador.erros).toHaveLength(0);
|
|
274
|
+
// O valor recebido deve ser mapeado como METODO
|
|
275
|
+
expect(resultadoLexador.simbolos).toEqual(expect.arrayContaining([
|
|
276
|
+
expect.objectContaining({ tipo: foles_1.default.METODO }),
|
|
277
|
+
]));
|
|
278
|
+
// O Lexador deve montar um objeto contendo valores numéricos
|
|
279
|
+
expect(resultadoLexador.simbolos).toEqual(expect.arrayContaining([
|
|
280
|
+
expect.objectContaining({ tipo: foles_1.default.NUMERO }),
|
|
281
|
+
]));
|
|
282
|
+
// Avaliador Sintático
|
|
283
|
+
const resultadoAvaliadorSintatico = avaliador.analisar(resultadoLexador.simbolos);
|
|
284
|
+
// O Avaliador deve montar um objeto com os devidos nomes FolEs e CSS
|
|
285
|
+
expect(resultadoAvaliadorSintatico.length).toBeGreaterThanOrEqual(1);
|
|
286
|
+
const primeiroResultado = resultadoAvaliadorSintatico[0];
|
|
287
|
+
expect(primeiroResultado).toBeInstanceOf(declaracoes_1.BlocoDeclaracao);
|
|
288
|
+
const primeiroResultadoTipado = primeiroResultado;
|
|
289
|
+
expect(primeiroResultadoTipado.modificadores.length).toBeGreaterThanOrEqual(1);
|
|
290
|
+
expect(primeiroResultadoTipado.modificadores[0].propriedadeCss).toStrictEqual('font-variant-alternates');
|
|
291
|
+
// Tradutor
|
|
292
|
+
const resultadoTradutor = tradutor.serializar(resultadoAvaliadorSintatico);
|
|
293
|
+
// O Tradutor deve serializar de acordo e traduzir escalamento-vertical para scaleY
|
|
294
|
+
expect(resultadoTradutor).toContain('font-variant-alternates');
|
|
295
|
+
expect(resultadoTradutor).toContain(`styleset(${valoresAceitos[index]});`);
|
|
296
|
+
}
|
|
297
|
+
});
|
|
298
|
+
it('Atribuindo Método "conjunto-estilos()" - caso de falha', () => {
|
|
299
|
+
const valoresAceitos = ['0', '1, 21, 12', '3, 13, 30'];
|
|
300
|
+
for (let index = 0; index < valoresAceitos.length; index += 1) {
|
|
301
|
+
// Lexador
|
|
302
|
+
const resultadoLexador = lexador.mapear([
|
|
303
|
+
"lmht {",
|
|
304
|
+
`variacao-fonte-alternativa: conjunto-estilos(${valoresAceitos[index]});`,
|
|
305
|
+
"}"
|
|
306
|
+
]);
|
|
307
|
+
const resultadoAvaliadorSintatico = avaliador.analisar(resultadoLexador.simbolos);
|
|
308
|
+
expect(() => {
|
|
309
|
+
tradutor.serializar(resultadoAvaliadorSintatico);
|
|
310
|
+
}).toThrow('Os valores da função conjunto-estilos() devem estar entre 1 e 20');
|
|
311
|
+
}
|
|
312
|
+
});
|
|
313
|
+
it('Atribuindo Método "contador()"', () => {
|
|
314
|
+
const nomeSimbolo = new lexador_1.Simbolo('IDENTIFICADOR', 'contador', 'any', 1, 2, 3);
|
|
315
|
+
const estiloSimbolo = new lexador_1.Simbolo('IDENTIFICADOR', 'romano-maiusculo', 'any', 1, 2, 3);
|
|
316
|
+
const instanciaContador = new contador_1.Contador(nomeSimbolo, estiloSimbolo);
|
|
317
|
+
const estilosAceitos = [];
|
|
318
|
+
Object.keys(instanciaContador.estilosAceitos).forEach((valor) => estilosAceitos.push(valor));
|
|
319
|
+
const estilosTraduzidos = [];
|
|
320
|
+
Object.values(instanciaContador.estilosAceitos).forEach((valor) => estilosTraduzidos.push(valor));
|
|
321
|
+
for (let index = 0; index < estilosAceitos.length; index += 1) {
|
|
322
|
+
// Lexador
|
|
323
|
+
const resultadoLexador = lexador.mapear([
|
|
324
|
+
"lmht {",
|
|
325
|
+
`conteúdo: contador(contador1, ${estilosAceitos[index]});`,
|
|
326
|
+
"}"
|
|
327
|
+
]);
|
|
328
|
+
// O Lexador deve montar um objeto de comprimento 12 sem retornar erros
|
|
329
|
+
expect(resultadoLexador.simbolos).toHaveLength(12);
|
|
330
|
+
expect(resultadoLexador.erros).toHaveLength(0);
|
|
331
|
+
// O Lexador deve mapear METODO e IDENTIFICADOR no processo
|
|
332
|
+
expect(resultadoLexador.simbolos).toEqual(expect.arrayContaining([
|
|
333
|
+
expect.objectContaining({ tipo: foles_1.default.IDENTIFICADOR }),
|
|
334
|
+
expect.objectContaining({ tipo: foles_1.default.METODO }),
|
|
335
|
+
]));
|
|
336
|
+
// Avaliador Sintático
|
|
337
|
+
const resultadoAvaliadorSintatico = avaliador.analisar(resultadoLexador.simbolos);
|
|
338
|
+
// O Avaliador deve montar um objeto com o devido nome CSS
|
|
339
|
+
expect(resultadoAvaliadorSintatico.length).toBeGreaterThanOrEqual(1);
|
|
340
|
+
const primeiroResultado = resultadoAvaliadorSintatico[0];
|
|
341
|
+
expect(primeiroResultado).toBeInstanceOf(declaracoes_1.BlocoDeclaracao);
|
|
342
|
+
const primeiroResultadoTipado = primeiroResultado;
|
|
343
|
+
expect(primeiroResultadoTipado.modificadores.length).toBeGreaterThanOrEqual(1);
|
|
344
|
+
expect(primeiroResultadoTipado.modificadores[0].propriedadeCss).toStrictEqual('content');
|
|
345
|
+
// Tradutor
|
|
346
|
+
const resultadoTradutor = tradutor.serializar(resultadoAvaliadorSintatico);
|
|
347
|
+
expect(resultadoTradutor).toContain('content');
|
|
348
|
+
expect(resultadoTradutor).toContain(`counter(contador1, ${estilosTraduzidos[index]});`);
|
|
349
|
+
}
|
|
350
|
+
});
|
|
351
|
+
it('Caso de Falha - Método "contador()" com valor de estilo inválido', () => {
|
|
352
|
+
const nomeSimbolo = new lexador_1.Simbolo('IDENTIFICADOR', 'contador', 'any', 1, 2, 3);
|
|
353
|
+
const estiloSimbolo = new lexador_1.Simbolo('IDENTIFICADOR', 'romano-maiusculo', 'any', 1, 2, 3);
|
|
354
|
+
const instanciaContador = new contador_1.Contador(nomeSimbolo, estiloSimbolo);
|
|
355
|
+
const estilosAceitos = [];
|
|
356
|
+
Object.keys(instanciaContador.estilosAceitos).forEach((valor) => estilosAceitos.push(valor));
|
|
357
|
+
for (let index = 0; index < estilosAceitos.length; index += 1) {
|
|
358
|
+
const estiloErroDigitacao = estilosAceitos[index].replace(/./, "x");
|
|
359
|
+
// Lexador
|
|
360
|
+
const resultadoLexador = lexador.mapear([
|
|
361
|
+
"lmht {",
|
|
362
|
+
`conteúdo: contador(contador1, ${estiloErroDigitacao});`,
|
|
363
|
+
"}"
|
|
364
|
+
]);
|
|
365
|
+
// O Lexador deve montar um objeto de comprimento 12 sem retornar erros
|
|
366
|
+
expect(resultadoLexador.simbolos).toHaveLength(12);
|
|
367
|
+
expect(resultadoLexador.erros).toHaveLength(0);
|
|
368
|
+
// O Avaliador Sintático também deve retornar o seu objeto sem retornar erros
|
|
369
|
+
const resultadoAvaliadorSintatico = avaliador.analisar(resultadoLexador.simbolos);
|
|
370
|
+
// O Serializador deve retornar o erro de estilo inválido uma vez que não consegue traduzir o valor
|
|
371
|
+
expect(() => {
|
|
372
|
+
tradutor.serializar(resultadoAvaliadorSintatico);
|
|
373
|
+
}).toThrow(`Valor de estilo ${estiloErroDigitacao} inválido para a função contador().`);
|
|
374
|
+
}
|
|
375
|
+
});
|
|
157
376
|
it('Atribuindo Método "contraste()"', () => {
|
|
158
377
|
for (let index = 0; index < metodos_1.MetodoContraste.length; index += 1) {
|
|
159
378
|
const valoresAceitos = ['100px', '100%', '0.1', '0', '1', '1.75'];
|
|
@@ -538,6 +757,108 @@ describe('Testando Seletores que recebem MÉTODOS como valor', () => {
|
|
|
538
757
|
}
|
|
539
758
|
}
|
|
540
759
|
});
|
|
760
|
+
it('Atribuindo Método "espirrar()" - caso de sucesso', () => {
|
|
761
|
+
const valoresAceitos = ['1', '2', '12', '20'];
|
|
762
|
+
for (let index = 0; index < valoresAceitos.length; index += 1) {
|
|
763
|
+
// Lexador
|
|
764
|
+
const resultadoLexador = lexador.mapear([
|
|
765
|
+
"lmht {",
|
|
766
|
+
`variacao-fonte-alternativa: espirrar(${valoresAceitos[index]});`,
|
|
767
|
+
"}"
|
|
768
|
+
]);
|
|
769
|
+
// O Lexador não deve encontrar erros
|
|
770
|
+
expect(resultadoLexador.erros).toHaveLength(0);
|
|
771
|
+
// O valor recebido deve ser mapeado como METODO
|
|
772
|
+
expect(resultadoLexador.simbolos).toEqual(expect.arrayContaining([
|
|
773
|
+
expect.objectContaining({ tipo: foles_1.default.METODO }),
|
|
774
|
+
]));
|
|
775
|
+
// O Lexador deve montar um objeto de comprimento 10, incluindo mapeamento de valores numéricos
|
|
776
|
+
expect(resultadoLexador.simbolos).toHaveLength(10);
|
|
777
|
+
expect(resultadoLexador.simbolos).toEqual(expect.arrayContaining([
|
|
778
|
+
expect.objectContaining({ tipo: foles_1.default.NUMERO }),
|
|
779
|
+
]));
|
|
780
|
+
// Avaliador Sintático
|
|
781
|
+
const resultadoAvaliadorSintatico = avaliador.analisar(resultadoLexador.simbolos);
|
|
782
|
+
// O Avaliador deve montar um objeto com os devidos nomes FolEs e CSS
|
|
783
|
+
expect(resultadoAvaliadorSintatico.length).toBeGreaterThanOrEqual(1);
|
|
784
|
+
const primeiroResultado = resultadoAvaliadorSintatico[0];
|
|
785
|
+
expect(primeiroResultado).toBeInstanceOf(declaracoes_1.BlocoDeclaracao);
|
|
786
|
+
const primeiroResultadoTipado = primeiroResultado;
|
|
787
|
+
expect(primeiroResultadoTipado.modificadores.length).toBeGreaterThanOrEqual(1);
|
|
788
|
+
expect(primeiroResultadoTipado.modificadores[0].propriedadeCss).toStrictEqual('font-variant-alternates');
|
|
789
|
+
// Tradutor
|
|
790
|
+
const resultadoTradutor = tradutor.serializar(resultadoAvaliadorSintatico);
|
|
791
|
+
// O Tradutor deve serializar de acordo e traduzir espirrar para swash
|
|
792
|
+
expect(resultadoTradutor).toContain('font-variant-alternates');
|
|
793
|
+
expect(resultadoTradutor).toContain(`swash(${valoresAceitos[index]});`);
|
|
794
|
+
}
|
|
795
|
+
});
|
|
796
|
+
it('Atribuindo Método "espirrar()" - caso de falha', () => {
|
|
797
|
+
const valoresAceitos = ['0', '100', '300'];
|
|
798
|
+
for (let index = 0; index < valoresAceitos.length; index += 1) {
|
|
799
|
+
// Lexador
|
|
800
|
+
const resultadoLexador = lexador.mapear([
|
|
801
|
+
"lmht {",
|
|
802
|
+
`variacao-fonte-alternativa: espirrar(${valoresAceitos[index]});`,
|
|
803
|
+
"}"
|
|
804
|
+
]);
|
|
805
|
+
const resultadoAvaliadorSintatico = avaliador.analisar(resultadoLexador.simbolos);
|
|
806
|
+
expect(() => {
|
|
807
|
+
tradutor.serializar(resultadoAvaliadorSintatico);
|
|
808
|
+
}).toThrow('O valor da função espirrar() deve estar entre 1 e 99');
|
|
809
|
+
}
|
|
810
|
+
});
|
|
811
|
+
it('Atribuindo Método "estilistico()" - caso de sucesso', () => {
|
|
812
|
+
const valoresAceitos = ['1', '2', '12', '20'];
|
|
813
|
+
for (let index = 0; index < valoresAceitos.length; index += 1) {
|
|
814
|
+
// Lexador
|
|
815
|
+
const resultadoLexador = lexador.mapear([
|
|
816
|
+
"lmht {",
|
|
817
|
+
`variacao-fonte-alternativa: estilistico(${valoresAceitos[index]});`,
|
|
818
|
+
"}"
|
|
819
|
+
]);
|
|
820
|
+
// O Lexador não deve encontrar erros
|
|
821
|
+
expect(resultadoLexador.erros).toHaveLength(0);
|
|
822
|
+
// O valor recebido deve ser mapeado como METODO
|
|
823
|
+
expect(resultadoLexador.simbolos).toEqual(expect.arrayContaining([
|
|
824
|
+
expect.objectContaining({ tipo: foles_1.default.METODO }),
|
|
825
|
+
]));
|
|
826
|
+
// O Lexador deve montar um objeto de comprimento 10, incluindo mapeamento de valores numéricos
|
|
827
|
+
expect(resultadoLexador.simbolos).toHaveLength(10);
|
|
828
|
+
expect(resultadoLexador.simbolos).toEqual(expect.arrayContaining([
|
|
829
|
+
expect.objectContaining({ tipo: foles_1.default.NUMERO }),
|
|
830
|
+
]));
|
|
831
|
+
// Avaliador Sintático
|
|
832
|
+
const resultadoAvaliadorSintatico = avaliador.analisar(resultadoLexador.simbolos);
|
|
833
|
+
// O Avaliador deve montar um objeto com os devidos nomes FolEs e CSS
|
|
834
|
+
expect(resultadoAvaliadorSintatico.length).toBeGreaterThanOrEqual(1);
|
|
835
|
+
const primeiroResultado = resultadoAvaliadorSintatico[0];
|
|
836
|
+
expect(primeiroResultado).toBeInstanceOf(declaracoes_1.BlocoDeclaracao);
|
|
837
|
+
const primeiroResultadoTipado = primeiroResultado;
|
|
838
|
+
expect(primeiroResultadoTipado.modificadores.length).toBeGreaterThanOrEqual(1);
|
|
839
|
+
expect(primeiroResultadoTipado.modificadores[0].propriedadeCss).toStrictEqual('font-variant-alternates');
|
|
840
|
+
// Tradutor
|
|
841
|
+
const resultadoTradutor = tradutor.serializar(resultadoAvaliadorSintatico);
|
|
842
|
+
// O Tradutor deve serializar de acordo e traduzir estilístico para stylistic
|
|
843
|
+
expect(resultadoTradutor).toContain('font-variant-alternates');
|
|
844
|
+
expect(resultadoTradutor).toContain(`stylistic(${valoresAceitos[index]});`);
|
|
845
|
+
}
|
|
846
|
+
});
|
|
847
|
+
it('Atribuindo Método "estilistico()" - caso de falha', () => {
|
|
848
|
+
const valoresAceitos = ['0', '21', '30'];
|
|
849
|
+
for (let index = 0; index < valoresAceitos.length; index += 1) {
|
|
850
|
+
// Lexador
|
|
851
|
+
const resultadoLexador = lexador.mapear([
|
|
852
|
+
"lmht {",
|
|
853
|
+
`variacao-fonte-alternativa: estilistico(${valoresAceitos[index]});`,
|
|
854
|
+
"}"
|
|
855
|
+
]);
|
|
856
|
+
const resultadoAvaliadorSintatico = avaliador.analisar(resultadoLexador.simbolos);
|
|
857
|
+
expect(() => {
|
|
858
|
+
tradutor.serializar(resultadoAvaliadorSintatico);
|
|
859
|
+
}).toThrow('O valor da função estilistico() deve estar entre 1 e 20');
|
|
860
|
+
}
|
|
861
|
+
});
|
|
541
862
|
it('Atribuindo Método "gradiente-linear()" com valor de ângulo deg', () => {
|
|
542
863
|
for (let index = 0; index < metodos_1.MetodoGradienteLinear.length; index += 1) {
|
|
543
864
|
// Lexador
|
|
@@ -1050,6 +1371,105 @@ describe('Testando Seletores que recebem MÉTODOS como valor', () => {
|
|
|
1050
1371
|
}
|
|
1051
1372
|
}
|
|
1052
1373
|
});
|
|
1374
|
+
it('Atribuindo Método "ornamentos()" com valor numérico - caso de sucesso', () => {
|
|
1375
|
+
const valoresAceitos = ['1', '2', '12', '20'];
|
|
1376
|
+
for (let index = 0; index < valoresAceitos.length; index += 1) {
|
|
1377
|
+
// Lexador
|
|
1378
|
+
const resultadoLexador = lexador.mapear([
|
|
1379
|
+
"lmht {",
|
|
1380
|
+
`variacao-fonte-alternativa: ornamentos(${valoresAceitos[index]});`,
|
|
1381
|
+
"}"
|
|
1382
|
+
]);
|
|
1383
|
+
// O Lexador não deve encontrar erros
|
|
1384
|
+
expect(resultadoLexador.erros).toHaveLength(0);
|
|
1385
|
+
// O valor recebido deve ser mapeado como METODO
|
|
1386
|
+
expect(resultadoLexador.simbolos).toEqual(expect.arrayContaining([
|
|
1387
|
+
expect.objectContaining({ tipo: foles_1.default.METODO }),
|
|
1388
|
+
]));
|
|
1389
|
+
// O Lexador deve montar um objeto de comprimento 10, incluindo mapeamento de valores numéricos
|
|
1390
|
+
expect(resultadoLexador.simbolos).toHaveLength(10);
|
|
1391
|
+
expect(resultadoLexador.simbolos).toEqual(expect.arrayContaining([
|
|
1392
|
+
expect.objectContaining({ tipo: foles_1.default.NUMERO }),
|
|
1393
|
+
]));
|
|
1394
|
+
// Avaliador Sintático
|
|
1395
|
+
const resultadoAvaliadorSintatico = avaliador.analisar(resultadoLexador.simbolos);
|
|
1396
|
+
// O Avaliador deve montar um objeto com os devidos nomes FolEs e CSS
|
|
1397
|
+
expect(resultadoAvaliadorSintatico.length).toBeGreaterThanOrEqual(1);
|
|
1398
|
+
const primeiroResultado = resultadoAvaliadorSintatico[0];
|
|
1399
|
+
expect(primeiroResultado).toBeInstanceOf(declaracoes_1.BlocoDeclaracao);
|
|
1400
|
+
const primeiroResultadoTipado = primeiroResultado;
|
|
1401
|
+
expect(primeiroResultadoTipado.modificadores.length).toBeGreaterThanOrEqual(1);
|
|
1402
|
+
expect(primeiroResultadoTipado.modificadores[0].propriedadeCss).toStrictEqual('font-variant-alternates');
|
|
1403
|
+
// Tradutor
|
|
1404
|
+
const resultadoTradutor = tradutor.serializar(resultadoAvaliadorSintatico);
|
|
1405
|
+
// O Tradutor deve serializar de acordo e traduzir ornamentos para ornaments
|
|
1406
|
+
expect(resultadoTradutor).toContain('font-variant-alternates');
|
|
1407
|
+
expect(resultadoTradutor).toContain(`ornaments(${valoresAceitos[index]});`);
|
|
1408
|
+
}
|
|
1409
|
+
});
|
|
1410
|
+
it('Atribuindo Método "ornamentos()" com valor numérico - caso de falha', () => {
|
|
1411
|
+
const valoresAceitos = ['0', '100', '300'];
|
|
1412
|
+
for (let index = 0; index < valoresAceitos.length; index += 1) {
|
|
1413
|
+
// Lexador
|
|
1414
|
+
const resultadoLexador = lexador.mapear([
|
|
1415
|
+
"lmht {",
|
|
1416
|
+
`variacao-fonte-alternativa: ornamentos(${valoresAceitos[index]});`,
|
|
1417
|
+
"}"
|
|
1418
|
+
]);
|
|
1419
|
+
const resultadoAvaliadorSintatico = avaliador.analisar(resultadoLexador.simbolos);
|
|
1420
|
+
expect(() => {
|
|
1421
|
+
tradutor.serializar(resultadoAvaliadorSintatico);
|
|
1422
|
+
}).toThrow('O valor da função ornamentos() deve estar entre 1 e 99');
|
|
1423
|
+
}
|
|
1424
|
+
});
|
|
1425
|
+
it('Atribuindo Método "ornamentos()" com valor string - caso de sucesso', () => {
|
|
1426
|
+
const valoresAceitos = ['floral', 'ruby', 'circle'];
|
|
1427
|
+
for (let index = 0; index < valoresAceitos.length; index += 1) {
|
|
1428
|
+
// Lexador
|
|
1429
|
+
const resultadoLexador = lexador.mapear([
|
|
1430
|
+
"lmht {",
|
|
1431
|
+
`variacao-fonte-alternativa: ornamentos('${valoresAceitos[index]}');`,
|
|
1432
|
+
"}"
|
|
1433
|
+
]);
|
|
1434
|
+
// O Lexador não deve encontrar erros
|
|
1435
|
+
expect(resultadoLexador.erros).toHaveLength(0);
|
|
1436
|
+
// O valor recebido deve ser mapeado como METODO
|
|
1437
|
+
expect(resultadoLexador.simbolos).toEqual(expect.arrayContaining([
|
|
1438
|
+
expect.objectContaining({ tipo: foles_1.default.METODO }),
|
|
1439
|
+
]));
|
|
1440
|
+
// O Lexador deve montar um objeto de comprimento 10
|
|
1441
|
+
expect(resultadoLexador.simbolos).toHaveLength(10);
|
|
1442
|
+
// Avaliador Sintático
|
|
1443
|
+
const resultadoAvaliadorSintatico = avaliador.analisar(resultadoLexador.simbolos);
|
|
1444
|
+
// O Avaliador deve montar um objeto com os devidos nomes FolEs e CSS
|
|
1445
|
+
expect(resultadoAvaliadorSintatico.length).toBeGreaterThanOrEqual(1);
|
|
1446
|
+
const primeiroResultado = resultadoAvaliadorSintatico[0];
|
|
1447
|
+
expect(primeiroResultado).toBeInstanceOf(declaracoes_1.BlocoDeclaracao);
|
|
1448
|
+
const primeiroResultadoTipado = primeiroResultado;
|
|
1449
|
+
expect(primeiroResultadoTipado.modificadores.length).toBeGreaterThanOrEqual(1);
|
|
1450
|
+
expect(primeiroResultadoTipado.modificadores[0].propriedadeCss).toStrictEqual('font-variant-alternates');
|
|
1451
|
+
// Tradutor
|
|
1452
|
+
const resultadoTradutor = tradutor.serializar(resultadoAvaliadorSintatico);
|
|
1453
|
+
// O Tradutor deve serializar de acordo e traduzir ornamentos para ornaments e conter o valor string
|
|
1454
|
+
expect(resultadoTradutor).toContain('font-variant-alternates');
|
|
1455
|
+
expect(resultadoTradutor).toContain(`ornaments('${valoresAceitos[index]}');`);
|
|
1456
|
+
}
|
|
1457
|
+
});
|
|
1458
|
+
it('Atribuindo Método "ornamentos()" com valor string - caso de falha', () => {
|
|
1459
|
+
const valoresAceitos = ['--valorPersonalizado', 'herdar', 'inicial'];
|
|
1460
|
+
for (let index = 0; index < valoresAceitos.length; index += 1) {
|
|
1461
|
+
// Lexador
|
|
1462
|
+
const resultadoLexador = lexador.mapear([
|
|
1463
|
+
"lmht {",
|
|
1464
|
+
`variacao-fonte-alternativa: ornamentos(${valoresAceitos[index]});`,
|
|
1465
|
+
"}"
|
|
1466
|
+
]);
|
|
1467
|
+
const resultadoAvaliadorSintatico = avaliador.analisar(resultadoLexador.simbolos);
|
|
1468
|
+
expect(() => {
|
|
1469
|
+
tradutor.serializar(resultadoAvaliadorSintatico);
|
|
1470
|
+
}).toThrow(`Propriedade 'variação-fonte-alternativa' com valor personalizado ${valoresAceitos[index]} inválido.`);
|
|
1471
|
+
}
|
|
1472
|
+
});
|
|
1053
1473
|
it('Atribuindo Método "passos" (steps)', () => {
|
|
1054
1474
|
for (let index = 0; index < metodos_1.MetodoPassos.length; index += 1) {
|
|
1055
1475
|
// Lexador
|
|
@@ -1342,6 +1762,80 @@ describe('Testando Seletores que recebem MÉTODOS como valor', () => {
|
|
|
1342
1762
|
}
|
|
1343
1763
|
}
|
|
1344
1764
|
});
|
|
1765
|
+
it('Atribuindo Método "rotacionar-3d()" - caso de sucesso', () => {
|
|
1766
|
+
for (let index = 0; index < metodos_1.MetodosRotacionar.length; index += 1) {
|
|
1767
|
+
const valoresAceitos = ['0, 0, 0, 0', '1, 2, 0, 45deg', '1, 1, 1, 90graus'];
|
|
1768
|
+
for (let valIndex = 0; valIndex < valoresAceitos.length; valIndex += 1) {
|
|
1769
|
+
// Lexador
|
|
1770
|
+
const resultadoLexador = lexador.mapear([
|
|
1771
|
+
"lmht {",
|
|
1772
|
+
`${metodos_1.MetodosRotacionar[index]}: rotacionar-3d(${valoresAceitos[valIndex]});`,
|
|
1773
|
+
"}"
|
|
1774
|
+
]);
|
|
1775
|
+
// O Lexador não deve encontrar erros
|
|
1776
|
+
expect(resultadoLexador.erros).toHaveLength(0);
|
|
1777
|
+
// O valor recebido deve ser mapeado como METODO
|
|
1778
|
+
expect(resultadoLexador.simbolos).toEqual(expect.arrayContaining([
|
|
1779
|
+
expect.objectContaining({ tipo: foles_1.default.METODO }),
|
|
1780
|
+
]));
|
|
1781
|
+
// O Lexador deve montar um objeto de comprimento 17 caso haja quantificador e 16 caso não haja
|
|
1782
|
+
if (valIndex > 0) {
|
|
1783
|
+
expect(resultadoLexador.simbolos).toHaveLength(17);
|
|
1784
|
+
expect(resultadoLexador.simbolos).toEqual(expect.arrayContaining([
|
|
1785
|
+
expect.objectContaining({ tipo: foles_1.default.NUMERO }),
|
|
1786
|
+
expect.objectContaining({ tipo: foles_1.default.QUANTIFICADOR }),
|
|
1787
|
+
]));
|
|
1788
|
+
}
|
|
1789
|
+
else {
|
|
1790
|
+
expect(resultadoLexador.simbolos).toHaveLength(16);
|
|
1791
|
+
expect(resultadoLexador.simbolos).toEqual(expect.arrayContaining([
|
|
1792
|
+
expect.objectContaining({ tipo: foles_1.default.NUMERO }),
|
|
1793
|
+
]));
|
|
1794
|
+
}
|
|
1795
|
+
// Avaliador Sintático
|
|
1796
|
+
const resultadoAvaliadorSintatico = avaliador.analisar(resultadoLexador.simbolos);
|
|
1797
|
+
// O Avaliador deve montar um objeto com os devidos nomes FolEs e CSS
|
|
1798
|
+
expect(resultadoAvaliadorSintatico.length).toBeGreaterThanOrEqual(1);
|
|
1799
|
+
const primeiroResultado = resultadoAvaliadorSintatico[0];
|
|
1800
|
+
expect(primeiroResultado).toBeInstanceOf(declaracoes_1.BlocoDeclaracao);
|
|
1801
|
+
const primeiroResultadoTipado = primeiroResultado;
|
|
1802
|
+
expect(primeiroResultadoTipado.modificadores.length).toBeGreaterThanOrEqual(1);
|
|
1803
|
+
expect(primeiroResultadoTipado.modificadores[0].propriedadeCss).toStrictEqual(metodos_1.TraducaoValoresMetodos[metodos_1.MetodosRotacionar[index]]);
|
|
1804
|
+
// Tradutor
|
|
1805
|
+
const resultadoTradutor = tradutor.serializar(resultadoAvaliadorSintatico);
|
|
1806
|
+
// O Tradutor deve serializar de acordo e traduzir rotacionar-3d para rotate3d
|
|
1807
|
+
expect(resultadoTradutor).toContain(metodos_1.TraducaoValoresMetodos[metodos_1.MetodosRotacionar[index]]);
|
|
1808
|
+
if (valIndex < 2) {
|
|
1809
|
+
expect(resultadoTradutor).toContain(`rotate3d(${valoresAceitos[valIndex]});`);
|
|
1810
|
+
}
|
|
1811
|
+
else {
|
|
1812
|
+
expect(resultadoTradutor).toContain(`rotate3d(1, 1, 1, 90deg);`);
|
|
1813
|
+
}
|
|
1814
|
+
}
|
|
1815
|
+
}
|
|
1816
|
+
});
|
|
1817
|
+
it('Atribuindo Método "rotacionar-3d()" - caso de falha', () => {
|
|
1818
|
+
for (let index = 0; index < metodos_1.MetodosRotacionar.length; index += 1) {
|
|
1819
|
+
// Lexador
|
|
1820
|
+
const resultadoLexador = lexador.mapear([
|
|
1821
|
+
"lmht {",
|
|
1822
|
+
`${metodos_1.MetodosRotacionar[index]}: rotacionar-3d(1, 1, 1, 20px);`,
|
|
1823
|
+
"}"
|
|
1824
|
+
]);
|
|
1825
|
+
// O Lexador não deve encontrar erros
|
|
1826
|
+
expect(resultadoLexador.erros).toHaveLength(0);
|
|
1827
|
+
// O valor recebido deve ser mapeado como METODO
|
|
1828
|
+
expect(resultadoLexador.simbolos).toEqual(expect.arrayContaining([
|
|
1829
|
+
expect.objectContaining({ tipo: foles_1.default.METODO }),
|
|
1830
|
+
]));
|
|
1831
|
+
// Avaliador Sintático
|
|
1832
|
+
const resultadoAvaliadorSintatico = avaliador.analisar(resultadoLexador.simbolos);
|
|
1833
|
+
// Serializador não deve aceitar 'px' como quantificador válido
|
|
1834
|
+
expect(() => {
|
|
1835
|
+
tradutor.serializar(resultadoAvaliadorSintatico);
|
|
1836
|
+
}).toThrow("Propriedade 'transformar' com quantificador inválido");
|
|
1837
|
+
}
|
|
1838
|
+
});
|
|
1345
1839
|
it('Atribuindo Método "rotacionar-eixo-z()"', () => {
|
|
1346
1840
|
for (let index = 0; index < metodos_1.MetodosRotacionar.length; index += 1) {
|
|
1347
1841
|
const valoresAceitos = ['45graus', '45deg', '3.142rad', '0.1', '0', '1', '1.75'];
|
|
@@ -2132,6 +2626,57 @@ describe('Testando Seletores que recebem MÉTODOS como valor', () => {
|
|
|
2132
2626
|
}
|
|
2133
2627
|
}
|
|
2134
2628
|
});
|
|
2629
|
+
it('Atribuindo Método "variar-caractere()" - caso de sucesso', () => {
|
|
2630
|
+
const valoresAceitos = ['1', '2', '12', '20'];
|
|
2631
|
+
for (let index = 0; index < valoresAceitos.length; index += 1) {
|
|
2632
|
+
// Lexador
|
|
2633
|
+
const resultadoLexador = lexador.mapear([
|
|
2634
|
+
"lmht {",
|
|
2635
|
+
`variacao-fonte-alternativa: variar-caractere(${valoresAceitos[index]});`,
|
|
2636
|
+
"}"
|
|
2637
|
+
]);
|
|
2638
|
+
// O Lexador não deve encontrar erros
|
|
2639
|
+
expect(resultadoLexador.erros).toHaveLength(0);
|
|
2640
|
+
// O valor recebido deve ser mapeado como METODO
|
|
2641
|
+
expect(resultadoLexador.simbolos).toEqual(expect.arrayContaining([
|
|
2642
|
+
expect.objectContaining({ tipo: foles_1.default.METODO }),
|
|
2643
|
+
]));
|
|
2644
|
+
// O Lexador deve montar um objeto de comprimento 10, incluindo mapeamento de valores numéricos
|
|
2645
|
+
expect(resultadoLexador.simbolos).toHaveLength(10);
|
|
2646
|
+
expect(resultadoLexador.simbolos).toEqual(expect.arrayContaining([
|
|
2647
|
+
expect.objectContaining({ tipo: foles_1.default.NUMERO }),
|
|
2648
|
+
]));
|
|
2649
|
+
// Avaliador Sintático
|
|
2650
|
+
const resultadoAvaliadorSintatico = avaliador.analisar(resultadoLexador.simbolos);
|
|
2651
|
+
// O Avaliador deve montar um objeto com os devidos nomes FolEs e CSS
|
|
2652
|
+
expect(resultadoAvaliadorSintatico.length).toBeGreaterThanOrEqual(1);
|
|
2653
|
+
const primeiroResultado = resultadoAvaliadorSintatico[0];
|
|
2654
|
+
expect(primeiroResultado).toBeInstanceOf(declaracoes_1.BlocoDeclaracao);
|
|
2655
|
+
const primeiroResultadoTipado = primeiroResultado;
|
|
2656
|
+
expect(primeiroResultadoTipado.modificadores.length).toBeGreaterThanOrEqual(1);
|
|
2657
|
+
expect(primeiroResultadoTipado.modificadores[0].propriedadeCss).toStrictEqual('font-variant-alternates');
|
|
2658
|
+
// Tradutor
|
|
2659
|
+
const resultadoTradutor = tradutor.serializar(resultadoAvaliadorSintatico);
|
|
2660
|
+
// O Tradutor deve serializar de acordo e traduzir variar-caractere para character-variant
|
|
2661
|
+
expect(resultadoTradutor).toContain('font-variant-alternates');
|
|
2662
|
+
expect(resultadoTradutor).toContain(`character-variant(${valoresAceitos[index]});`);
|
|
2663
|
+
}
|
|
2664
|
+
});
|
|
2665
|
+
it('Atribuindo Método "variar-caractere()" - caso de falha', () => {
|
|
2666
|
+
const valoresAceitos = ['0', '210', '100'];
|
|
2667
|
+
for (let index = 0; index < valoresAceitos.length; index += 1) {
|
|
2668
|
+
// Lexador
|
|
2669
|
+
const resultadoLexador = lexador.mapear([
|
|
2670
|
+
"lmht {",
|
|
2671
|
+
`variacao-fonte-alternativa: variar-caractere(${valoresAceitos[index]});`,
|
|
2672
|
+
"}"
|
|
2673
|
+
]);
|
|
2674
|
+
const resultadoAvaliadorSintatico = avaliador.analisar(resultadoLexador.simbolos);
|
|
2675
|
+
expect(() => {
|
|
2676
|
+
tradutor.serializar(resultadoAvaliadorSintatico);
|
|
2677
|
+
}).toThrow('O valor da função variar-caractere() deve estar entre 1 e 99');
|
|
2678
|
+
}
|
|
2679
|
+
});
|
|
2135
2680
|
it('Caso de Falha - Atribuindo método inexistente', () => {
|
|
2136
2681
|
for (let index = 0; index < metodos_1.MetodosTranslacao.length; index += 1) {
|
|
2137
2682
|
const valoresAceitos = ['42px', '3ch', '0'];
|