@designliquido/foles 0.6.2 → 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.js +188 -25
- package/fontes/avaliador-sintatico/avaliador-sintatico.js.map +1 -1
- package/fontes/lexador/palavras-reservadas/foles.d.ts +253 -238
- package/fontes/lexador/palavras-reservadas/foles.js +256 -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/deslocamento.js +5 -3
- package/fontes/modificadores/deslocamento.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/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 +22 -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/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/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 +10 -0
- package/testes/listas/metodos.js +49 -15
- package/testes/listas/metodos.js.map +1 -1
- package/testes/modificadores/metodos.test.js +573 -105
- package/testes/modificadores/metodos.test.js.map +1 -1
|
@@ -21,75 +21,200 @@ 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 "
|
|
25
|
-
for (let index = 0; index < metodos_1.
|
|
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) {
|
|
26
110
|
// Lexador
|
|
27
111
|
const resultadoLexador = lexador.mapear([
|
|
28
112
|
"lmht {",
|
|
29
|
-
`${metodos_1.
|
|
113
|
+
`${metodos_1.MetodoCalcular[index]}: calcular(100px - 80px);`,
|
|
30
114
|
"}"
|
|
31
115
|
]);
|
|
32
|
-
// O Lexador deve montar um objeto de comprimento
|
|
33
|
-
expect(resultadoLexador.simbolos).toHaveLength(
|
|
116
|
+
// O Lexador deve montar um objeto de comprimento 14 sem retornar nenhum erro
|
|
117
|
+
expect(resultadoLexador.simbolos).toHaveLength(14);
|
|
34
118
|
expect(resultadoLexador.erros).toHaveLength(0);
|
|
35
119
|
// O valor recebido deve ser mapeado como METODO
|
|
36
120
|
expect(resultadoLexador.simbolos).toEqual(expect.arrayContaining([
|
|
37
121
|
expect.objectContaining({ tipo: foles_1.default.METODO }),
|
|
38
122
|
]));
|
|
39
|
-
// O Lexador também deve encontrar
|
|
123
|
+
// O Lexador também deve encontrar números e quantificadores no mapeamento
|
|
40
124
|
expect(resultadoLexador.simbolos).toEqual(expect.arrayContaining([
|
|
41
125
|
expect.objectContaining({ tipo: foles_1.default.NUMERO }),
|
|
42
126
|
expect.objectContaining({ tipo: foles_1.default.QUANTIFICADOR }),
|
|
43
127
|
]));
|
|
44
128
|
// Avaliador Sintático
|
|
45
129
|
const resultadoAvaliadorSintatico = avaliador.analisar(resultadoLexador.simbolos);
|
|
46
|
-
|
|
47
|
-
|
|
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
|
|
48
133
|
const resultadoTradutor = tradutor.serializar(resultadoAvaliadorSintatico);
|
|
49
|
-
expect(resultadoTradutor).toContain(metodos_1.TraducaoValoresMetodos[metodos_1.
|
|
50
|
-
expect(resultadoTradutor).toContain('
|
|
134
|
+
expect(resultadoTradutor).toContain(metodos_1.TraducaoValoresMetodos[metodos_1.MetodoCalcular[index]]);
|
|
135
|
+
expect(resultadoTradutor).toContain('calc(100px - 80px);');
|
|
51
136
|
}
|
|
52
137
|
});
|
|
53
|
-
it('Atribuindo Método "
|
|
54
|
-
for (let index = 0; index < metodos_1.
|
|
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) {
|
|
55
181
|
// Lexador
|
|
56
182
|
const resultadoLexador = lexador.mapear([
|
|
57
183
|
"lmht {",
|
|
58
|
-
`${metodos_1.
|
|
184
|
+
`${metodos_1.MetodoCurvaCubica[index]}: curva-cúbica(0.42, 0.0, 1.0, 1.0);`,
|
|
59
185
|
"}"
|
|
60
186
|
]);
|
|
61
|
-
// O Lexador deve montar um objeto de comprimento
|
|
62
|
-
expect(resultadoLexador.simbolos).toHaveLength(
|
|
187
|
+
// O Lexador deve montar um objeto de comprimento 16 sem retornar nenhum erro
|
|
188
|
+
expect(resultadoLexador.simbolos).toHaveLength(16);
|
|
63
189
|
expect(resultadoLexador.erros).toHaveLength(0);
|
|
64
190
|
// O valor recebido deve ser mapeado como METODO
|
|
65
191
|
expect(resultadoLexador.simbolos).toEqual(expect.arrayContaining([
|
|
66
192
|
expect.objectContaining({ tipo: foles_1.default.METODO }),
|
|
67
193
|
]));
|
|
68
|
-
// O Lexador também deve encontrar números
|
|
194
|
+
// O Lexador também deve encontrar números no mapeamento
|
|
69
195
|
expect(resultadoLexador.simbolos).toEqual(expect.arrayContaining([
|
|
70
196
|
expect.objectContaining({ tipo: foles_1.default.NUMERO }),
|
|
71
|
-
expect.objectContaining({ tipo: foles_1.default.QUANTIFICADOR }),
|
|
72
197
|
]));
|
|
73
198
|
// Avaliador Sintático
|
|
74
199
|
const resultadoAvaliadorSintatico = avaliador.analisar(resultadoLexador.simbolos);
|
|
75
200
|
// O Avaliador deve montar um objeto com os devidos nomes FolEs e CSS
|
|
76
|
-
expect(resultadoAvaliadorSintatico[0].modificadores[0].propriedadeCss).toStrictEqual(metodos_1.TraducaoValoresMetodos[metodos_1.
|
|
77
|
-
// Tradutor
|
|
201
|
+
expect(resultadoAvaliadorSintatico[0].modificadores[0].propriedadeCss).toStrictEqual(metodos_1.TraducaoValoresMetodos[metodos_1.MetodoCurvaCubica[index]]);
|
|
202
|
+
// // // // Tradutor
|
|
78
203
|
const resultadoTradutor = tradutor.serializar(resultadoAvaliadorSintatico);
|
|
79
|
-
expect(resultadoTradutor).toContain(metodos_1.TraducaoValoresMetodos[metodos_1.
|
|
80
|
-
expect(resultadoTradutor).toContain('
|
|
204
|
+
expect(resultadoTradutor).toContain(metodos_1.TraducaoValoresMetodos[metodos_1.MetodoCurvaCubica[index]]);
|
|
205
|
+
expect(resultadoTradutor).toContain('cubic-bezier(0.42, 0, 1, 1);');
|
|
81
206
|
}
|
|
82
207
|
});
|
|
83
|
-
it('Atribuindo Método "
|
|
84
|
-
for (let index = 0; index < metodos_1.
|
|
208
|
+
it('Atribuindo Método "encaixar-conteúdo" (fit-content)', () => {
|
|
209
|
+
for (let index = 0; index < metodos_1.MetodoEncaixarConteudo.length; index += 1) {
|
|
85
210
|
// Lexador
|
|
86
211
|
const resultadoLexador = lexador.mapear([
|
|
87
212
|
"lmht {",
|
|
88
|
-
`${metodos_1.
|
|
213
|
+
`${metodos_1.MetodoEncaixarConteudo[index]}: encaixar-conteúdo(200px);`,
|
|
89
214
|
"}"
|
|
90
215
|
]);
|
|
91
|
-
// O Lexador deve montar um objeto de comprimento
|
|
92
|
-
expect(resultadoLexador.simbolos).toHaveLength(
|
|
216
|
+
// O Lexador deve montar um objeto de comprimento 11 sem retornar nenhum erro
|
|
217
|
+
expect(resultadoLexador.simbolos).toHaveLength(11);
|
|
93
218
|
expect(resultadoLexador.erros).toHaveLength(0);
|
|
94
219
|
// O valor recebido deve ser mapeado como METODO
|
|
95
220
|
expect(resultadoLexador.simbolos).toEqual(expect.arrayContaining([
|
|
@@ -102,71 +227,202 @@ describe('Testando Seletores que recebem MÉTODOS como valor', () => {
|
|
|
102
227
|
]));
|
|
103
228
|
// Avaliador Sintático
|
|
104
229
|
const resultadoAvaliadorSintatico = avaliador.analisar(resultadoLexador.simbolos);
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
// // // // Tradutor
|
|
230
|
+
expect(resultadoAvaliadorSintatico[0].modificadores[0].propriedadeCss).toStrictEqual(metodos_1.TraducaoValoresMetodos[metodos_1.MetodoEncaixarConteudo[index]]);
|
|
231
|
+
// // // Tradutor
|
|
108
232
|
const resultadoTradutor = tradutor.serializar(resultadoAvaliadorSintatico);
|
|
109
|
-
expect(resultadoTradutor).toContain(metodos_1.TraducaoValoresMetodos[metodos_1.
|
|
110
|
-
expect(resultadoTradutor).toContain('
|
|
233
|
+
expect(resultadoTradutor).toContain(metodos_1.TraducaoValoresMetodos[metodos_1.MetodoEncaixarConteudo[index]]);
|
|
234
|
+
expect(resultadoTradutor).toContain('fit-content(200px)');
|
|
111
235
|
}
|
|
112
236
|
});
|
|
113
|
-
it('Atribuindo Método "
|
|
114
|
-
for (let index = 0; index < metodos_1.
|
|
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) {
|
|
115
281
|
// Lexador
|
|
116
282
|
const resultadoLexador = lexador.mapear([
|
|
117
283
|
"lmht {",
|
|
118
|
-
`${metodos_1.
|
|
284
|
+
`${metodos_1.MetodoGradienteLinear[index]}: gradiente-linear(90deg, verde, amarelo);`,
|
|
119
285
|
"}"
|
|
120
286
|
]);
|
|
121
|
-
// O Lexador deve montar um objeto de comprimento
|
|
122
|
-
expect(resultadoLexador.simbolos).toHaveLength(
|
|
287
|
+
// O Lexador deve montar um objeto de comprimento 15 sem retornar nenhum erro
|
|
288
|
+
expect(resultadoLexador.simbolos).toHaveLength(15);
|
|
123
289
|
expect(resultadoLexador.erros).toHaveLength(0);
|
|
124
290
|
// O valor recebido deve ser mapeado como METODO
|
|
125
291
|
expect(resultadoLexador.simbolos).toEqual(expect.arrayContaining([
|
|
126
292
|
expect.objectContaining({ tipo: foles_1.default.METODO }),
|
|
127
293
|
]));
|
|
128
|
-
// O Lexador também deve encontrar número e
|
|
294
|
+
// O Lexador também deve encontrar número e quantificador no mapeamento
|
|
129
295
|
expect(resultadoLexador.simbolos).toEqual(expect.arrayContaining([
|
|
130
296
|
expect.objectContaining({ tipo: foles_1.default.NUMERO }),
|
|
131
|
-
expect.objectContaining({ tipo: foles_1.default.
|
|
297
|
+
expect.objectContaining({ tipo: foles_1.default.QUANTIFICADOR }),
|
|
132
298
|
]));
|
|
133
299
|
// Avaliador Sintático
|
|
134
300
|
const resultadoAvaliadorSintatico = avaliador.analisar(resultadoLexador.simbolos);
|
|
135
301
|
// O Avaliador deve montar um objeto com os devidos nomes FolEs e CSS
|
|
136
|
-
expect(resultadoAvaliadorSintatico[0].modificadores[0].propriedadeCss).toStrictEqual(metodos_1.TraducaoValoresMetodos[metodos_1.
|
|
137
|
-
//
|
|
302
|
+
expect(resultadoAvaliadorSintatico[0].modificadores[0].propriedadeCss).toStrictEqual(metodos_1.TraducaoValoresMetodos[metodos_1.MetodoGradienteLinear[index]]);
|
|
303
|
+
// Tradutor
|
|
138
304
|
const resultadoTradutor = tradutor.serializar(resultadoAvaliadorSintatico);
|
|
139
|
-
expect(resultadoTradutor).toContain(metodos_1.TraducaoValoresMetodos[metodos_1.
|
|
140
|
-
expect(resultadoTradutor).toContain('
|
|
305
|
+
expect(resultadoTradutor).toContain(metodos_1.TraducaoValoresMetodos[metodos_1.MetodoGradienteLinear[index]]);
|
|
306
|
+
expect(resultadoTradutor).toContain('linear-gradient(90deg, green, yellow);');
|
|
141
307
|
}
|
|
142
308
|
});
|
|
143
|
-
it('Atribuindo Método "
|
|
144
|
-
for (let index = 0; index < metodos_1.
|
|
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
|
+
});
|
|
398
|
+
it('Atribuindo Método "limitar" (clamp)', () => {
|
|
399
|
+
for (let index = 0; index < metodos_1.MetodoLimitar.length; index += 1) {
|
|
145
400
|
// Lexador
|
|
146
401
|
const resultadoLexador = lexador.mapear([
|
|
147
402
|
"lmht {",
|
|
148
|
-
`${metodos_1.
|
|
403
|
+
`${metodos_1.MetodoLimitar[index]}: limitar(10vw, 20em, 100vw);`,
|
|
149
404
|
"}"
|
|
150
405
|
]);
|
|
151
|
-
// O Lexador deve montar um objeto de comprimento
|
|
152
|
-
expect(resultadoLexador.simbolos).toHaveLength(
|
|
406
|
+
// O Lexador deve montar um objeto de comprimento 17 sem retornar nenhum erro
|
|
407
|
+
expect(resultadoLexador.simbolos).toHaveLength(17);
|
|
153
408
|
expect(resultadoLexador.erros).toHaveLength(0);
|
|
154
409
|
// O valor recebido deve ser mapeado como METODO
|
|
155
410
|
expect(resultadoLexador.simbolos).toEqual(expect.arrayContaining([
|
|
156
411
|
expect.objectContaining({ tipo: foles_1.default.METODO }),
|
|
157
412
|
]));
|
|
158
|
-
// O Lexador também deve encontrar números no mapeamento
|
|
413
|
+
// O Lexador também deve encontrar números e quantificadores no mapeamento
|
|
159
414
|
expect(resultadoLexador.simbolos).toEqual(expect.arrayContaining([
|
|
160
415
|
expect.objectContaining({ tipo: foles_1.default.NUMERO }),
|
|
416
|
+
expect.objectContaining({ tipo: foles_1.default.QUANTIFICADOR }),
|
|
161
417
|
]));
|
|
162
418
|
// Avaliador Sintático
|
|
163
419
|
const resultadoAvaliadorSintatico = avaliador.analisar(resultadoLexador.simbolos);
|
|
164
420
|
// O Avaliador deve montar um objeto com os devidos nomes FolEs e CSS
|
|
165
|
-
expect(resultadoAvaliadorSintatico[0].modificadores[0].propriedadeCss).toStrictEqual(metodos_1.TraducaoValoresMetodos[metodos_1.
|
|
166
|
-
//
|
|
421
|
+
expect(resultadoAvaliadorSintatico[0].modificadores[0].propriedadeCss).toStrictEqual(metodos_1.TraducaoValoresMetodos[metodos_1.MetodoLimitar[index]]);
|
|
422
|
+
// Tradutor
|
|
167
423
|
const resultadoTradutor = tradutor.serializar(resultadoAvaliadorSintatico);
|
|
168
|
-
expect(resultadoTradutor).toContain(metodos_1.TraducaoValoresMetodos[metodos_1.
|
|
169
|
-
expect(resultadoTradutor).toContain('
|
|
424
|
+
expect(resultadoTradutor).toContain(metodos_1.TraducaoValoresMetodos[metodos_1.MetodoLimitar[index]]);
|
|
425
|
+
expect(resultadoTradutor).toContain('clamp(10vw, 20em, 100vw);');
|
|
170
426
|
}
|
|
171
427
|
});
|
|
172
428
|
it('Atribuindo Método "linear()"', () => {
|
|
@@ -198,22 +454,22 @@ describe('Testando Seletores que recebem MÉTODOS como valor', () => {
|
|
|
198
454
|
expect(resultadoTradutor).toContain('linear(0, 0.25, 1);');
|
|
199
455
|
}
|
|
200
456
|
});
|
|
201
|
-
it('Atribuindo Método "
|
|
202
|
-
for (let index = 0; index < metodos_1.
|
|
457
|
+
it('Atribuindo Método "minmax()"', () => {
|
|
458
|
+
for (let index = 0; index < metodos_1.MetodoMinMax.length; index += 1) {
|
|
203
459
|
// Lexador
|
|
204
460
|
const resultadoLexador = lexador.mapear([
|
|
205
461
|
"lmht {",
|
|
206
|
-
`${metodos_1.
|
|
462
|
+
`${metodos_1.MetodoMinMax[index]}: minmax(100px, conteúdo-máximo);`,
|
|
207
463
|
"}"
|
|
208
464
|
]);
|
|
209
|
-
// O Lexador deve montar um objeto de comprimento
|
|
210
|
-
expect(resultadoLexador.simbolos).toHaveLength(
|
|
465
|
+
// O Lexador deve montar um objeto de comprimento 13 sem retornar nenhum erro
|
|
466
|
+
expect(resultadoLexador.simbolos).toHaveLength(13);
|
|
211
467
|
expect(resultadoLexador.erros).toHaveLength(0);
|
|
212
468
|
// O valor recebido deve ser mapeado como METODO
|
|
213
469
|
expect(resultadoLexador.simbolos).toEqual(expect.arrayContaining([
|
|
214
470
|
expect.objectContaining({ tipo: foles_1.default.METODO }),
|
|
215
471
|
]));
|
|
216
|
-
// O Lexador também deve encontrar
|
|
472
|
+
// O Lexador também deve encontrar número e quantificador no mapeamento
|
|
217
473
|
expect(resultadoLexador.simbolos).toEqual(expect.arrayContaining([
|
|
218
474
|
expect.objectContaining({ tipo: foles_1.default.NUMERO }),
|
|
219
475
|
expect.objectContaining({ tipo: foles_1.default.QUANTIFICADOR }),
|
|
@@ -221,100 +477,275 @@ describe('Testando Seletores que recebem MÉTODOS como valor', () => {
|
|
|
221
477
|
// Avaliador Sintático
|
|
222
478
|
const resultadoAvaliadorSintatico = avaliador.analisar(resultadoLexador.simbolos);
|
|
223
479
|
// O Avaliador deve montar um objeto com os devidos nomes FolEs e CSS
|
|
224
|
-
expect(resultadoAvaliadorSintatico[0].modificadores[0].propriedadeCss).toStrictEqual(metodos_1.TraducaoValoresMetodos[metodos_1.
|
|
225
|
-
// Tradutor
|
|
480
|
+
expect(resultadoAvaliadorSintatico[0].modificadores[0].propriedadeCss).toStrictEqual(metodos_1.TraducaoValoresMetodos[metodos_1.MetodoMinMax[index]]);
|
|
481
|
+
// // // // Tradutor
|
|
226
482
|
const resultadoTradutor = tradutor.serializar(resultadoAvaliadorSintatico);
|
|
227
|
-
expect(resultadoTradutor).toContain(metodos_1.TraducaoValoresMetodos[metodos_1.
|
|
228
|
-
expect(resultadoTradutor).toContain('
|
|
483
|
+
expect(resultadoTradutor).toContain(metodos_1.TraducaoValoresMetodos[metodos_1.MetodoMinMax[index]]);
|
|
484
|
+
expect(resultadoTradutor).toContain('minmax(100px, max-content);');
|
|
229
485
|
}
|
|
230
486
|
});
|
|
231
|
-
it('Atribuindo Método "
|
|
232
|
-
for (let index = 0; index < metodos_1.
|
|
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
|
+
});
|
|
529
|
+
it('Atribuindo Método "passos" (steps)', () => {
|
|
530
|
+
for (let index = 0; index < metodos_1.MetodoPassos.length; index += 1) {
|
|
233
531
|
// Lexador
|
|
234
532
|
const resultadoLexador = lexador.mapear([
|
|
235
533
|
"lmht {",
|
|
236
|
-
`${metodos_1.
|
|
534
|
+
`${metodos_1.MetodoPassos[index]}: passos(2, salto-inicial);`,
|
|
237
535
|
"}"
|
|
238
536
|
]);
|
|
239
|
-
// O Lexador deve montar um objeto de comprimento
|
|
240
|
-
expect(resultadoLexador.simbolos).toHaveLength(
|
|
537
|
+
// O Lexador deve montar um objeto de comprimento 12 sem retornar nenhum erro
|
|
538
|
+
expect(resultadoLexador.simbolos).toHaveLength(12);
|
|
241
539
|
expect(resultadoLexador.erros).toHaveLength(0);
|
|
242
540
|
// O valor recebido deve ser mapeado como METODO
|
|
243
541
|
expect(resultadoLexador.simbolos).toEqual(expect.arrayContaining([
|
|
244
542
|
expect.objectContaining({ tipo: foles_1.default.METODO }),
|
|
245
543
|
]));
|
|
246
|
-
// O Lexador também deve encontrar número e
|
|
544
|
+
// O Lexador também deve encontrar número e qualitativo no mapeamento
|
|
247
545
|
expect(resultadoLexador.simbolos).toEqual(expect.arrayContaining([
|
|
248
546
|
expect.objectContaining({ tipo: foles_1.default.NUMERO }),
|
|
249
|
-
expect.objectContaining({ tipo: foles_1.default.
|
|
547
|
+
expect.objectContaining({ tipo: foles_1.default.QUALITATIVO }),
|
|
250
548
|
]));
|
|
251
549
|
// Avaliador Sintático
|
|
252
550
|
const resultadoAvaliadorSintatico = avaliador.analisar(resultadoLexador.simbolos);
|
|
253
551
|
// O Avaliador deve montar um objeto com os devidos nomes FolEs e CSS
|
|
254
|
-
expect(resultadoAvaliadorSintatico[0].modificadores[0].propriedadeCss).toStrictEqual(metodos_1.TraducaoValoresMetodos[metodos_1.
|
|
255
|
-
// Tradutor
|
|
552
|
+
expect(resultadoAvaliadorSintatico[0].modificadores[0].propriedadeCss).toStrictEqual(metodos_1.TraducaoValoresMetodos[metodos_1.MetodoPassos[index]]);
|
|
553
|
+
// // // // Tradutor
|
|
256
554
|
const resultadoTradutor = tradutor.serializar(resultadoAvaliadorSintatico);
|
|
257
|
-
expect(resultadoTradutor).toContain(metodos_1.TraducaoValoresMetodos[metodos_1.
|
|
258
|
-
expect(resultadoTradutor).toContain('
|
|
555
|
+
expect(resultadoTradutor).toContain(metodos_1.TraducaoValoresMetodos[metodos_1.MetodoPassos[index]]);
|
|
556
|
+
expect(resultadoTradutor).toContain('steps(2, jump-start);');
|
|
259
557
|
}
|
|
260
558
|
});
|
|
261
|
-
it('Atribuindo Método "
|
|
262
|
-
for (let index = 0; index < metodos_1.
|
|
263
|
-
const
|
|
264
|
-
for (let posIndex = 0; posIndex <
|
|
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) {
|
|
265
563
|
// Lexador
|
|
266
564
|
const resultadoLexador = lexador.mapear([
|
|
267
565
|
"lmht {",
|
|
268
|
-
`${metodos_1.
|
|
566
|
+
`${metodos_1.MetodoProjetarSombra[index]}: projetar-sombra(${comprimentos[posIndex]});`,
|
|
269
567
|
"}"
|
|
270
568
|
]);
|
|
271
|
-
// O Lexador deve montar um objeto de
|
|
272
|
-
expect(resultadoLexador.simbolos).toHaveLength(14);
|
|
569
|
+
// O Lexador deve montar um objeto de acordo, sem retornar nenhum erro
|
|
273
570
|
expect(resultadoLexador.erros).toHaveLength(0);
|
|
274
571
|
// O valor recebido deve ser mapeado como METODO
|
|
275
572
|
expect(resultadoLexador.simbolos).toEqual(expect.arrayContaining([
|
|
276
573
|
expect.objectContaining({ tipo: foles_1.default.METODO }),
|
|
277
574
|
]));
|
|
278
|
-
// O Lexador também deve encontrar
|
|
575
|
+
// O Lexador também deve sempre encontrar valores e quantificadores na operação
|
|
279
576
|
expect(resultadoLexador.simbolos).toEqual(expect.arrayContaining([
|
|
280
|
-
expect.objectContaining({ tipo: foles_1.default.
|
|
577
|
+
expect.objectContaining({ tipo: foles_1.default.NUMERO }),
|
|
578
|
+
expect.objectContaining({ tipo: foles_1.default.QUANTIFICADOR }),
|
|
281
579
|
]));
|
|
282
580
|
// Avaliador Sintático
|
|
283
581
|
const resultadoAvaliadorSintatico = avaliador.analisar(resultadoLexador.simbolos);
|
|
284
582
|
// O Avaliador deve montar um objeto com os devidos nomes FolEs e CSS
|
|
285
|
-
expect(resultadoAvaliadorSintatico[0].modificadores[0].propriedadeCss).toStrictEqual(metodos_1.TraducaoValoresMetodos[metodos_1.
|
|
583
|
+
expect(resultadoAvaliadorSintatico[0].modificadores[0].propriedadeCss).toStrictEqual(metodos_1.TraducaoValoresMetodos[metodos_1.MetodoProjetarSombra[index]]);
|
|
286
584
|
// Tradutor
|
|
287
585
|
const resultadoTradutor = tradutor.serializar(resultadoAvaliadorSintatico);
|
|
288
|
-
|
|
289
|
-
|
|
290
|
-
|
|
291
|
-
|
|
292
|
-
|
|
293
|
-
|
|
294
|
-
|
|
295
|
-
|
|
296
|
-
|
|
297
|
-
|
|
298
|
-
|
|
299
|
-
|
|
300
|
-
|
|
301
|
-
|
|
302
|
-
|
|
303
|
-
|
|
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
|
+
}
|
|
590
|
+
}
|
|
591
|
+
});
|
|
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) {
|
|
662
|
+
// Lexador
|
|
663
|
+
const resultadoLexador = lexador.mapear([
|
|
664
|
+
"lmht {",
|
|
665
|
+
`${metodos_1.MetodoRaio[index]}: raio(200deg);`,
|
|
666
|
+
"}"
|
|
667
|
+
]);
|
|
668
|
+
// O Lexador não deve encontrar erros
|
|
669
|
+
expect(resultadoLexador.erros).toHaveLength(0);
|
|
670
|
+
// O valor recebido deve ser mapeado como METODO
|
|
671
|
+
expect(resultadoLexador.simbolos).toEqual(expect.arrayContaining([
|
|
672
|
+
expect.objectContaining({ tipo: foles_1.default.METODO }),
|
|
673
|
+
]));
|
|
674
|
+
// O Lexador deve montar um objeto de comprimento 11
|
|
675
|
+
expect(resultadoLexador.simbolos).toHaveLength(11);
|
|
676
|
+
expect(resultadoLexador.simbolos).toEqual(expect.arrayContaining([
|
|
677
|
+
expect.objectContaining({ tipo: foles_1.default.NUMERO }),
|
|
678
|
+
expect.objectContaining({ tipo: foles_1.default.QUANTIFICADOR }),
|
|
679
|
+
]));
|
|
680
|
+
// Avaliador Sintático
|
|
681
|
+
const resultadoAvaliadorSintatico = avaliador.analisar(resultadoLexador.simbolos);
|
|
682
|
+
// O Avaliador deve montar um objeto com os devidos nomes FolEs e CSS
|
|
683
|
+
expect(resultadoAvaliadorSintatico[0].modificadores[0].propriedadeCss).toStrictEqual(metodos_1.TraducaoValoresMetodos[metodos_1.MetodoRaio[index]]);
|
|
684
|
+
// Tradutor
|
|
685
|
+
const resultadoTradutor = tradutor.serializar(resultadoAvaliadorSintatico);
|
|
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
|
+
]));
|
|
304
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]});`);
|
|
305
730
|
}
|
|
306
731
|
}
|
|
307
732
|
});
|
|
308
|
-
it('Atribuindo Método "
|
|
309
|
-
for (let index = 0; index < metodos_1.
|
|
733
|
+
it('Atribuindo Método "saturar()"', () => {
|
|
734
|
+
for (let index = 0; index < metodos_1.MetodoSaturar.length; index += 1) {
|
|
310
735
|
const valoresAceitos = ['100px', '100%', '0.1', '0', '1', '1.75'];
|
|
311
736
|
for (let valIndex = 0; valIndex < valoresAceitos.length; valIndex += 1) {
|
|
312
737
|
// Lexador
|
|
313
738
|
const resultadoLexador = lexador.mapear([
|
|
314
739
|
"lmht {",
|
|
315
|
-
`${metodos_1.
|
|
740
|
+
`${metodos_1.MetodoSaturar[index]}: saturar(${valoresAceitos[valIndex]});`,
|
|
316
741
|
"}"
|
|
317
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
|
+
]));
|
|
318
749
|
// O Lexador deve montar um objeto de comprimento 11 caso haja quantificador e 10 caso não haja
|
|
319
750
|
if (valIndex === 0 || valIndex === 1) {
|
|
320
751
|
expect(resultadoLexador.simbolos).toHaveLength(11);
|
|
@@ -329,20 +760,57 @@ describe('Testando Seletores que recebem MÉTODOS como valor', () => {
|
|
|
329
760
|
expect.objectContaining({ tipo: foles_1.default.NUMERO }),
|
|
330
761
|
]));
|
|
331
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
|
+
]);
|
|
332
785
|
// O Lexador não deve encontrar erros
|
|
333
786
|
expect(resultadoLexador.erros).toHaveLength(0);
|
|
334
787
|
// O valor recebido deve ser mapeado como METODO
|
|
335
788
|
expect(resultadoLexador.simbolos).toEqual(expect.arrayContaining([
|
|
336
789
|
expect.objectContaining({ tipo: foles_1.default.METODO }),
|
|
337
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
|
+
}
|
|
338
805
|
// Avaliador Sintático
|
|
339
806
|
const resultadoAvaliadorSintatico = avaliador.analisar(resultadoLexador.simbolos);
|
|
340
807
|
// O Avaliador deve montar um objeto com os devidos nomes FolEs e CSS
|
|
341
|
-
expect(resultadoAvaliadorSintatico[0].modificadores[0].propriedadeCss).toStrictEqual(metodos_1.TraducaoValoresMetodos[metodos_1.
|
|
808
|
+
expect(resultadoAvaliadorSintatico[0].modificadores[0].propriedadeCss).toStrictEqual(metodos_1.TraducaoValoresMetodos[metodos_1.MetodoSepia[index]]);
|
|
342
809
|
// Tradutor
|
|
343
810
|
const resultadoTradutor = tradutor.serializar(resultadoAvaliadorSintatico);
|
|
344
|
-
|
|
345
|
-
expect(resultadoTradutor).toContain(
|
|
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]});`);
|
|
346
814
|
}
|
|
347
815
|
}
|
|
348
816
|
});
|