@designliquido/foles 0.6.1 → 0.6.3
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/fontes/avaliador-sintatico/avaliador-sintatico.d.ts +1 -0
- package/fontes/avaliador-sintatico/avaliador-sintatico.js +281 -26
- package/fontes/avaliador-sintatico/avaliador-sintatico.js.map +1 -1
- package/fontes/foles.js +2 -2
- package/fontes/foles.js.map +1 -1
- package/fontes/lexador/palavras-reservadas/foles.d.ts +256 -238
- package/fontes/lexador/palavras-reservadas/foles.js +259 -238
- package/fontes/lexador/palavras-reservadas/foles.js.map +1 -1
- package/fontes/modificadores/atributos/posicoes.d.ts +3 -0
- package/fontes/modificadores/atributos/posicoes.js +23 -13
- package/fontes/modificadores/atributos/posicoes.js.map +1 -1
- package/fontes/modificadores/conteudo.js +2 -2
- package/fontes/modificadores/conteudo.js.map +1 -1
- package/fontes/modificadores/deslocamento.js +5 -3
- package/fontes/modificadores/deslocamento.js.map +1 -1
- package/fontes/modificadores/espacamento.js +2 -1
- package/fontes/modificadores/espacamento.js.map +1 -1
- package/fontes/modificadores/filtro-fundo.js +1 -2
- package/fontes/modificadores/filtro-fundo.js.map +1 -1
- package/fontes/modificadores/filtro.js +1 -6
- package/fontes/modificadores/filtro.js.map +1 -1
- package/fontes/modificadores/imagem-mascara.js +2 -3
- package/fontes/modificadores/imagem-mascara.js.map +1 -1
- package/fontes/modificadores/origem-imagem-borda.js +1 -1
- package/fontes/modificadores/origem-imagem-borda.js.map +1 -1
- package/fontes/modificadores/trajeto-deslocamento.js +2 -2
- package/fontes/modificadores/trajeto-deslocamento.js.map +1 -1
- package/fontes/modificadores/validacoes/quantificador.js +2 -1
- package/fontes/modificadores/validacoes/quantificador.js.map +1 -1
- package/fontes/valores/dicionario-valores.js +28 -1
- package/fontes/valores/dicionario-valores.js.map +1 -1
- package/fontes/valores/metodos/borrar.d.ts +9 -0
- package/fontes/valores/metodos/borrar.js +20 -0
- package/fontes/valores/metodos/borrar.js.map +1 -0
- package/fontes/valores/metodos/brilho.d.ts +9 -0
- package/fontes/valores/metodos/brilho.js +20 -0
- package/fontes/valores/metodos/brilho.js.map +1 -0
- package/fontes/valores/metodos/calcular.d.ts +12 -0
- package/fontes/valores/metodos/calcular.js +20 -0
- package/fontes/valores/metodos/calcular.js.map +1 -0
- package/fontes/valores/metodos/contraste.d.ts +9 -0
- package/fontes/valores/metodos/contraste.js +20 -0
- package/fontes/valores/metodos/contraste.js.map +1 -0
- package/fontes/valores/metodos/escala-cinza.d.ts +9 -0
- package/fontes/valores/metodos/escala-cinza.js +20 -0
- package/fontes/valores/metodos/escala-cinza.js.map +1 -0
- package/fontes/valores/metodos/gradiente-linear.d.ts +11 -0
- package/fontes/valores/metodos/gradiente-linear.js +22 -0
- package/fontes/valores/metodos/gradiente-linear.js.map +1 -0
- package/fontes/valores/metodos/inverter.d.ts +9 -0
- package/fontes/valores/metodos/inverter.js +20 -0
- package/fontes/valores/metodos/inverter.js.map +1 -0
- package/fontes/valores/metodos/opacar.d.ts +9 -0
- package/fontes/valores/metodos/opacar.js +20 -0
- package/fontes/valores/metodos/opacar.js.map +1 -0
- package/fontes/valores/metodos/projetar-sombra.d.ts +14 -0
- package/fontes/valores/metodos/projetar-sombra.js +43 -0
- package/fontes/valores/metodos/projetar-sombra.js.map +1 -0
- package/fontes/valores/metodos/raio.d.ts +10 -0
- package/fontes/valores/metodos/raio.js +23 -0
- package/fontes/valores/metodos/raio.js.map +1 -0
- package/fontes/valores/metodos/rotacionar-matiz.d.ts +9 -0
- package/fontes/valores/metodos/rotacionar-matiz.js +20 -0
- package/fontes/valores/metodos/rotacionar-matiz.js.map +1 -0
- package/fontes/valores/metodos/saturar.d.ts +9 -0
- package/fontes/valores/metodos/saturar.js +20 -0
- package/fontes/valores/metodos/saturar.js.map +1 -0
- package/fontes/valores/metodos/sepia.d.ts +9 -0
- package/fontes/valores/metodos/sepia.js +20 -0
- package/fontes/valores/metodos/sepia.js.map +1 -0
- package/package.json +3 -2
- package/testes/listas/metodos.d.ts +13 -0
- package/testes/listas/metodos.js +63 -7
- package/testes/listas/metodos.js.map +1 -1
- package/testes/listas/valor-numerico.d.ts +1 -0
- package/testes/listas/valor-numerico.js +14 -10
- package/testes/listas/valor-numerico.js.map +1 -1
- package/testes/modificadores/metodos.test.js +653 -37
- package/testes/modificadores/metodos.test.js.map +1 -1
- package/testes/modificadores/valor-numerico.test.js +114 -28
- package/testes/modificadores/valor-numerico.test.js.map +1 -1
- package/testes/tradutor.test.js +1 -1
- package/testes/tradutor.test.js.map +1 -1
|
@@ -21,6 +21,190 @@ describe('Testando Seletores que recebem MÉTODOS como valor', () => {
|
|
|
21
21
|
avaliador = new avaliador_sintatico_1.AvaliadorSintatico(importador);
|
|
22
22
|
tradutor = new serializadores_1.Serializador();
|
|
23
23
|
});
|
|
24
|
+
it('Atribuindo Método "borrar()"', () => {
|
|
25
|
+
for (let index = 0; index < metodos_1.MetodoBorrar.length; index += 1) {
|
|
26
|
+
const valoresAceitos = ['100px', '100%', '0.1', '0', '1', '1.75'];
|
|
27
|
+
for (let valIndex = 0; valIndex < valoresAceitos.length; valIndex += 1) {
|
|
28
|
+
// Lexador
|
|
29
|
+
const resultadoLexador = lexador.mapear([
|
|
30
|
+
"lmht {",
|
|
31
|
+
`${metodos_1.MetodoBorrar[index]}: borrar(${valoresAceitos[valIndex]});`,
|
|
32
|
+
"}"
|
|
33
|
+
]);
|
|
34
|
+
// O Lexador não deve encontrar erros
|
|
35
|
+
expect(resultadoLexador.erros).toHaveLength(0);
|
|
36
|
+
// O valor recebido deve ser mapeado como METODO
|
|
37
|
+
expect(resultadoLexador.simbolos).toEqual(expect.arrayContaining([
|
|
38
|
+
expect.objectContaining({ tipo: foles_1.default.METODO }),
|
|
39
|
+
]));
|
|
40
|
+
// O Lexador deve montar um objeto de comprimento 11 caso haja quantificador e 10 caso não haja
|
|
41
|
+
if (valIndex === 0 || valIndex === 1) {
|
|
42
|
+
expect(resultadoLexador.simbolos).toHaveLength(11);
|
|
43
|
+
expect(resultadoLexador.simbolos).toEqual(expect.arrayContaining([
|
|
44
|
+
expect.objectContaining({ tipo: foles_1.default.NUMERO }),
|
|
45
|
+
expect.objectContaining({ tipo: foles_1.default.QUANTIFICADOR }),
|
|
46
|
+
]));
|
|
47
|
+
}
|
|
48
|
+
else {
|
|
49
|
+
expect(resultadoLexador.simbolos).toHaveLength(10);
|
|
50
|
+
expect(resultadoLexador.simbolos).toEqual(expect.arrayContaining([
|
|
51
|
+
expect.objectContaining({ tipo: foles_1.default.NUMERO }),
|
|
52
|
+
]));
|
|
53
|
+
}
|
|
54
|
+
// Avaliador Sintático
|
|
55
|
+
const resultadoAvaliadorSintatico = avaliador.analisar(resultadoLexador.simbolos);
|
|
56
|
+
// O Avaliador deve montar um objeto com os devidos nomes FolEs e CSS
|
|
57
|
+
expect(resultadoAvaliadorSintatico[0].modificadores[0].propriedadeCss).toStrictEqual(metodos_1.TraducaoValoresMetodos[metodos_1.MetodoBorrar[index]]);
|
|
58
|
+
// Tradutor
|
|
59
|
+
const resultadoTradutor = tradutor.serializar(resultadoAvaliadorSintatico);
|
|
60
|
+
// O Tradutor deve serializar de acordo e traduzir borrar para blur
|
|
61
|
+
expect(resultadoTradutor).toContain(metodos_1.TraducaoValoresMetodos[metodos_1.MetodoBorrar[index]]);
|
|
62
|
+
expect(resultadoTradutor).toContain(`blur(${valoresAceitos[valIndex]});`);
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
});
|
|
66
|
+
it('Atribuindo Método "brilho()"', () => {
|
|
67
|
+
for (let index = 0; index < metodos_1.MetodoBrilho.length; index += 1) {
|
|
68
|
+
const valoresAceitos = ['100px', '100%', '0.1', '0', '1', '1.75'];
|
|
69
|
+
for (let valIndex = 0; valIndex < valoresAceitos.length; valIndex += 1) {
|
|
70
|
+
// Lexador
|
|
71
|
+
const resultadoLexador = lexador.mapear([
|
|
72
|
+
"lmht {",
|
|
73
|
+
`${metodos_1.MetodoBrilho[index]}: brilho(${valoresAceitos[valIndex]});`,
|
|
74
|
+
"}"
|
|
75
|
+
]);
|
|
76
|
+
// O Lexador não deve encontrar erros
|
|
77
|
+
expect(resultadoLexador.erros).toHaveLength(0);
|
|
78
|
+
// O valor recebido deve ser mapeado como METODO
|
|
79
|
+
expect(resultadoLexador.simbolos).toEqual(expect.arrayContaining([
|
|
80
|
+
expect.objectContaining({ tipo: foles_1.default.METODO }),
|
|
81
|
+
]));
|
|
82
|
+
// O Lexador deve montar um objeto de comprimento 11 caso haja quantificador e 10 caso não haja
|
|
83
|
+
if (valIndex === 0 || valIndex === 1) {
|
|
84
|
+
expect(resultadoLexador.simbolos).toHaveLength(11);
|
|
85
|
+
expect(resultadoLexador.simbolos).toEqual(expect.arrayContaining([
|
|
86
|
+
expect.objectContaining({ tipo: foles_1.default.NUMERO }),
|
|
87
|
+
expect.objectContaining({ tipo: foles_1.default.QUANTIFICADOR }),
|
|
88
|
+
]));
|
|
89
|
+
}
|
|
90
|
+
else {
|
|
91
|
+
expect(resultadoLexador.simbolos).toHaveLength(10);
|
|
92
|
+
expect(resultadoLexador.simbolos).toEqual(expect.arrayContaining([
|
|
93
|
+
expect.objectContaining({ tipo: foles_1.default.NUMERO }),
|
|
94
|
+
]));
|
|
95
|
+
}
|
|
96
|
+
// Avaliador Sintático
|
|
97
|
+
const resultadoAvaliadorSintatico = avaliador.analisar(resultadoLexador.simbolos);
|
|
98
|
+
// O Avaliador deve montar um objeto com os devidos nomes FolEs e CSS
|
|
99
|
+
expect(resultadoAvaliadorSintatico[0].modificadores[0].propriedadeCss).toStrictEqual(metodos_1.TraducaoValoresMetodos[metodos_1.MetodoBrilho[index]]);
|
|
100
|
+
// Tradutor
|
|
101
|
+
const resultadoTradutor = tradutor.serializar(resultadoAvaliadorSintatico);
|
|
102
|
+
// O Tradutor deve serializar de acordo e traduzir brilho para brightness
|
|
103
|
+
expect(resultadoTradutor).toContain(metodos_1.TraducaoValoresMetodos[metodos_1.MetodoBrilho[index]]);
|
|
104
|
+
expect(resultadoTradutor).toContain(`brightness(${valoresAceitos[valIndex]});`);
|
|
105
|
+
}
|
|
106
|
+
}
|
|
107
|
+
});
|
|
108
|
+
it('Atribuindo Método "calcular()"', () => {
|
|
109
|
+
for (let index = 0; index < metodos_1.MetodoCalcular.length; index += 1) {
|
|
110
|
+
// Lexador
|
|
111
|
+
const resultadoLexador = lexador.mapear([
|
|
112
|
+
"lmht {",
|
|
113
|
+
`${metodos_1.MetodoCalcular[index]}: calcular(100px - 80px);`,
|
|
114
|
+
"}"
|
|
115
|
+
]);
|
|
116
|
+
// O Lexador deve montar um objeto de comprimento 14 sem retornar nenhum erro
|
|
117
|
+
expect(resultadoLexador.simbolos).toHaveLength(14);
|
|
118
|
+
expect(resultadoLexador.erros).toHaveLength(0);
|
|
119
|
+
// O valor recebido deve ser mapeado como METODO
|
|
120
|
+
expect(resultadoLexador.simbolos).toEqual(expect.arrayContaining([
|
|
121
|
+
expect.objectContaining({ tipo: foles_1.default.METODO }),
|
|
122
|
+
]));
|
|
123
|
+
// O Lexador também deve encontrar números e quantificadores no mapeamento
|
|
124
|
+
expect(resultadoLexador.simbolos).toEqual(expect.arrayContaining([
|
|
125
|
+
expect.objectContaining({ tipo: foles_1.default.NUMERO }),
|
|
126
|
+
expect.objectContaining({ tipo: foles_1.default.QUANTIFICADOR }),
|
|
127
|
+
]));
|
|
128
|
+
// Avaliador Sintático
|
|
129
|
+
const resultadoAvaliadorSintatico = avaliador.analisar(resultadoLexador.simbolos);
|
|
130
|
+
// O Avaliador deve montar um objeto com os devidos nomes FolEs e CSS
|
|
131
|
+
expect(resultadoAvaliadorSintatico[0].modificadores[0].propriedadeCss).toStrictEqual(metodos_1.TraducaoValoresMetodos[metodos_1.MetodoCalcular[index]]);
|
|
132
|
+
// Tradutor
|
|
133
|
+
const resultadoTradutor = tradutor.serializar(resultadoAvaliadorSintatico);
|
|
134
|
+
expect(resultadoTradutor).toContain(metodos_1.TraducaoValoresMetodos[metodos_1.MetodoCalcular[index]]);
|
|
135
|
+
expect(resultadoTradutor).toContain('calc(100px - 80px);');
|
|
136
|
+
}
|
|
137
|
+
});
|
|
138
|
+
it('Atribuindo Método "contraste()"', () => {
|
|
139
|
+
for (let index = 0; index < metodos_1.MetodoContraste.length; index += 1) {
|
|
140
|
+
const valoresAceitos = ['100px', '100%', '0.1', '0', '1', '1.75'];
|
|
141
|
+
for (let valIndex = 0; valIndex < valoresAceitos.length; valIndex += 1) {
|
|
142
|
+
// Lexador
|
|
143
|
+
const resultadoLexador = lexador.mapear([
|
|
144
|
+
"lmht {",
|
|
145
|
+
`${metodos_1.MetodoContraste[index]}: contraste(${valoresAceitos[valIndex]});`,
|
|
146
|
+
"}"
|
|
147
|
+
]);
|
|
148
|
+
// O Lexador deve montar um objeto de comprimento 11 caso haja quantificador e 10 caso não haja
|
|
149
|
+
if (valIndex === 0 || valIndex === 1) {
|
|
150
|
+
expect(resultadoLexador.simbolos).toHaveLength(11);
|
|
151
|
+
expect(resultadoLexador.simbolos).toEqual(expect.arrayContaining([
|
|
152
|
+
expect.objectContaining({ tipo: foles_1.default.NUMERO }),
|
|
153
|
+
expect.objectContaining({ tipo: foles_1.default.QUANTIFICADOR }),
|
|
154
|
+
]));
|
|
155
|
+
}
|
|
156
|
+
else {
|
|
157
|
+
expect(resultadoLexador.simbolos).toHaveLength(10);
|
|
158
|
+
expect(resultadoLexador.simbolos).toEqual(expect.arrayContaining([
|
|
159
|
+
expect.objectContaining({ tipo: foles_1.default.NUMERO }),
|
|
160
|
+
]));
|
|
161
|
+
}
|
|
162
|
+
// O Lexador não deve encontrar erros
|
|
163
|
+
expect(resultadoLexador.erros).toHaveLength(0);
|
|
164
|
+
// O valor recebido deve ser mapeado como METODO
|
|
165
|
+
expect(resultadoLexador.simbolos).toEqual(expect.arrayContaining([
|
|
166
|
+
expect.objectContaining({ tipo: foles_1.default.METODO }),
|
|
167
|
+
]));
|
|
168
|
+
// Avaliador Sintático
|
|
169
|
+
const resultadoAvaliadorSintatico = avaliador.analisar(resultadoLexador.simbolos);
|
|
170
|
+
// O Avaliador deve montar um objeto com os devidos nomes FolEs e CSS
|
|
171
|
+
expect(resultadoAvaliadorSintatico[0].modificadores[0].propriedadeCss).toStrictEqual(metodos_1.TraducaoValoresMetodos[metodos_1.MetodoContraste[index]]);
|
|
172
|
+
// Tradutor
|
|
173
|
+
const resultadoTradutor = tradutor.serializar(resultadoAvaliadorSintatico);
|
|
174
|
+
expect(resultadoTradutor).toContain(metodos_1.TraducaoValoresMetodos[metodos_1.MetodoContraste[index]]);
|
|
175
|
+
expect(resultadoTradutor).toContain(`contrast(${valoresAceitos[valIndex]});`);
|
|
176
|
+
}
|
|
177
|
+
}
|
|
178
|
+
});
|
|
179
|
+
it('Atribuindo Método "curva-cúbica" (cubic-bezier)', () => {
|
|
180
|
+
for (let index = 0; index < metodos_1.MetodoCurvaCubica.length; index += 1) {
|
|
181
|
+
// Lexador
|
|
182
|
+
const resultadoLexador = lexador.mapear([
|
|
183
|
+
"lmht {",
|
|
184
|
+
`${metodos_1.MetodoCurvaCubica[index]}: curva-cúbica(0.42, 0.0, 1.0, 1.0);`,
|
|
185
|
+
"}"
|
|
186
|
+
]);
|
|
187
|
+
// O Lexador deve montar um objeto de comprimento 16 sem retornar nenhum erro
|
|
188
|
+
expect(resultadoLexador.simbolos).toHaveLength(16);
|
|
189
|
+
expect(resultadoLexador.erros).toHaveLength(0);
|
|
190
|
+
// O valor recebido deve ser mapeado como METODO
|
|
191
|
+
expect(resultadoLexador.simbolos).toEqual(expect.arrayContaining([
|
|
192
|
+
expect.objectContaining({ tipo: foles_1.default.METODO }),
|
|
193
|
+
]));
|
|
194
|
+
// O Lexador também deve encontrar números no mapeamento
|
|
195
|
+
expect(resultadoLexador.simbolos).toEqual(expect.arrayContaining([
|
|
196
|
+
expect.objectContaining({ tipo: foles_1.default.NUMERO }),
|
|
197
|
+
]));
|
|
198
|
+
// Avaliador Sintático
|
|
199
|
+
const resultadoAvaliadorSintatico = avaliador.analisar(resultadoLexador.simbolos);
|
|
200
|
+
// O Avaliador deve montar um objeto com os devidos nomes FolEs e CSS
|
|
201
|
+
expect(resultadoAvaliadorSintatico[0].modificadores[0].propriedadeCss).toStrictEqual(metodos_1.TraducaoValoresMetodos[metodos_1.MetodoCurvaCubica[index]]);
|
|
202
|
+
// // // // Tradutor
|
|
203
|
+
const resultadoTradutor = tradutor.serializar(resultadoAvaliadorSintatico);
|
|
204
|
+
expect(resultadoTradutor).toContain(metodos_1.TraducaoValoresMetodos[metodos_1.MetodoCurvaCubica[index]]);
|
|
205
|
+
expect(resultadoTradutor).toContain('cubic-bezier(0.42, 0, 1, 1);');
|
|
206
|
+
}
|
|
207
|
+
});
|
|
24
208
|
it('Atribuindo Método "encaixar-conteúdo" (fit-content)', () => {
|
|
25
209
|
for (let index = 0; index < metodos_1.MetodoEncaixarConteudo.length; index += 1) {
|
|
26
210
|
// Lexador
|
|
@@ -50,6 +234,167 @@ describe('Testando Seletores que recebem MÉTODOS como valor', () => {
|
|
|
50
234
|
expect(resultadoTradutor).toContain('fit-content(200px)');
|
|
51
235
|
}
|
|
52
236
|
});
|
|
237
|
+
it('Atribuindo Método "escala-cinza()"', () => {
|
|
238
|
+
for (let index = 0; index < metodos_1.MetodoEscalaCinza.length; index += 1) {
|
|
239
|
+
const valoresAceitos = ['100px', '100%', '0.1', '0', '1', '1.75'];
|
|
240
|
+
for (let valIndex = 0; valIndex < valoresAceitos.length; valIndex += 1) {
|
|
241
|
+
// Lexador
|
|
242
|
+
const resultadoLexador = lexador.mapear([
|
|
243
|
+
"lmht {",
|
|
244
|
+
`${metodos_1.MetodoEscalaCinza[index]}: escala-cinza(${valoresAceitos[valIndex]});`,
|
|
245
|
+
"}"
|
|
246
|
+
]);
|
|
247
|
+
// O Lexador não deve encontrar erros
|
|
248
|
+
expect(resultadoLexador.erros).toHaveLength(0);
|
|
249
|
+
// O valor recebido deve ser mapeado como METODO
|
|
250
|
+
expect(resultadoLexador.simbolos).toEqual(expect.arrayContaining([
|
|
251
|
+
expect.objectContaining({ tipo: foles_1.default.METODO }),
|
|
252
|
+
]));
|
|
253
|
+
// O Lexador deve montar um objeto de comprimento 11 caso haja quantificador e 10 caso não haja
|
|
254
|
+
if (valIndex === 0 || valIndex === 1) {
|
|
255
|
+
expect(resultadoLexador.simbolos).toHaveLength(11);
|
|
256
|
+
expect(resultadoLexador.simbolos).toEqual(expect.arrayContaining([
|
|
257
|
+
expect.objectContaining({ tipo: foles_1.default.NUMERO }),
|
|
258
|
+
expect.objectContaining({ tipo: foles_1.default.QUANTIFICADOR }),
|
|
259
|
+
]));
|
|
260
|
+
}
|
|
261
|
+
else {
|
|
262
|
+
expect(resultadoLexador.simbolos).toHaveLength(10);
|
|
263
|
+
expect(resultadoLexador.simbolos).toEqual(expect.arrayContaining([
|
|
264
|
+
expect.objectContaining({ tipo: foles_1.default.NUMERO }),
|
|
265
|
+
]));
|
|
266
|
+
}
|
|
267
|
+
// Avaliador Sintático
|
|
268
|
+
const resultadoAvaliadorSintatico = avaliador.analisar(resultadoLexador.simbolos);
|
|
269
|
+
// O Avaliador deve montar um objeto com os devidos nomes FolEs e CSS
|
|
270
|
+
expect(resultadoAvaliadorSintatico[0].modificadores[0].propriedadeCss).toStrictEqual(metodos_1.TraducaoValoresMetodos[metodos_1.MetodoEscalaCinza[index]]);
|
|
271
|
+
// Tradutor
|
|
272
|
+
const resultadoTradutor = tradutor.serializar(resultadoAvaliadorSintatico);
|
|
273
|
+
// O Tradutor deve serializar de acordo e traduzir escala-cinza para grayscale
|
|
274
|
+
expect(resultadoTradutor).toContain(metodos_1.TraducaoValoresMetodos[metodos_1.MetodoEscalaCinza[index]]);
|
|
275
|
+
expect(resultadoTradutor).toContain(`grayscale(${valoresAceitos[valIndex]});`);
|
|
276
|
+
}
|
|
277
|
+
}
|
|
278
|
+
});
|
|
279
|
+
it('Atribuindo Método "gradiente-linear()" com valor de ângulo', () => {
|
|
280
|
+
for (let index = 0; index < metodos_1.MetodoGradienteLinear.length; index += 1) {
|
|
281
|
+
// Lexador
|
|
282
|
+
const resultadoLexador = lexador.mapear([
|
|
283
|
+
"lmht {",
|
|
284
|
+
`${metodos_1.MetodoGradienteLinear[index]}: gradiente-linear(90deg, verde, amarelo);`,
|
|
285
|
+
"}"
|
|
286
|
+
]);
|
|
287
|
+
// O Lexador deve montar um objeto de comprimento 15 sem retornar nenhum erro
|
|
288
|
+
expect(resultadoLexador.simbolos).toHaveLength(15);
|
|
289
|
+
expect(resultadoLexador.erros).toHaveLength(0);
|
|
290
|
+
// O valor recebido deve ser mapeado como METODO
|
|
291
|
+
expect(resultadoLexador.simbolos).toEqual(expect.arrayContaining([
|
|
292
|
+
expect.objectContaining({ tipo: foles_1.default.METODO }),
|
|
293
|
+
]));
|
|
294
|
+
// O Lexador também deve encontrar número e quantificador no mapeamento
|
|
295
|
+
expect(resultadoLexador.simbolos).toEqual(expect.arrayContaining([
|
|
296
|
+
expect.objectContaining({ tipo: foles_1.default.NUMERO }),
|
|
297
|
+
expect.objectContaining({ tipo: foles_1.default.QUANTIFICADOR }),
|
|
298
|
+
]));
|
|
299
|
+
// Avaliador Sintático
|
|
300
|
+
const resultadoAvaliadorSintatico = avaliador.analisar(resultadoLexador.simbolos);
|
|
301
|
+
// O Avaliador deve montar um objeto com os devidos nomes FolEs e CSS
|
|
302
|
+
expect(resultadoAvaliadorSintatico[0].modificadores[0].propriedadeCss).toStrictEqual(metodos_1.TraducaoValoresMetodos[metodos_1.MetodoGradienteLinear[index]]);
|
|
303
|
+
// Tradutor
|
|
304
|
+
const resultadoTradutor = tradutor.serializar(resultadoAvaliadorSintatico);
|
|
305
|
+
expect(resultadoTradutor).toContain(metodos_1.TraducaoValoresMetodos[metodos_1.MetodoGradienteLinear[index]]);
|
|
306
|
+
expect(resultadoTradutor).toContain('linear-gradient(90deg, green, yellow);');
|
|
307
|
+
}
|
|
308
|
+
});
|
|
309
|
+
it('Atribuindo Método "gradiente-linear()" com valor de posição', () => {
|
|
310
|
+
for (let index = 0; index < metodos_1.MetodoGradienteLinear.length; index += 1) {
|
|
311
|
+
const posicoes = ['superior', 'inferior', 'direita', 'esquerda'];
|
|
312
|
+
for (let posIndex = 0; posIndex < posicoes.length; posIndex += 1) {
|
|
313
|
+
// Lexador
|
|
314
|
+
const resultadoLexador = lexador.mapear([
|
|
315
|
+
"lmht {",
|
|
316
|
+
`${metodos_1.MetodoGradienteLinear[index]}: gradiente-linear(${posicoes[posIndex]}, azul, vermelho);`,
|
|
317
|
+
"}"
|
|
318
|
+
]);
|
|
319
|
+
// O Lexador deve montar um objeto de comprimento 14 sem retornar nenhum erro
|
|
320
|
+
expect(resultadoLexador.simbolos).toHaveLength(14);
|
|
321
|
+
expect(resultadoLexador.erros).toHaveLength(0);
|
|
322
|
+
// O valor recebido deve ser mapeado como METODO
|
|
323
|
+
expect(resultadoLexador.simbolos).toEqual(expect.arrayContaining([
|
|
324
|
+
expect.objectContaining({ tipo: foles_1.default.METODO }),
|
|
325
|
+
]));
|
|
326
|
+
// O Lexador também deve encontrar um qualitativo no mapeamento, referente à posição
|
|
327
|
+
expect(resultadoLexador.simbolos).toEqual(expect.arrayContaining([
|
|
328
|
+
expect.objectContaining({ tipo: foles_1.default.QUALITATIVO }),
|
|
329
|
+
]));
|
|
330
|
+
// Avaliador Sintático
|
|
331
|
+
const resultadoAvaliadorSintatico = avaliador.analisar(resultadoLexador.simbolos);
|
|
332
|
+
// O Avaliador deve montar um objeto com os devidos nomes FolEs e CSS
|
|
333
|
+
expect(resultadoAvaliadorSintatico[0].modificadores[0].propriedadeCss).toStrictEqual(metodos_1.TraducaoValoresMetodos[metodos_1.MetodoGradienteLinear[index]]);
|
|
334
|
+
// Tradutor
|
|
335
|
+
const resultadoTradutor = tradutor.serializar(resultadoAvaliadorSintatico);
|
|
336
|
+
expect(resultadoTradutor).toContain(metodos_1.TraducaoValoresMetodos[metodos_1.MetodoGradienteLinear[index]]);
|
|
337
|
+
switch (posicoes[posIndex]) {
|
|
338
|
+
case 'superior':
|
|
339
|
+
expect(resultadoTradutor).toContain('linear-gradient(0deg, blue, red);');
|
|
340
|
+
break;
|
|
341
|
+
case 'direita':
|
|
342
|
+
expect(resultadoTradutor).toContain('linear-gradient(90deg, blue, red);');
|
|
343
|
+
break;
|
|
344
|
+
case 'inferior':
|
|
345
|
+
expect(resultadoTradutor).toContain('linear-gradient(180deg, blue, red);');
|
|
346
|
+
break;
|
|
347
|
+
case 'esquerda':
|
|
348
|
+
expect(resultadoTradutor).toContain('linear-gradient(270deg, blue, red);');
|
|
349
|
+
break;
|
|
350
|
+
default:
|
|
351
|
+
break;
|
|
352
|
+
}
|
|
353
|
+
}
|
|
354
|
+
}
|
|
355
|
+
});
|
|
356
|
+
it('Atribuindo Método "inverter()"', () => {
|
|
357
|
+
for (let index = 0; index < metodos_1.MetodoInverter.length; index += 1) {
|
|
358
|
+
const valoresAceitos = ['100px', '100%', '0.1', '0', '1', '1.75'];
|
|
359
|
+
for (let valIndex = 0; valIndex < valoresAceitos.length; valIndex += 1) {
|
|
360
|
+
// Lexador
|
|
361
|
+
const resultadoLexador = lexador.mapear([
|
|
362
|
+
"lmht {",
|
|
363
|
+
`${metodos_1.MetodoInverter[index]}: inverter(${valoresAceitos[valIndex]});`,
|
|
364
|
+
"}"
|
|
365
|
+
]);
|
|
366
|
+
// O Lexador não deve encontrar erros
|
|
367
|
+
expect(resultadoLexador.erros).toHaveLength(0);
|
|
368
|
+
// O valor recebido deve ser mapeado como METODO
|
|
369
|
+
expect(resultadoLexador.simbolos).toEqual(expect.arrayContaining([
|
|
370
|
+
expect.objectContaining({ tipo: foles_1.default.METODO }),
|
|
371
|
+
]));
|
|
372
|
+
// O Lexador deve montar um objeto de comprimento 11 caso haja quantificador e 10 caso não haja
|
|
373
|
+
if (valIndex === 0 || valIndex === 1) {
|
|
374
|
+
expect(resultadoLexador.simbolos).toHaveLength(11);
|
|
375
|
+
expect(resultadoLexador.simbolos).toEqual(expect.arrayContaining([
|
|
376
|
+
expect.objectContaining({ tipo: foles_1.default.NUMERO }),
|
|
377
|
+
expect.objectContaining({ tipo: foles_1.default.QUANTIFICADOR }),
|
|
378
|
+
]));
|
|
379
|
+
}
|
|
380
|
+
else {
|
|
381
|
+
expect(resultadoLexador.simbolos).toHaveLength(10);
|
|
382
|
+
expect(resultadoLexador.simbolos).toEqual(expect.arrayContaining([
|
|
383
|
+
expect.objectContaining({ tipo: foles_1.default.NUMERO }),
|
|
384
|
+
]));
|
|
385
|
+
}
|
|
386
|
+
// Avaliador Sintático
|
|
387
|
+
const resultadoAvaliadorSintatico = avaliador.analisar(resultadoLexador.simbolos);
|
|
388
|
+
// O Avaliador deve montar um objeto com os devidos nomes FolEs e CSS
|
|
389
|
+
expect(resultadoAvaliadorSintatico[0].modificadores[0].propriedadeCss).toStrictEqual(metodos_1.TraducaoValoresMetodos[metodos_1.MetodoInverter[index]]);
|
|
390
|
+
// Tradutor
|
|
391
|
+
const resultadoTradutor = tradutor.serializar(resultadoAvaliadorSintatico);
|
|
392
|
+
// O Tradutor deve serializar de acordo e traduzir inverter para invert
|
|
393
|
+
expect(resultadoTradutor).toContain(metodos_1.TraducaoValoresMetodos[metodos_1.MetodoInverter[index]]);
|
|
394
|
+
expect(resultadoTradutor).toContain(`invert(${valoresAceitos[valIndex]});`);
|
|
395
|
+
}
|
|
396
|
+
}
|
|
397
|
+
});
|
|
53
398
|
it('Atribuindo Método "limitar" (clamp)', () => {
|
|
54
399
|
for (let index = 0; index < metodos_1.MetodoLimitar.length; index += 1) {
|
|
55
400
|
// Lexador
|
|
@@ -80,6 +425,35 @@ describe('Testando Seletores que recebem MÉTODOS como valor', () => {
|
|
|
80
425
|
expect(resultadoTradutor).toContain('clamp(10vw, 20em, 100vw);');
|
|
81
426
|
}
|
|
82
427
|
});
|
|
428
|
+
it('Atribuindo Método "linear()"', () => {
|
|
429
|
+
for (let index = 0; index < metodos_1.MetodoLinear.length; index += 1) {
|
|
430
|
+
// Lexador
|
|
431
|
+
const resultadoLexador = lexador.mapear([
|
|
432
|
+
"lmht {",
|
|
433
|
+
`${metodos_1.MetodoLinear[index]}: linear(0, 0.25, 1);`,
|
|
434
|
+
"}"
|
|
435
|
+
]);
|
|
436
|
+
// O Lexador deve montar um objeto de comprimento 14 sem retornar nenhum erro
|
|
437
|
+
expect(resultadoLexador.simbolos).toHaveLength(14);
|
|
438
|
+
expect(resultadoLexador.erros).toHaveLength(0);
|
|
439
|
+
// O valor recebido deve ser mapeado como METODO
|
|
440
|
+
expect(resultadoLexador.simbolos).toEqual(expect.arrayContaining([
|
|
441
|
+
expect.objectContaining({ tipo: foles_1.default.METODO }),
|
|
442
|
+
]));
|
|
443
|
+
// O Lexador também deve encontrar números no mapeamento
|
|
444
|
+
expect(resultadoLexador.simbolos).toEqual(expect.arrayContaining([
|
|
445
|
+
expect.objectContaining({ tipo: foles_1.default.NUMERO }),
|
|
446
|
+
]));
|
|
447
|
+
// Avaliador Sintático
|
|
448
|
+
const resultadoAvaliadorSintatico = avaliador.analisar(resultadoLexador.simbolos);
|
|
449
|
+
// O Avaliador deve montar um objeto com os devidos nomes FolEs e CSS
|
|
450
|
+
expect(resultadoAvaliadorSintatico[0].modificadores[0].propriedadeCss).toStrictEqual(metodos_1.TraducaoValoresMetodos[metodos_1.MetodoLinear[index]]);
|
|
451
|
+
// // // // Tradutor
|
|
452
|
+
const resultadoTradutor = tradutor.serializar(resultadoAvaliadorSintatico);
|
|
453
|
+
expect(resultadoTradutor).toContain(metodos_1.TraducaoValoresMetodos[metodos_1.MetodoLinear[index]]);
|
|
454
|
+
expect(resultadoTradutor).toContain('linear(0, 0.25, 1);');
|
|
455
|
+
}
|
|
456
|
+
});
|
|
83
457
|
it('Atribuindo Método "minmax()"', () => {
|
|
84
458
|
for (let index = 0; index < metodos_1.MetodoMinMax.length; index += 1) {
|
|
85
459
|
// Lexador
|
|
@@ -110,6 +484,48 @@ describe('Testando Seletores que recebem MÉTODOS como valor', () => {
|
|
|
110
484
|
expect(resultadoTradutor).toContain('minmax(100px, max-content);');
|
|
111
485
|
}
|
|
112
486
|
});
|
|
487
|
+
it('Atribuindo Método "opacar()"', () => {
|
|
488
|
+
for (let index = 0; index < metodos_1.MetodoOpacar.length; index += 1) {
|
|
489
|
+
const valoresAceitos = ['100px', '100%', '0.1', '0', '1', '1.75'];
|
|
490
|
+
for (let valIndex = 0; valIndex < valoresAceitos.length; valIndex += 1) {
|
|
491
|
+
// Lexador
|
|
492
|
+
const resultadoLexador = lexador.mapear([
|
|
493
|
+
"lmht {",
|
|
494
|
+
`${metodos_1.MetodoOpacar[index]}: opacar(${valoresAceitos[valIndex]});`,
|
|
495
|
+
"}"
|
|
496
|
+
]);
|
|
497
|
+
// O Lexador não deve encontrar erros
|
|
498
|
+
expect(resultadoLexador.erros).toHaveLength(0);
|
|
499
|
+
// O valor recebido deve ser mapeado como METODO
|
|
500
|
+
expect(resultadoLexador.simbolos).toEqual(expect.arrayContaining([
|
|
501
|
+
expect.objectContaining({ tipo: foles_1.default.METODO }),
|
|
502
|
+
]));
|
|
503
|
+
// O Lexador deve montar um objeto de comprimento 11 caso haja quantificador e 10 caso não haja
|
|
504
|
+
if (valIndex === 0 || valIndex === 1) {
|
|
505
|
+
expect(resultadoLexador.simbolos).toHaveLength(11);
|
|
506
|
+
expect(resultadoLexador.simbolos).toEqual(expect.arrayContaining([
|
|
507
|
+
expect.objectContaining({ tipo: foles_1.default.NUMERO }),
|
|
508
|
+
expect.objectContaining({ tipo: foles_1.default.QUANTIFICADOR }),
|
|
509
|
+
]));
|
|
510
|
+
}
|
|
511
|
+
else {
|
|
512
|
+
expect(resultadoLexador.simbolos).toHaveLength(10);
|
|
513
|
+
expect(resultadoLexador.simbolos).toEqual(expect.arrayContaining([
|
|
514
|
+
expect.objectContaining({ tipo: foles_1.default.NUMERO }),
|
|
515
|
+
]));
|
|
516
|
+
}
|
|
517
|
+
// Avaliador Sintático
|
|
518
|
+
const resultadoAvaliadorSintatico = avaliador.analisar(resultadoLexador.simbolos);
|
|
519
|
+
// O Avaliador deve montar um objeto com os devidos nomes FolEs e CSS
|
|
520
|
+
expect(resultadoAvaliadorSintatico[0].modificadores[0].propriedadeCss).toStrictEqual(metodos_1.TraducaoValoresMetodos[metodos_1.MetodoOpacar[index]]);
|
|
521
|
+
// Tradutor
|
|
522
|
+
const resultadoTradutor = tradutor.serializar(resultadoAvaliadorSintatico);
|
|
523
|
+
// O Tradutor deve serializar de acordo e traduzir opacar para opacity
|
|
524
|
+
expect(resultadoTradutor).toContain(metodos_1.TraducaoValoresMetodos[metodos_1.MetodoOpacar[index]]);
|
|
525
|
+
expect(resultadoTradutor).toContain(`opacity(${valoresAceitos[valIndex]});`);
|
|
526
|
+
}
|
|
527
|
+
}
|
|
528
|
+
});
|
|
113
529
|
it('Atribuindo Método "passos" (steps)', () => {
|
|
114
530
|
for (let index = 0; index < metodos_1.MetodoPassos.length; index += 1) {
|
|
115
531
|
// Lexador
|
|
@@ -140,62 +556,262 @@ describe('Testando Seletores que recebem MÉTODOS como valor', () => {
|
|
|
140
556
|
expect(resultadoTradutor).toContain('steps(2, jump-start);');
|
|
141
557
|
}
|
|
142
558
|
});
|
|
143
|
-
it('Atribuindo Método "
|
|
144
|
-
for (let index = 0; index < metodos_1.
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
expect.
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
expect.
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
559
|
+
it('Atribuindo Método "projetar-sombra()" com valores de comprimento somente', () => {
|
|
560
|
+
for (let index = 0; index < metodos_1.MetodoProjetarSombra.length; index += 1) {
|
|
561
|
+
const comprimentos = ['15px 15px', '15px 15px 15px', '0.5rem 0.5rem', '0.5rem 0.5rem 1rem'];
|
|
562
|
+
for (let posIndex = 0; posIndex < comprimentos.length; posIndex += 1) {
|
|
563
|
+
// Lexador
|
|
564
|
+
const resultadoLexador = lexador.mapear([
|
|
565
|
+
"lmht {",
|
|
566
|
+
`${metodos_1.MetodoProjetarSombra[index]}: projetar-sombra(${comprimentos[posIndex]});`,
|
|
567
|
+
"}"
|
|
568
|
+
]);
|
|
569
|
+
// O Lexador deve montar um objeto de acordo, sem retornar nenhum erro
|
|
570
|
+
expect(resultadoLexador.erros).toHaveLength(0);
|
|
571
|
+
// O valor recebido deve ser mapeado como METODO
|
|
572
|
+
expect(resultadoLexador.simbolos).toEqual(expect.arrayContaining([
|
|
573
|
+
expect.objectContaining({ tipo: foles_1.default.METODO }),
|
|
574
|
+
]));
|
|
575
|
+
// O Lexador também deve sempre encontrar valores e quantificadores na operação
|
|
576
|
+
expect(resultadoLexador.simbolos).toEqual(expect.arrayContaining([
|
|
577
|
+
expect.objectContaining({ tipo: foles_1.default.NUMERO }),
|
|
578
|
+
expect.objectContaining({ tipo: foles_1.default.QUANTIFICADOR }),
|
|
579
|
+
]));
|
|
580
|
+
// Avaliador Sintático
|
|
581
|
+
const resultadoAvaliadorSintatico = avaliador.analisar(resultadoLexador.simbolos);
|
|
582
|
+
// O Avaliador deve montar um objeto com os devidos nomes FolEs e CSS
|
|
583
|
+
expect(resultadoAvaliadorSintatico[0].modificadores[0].propriedadeCss).toStrictEqual(metodos_1.TraducaoValoresMetodos[metodos_1.MetodoProjetarSombra[index]]);
|
|
584
|
+
// Tradutor
|
|
585
|
+
const resultadoTradutor = tradutor.serializar(resultadoAvaliadorSintatico);
|
|
586
|
+
// O Tradutor deve serializar de acordo e traduzir projetar-sombra para drop-shadow
|
|
587
|
+
expect(resultadoTradutor).toContain(metodos_1.TraducaoValoresMetodos[metodos_1.MetodoProjetarSombra[index]]);
|
|
588
|
+
expect(resultadoTradutor).toContain(`drop-shadow(${comprimentos[posIndex]});`);
|
|
589
|
+
}
|
|
170
590
|
}
|
|
171
591
|
});
|
|
172
|
-
it('Atribuindo Método "
|
|
173
|
-
for (let index = 0; index < metodos_1.
|
|
592
|
+
it('Atribuindo Método "projetar-sombra()" com valores de cor e de comprimento', () => {
|
|
593
|
+
for (let index = 0; index < metodos_1.MetodoProjetarSombra.length; index += 1) {
|
|
594
|
+
const comprimentos = ['15px 15px vermelho', '15px 15px 15px vermelho', 'vermelho 0.5rem 0.5rem', 'vermelho 0.5rem 0.5rem 1rem'];
|
|
595
|
+
for (let posIndex = 0; posIndex < comprimentos.length; posIndex += 1) {
|
|
596
|
+
// Lexador
|
|
597
|
+
const resultadoLexador = lexador.mapear([
|
|
598
|
+
"lmht {",
|
|
599
|
+
`${metodos_1.MetodoProjetarSombra[index]}: projetar-sombra(${comprimentos[posIndex]});`,
|
|
600
|
+
"}"
|
|
601
|
+
]);
|
|
602
|
+
// O Lexador deve montar um objeto de acordo, sem retornar nenhum erro
|
|
603
|
+
expect(resultadoLexador.erros).toHaveLength(0);
|
|
604
|
+
// O valor recebido deve ser mapeado como METODO
|
|
605
|
+
expect(resultadoLexador.simbolos).toEqual(expect.arrayContaining([
|
|
606
|
+
expect.objectContaining({ tipo: foles_1.default.METODO }),
|
|
607
|
+
]));
|
|
608
|
+
// O Lexador também deve sempre encontrar valores e quantificadores na operação
|
|
609
|
+
expect(resultadoLexador.simbolos).toEqual(expect.arrayContaining([
|
|
610
|
+
expect.objectContaining({ tipo: foles_1.default.NUMERO }),
|
|
611
|
+
expect.objectContaining({ tipo: foles_1.default.QUANTIFICADOR }),
|
|
612
|
+
]));
|
|
613
|
+
// Avaliador Sintático
|
|
614
|
+
const resultadoAvaliadorSintatico = avaliador.analisar(resultadoLexador.simbolos);
|
|
615
|
+
// O Avaliador deve montar um objeto com os devidos nomes FolEs e CSS
|
|
616
|
+
expect(resultadoAvaliadorSintatico[0].modificadores[0].propriedadeCss).toStrictEqual(metodos_1.TraducaoValoresMetodos[metodos_1.MetodoProjetarSombra[index]]);
|
|
617
|
+
// Tradutor
|
|
618
|
+
const resultadoTradutor = tradutor.serializar(resultadoAvaliadorSintatico);
|
|
619
|
+
// O Tradutor deve serializar de acordo e traduzir vermelho para red
|
|
620
|
+
expect(resultadoTradutor).toContain(metodos_1.TraducaoValoresMetodos[metodos_1.MetodoProjetarSombra[index]]);
|
|
621
|
+
expect(resultadoTradutor).toContain('red');
|
|
622
|
+
}
|
|
623
|
+
}
|
|
624
|
+
});
|
|
625
|
+
it('Atribuindo Método "raio()" com valores de posição e número/quantificador', () => {
|
|
626
|
+
for (let index = 0; index < metodos_1.MetodoRaio.length; index += 1) {
|
|
627
|
+
const valoresAceitos = ['lado-mais-próximo', 'lado-mais-proximo', 'canto-mais-próximo', 'canto-mais-proximo', 'lado-mais-distante', 'canto-mais-distante', 'lados', 'conter'];
|
|
628
|
+
const traducaoValoresAceitos = ['closest-side', 'closest-side', 'closest-corner', 'closest-corner', 'farthest-side', 'farthest-corner', 'sides', 'contain'];
|
|
629
|
+
for (let valIndex = 0; valIndex < valoresAceitos.length; valIndex += 1) {
|
|
630
|
+
// Lexador
|
|
631
|
+
const resultadoLexador = lexador.mapear([
|
|
632
|
+
"lmht {",
|
|
633
|
+
`${metodos_1.MetodoRaio[index]}: raio(${valoresAceitos[valIndex]} 200deg);`,
|
|
634
|
+
"}"
|
|
635
|
+
]);
|
|
636
|
+
// O Lexador não deve encontrar erros
|
|
637
|
+
expect(resultadoLexador.erros).toHaveLength(0);
|
|
638
|
+
// O valor recebido deve ser mapeado como METODO
|
|
639
|
+
expect(resultadoLexador.simbolos).toEqual(expect.arrayContaining([
|
|
640
|
+
expect.objectContaining({ tipo: foles_1.default.METODO }),
|
|
641
|
+
]));
|
|
642
|
+
// O Lexador deve montar um objeto de comprimento 12
|
|
643
|
+
expect(resultadoLexador.simbolos).toHaveLength(12);
|
|
644
|
+
expect(resultadoLexador.simbolos).toEqual(expect.arrayContaining([
|
|
645
|
+
expect.objectContaining({ tipo: foles_1.default.NUMERO }),
|
|
646
|
+
expect.objectContaining({ tipo: foles_1.default.QUANTIFICADOR }),
|
|
647
|
+
]));
|
|
648
|
+
// Avaliador Sintático
|
|
649
|
+
const resultadoAvaliadorSintatico = avaliador.analisar(resultadoLexador.simbolos);
|
|
650
|
+
// O Avaliador deve montar um objeto com os devidos nomes FolEs e CSS
|
|
651
|
+
expect(resultadoAvaliadorSintatico[0].modificadores[0].propriedadeCss).toStrictEqual(metodos_1.TraducaoValoresMetodos[metodos_1.MetodoRaio[index]]);
|
|
652
|
+
// Tradutor
|
|
653
|
+
const resultadoTradutor = tradutor.serializar(resultadoAvaliadorSintatico);
|
|
654
|
+
// O Tradutor deve serializar de acordo e traduzir raio para ray
|
|
655
|
+
expect(resultadoTradutor).toContain(metodos_1.TraducaoValoresMetodos[metodos_1.MetodoRaio[index]]);
|
|
656
|
+
expect(resultadoTradutor).toContain(`ray(${traducaoValoresAceitos[valIndex]} 200deg);`);
|
|
657
|
+
}
|
|
658
|
+
}
|
|
659
|
+
});
|
|
660
|
+
it('Atribuindo Método "raio()" com somente número/quantificador', () => {
|
|
661
|
+
for (let index = 0; index < metodos_1.MetodoRaio.length; index += 1) {
|
|
174
662
|
// Lexador
|
|
175
663
|
const resultadoLexador = lexador.mapear([
|
|
176
664
|
"lmht {",
|
|
177
|
-
`${metodos_1.
|
|
665
|
+
`${metodos_1.MetodoRaio[index]}: raio(200deg);`,
|
|
178
666
|
"}"
|
|
179
667
|
]);
|
|
180
|
-
// O Lexador deve
|
|
181
|
-
expect(resultadoLexador.simbolos).toHaveLength(14);
|
|
668
|
+
// O Lexador não deve encontrar erros
|
|
182
669
|
expect(resultadoLexador.erros).toHaveLength(0);
|
|
183
670
|
// O valor recebido deve ser mapeado como METODO
|
|
184
671
|
expect(resultadoLexador.simbolos).toEqual(expect.arrayContaining([
|
|
185
672
|
expect.objectContaining({ tipo: foles_1.default.METODO }),
|
|
186
673
|
]));
|
|
187
|
-
// O Lexador
|
|
674
|
+
// O Lexador deve montar um objeto de comprimento 11
|
|
675
|
+
expect(resultadoLexador.simbolos).toHaveLength(11);
|
|
188
676
|
expect(resultadoLexador.simbolos).toEqual(expect.arrayContaining([
|
|
189
677
|
expect.objectContaining({ tipo: foles_1.default.NUMERO }),
|
|
678
|
+
expect.objectContaining({ tipo: foles_1.default.QUANTIFICADOR }),
|
|
190
679
|
]));
|
|
191
680
|
// Avaliador Sintático
|
|
192
681
|
const resultadoAvaliadorSintatico = avaliador.analisar(resultadoLexador.simbolos);
|
|
193
682
|
// O Avaliador deve montar um objeto com os devidos nomes FolEs e CSS
|
|
194
|
-
expect(resultadoAvaliadorSintatico[0].modificadores[0].propriedadeCss).toStrictEqual(metodos_1.TraducaoValoresMetodos[metodos_1.
|
|
195
|
-
//
|
|
683
|
+
expect(resultadoAvaliadorSintatico[0].modificadores[0].propriedadeCss).toStrictEqual(metodos_1.TraducaoValoresMetodos[metodos_1.MetodoRaio[index]]);
|
|
684
|
+
// Tradutor
|
|
196
685
|
const resultadoTradutor = tradutor.serializar(resultadoAvaliadorSintatico);
|
|
197
|
-
|
|
198
|
-
expect(resultadoTradutor).toContain(
|
|
686
|
+
// O Tradutor deve serializar de acordo e traduzir raio para ray
|
|
687
|
+
expect(resultadoTradutor).toContain(metodos_1.TraducaoValoresMetodos[metodos_1.MetodoRaio[index]]);
|
|
688
|
+
expect(resultadoTradutor).toContain(`ray(200deg);`);
|
|
689
|
+
}
|
|
690
|
+
});
|
|
691
|
+
it('Atribuindo Método "rotacionar-matiz()"', () => {
|
|
692
|
+
for (let index = 0; index < metodos_1.MetodoRotacionarMatiz.length; index += 1) {
|
|
693
|
+
const valoresAceitos = ['100px', '100%', '0.1', '0', '1', '1.75'];
|
|
694
|
+
for (let valIndex = 0; valIndex < valoresAceitos.length; valIndex += 1) {
|
|
695
|
+
// Lexador
|
|
696
|
+
const resultadoLexador = lexador.mapear([
|
|
697
|
+
"lmht {",
|
|
698
|
+
`${metodos_1.MetodoRotacionarMatiz[index]}: rotacionar-matiz(${valoresAceitos[valIndex]});`,
|
|
699
|
+
"}"
|
|
700
|
+
]);
|
|
701
|
+
// O Lexador não deve encontrar erros
|
|
702
|
+
expect(resultadoLexador.erros).toHaveLength(0);
|
|
703
|
+
// O valor recebido deve ser mapeado como METODO
|
|
704
|
+
expect(resultadoLexador.simbolos).toEqual(expect.arrayContaining([
|
|
705
|
+
expect.objectContaining({ tipo: foles_1.default.METODO }),
|
|
706
|
+
]));
|
|
707
|
+
// O Lexador deve montar um objeto de comprimento 11 caso haja quantificador e 10 caso não haja
|
|
708
|
+
if (valIndex === 0 || valIndex === 1) {
|
|
709
|
+
expect(resultadoLexador.simbolos).toHaveLength(11);
|
|
710
|
+
expect(resultadoLexador.simbolos).toEqual(expect.arrayContaining([
|
|
711
|
+
expect.objectContaining({ tipo: foles_1.default.NUMERO }),
|
|
712
|
+
expect.objectContaining({ tipo: foles_1.default.QUANTIFICADOR }),
|
|
713
|
+
]));
|
|
714
|
+
}
|
|
715
|
+
else {
|
|
716
|
+
expect(resultadoLexador.simbolos).toHaveLength(10);
|
|
717
|
+
expect(resultadoLexador.simbolos).toEqual(expect.arrayContaining([
|
|
718
|
+
expect.objectContaining({ tipo: foles_1.default.NUMERO }),
|
|
719
|
+
]));
|
|
720
|
+
}
|
|
721
|
+
// Avaliador Sintático
|
|
722
|
+
const resultadoAvaliadorSintatico = avaliador.analisar(resultadoLexador.simbolos);
|
|
723
|
+
// O Avaliador deve montar um objeto com os devidos nomes FolEs e CSS
|
|
724
|
+
expect(resultadoAvaliadorSintatico[0].modificadores[0].propriedadeCss).toStrictEqual(metodos_1.TraducaoValoresMetodos[metodos_1.MetodoRotacionarMatiz[index]]);
|
|
725
|
+
// Tradutor
|
|
726
|
+
const resultadoTradutor = tradutor.serializar(resultadoAvaliadorSintatico);
|
|
727
|
+
// O Tradutor deve serializar de acordo e traduzir rotacionar-matiz para hue-rotate
|
|
728
|
+
expect(resultadoTradutor).toContain(metodos_1.TraducaoValoresMetodos[metodos_1.MetodoRotacionarMatiz[index]]);
|
|
729
|
+
expect(resultadoTradutor).toContain(`hue-rotate(${valoresAceitos[valIndex]});`);
|
|
730
|
+
}
|
|
731
|
+
}
|
|
732
|
+
});
|
|
733
|
+
it('Atribuindo Método "saturar()"', () => {
|
|
734
|
+
for (let index = 0; index < metodos_1.MetodoSaturar.length; index += 1) {
|
|
735
|
+
const valoresAceitos = ['100px', '100%', '0.1', '0', '1', '1.75'];
|
|
736
|
+
for (let valIndex = 0; valIndex < valoresAceitos.length; valIndex += 1) {
|
|
737
|
+
// Lexador
|
|
738
|
+
const resultadoLexador = lexador.mapear([
|
|
739
|
+
"lmht {",
|
|
740
|
+
`${metodos_1.MetodoSaturar[index]}: saturar(${valoresAceitos[valIndex]});`,
|
|
741
|
+
"}"
|
|
742
|
+
]);
|
|
743
|
+
// O Lexador não deve encontrar erros
|
|
744
|
+
expect(resultadoLexador.erros).toHaveLength(0);
|
|
745
|
+
// O valor recebido deve ser mapeado como METODO
|
|
746
|
+
expect(resultadoLexador.simbolos).toEqual(expect.arrayContaining([
|
|
747
|
+
expect.objectContaining({ tipo: foles_1.default.METODO }),
|
|
748
|
+
]));
|
|
749
|
+
// O Lexador deve montar um objeto de comprimento 11 caso haja quantificador e 10 caso não haja
|
|
750
|
+
if (valIndex === 0 || valIndex === 1) {
|
|
751
|
+
expect(resultadoLexador.simbolos).toHaveLength(11);
|
|
752
|
+
expect(resultadoLexador.simbolos).toEqual(expect.arrayContaining([
|
|
753
|
+
expect.objectContaining({ tipo: foles_1.default.NUMERO }),
|
|
754
|
+
expect.objectContaining({ tipo: foles_1.default.QUANTIFICADOR }),
|
|
755
|
+
]));
|
|
756
|
+
}
|
|
757
|
+
else {
|
|
758
|
+
expect(resultadoLexador.simbolos).toHaveLength(10);
|
|
759
|
+
expect(resultadoLexador.simbolos).toEqual(expect.arrayContaining([
|
|
760
|
+
expect.objectContaining({ tipo: foles_1.default.NUMERO }),
|
|
761
|
+
]));
|
|
762
|
+
}
|
|
763
|
+
// Avaliador Sintático
|
|
764
|
+
const resultadoAvaliadorSintatico = avaliador.analisar(resultadoLexador.simbolos);
|
|
765
|
+
// O Avaliador deve montar um objeto com os devidos nomes FolEs e CSS
|
|
766
|
+
expect(resultadoAvaliadorSintatico[0].modificadores[0].propriedadeCss).toStrictEqual(metodos_1.TraducaoValoresMetodos[metodos_1.MetodoSaturar[index]]);
|
|
767
|
+
// Tradutor
|
|
768
|
+
const resultadoTradutor = tradutor.serializar(resultadoAvaliadorSintatico);
|
|
769
|
+
// O Tradutor deve serializar de acordo e traduzir saturar para saturate
|
|
770
|
+
expect(resultadoTradutor).toContain(metodos_1.TraducaoValoresMetodos[metodos_1.MetodoSaturar[index]]);
|
|
771
|
+
expect(resultadoTradutor).toContain(`saturate(${valoresAceitos[valIndex]});`);
|
|
772
|
+
}
|
|
773
|
+
}
|
|
774
|
+
});
|
|
775
|
+
it('Atribuindo Método "sepia()"', () => {
|
|
776
|
+
for (let index = 0; index < metodos_1.MetodoSepia.length; index += 1) {
|
|
777
|
+
const valoresAceitos = ['100px', '100%', '0.1', '0', '1', '1.75'];
|
|
778
|
+
for (let valIndex = 0; valIndex < valoresAceitos.length; valIndex += 1) {
|
|
779
|
+
// Lexador
|
|
780
|
+
const resultadoLexador = lexador.mapear([
|
|
781
|
+
"lmht {",
|
|
782
|
+
`${metodos_1.MetodoSepia[index]}: sepia(${valoresAceitos[valIndex]});`,
|
|
783
|
+
"}"
|
|
784
|
+
]);
|
|
785
|
+
// O Lexador não deve encontrar erros
|
|
786
|
+
expect(resultadoLexador.erros).toHaveLength(0);
|
|
787
|
+
// O valor recebido deve ser mapeado como METODO
|
|
788
|
+
expect(resultadoLexador.simbolos).toEqual(expect.arrayContaining([
|
|
789
|
+
expect.objectContaining({ tipo: foles_1.default.METODO }),
|
|
790
|
+
]));
|
|
791
|
+
// O Lexador deve montar um objeto de comprimento 11 caso haja quantificador e 10 caso não haja
|
|
792
|
+
if (valIndex === 0 || valIndex === 1) {
|
|
793
|
+
expect(resultadoLexador.simbolos).toHaveLength(11);
|
|
794
|
+
expect(resultadoLexador.simbolos).toEqual(expect.arrayContaining([
|
|
795
|
+
expect.objectContaining({ tipo: foles_1.default.NUMERO }),
|
|
796
|
+
expect.objectContaining({ tipo: foles_1.default.QUANTIFICADOR }),
|
|
797
|
+
]));
|
|
798
|
+
}
|
|
799
|
+
else {
|
|
800
|
+
expect(resultadoLexador.simbolos).toHaveLength(10);
|
|
801
|
+
expect(resultadoLexador.simbolos).toEqual(expect.arrayContaining([
|
|
802
|
+
expect.objectContaining({ tipo: foles_1.default.NUMERO }),
|
|
803
|
+
]));
|
|
804
|
+
}
|
|
805
|
+
// Avaliador Sintático
|
|
806
|
+
const resultadoAvaliadorSintatico = avaliador.analisar(resultadoLexador.simbolos);
|
|
807
|
+
// O Avaliador deve montar um objeto com os devidos nomes FolEs e CSS
|
|
808
|
+
expect(resultadoAvaliadorSintatico[0].modificadores[0].propriedadeCss).toStrictEqual(metodos_1.TraducaoValoresMetodos[metodos_1.MetodoSepia[index]]);
|
|
809
|
+
// Tradutor
|
|
810
|
+
const resultadoTradutor = tradutor.serializar(resultadoAvaliadorSintatico);
|
|
811
|
+
// O Tradutor deve serializar de acordo e traduzir sépia para sepia
|
|
812
|
+
expect(resultadoTradutor).toContain(metodos_1.TraducaoValoresMetodos[metodos_1.MetodoSepia[index]]);
|
|
813
|
+
expect(resultadoTradutor).toContain(`sepia(${valoresAceitos[valIndex]});`);
|
|
814
|
+
}
|
|
199
815
|
}
|
|
200
816
|
});
|
|
201
817
|
});
|