@designliquido/foles 0.6.2 → 0.7.0
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 +535 -25
- package/fontes/avaliador-sintatico/avaliador-sintatico.js.map +1 -1
- package/fontes/lexador/palavras-reservadas/foles.d.ts +276 -238
- package/fontes/lexador/palavras-reservadas/foles.js +279 -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/transformar.js +2 -1
- package/fontes/modificadores/transformar.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 +63 -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/escalamento-3d.d.ts +10 -0
- package/fontes/valores/metodos/escalamento-3d.js +18 -0
- package/fontes/valores/metodos/escalamento-3d.js.map +1 -0
- package/fontes/valores/metodos/escalamento-eixo-z.d.ts +8 -0
- package/fontes/valores/metodos/escalamento-eixo-z.js +16 -0
- package/fontes/valores/metodos/escalamento-eixo-z.js.map +1 -0
- package/fontes/valores/metodos/escalamento-horizontal.d.ts +8 -0
- package/fontes/valores/metodos/escalamento-horizontal.js +16 -0
- package/fontes/valores/metodos/escalamento-horizontal.js.map +1 -0
- package/fontes/valores/metodos/escalamento-vertical.d.ts +8 -0
- package/fontes/valores/metodos/escalamento-vertical.js +16 -0
- package/fontes/valores/metodos/escalamento-vertical.js.map +1 -0
- package/fontes/valores/metodos/escalamento.d.ts +9 -0
- package/fontes/valores/metodos/escalamento.js +20 -0
- package/fontes/valores/metodos/escalamento.js.map +1 -0
- package/fontes/valores/metodos/inclinar-horizontal.d.ts +9 -0
- package/fontes/valores/metodos/inclinar-horizontal.js +20 -0
- package/fontes/valores/metodos/inclinar-horizontal.js.map +1 -0
- package/fontes/valores/metodos/inclinar-vertical.d.ts +9 -0
- package/fontes/valores/metodos/inclinar-vertical.js +20 -0
- package/fontes/valores/metodos/inclinar-vertical.js.map +1 -0
- package/fontes/valores/metodos/inclinar.d.ts +11 -0
- package/fontes/valores/metodos/inclinar.js +25 -0
- package/fontes/valores/metodos/inclinar.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/perspectivar.d.ts +9 -0
- package/fontes/valores/metodos/perspectivar.js +20 -0
- package/fontes/valores/metodos/perspectivar.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-eixo-z.d.ts +9 -0
- package/fontes/valores/metodos/rotacionar-eixo-z.js +20 -0
- package/fontes/valores/metodos/rotacionar-eixo-z.js.map +1 -0
- package/fontes/valores/metodos/rotacionar-horizontal.d.ts +9 -0
- package/fontes/valores/metodos/rotacionar-horizontal.js +20 -0
- package/fontes/valores/metodos/rotacionar-horizontal.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/rotacionar-vertical.d.ts +9 -0
- package/fontes/valores/metodos/rotacionar-vertical.js +20 -0
- package/fontes/valores/metodos/rotacionar-vertical.js.map +1 -0
- package/fontes/valores/metodos/rotacionar.d.ts +9 -0
- package/fontes/valores/metodos/rotacionar.js +20 -0
- package/fontes/valores/metodos/rotacionar.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/fontes/valores/metodos/translacao-3d.d.ts +13 -0
- package/fontes/valores/metodos/translacao-3d.js +42 -0
- package/fontes/valores/metodos/translacao-3d.js.map +1 -0
- package/fontes/valores/metodos/translacao-eixo-z.d.ts +9 -0
- package/fontes/valores/metodos/translacao-eixo-z.js +20 -0
- package/fontes/valores/metodos/translacao-eixo-z.js.map +1 -0
- package/fontes/valores/metodos/translacao-horizontal.d.ts +9 -0
- package/fontes/valores/metodos/translacao-horizontal.js +20 -0
- package/fontes/valores/metodos/translacao-horizontal.js.map +1 -0
- package/fontes/valores/metodos/translacao-vertical.d.ts +9 -0
- package/fontes/valores/metodos/translacao-vertical.js +20 -0
- package/fontes/valores/metodos/translacao-vertical.js.map +1 -0
- package/fontes/valores/metodos/translacao.d.ts +11 -0
- package/fontes/valores/metodos/translacao.js +25 -0
- package/fontes/valores/metodos/translacao.js.map +1 -0
- package/package.json +3 -2
- package/testes/listas/metodos.d.ts +15 -0
- package/testes/listas/metodos.js +65 -15
- package/testes/listas/metodos.js.map +1 -1
- package/testes/modificadores/metodos.test.js +1581 -115
- 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,118 +227,1216 @@ 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 "escalamento()"', () => {
|
|
280
|
+
for (let index = 0; index < metodos_1.MetodosEscalamento.length; index += 1) {
|
|
281
|
+
const valoresAceitos = ['0.1', '0', '1', '1.75'];
|
|
282
|
+
for (let valIndex = 0; valIndex < valoresAceitos.length; valIndex += 1) {
|
|
283
|
+
// Lexador
|
|
284
|
+
const resultadoLexador = lexador.mapear([
|
|
285
|
+
"lmht {",
|
|
286
|
+
`${metodos_1.MetodosEscalamento[index]}: escalamento(${valoresAceitos[valIndex]});`,
|
|
287
|
+
"}"
|
|
288
|
+
]);
|
|
289
|
+
// O Lexador não deve encontrar erros
|
|
290
|
+
expect(resultadoLexador.erros).toHaveLength(0);
|
|
291
|
+
// O valor recebido deve ser mapeado como METODO
|
|
292
|
+
expect(resultadoLexador.simbolos).toEqual(expect.arrayContaining([
|
|
293
|
+
expect.objectContaining({ tipo: foles_1.default.METODO }),
|
|
294
|
+
]));
|
|
295
|
+
// O Lexador deve montar um objeto de comprimento 10
|
|
296
|
+
expect(resultadoLexador.simbolos).toHaveLength(10);
|
|
297
|
+
expect(resultadoLexador.simbolos).toEqual(expect.arrayContaining([
|
|
298
|
+
expect.objectContaining({ tipo: foles_1.default.NUMERO }),
|
|
299
|
+
]));
|
|
300
|
+
// Avaliador Sintático
|
|
301
|
+
const resultadoAvaliadorSintatico = avaliador.analisar(resultadoLexador.simbolos);
|
|
302
|
+
// O Avaliador deve montar um objeto com os devidos nomes FolEs e CSS
|
|
303
|
+
expect(resultadoAvaliadorSintatico[0].modificadores[0].propriedadeCss).toStrictEqual(metodos_1.TraducaoValoresMetodos[metodos_1.MetodosEscalamento[index]]);
|
|
304
|
+
// Tradutor
|
|
305
|
+
const resultadoTradutor = tradutor.serializar(resultadoAvaliadorSintatico);
|
|
306
|
+
// O Tradutor deve serializar de acordo e traduzir escalamento para scale
|
|
307
|
+
expect(resultadoTradutor).toContain(metodos_1.TraducaoValoresMetodos[metodos_1.MetodosEscalamento[index]]);
|
|
308
|
+
expect(resultadoTradutor).toContain(`scale(${valoresAceitos[valIndex]});`);
|
|
309
|
+
}
|
|
310
|
+
}
|
|
311
|
+
});
|
|
312
|
+
it('Atribuindo Método "escalamento()" com múltiplos valores', () => {
|
|
313
|
+
for (let index = 0; index < metodos_1.MetodosEscalamento.length; index += 1) {
|
|
115
314
|
// Lexador
|
|
116
315
|
const resultadoLexador = lexador.mapear([
|
|
117
316
|
"lmht {",
|
|
118
|
-
`${metodos_1.
|
|
317
|
+
`${metodos_1.MetodosEscalamento[index]}: escalamento(1.3, 0.4);`,
|
|
119
318
|
"}"
|
|
120
319
|
]);
|
|
121
|
-
// O Lexador deve
|
|
122
|
-
expect(resultadoLexador.simbolos).toHaveLength(12);
|
|
320
|
+
// O Lexador não deve encontrar erros
|
|
123
321
|
expect(resultadoLexador.erros).toHaveLength(0);
|
|
124
322
|
// O valor recebido deve ser mapeado como METODO
|
|
125
323
|
expect(resultadoLexador.simbolos).toEqual(expect.arrayContaining([
|
|
126
324
|
expect.objectContaining({ tipo: foles_1.default.METODO }),
|
|
127
325
|
]));
|
|
128
|
-
// O Lexador
|
|
326
|
+
// O Lexador deve montar um objeto de comprimento 12
|
|
327
|
+
expect(resultadoLexador.simbolos).toHaveLength(12);
|
|
129
328
|
expect(resultadoLexador.simbolos).toEqual(expect.arrayContaining([
|
|
130
329
|
expect.objectContaining({ tipo: foles_1.default.NUMERO }),
|
|
131
|
-
expect.objectContaining({ tipo: foles_1.default.QUALITATIVO }),
|
|
132
330
|
]));
|
|
133
331
|
// Avaliador Sintático
|
|
134
332
|
const resultadoAvaliadorSintatico = avaliador.analisar(resultadoLexador.simbolos);
|
|
135
333
|
// 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
|
-
//
|
|
334
|
+
expect(resultadoAvaliadorSintatico[0].modificadores[0].propriedadeCss).toStrictEqual(metodos_1.TraducaoValoresMetodos[metodos_1.MetodosEscalamento[index]]);
|
|
335
|
+
// Tradutor
|
|
138
336
|
const resultadoTradutor = tradutor.serializar(resultadoAvaliadorSintatico);
|
|
139
|
-
|
|
140
|
-
expect(resultadoTradutor).toContain(
|
|
337
|
+
// O Tradutor deve serializar de acordo e traduzir escalamento para scale
|
|
338
|
+
expect(resultadoTradutor).toContain(metodos_1.TraducaoValoresMetodos[metodos_1.MetodosEscalamento[index]]);
|
|
339
|
+
expect(resultadoTradutor).toContain(`scale(1.3, 0.4);`);
|
|
141
340
|
}
|
|
142
341
|
});
|
|
143
|
-
it('Atribuindo Método "
|
|
144
|
-
for (let index = 0; index < metodos_1.
|
|
342
|
+
it('Atribuindo Método "escalamento-3d()"', () => {
|
|
343
|
+
for (let index = 0; index < metodos_1.MetodosEscalamento.length; index += 1) {
|
|
145
344
|
// Lexador
|
|
146
345
|
const resultadoLexador = lexador.mapear([
|
|
147
346
|
"lmht {",
|
|
148
|
-
`${metodos_1.
|
|
347
|
+
`${metodos_1.MetodosEscalamento[index]}: escalamento-3d(0.5, 1, 1.7);`,
|
|
149
348
|
"}"
|
|
150
349
|
]);
|
|
151
|
-
// O Lexador deve
|
|
152
|
-
expect(resultadoLexador.simbolos).toHaveLength(16);
|
|
350
|
+
// O Lexador não deve encontrar erros
|
|
153
351
|
expect(resultadoLexador.erros).toHaveLength(0);
|
|
154
352
|
// O valor recebido deve ser mapeado como METODO
|
|
155
353
|
expect(resultadoLexador.simbolos).toEqual(expect.arrayContaining([
|
|
156
354
|
expect.objectContaining({ tipo: foles_1.default.METODO }),
|
|
157
355
|
]));
|
|
158
|
-
// O Lexador
|
|
356
|
+
// O Lexador deve montar um objeto de comprimento 14
|
|
357
|
+
expect(resultadoLexador.simbolos).toHaveLength(14);
|
|
159
358
|
expect(resultadoLexador.simbolos).toEqual(expect.arrayContaining([
|
|
160
359
|
expect.objectContaining({ tipo: foles_1.default.NUMERO }),
|
|
161
360
|
]));
|
|
162
361
|
// Avaliador Sintático
|
|
163
362
|
const resultadoAvaliadorSintatico = avaliador.analisar(resultadoLexador.simbolos);
|
|
164
363
|
// 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
|
-
//
|
|
364
|
+
expect(resultadoAvaliadorSintatico[0].modificadores[0].propriedadeCss).toStrictEqual(metodos_1.TraducaoValoresMetodos[metodos_1.MetodosEscalamento[index]]);
|
|
365
|
+
// Tradutor
|
|
167
366
|
const resultadoTradutor = tradutor.serializar(resultadoAvaliadorSintatico);
|
|
168
|
-
|
|
169
|
-
expect(resultadoTradutor).toContain(
|
|
367
|
+
// O Tradutor deve serializar de acordo e traduzir escalamento-3d para scale3d
|
|
368
|
+
expect(resultadoTradutor).toContain(metodos_1.TraducaoValoresMetodos[metodos_1.MetodosEscalamento[index]]);
|
|
369
|
+
expect(resultadoTradutor).toContain(`scale3d(0.5, 1, 1.7);`);
|
|
170
370
|
}
|
|
171
371
|
});
|
|
172
|
-
it('Atribuindo Método "
|
|
173
|
-
for (let index = 0; index < metodos_1.
|
|
174
|
-
|
|
175
|
-
|
|
372
|
+
it('Atribuindo Método "escalamento-eixo-z()"', () => {
|
|
373
|
+
for (let index = 0; index < metodos_1.MetodosEscalamento.length; index += 1) {
|
|
374
|
+
const valoresAceitos = ['0.1', '0', '1', '1.75'];
|
|
375
|
+
for (let valIndex = 0; valIndex < valoresAceitos.length; valIndex += 1) {
|
|
376
|
+
// Lexador
|
|
377
|
+
const resultadoLexador = lexador.mapear([
|
|
378
|
+
"lmht {",
|
|
379
|
+
`${metodos_1.MetodosEscalamento[index]}: escalamento-eixo-z(${valoresAceitos[valIndex]});`,
|
|
380
|
+
"}"
|
|
381
|
+
]);
|
|
382
|
+
// O Lexador não deve encontrar erros
|
|
383
|
+
expect(resultadoLexador.erros).toHaveLength(0);
|
|
384
|
+
// O valor recebido deve ser mapeado como METODO
|
|
385
|
+
expect(resultadoLexador.simbolos).toEqual(expect.arrayContaining([
|
|
386
|
+
expect.objectContaining({ tipo: foles_1.default.METODO }),
|
|
387
|
+
]));
|
|
388
|
+
// O Lexador deve montar um objeto de comprimento 10
|
|
389
|
+
expect(resultadoLexador.simbolos).toHaveLength(10);
|
|
390
|
+
expect(resultadoLexador.simbolos).toEqual(expect.arrayContaining([
|
|
391
|
+
expect.objectContaining({ tipo: foles_1.default.NUMERO }),
|
|
392
|
+
]));
|
|
393
|
+
// Avaliador Sintático
|
|
394
|
+
const resultadoAvaliadorSintatico = avaliador.analisar(resultadoLexador.simbolos);
|
|
395
|
+
// O Avaliador deve montar um objeto com os devidos nomes FolEs e CSS
|
|
396
|
+
expect(resultadoAvaliadorSintatico[0].modificadores[0].propriedadeCss).toStrictEqual(metodos_1.TraducaoValoresMetodos[metodos_1.MetodosEscalamento[index]]);
|
|
397
|
+
// Tradutor
|
|
398
|
+
const resultadoTradutor = tradutor.serializar(resultadoAvaliadorSintatico);
|
|
399
|
+
// O Tradutor deve serializar de acordo e traduzir escalamento-eixo-z para scaleZ
|
|
400
|
+
expect(resultadoTradutor).toContain(metodos_1.TraducaoValoresMetodos[metodos_1.MetodosEscalamento[index]]);
|
|
401
|
+
expect(resultadoTradutor).toContain(`scaleZ(${valoresAceitos[valIndex]});`);
|
|
402
|
+
}
|
|
403
|
+
}
|
|
404
|
+
});
|
|
405
|
+
it('Atribuindo Método "escalamento-horizontal()"', () => {
|
|
406
|
+
for (let index = 0; index < metodos_1.MetodosEscalamento.length; index += 1) {
|
|
407
|
+
const valoresAceitos = ['0.1', '0', '1', '1.75'];
|
|
408
|
+
for (let valIndex = 0; valIndex < valoresAceitos.length; valIndex += 1) {
|
|
409
|
+
// Lexador
|
|
410
|
+
const resultadoLexador = lexador.mapear([
|
|
411
|
+
"lmht {",
|
|
412
|
+
`${metodos_1.MetodosEscalamento[index]}: escalamento-horizontal(${valoresAceitos[valIndex]});`,
|
|
413
|
+
"}"
|
|
414
|
+
]);
|
|
415
|
+
// O Lexador não deve encontrar erros
|
|
416
|
+
expect(resultadoLexador.erros).toHaveLength(0);
|
|
417
|
+
// O valor recebido deve ser mapeado como METODO
|
|
418
|
+
expect(resultadoLexador.simbolos).toEqual(expect.arrayContaining([
|
|
419
|
+
expect.objectContaining({ tipo: foles_1.default.METODO }),
|
|
420
|
+
]));
|
|
421
|
+
// O Lexador deve montar um objeto de comprimento 10
|
|
422
|
+
expect(resultadoLexador.simbolos).toHaveLength(10);
|
|
423
|
+
expect(resultadoLexador.simbolos).toEqual(expect.arrayContaining([
|
|
424
|
+
expect.objectContaining({ tipo: foles_1.default.NUMERO }),
|
|
425
|
+
]));
|
|
426
|
+
// Avaliador Sintático
|
|
427
|
+
const resultadoAvaliadorSintatico = avaliador.analisar(resultadoLexador.simbolos);
|
|
428
|
+
// O Avaliador deve montar um objeto com os devidos nomes FolEs e CSS
|
|
429
|
+
expect(resultadoAvaliadorSintatico[0].modificadores[0].propriedadeCss).toStrictEqual(metodos_1.TraducaoValoresMetodos[metodos_1.MetodosEscalamento[index]]);
|
|
430
|
+
// Tradutor
|
|
431
|
+
const resultadoTradutor = tradutor.serializar(resultadoAvaliadorSintatico);
|
|
432
|
+
// O Tradutor deve serializar de acordo e traduzir escalamento-horizontal para scaleX
|
|
433
|
+
expect(resultadoTradutor).toContain(metodos_1.TraducaoValoresMetodos[metodos_1.MetodosEscalamento[index]]);
|
|
434
|
+
expect(resultadoTradutor).toContain(`scaleX(${valoresAceitos[valIndex]});`);
|
|
435
|
+
}
|
|
436
|
+
}
|
|
437
|
+
});
|
|
438
|
+
it('Atribuindo Método "escalamento-vertical()"', () => {
|
|
439
|
+
for (let index = 0; index < metodos_1.MetodosEscalamento.length; index += 1) {
|
|
440
|
+
const valoresAceitos = ['0.1', '0', '1', '1.75'];
|
|
441
|
+
for (let valIndex = 0; valIndex < valoresAceitos.length; valIndex += 1) {
|
|
442
|
+
// Lexador
|
|
443
|
+
const resultadoLexador = lexador.mapear([
|
|
444
|
+
"lmht {",
|
|
445
|
+
`${metodos_1.MetodosEscalamento[index]}: escalamento-vertical(${valoresAceitos[valIndex]});`,
|
|
446
|
+
"}"
|
|
447
|
+
]);
|
|
448
|
+
// O Lexador não deve encontrar erros
|
|
449
|
+
expect(resultadoLexador.erros).toHaveLength(0);
|
|
450
|
+
// O valor recebido deve ser mapeado como METODO
|
|
451
|
+
expect(resultadoLexador.simbolos).toEqual(expect.arrayContaining([
|
|
452
|
+
expect.objectContaining({ tipo: foles_1.default.METODO }),
|
|
453
|
+
]));
|
|
454
|
+
// O Lexador deve montar um objeto de comprimento 10
|
|
455
|
+
expect(resultadoLexador.simbolos).toHaveLength(10);
|
|
456
|
+
expect(resultadoLexador.simbolos).toEqual(expect.arrayContaining([
|
|
457
|
+
expect.objectContaining({ tipo: foles_1.default.NUMERO }),
|
|
458
|
+
]));
|
|
459
|
+
// Avaliador Sintático
|
|
460
|
+
const resultadoAvaliadorSintatico = avaliador.analisar(resultadoLexador.simbolos);
|
|
461
|
+
// O Avaliador deve montar um objeto com os devidos nomes FolEs e CSS
|
|
462
|
+
expect(resultadoAvaliadorSintatico[0].modificadores[0].propriedadeCss).toStrictEqual(metodos_1.TraducaoValoresMetodos[metodos_1.MetodosEscalamento[index]]);
|
|
463
|
+
// Tradutor
|
|
464
|
+
const resultadoTradutor = tradutor.serializar(resultadoAvaliadorSintatico);
|
|
465
|
+
// O Tradutor deve serializar de acordo e traduzir escalamento-vertical para scaleY
|
|
466
|
+
expect(resultadoTradutor).toContain(metodos_1.TraducaoValoresMetodos[metodos_1.MetodosEscalamento[index]]);
|
|
467
|
+
expect(resultadoTradutor).toContain(`scaleY(${valoresAceitos[valIndex]});`);
|
|
468
|
+
}
|
|
469
|
+
}
|
|
470
|
+
});
|
|
471
|
+
it('Atribuindo Método "gradiente-linear()" com valor de ângulo', () => {
|
|
472
|
+
for (let index = 0; index < metodos_1.MetodoGradienteLinear.length; index += 1) {
|
|
473
|
+
// Lexador
|
|
474
|
+
const resultadoLexador = lexador.mapear([
|
|
176
475
|
"lmht {",
|
|
177
|
-
`${metodos_1.
|
|
476
|
+
`${metodos_1.MetodoGradienteLinear[index]}: gradiente-linear(90deg, verde, amarelo);`,
|
|
178
477
|
"}"
|
|
179
478
|
]);
|
|
180
|
-
// O Lexador deve montar um objeto de comprimento
|
|
181
|
-
expect(resultadoLexador.simbolos).toHaveLength(
|
|
479
|
+
// O Lexador deve montar um objeto de comprimento 15 sem retornar nenhum erro
|
|
480
|
+
expect(resultadoLexador.simbolos).toHaveLength(15);
|
|
182
481
|
expect(resultadoLexador.erros).toHaveLength(0);
|
|
183
482
|
// O valor recebido deve ser mapeado como METODO
|
|
184
483
|
expect(resultadoLexador.simbolos).toEqual(expect.arrayContaining([
|
|
185
484
|
expect.objectContaining({ tipo: foles_1.default.METODO }),
|
|
186
485
|
]));
|
|
187
|
-
// O Lexador também deve encontrar
|
|
486
|
+
// O Lexador também deve encontrar número e quantificador no mapeamento
|
|
188
487
|
expect(resultadoLexador.simbolos).toEqual(expect.arrayContaining([
|
|
189
488
|
expect.objectContaining({ tipo: foles_1.default.NUMERO }),
|
|
489
|
+
expect.objectContaining({ tipo: foles_1.default.QUANTIFICADOR }),
|
|
190
490
|
]));
|
|
191
491
|
// Avaliador Sintático
|
|
192
492
|
const resultadoAvaliadorSintatico = avaliador.analisar(resultadoLexador.simbolos);
|
|
193
493
|
// 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
|
-
//
|
|
494
|
+
expect(resultadoAvaliadorSintatico[0].modificadores[0].propriedadeCss).toStrictEqual(metodos_1.TraducaoValoresMetodos[metodos_1.MetodoGradienteLinear[index]]);
|
|
495
|
+
// Tradutor
|
|
196
496
|
const resultadoTradutor = tradutor.serializar(resultadoAvaliadorSintatico);
|
|
197
|
-
expect(resultadoTradutor).toContain(metodos_1.TraducaoValoresMetodos[metodos_1.
|
|
198
|
-
expect(resultadoTradutor).toContain('linear(
|
|
497
|
+
expect(resultadoTradutor).toContain(metodos_1.TraducaoValoresMetodos[metodos_1.MetodoGradienteLinear[index]]);
|
|
498
|
+
expect(resultadoTradutor).toContain('linear-gradient(90deg, green, yellow);');
|
|
499
|
+
}
|
|
500
|
+
});
|
|
501
|
+
it('Atribuindo Método "gradiente-linear()" com valor de posição', () => {
|
|
502
|
+
for (let index = 0; index < metodos_1.MetodoGradienteLinear.length; index += 1) {
|
|
503
|
+
const posicoes = ['superior', 'inferior', 'direita', 'esquerda'];
|
|
504
|
+
for (let posIndex = 0; posIndex < posicoes.length; posIndex += 1) {
|
|
505
|
+
// Lexador
|
|
506
|
+
const resultadoLexador = lexador.mapear([
|
|
507
|
+
"lmht {",
|
|
508
|
+
`${metodos_1.MetodoGradienteLinear[index]}: gradiente-linear(${posicoes[posIndex]}, azul, vermelho);`,
|
|
509
|
+
"}"
|
|
510
|
+
]);
|
|
511
|
+
// O Lexador deve montar um objeto de comprimento 14 sem retornar nenhum erro
|
|
512
|
+
expect(resultadoLexador.simbolos).toHaveLength(14);
|
|
513
|
+
expect(resultadoLexador.erros).toHaveLength(0);
|
|
514
|
+
// O valor recebido deve ser mapeado como METODO
|
|
515
|
+
expect(resultadoLexador.simbolos).toEqual(expect.arrayContaining([
|
|
516
|
+
expect.objectContaining({ tipo: foles_1.default.METODO }),
|
|
517
|
+
]));
|
|
518
|
+
// O Lexador também deve encontrar um qualitativo no mapeamento, referente à posição
|
|
519
|
+
expect(resultadoLexador.simbolos).toEqual(expect.arrayContaining([
|
|
520
|
+
expect.objectContaining({ tipo: foles_1.default.QUALITATIVO }),
|
|
521
|
+
]));
|
|
522
|
+
// Avaliador Sintático
|
|
523
|
+
const resultadoAvaliadorSintatico = avaliador.analisar(resultadoLexador.simbolos);
|
|
524
|
+
// O Avaliador deve montar um objeto com os devidos nomes FolEs e CSS
|
|
525
|
+
expect(resultadoAvaliadorSintatico[0].modificadores[0].propriedadeCss).toStrictEqual(metodos_1.TraducaoValoresMetodos[metodos_1.MetodoGradienteLinear[index]]);
|
|
526
|
+
// Tradutor
|
|
527
|
+
const resultadoTradutor = tradutor.serializar(resultadoAvaliadorSintatico);
|
|
528
|
+
expect(resultadoTradutor).toContain(metodos_1.TraducaoValoresMetodos[metodos_1.MetodoGradienteLinear[index]]);
|
|
529
|
+
switch (posicoes[posIndex]) {
|
|
530
|
+
case 'superior':
|
|
531
|
+
expect(resultadoTradutor).toContain('linear-gradient(0deg, blue, red);');
|
|
532
|
+
break;
|
|
533
|
+
case 'direita':
|
|
534
|
+
expect(resultadoTradutor).toContain('linear-gradient(90deg, blue, red);');
|
|
535
|
+
break;
|
|
536
|
+
case 'inferior':
|
|
537
|
+
expect(resultadoTradutor).toContain('linear-gradient(180deg, blue, red);');
|
|
538
|
+
break;
|
|
539
|
+
case 'esquerda':
|
|
540
|
+
expect(resultadoTradutor).toContain('linear-gradient(270deg, blue, red);');
|
|
541
|
+
break;
|
|
542
|
+
default:
|
|
543
|
+
break;
|
|
544
|
+
}
|
|
545
|
+
}
|
|
546
|
+
}
|
|
547
|
+
});
|
|
548
|
+
it('Atribuindo Método "inclinar()"', () => {
|
|
549
|
+
for (let index = 0; index < metodos_1.MetodosInclinar.length; index += 1) {
|
|
550
|
+
const valoresAceitos = ['18deg', '3.142rad', '0', '1'];
|
|
551
|
+
for (let valIndex = 0; valIndex < valoresAceitos.length; valIndex += 1) {
|
|
552
|
+
// Lexador
|
|
553
|
+
const resultadoLexador = lexador.mapear([
|
|
554
|
+
"lmht {",
|
|
555
|
+
`${metodos_1.MetodosInclinar[index]}: inclinar(${valoresAceitos[valIndex]});`,
|
|
556
|
+
"}"
|
|
557
|
+
]);
|
|
558
|
+
// O Lexador não deve encontrar erros
|
|
559
|
+
expect(resultadoLexador.erros).toHaveLength(0);
|
|
560
|
+
// O valor recebido deve ser mapeado como METODO
|
|
561
|
+
expect(resultadoLexador.simbolos).toEqual(expect.arrayContaining([
|
|
562
|
+
expect.objectContaining({ tipo: foles_1.default.METODO }),
|
|
563
|
+
]));
|
|
564
|
+
// O Lexador deve montar um objeto de comprimento 11 caso haja quantificador e 10 caso não haja
|
|
565
|
+
if (valIndex === 0 || valIndex === 1) {
|
|
566
|
+
expect(resultadoLexador.simbolos).toHaveLength(11);
|
|
567
|
+
expect(resultadoLexador.simbolos).toEqual(expect.arrayContaining([
|
|
568
|
+
expect.objectContaining({ tipo: foles_1.default.NUMERO }),
|
|
569
|
+
expect.objectContaining({ tipo: foles_1.default.QUANTIFICADOR }),
|
|
570
|
+
]));
|
|
571
|
+
}
|
|
572
|
+
else {
|
|
573
|
+
expect(resultadoLexador.simbolos).toHaveLength(10);
|
|
574
|
+
expect(resultadoLexador.simbolos).toEqual(expect.arrayContaining([
|
|
575
|
+
expect.objectContaining({ tipo: foles_1.default.NUMERO }),
|
|
576
|
+
]));
|
|
577
|
+
}
|
|
578
|
+
// Avaliador Sintático
|
|
579
|
+
const resultadoAvaliadorSintatico = avaliador.analisar(resultadoLexador.simbolos);
|
|
580
|
+
// O Avaliador deve montar um objeto com os devidos nomes FolEs e CSS
|
|
581
|
+
expect(resultadoAvaliadorSintatico[0].modificadores[0].propriedadeCss).toStrictEqual(metodos_1.TraducaoValoresMetodos[metodos_1.MetodosInclinar[index]]);
|
|
582
|
+
// Tradutor
|
|
583
|
+
const resultadoTradutor = tradutor.serializar(resultadoAvaliadorSintatico);
|
|
584
|
+
// O Tradutor deve serializar de acordo e traduzir inclinar para skew
|
|
585
|
+
expect(resultadoTradutor).toContain(metodos_1.TraducaoValoresMetodos[metodos_1.MetodosInclinar[index]]);
|
|
586
|
+
expect(resultadoTradutor).toContain(`skew(${valoresAceitos[valIndex]});`);
|
|
587
|
+
}
|
|
588
|
+
}
|
|
589
|
+
});
|
|
590
|
+
it('Atribuindo Método "inclinar() com múltiplos valores"', () => {
|
|
591
|
+
for (let index = 0; index < metodos_1.MetodosInclinar.length; index += 1) {
|
|
592
|
+
// Lexador
|
|
593
|
+
const resultadoLexador = lexador.mapear([
|
|
594
|
+
"lmht {",
|
|
595
|
+
`${metodos_1.MetodosInclinar[index]}: inclinar(15deg, 15deg);`,
|
|
596
|
+
"}"
|
|
597
|
+
]);
|
|
598
|
+
// O Lexador não deve encontrar erros
|
|
599
|
+
expect(resultadoLexador.erros).toHaveLength(0);
|
|
600
|
+
// O valor recebido deve ser mapeado como METODO
|
|
601
|
+
expect(resultadoLexador.simbolos).toEqual(expect.arrayContaining([
|
|
602
|
+
expect.objectContaining({ tipo: foles_1.default.METODO }),
|
|
603
|
+
]));
|
|
604
|
+
// O Lexador deve montar um objeto de comprimento 14
|
|
605
|
+
expect(resultadoLexador.simbolos).toHaveLength(14);
|
|
606
|
+
expect(resultadoLexador.simbolos).toEqual(expect.arrayContaining([
|
|
607
|
+
expect.objectContaining({ tipo: foles_1.default.NUMERO }),
|
|
608
|
+
expect.objectContaining({ tipo: foles_1.default.QUANTIFICADOR }),
|
|
609
|
+
]));
|
|
610
|
+
// Avaliador Sintático
|
|
611
|
+
const resultadoAvaliadorSintatico = avaliador.analisar(resultadoLexador.simbolos);
|
|
612
|
+
// O Avaliador deve montar um objeto com os devidos nomes FolEs e CSS
|
|
613
|
+
expect(resultadoAvaliadorSintatico[0].modificadores[0].propriedadeCss).toStrictEqual(metodos_1.TraducaoValoresMetodos[metodos_1.MetodosInclinar[index]]);
|
|
614
|
+
// Tradutor
|
|
615
|
+
const resultadoTradutor = tradutor.serializar(resultadoAvaliadorSintatico);
|
|
616
|
+
// O Tradutor deve serializar de acordo e traduzir inclinar para skew
|
|
617
|
+
expect(resultadoTradutor).toContain(metodos_1.TraducaoValoresMetodos[metodos_1.MetodosInclinar[index]]);
|
|
618
|
+
expect(resultadoTradutor).toContain(`skew(15deg, 15deg);`);
|
|
619
|
+
}
|
|
620
|
+
});
|
|
621
|
+
it('Atribuindo Método "inclinar-horizontal()"', () => {
|
|
622
|
+
for (let index = 0; index < metodos_1.MetodosInclinar.length; index += 1) {
|
|
623
|
+
const valoresAceitos = ['18deg', '3.142rad', '0', '1'];
|
|
624
|
+
for (let valIndex = 0; valIndex < valoresAceitos.length; valIndex += 1) {
|
|
625
|
+
// Lexador
|
|
626
|
+
const resultadoLexador = lexador.mapear([
|
|
627
|
+
"lmht {",
|
|
628
|
+
`${metodos_1.MetodosInclinar[index]}: inclinar-horizontal(${valoresAceitos[valIndex]});`,
|
|
629
|
+
"}"
|
|
630
|
+
]);
|
|
631
|
+
// O Lexador não deve encontrar erros
|
|
632
|
+
expect(resultadoLexador.erros).toHaveLength(0);
|
|
633
|
+
// O valor recebido deve ser mapeado como METODO
|
|
634
|
+
expect(resultadoLexador.simbolos).toEqual(expect.arrayContaining([
|
|
635
|
+
expect.objectContaining({ tipo: foles_1.default.METODO }),
|
|
636
|
+
]));
|
|
637
|
+
// O Lexador deve montar um objeto de comprimento 11 caso haja quantificador e 10 caso não haja
|
|
638
|
+
if (valIndex === 0 || valIndex === 1) {
|
|
639
|
+
expect(resultadoLexador.simbolos).toHaveLength(11);
|
|
640
|
+
expect(resultadoLexador.simbolos).toEqual(expect.arrayContaining([
|
|
641
|
+
expect.objectContaining({ tipo: foles_1.default.NUMERO }),
|
|
642
|
+
expect.objectContaining({ tipo: foles_1.default.QUANTIFICADOR }),
|
|
643
|
+
]));
|
|
644
|
+
}
|
|
645
|
+
else {
|
|
646
|
+
expect(resultadoLexador.simbolos).toHaveLength(10);
|
|
647
|
+
expect(resultadoLexador.simbolos).toEqual(expect.arrayContaining([
|
|
648
|
+
expect.objectContaining({ tipo: foles_1.default.NUMERO }),
|
|
649
|
+
]));
|
|
650
|
+
}
|
|
651
|
+
// Avaliador Sintático
|
|
652
|
+
const resultadoAvaliadorSintatico = avaliador.analisar(resultadoLexador.simbolos);
|
|
653
|
+
// O Avaliador deve montar um objeto com os devidos nomes FolEs e CSS
|
|
654
|
+
expect(resultadoAvaliadorSintatico[0].modificadores[0].propriedadeCss).toStrictEqual(metodos_1.TraducaoValoresMetodos[metodos_1.MetodosInclinar[index]]);
|
|
655
|
+
// Tradutor
|
|
656
|
+
const resultadoTradutor = tradutor.serializar(resultadoAvaliadorSintatico);
|
|
657
|
+
// O Tradutor deve serializar de acordo e traduzir inclinar-horizontal para skewX
|
|
658
|
+
expect(resultadoTradutor).toContain(metodos_1.TraducaoValoresMetodos[metodos_1.MetodosInclinar[index]]);
|
|
659
|
+
expect(resultadoTradutor).toContain(`skewX(${valoresAceitos[valIndex]});`);
|
|
660
|
+
}
|
|
661
|
+
}
|
|
662
|
+
});
|
|
663
|
+
it('Atribuindo Método "inclinar-vertical()"', () => {
|
|
664
|
+
for (let index = 0; index < metodos_1.MetodosInclinar.length; index += 1) {
|
|
665
|
+
const valoresAceitos = ['18deg', '3.142rad', '0', '1'];
|
|
666
|
+
for (let valIndex = 0; valIndex < valoresAceitos.length; valIndex += 1) {
|
|
667
|
+
// Lexador
|
|
668
|
+
const resultadoLexador = lexador.mapear([
|
|
669
|
+
"lmht {",
|
|
670
|
+
`${metodos_1.MetodosInclinar[index]}: inclinar-vertical(${valoresAceitos[valIndex]});`,
|
|
671
|
+
"}"
|
|
672
|
+
]);
|
|
673
|
+
// O Lexador não deve encontrar erros
|
|
674
|
+
expect(resultadoLexador.erros).toHaveLength(0);
|
|
675
|
+
// O valor recebido deve ser mapeado como METODO
|
|
676
|
+
expect(resultadoLexador.simbolos).toEqual(expect.arrayContaining([
|
|
677
|
+
expect.objectContaining({ tipo: foles_1.default.METODO }),
|
|
678
|
+
]));
|
|
679
|
+
// O Lexador deve montar um objeto de comprimento 11 caso haja quantificador e 10 caso não haja
|
|
680
|
+
if (valIndex === 0 || valIndex === 1) {
|
|
681
|
+
expect(resultadoLexador.simbolos).toHaveLength(11);
|
|
682
|
+
expect(resultadoLexador.simbolos).toEqual(expect.arrayContaining([
|
|
683
|
+
expect.objectContaining({ tipo: foles_1.default.NUMERO }),
|
|
684
|
+
expect.objectContaining({ tipo: foles_1.default.QUANTIFICADOR }),
|
|
685
|
+
]));
|
|
686
|
+
}
|
|
687
|
+
else {
|
|
688
|
+
expect(resultadoLexador.simbolos).toHaveLength(10);
|
|
689
|
+
expect(resultadoLexador.simbolos).toEqual(expect.arrayContaining([
|
|
690
|
+
expect.objectContaining({ tipo: foles_1.default.NUMERO }),
|
|
691
|
+
]));
|
|
692
|
+
}
|
|
693
|
+
// Avaliador Sintático
|
|
694
|
+
const resultadoAvaliadorSintatico = avaliador.analisar(resultadoLexador.simbolos);
|
|
695
|
+
// O Avaliador deve montar um objeto com os devidos nomes FolEs e CSS
|
|
696
|
+
expect(resultadoAvaliadorSintatico[0].modificadores[0].propriedadeCss).toStrictEqual(metodos_1.TraducaoValoresMetodos[metodos_1.MetodosInclinar[index]]);
|
|
697
|
+
// Tradutor
|
|
698
|
+
const resultadoTradutor = tradutor.serializar(resultadoAvaliadorSintatico);
|
|
699
|
+
// O Tradutor deve serializar de acordo e traduzir inclinar-vertical para skewY
|
|
700
|
+
expect(resultadoTradutor).toContain(metodos_1.TraducaoValoresMetodos[metodos_1.MetodosInclinar[index]]);
|
|
701
|
+
expect(resultadoTradutor).toContain(`skewY(${valoresAceitos[valIndex]});`);
|
|
702
|
+
}
|
|
703
|
+
}
|
|
704
|
+
});
|
|
705
|
+
it('Atribuindo Método "inverter()"', () => {
|
|
706
|
+
for (let index = 0; index < metodos_1.MetodoInverter.length; index += 1) {
|
|
707
|
+
const valoresAceitos = ['100px', '100%', '0.1', '0', '1', '1.75'];
|
|
708
|
+
for (let valIndex = 0; valIndex < valoresAceitos.length; valIndex += 1) {
|
|
709
|
+
// Lexador
|
|
710
|
+
const resultadoLexador = lexador.mapear([
|
|
711
|
+
"lmht {",
|
|
712
|
+
`${metodos_1.MetodoInverter[index]}: inverter(${valoresAceitos[valIndex]});`,
|
|
713
|
+
"}"
|
|
714
|
+
]);
|
|
715
|
+
// O Lexador não deve encontrar erros
|
|
716
|
+
expect(resultadoLexador.erros).toHaveLength(0);
|
|
717
|
+
// O valor recebido deve ser mapeado como METODO
|
|
718
|
+
expect(resultadoLexador.simbolos).toEqual(expect.arrayContaining([
|
|
719
|
+
expect.objectContaining({ tipo: foles_1.default.METODO }),
|
|
720
|
+
]));
|
|
721
|
+
// O Lexador deve montar um objeto de comprimento 11 caso haja quantificador e 10 caso não haja
|
|
722
|
+
if (valIndex === 0 || valIndex === 1) {
|
|
723
|
+
expect(resultadoLexador.simbolos).toHaveLength(11);
|
|
724
|
+
expect(resultadoLexador.simbolos).toEqual(expect.arrayContaining([
|
|
725
|
+
expect.objectContaining({ tipo: foles_1.default.NUMERO }),
|
|
726
|
+
expect.objectContaining({ tipo: foles_1.default.QUANTIFICADOR }),
|
|
727
|
+
]));
|
|
728
|
+
}
|
|
729
|
+
else {
|
|
730
|
+
expect(resultadoLexador.simbolos).toHaveLength(10);
|
|
731
|
+
expect(resultadoLexador.simbolos).toEqual(expect.arrayContaining([
|
|
732
|
+
expect.objectContaining({ tipo: foles_1.default.NUMERO }),
|
|
733
|
+
]));
|
|
734
|
+
}
|
|
735
|
+
// Avaliador Sintático
|
|
736
|
+
const resultadoAvaliadorSintatico = avaliador.analisar(resultadoLexador.simbolos);
|
|
737
|
+
// O Avaliador deve montar um objeto com os devidos nomes FolEs e CSS
|
|
738
|
+
expect(resultadoAvaliadorSintatico[0].modificadores[0].propriedadeCss).toStrictEqual(metodos_1.TraducaoValoresMetodos[metodos_1.MetodoInverter[index]]);
|
|
739
|
+
// Tradutor
|
|
740
|
+
const resultadoTradutor = tradutor.serializar(resultadoAvaliadorSintatico);
|
|
741
|
+
// O Tradutor deve serializar de acordo e traduzir inverter para invert
|
|
742
|
+
expect(resultadoTradutor).toContain(metodos_1.TraducaoValoresMetodos[metodos_1.MetodoInverter[index]]);
|
|
743
|
+
expect(resultadoTradutor).toContain(`invert(${valoresAceitos[valIndex]});`);
|
|
744
|
+
}
|
|
745
|
+
}
|
|
746
|
+
});
|
|
747
|
+
it('Atribuindo Método "limitar" (clamp)', () => {
|
|
748
|
+
for (let index = 0; index < metodos_1.MetodoLimitar.length; index += 1) {
|
|
749
|
+
// Lexador
|
|
750
|
+
const resultadoLexador = lexador.mapear([
|
|
751
|
+
"lmht {",
|
|
752
|
+
`${metodos_1.MetodoLimitar[index]}: limitar(10vw, 20em, 100vw);`,
|
|
753
|
+
"}"
|
|
754
|
+
]);
|
|
755
|
+
// O Lexador deve montar um objeto de comprimento 17 sem retornar nenhum erro
|
|
756
|
+
expect(resultadoLexador.simbolos).toHaveLength(17);
|
|
757
|
+
expect(resultadoLexador.erros).toHaveLength(0);
|
|
758
|
+
// O valor recebido deve ser mapeado como METODO
|
|
759
|
+
expect(resultadoLexador.simbolos).toEqual(expect.arrayContaining([
|
|
760
|
+
expect.objectContaining({ tipo: foles_1.default.METODO }),
|
|
761
|
+
]));
|
|
762
|
+
// O Lexador também deve encontrar números e quantificadores no mapeamento
|
|
763
|
+
expect(resultadoLexador.simbolos).toEqual(expect.arrayContaining([
|
|
764
|
+
expect.objectContaining({ tipo: foles_1.default.NUMERO }),
|
|
765
|
+
expect.objectContaining({ tipo: foles_1.default.QUANTIFICADOR }),
|
|
766
|
+
]));
|
|
767
|
+
// Avaliador Sintático
|
|
768
|
+
const resultadoAvaliadorSintatico = avaliador.analisar(resultadoLexador.simbolos);
|
|
769
|
+
// O Avaliador deve montar um objeto com os devidos nomes FolEs e CSS
|
|
770
|
+
expect(resultadoAvaliadorSintatico[0].modificadores[0].propriedadeCss).toStrictEqual(metodos_1.TraducaoValoresMetodos[metodos_1.MetodoLimitar[index]]);
|
|
771
|
+
// Tradutor
|
|
772
|
+
const resultadoTradutor = tradutor.serializar(resultadoAvaliadorSintatico);
|
|
773
|
+
expect(resultadoTradutor).toContain(metodos_1.TraducaoValoresMetodos[metodos_1.MetodoLimitar[index]]);
|
|
774
|
+
expect(resultadoTradutor).toContain('clamp(10vw, 20em, 100vw);');
|
|
775
|
+
}
|
|
776
|
+
});
|
|
777
|
+
it('Atribuindo Método "linear()"', () => {
|
|
778
|
+
for (let index = 0; index < metodos_1.MetodoLinear.length; index += 1) {
|
|
779
|
+
// Lexador
|
|
780
|
+
const resultadoLexador = lexador.mapear([
|
|
781
|
+
"lmht {",
|
|
782
|
+
`${metodos_1.MetodoLinear[index]}: linear(0, 0.25, 1);`,
|
|
783
|
+
"}"
|
|
784
|
+
]);
|
|
785
|
+
// O Lexador deve montar um objeto de comprimento 14 sem retornar nenhum erro
|
|
786
|
+
expect(resultadoLexador.simbolos).toHaveLength(14);
|
|
787
|
+
expect(resultadoLexador.erros).toHaveLength(0);
|
|
788
|
+
// O valor recebido deve ser mapeado como METODO
|
|
789
|
+
expect(resultadoLexador.simbolos).toEqual(expect.arrayContaining([
|
|
790
|
+
expect.objectContaining({ tipo: foles_1.default.METODO }),
|
|
791
|
+
]));
|
|
792
|
+
// O Lexador também deve encontrar números no mapeamento
|
|
793
|
+
expect(resultadoLexador.simbolos).toEqual(expect.arrayContaining([
|
|
794
|
+
expect.objectContaining({ tipo: foles_1.default.NUMERO }),
|
|
795
|
+
]));
|
|
796
|
+
// Avaliador Sintático
|
|
797
|
+
const resultadoAvaliadorSintatico = avaliador.analisar(resultadoLexador.simbolos);
|
|
798
|
+
// O Avaliador deve montar um objeto com os devidos nomes FolEs e CSS
|
|
799
|
+
expect(resultadoAvaliadorSintatico[0].modificadores[0].propriedadeCss).toStrictEqual(metodos_1.TraducaoValoresMetodos[metodos_1.MetodoLinear[index]]);
|
|
800
|
+
// // // // Tradutor
|
|
801
|
+
const resultadoTradutor = tradutor.serializar(resultadoAvaliadorSintatico);
|
|
802
|
+
expect(resultadoTradutor).toContain(metodos_1.TraducaoValoresMetodos[metodos_1.MetodoLinear[index]]);
|
|
803
|
+
expect(resultadoTradutor).toContain('linear(0, 0.25, 1);');
|
|
804
|
+
}
|
|
805
|
+
});
|
|
806
|
+
it('Atribuindo Método "minmax()"', () => {
|
|
807
|
+
for (let index = 0; index < metodos_1.MetodoMinMax.length; index += 1) {
|
|
808
|
+
// Lexador
|
|
809
|
+
const resultadoLexador = lexador.mapear([
|
|
810
|
+
"lmht {",
|
|
811
|
+
`${metodos_1.MetodoMinMax[index]}: minmax(100px, conteúdo-máximo);`,
|
|
812
|
+
"}"
|
|
813
|
+
]);
|
|
814
|
+
// O Lexador deve montar um objeto de comprimento 13 sem retornar nenhum erro
|
|
815
|
+
expect(resultadoLexador.simbolos).toHaveLength(13);
|
|
816
|
+
expect(resultadoLexador.erros).toHaveLength(0);
|
|
817
|
+
// O valor recebido deve ser mapeado como METODO
|
|
818
|
+
expect(resultadoLexador.simbolos).toEqual(expect.arrayContaining([
|
|
819
|
+
expect.objectContaining({ tipo: foles_1.default.METODO }),
|
|
820
|
+
]));
|
|
821
|
+
// O Lexador também deve encontrar número e quantificador no mapeamento
|
|
822
|
+
expect(resultadoLexador.simbolos).toEqual(expect.arrayContaining([
|
|
823
|
+
expect.objectContaining({ tipo: foles_1.default.NUMERO }),
|
|
824
|
+
expect.objectContaining({ tipo: foles_1.default.QUANTIFICADOR }),
|
|
825
|
+
]));
|
|
826
|
+
// Avaliador Sintático
|
|
827
|
+
const resultadoAvaliadorSintatico = avaliador.analisar(resultadoLexador.simbolos);
|
|
828
|
+
// O Avaliador deve montar um objeto com os devidos nomes FolEs e CSS
|
|
829
|
+
expect(resultadoAvaliadorSintatico[0].modificadores[0].propriedadeCss).toStrictEqual(metodos_1.TraducaoValoresMetodos[metodos_1.MetodoMinMax[index]]);
|
|
830
|
+
// // // // Tradutor
|
|
831
|
+
const resultadoTradutor = tradutor.serializar(resultadoAvaliadorSintatico);
|
|
832
|
+
expect(resultadoTradutor).toContain(metodos_1.TraducaoValoresMetodos[metodos_1.MetodoMinMax[index]]);
|
|
833
|
+
expect(resultadoTradutor).toContain('minmax(100px, max-content);');
|
|
834
|
+
}
|
|
835
|
+
});
|
|
836
|
+
it('Atribuindo Método "opacar()"', () => {
|
|
837
|
+
for (let index = 0; index < metodos_1.MetodoOpacar.length; index += 1) {
|
|
838
|
+
const valoresAceitos = ['100px', '100%', '0.1', '0', '1', '1.75'];
|
|
839
|
+
for (let valIndex = 0; valIndex < valoresAceitos.length; valIndex += 1) {
|
|
840
|
+
// Lexador
|
|
841
|
+
const resultadoLexador = lexador.mapear([
|
|
842
|
+
"lmht {",
|
|
843
|
+
`${metodos_1.MetodoOpacar[index]}: opacar(${valoresAceitos[valIndex]});`,
|
|
844
|
+
"}"
|
|
845
|
+
]);
|
|
846
|
+
// O Lexador não deve encontrar erros
|
|
847
|
+
expect(resultadoLexador.erros).toHaveLength(0);
|
|
848
|
+
// O valor recebido deve ser mapeado como METODO
|
|
849
|
+
expect(resultadoLexador.simbolos).toEqual(expect.arrayContaining([
|
|
850
|
+
expect.objectContaining({ tipo: foles_1.default.METODO }),
|
|
851
|
+
]));
|
|
852
|
+
// O Lexador deve montar um objeto de comprimento 11 caso haja quantificador e 10 caso não haja
|
|
853
|
+
if (valIndex === 0 || valIndex === 1) {
|
|
854
|
+
expect(resultadoLexador.simbolos).toHaveLength(11);
|
|
855
|
+
expect(resultadoLexador.simbolos).toEqual(expect.arrayContaining([
|
|
856
|
+
expect.objectContaining({ tipo: foles_1.default.NUMERO }),
|
|
857
|
+
expect.objectContaining({ tipo: foles_1.default.QUANTIFICADOR }),
|
|
858
|
+
]));
|
|
859
|
+
}
|
|
860
|
+
else {
|
|
861
|
+
expect(resultadoLexador.simbolos).toHaveLength(10);
|
|
862
|
+
expect(resultadoLexador.simbolos).toEqual(expect.arrayContaining([
|
|
863
|
+
expect.objectContaining({ tipo: foles_1.default.NUMERO }),
|
|
864
|
+
]));
|
|
865
|
+
}
|
|
866
|
+
// Avaliador Sintático
|
|
867
|
+
const resultadoAvaliadorSintatico = avaliador.analisar(resultadoLexador.simbolos);
|
|
868
|
+
// O Avaliador deve montar um objeto com os devidos nomes FolEs e CSS
|
|
869
|
+
expect(resultadoAvaliadorSintatico[0].modificadores[0].propriedadeCss).toStrictEqual(metodos_1.TraducaoValoresMetodos[metodos_1.MetodoOpacar[index]]);
|
|
870
|
+
// Tradutor
|
|
871
|
+
const resultadoTradutor = tradutor.serializar(resultadoAvaliadorSintatico);
|
|
872
|
+
// O Tradutor deve serializar de acordo e traduzir opacar para opacity
|
|
873
|
+
expect(resultadoTradutor).toContain(metodos_1.TraducaoValoresMetodos[metodos_1.MetodoOpacar[index]]);
|
|
874
|
+
expect(resultadoTradutor).toContain(`opacity(${valoresAceitos[valIndex]});`);
|
|
875
|
+
}
|
|
876
|
+
}
|
|
877
|
+
});
|
|
878
|
+
it('Atribuindo Método "passos" (steps)', () => {
|
|
879
|
+
for (let index = 0; index < metodos_1.MetodoPassos.length; index += 1) {
|
|
880
|
+
// Lexador
|
|
881
|
+
const resultadoLexador = lexador.mapear([
|
|
882
|
+
"lmht {",
|
|
883
|
+
`${metodos_1.MetodoPassos[index]}: passos(2, salto-inicial);`,
|
|
884
|
+
"}"
|
|
885
|
+
]);
|
|
886
|
+
// O Lexador deve montar um objeto de comprimento 12 sem retornar nenhum erro
|
|
887
|
+
expect(resultadoLexador.simbolos).toHaveLength(12);
|
|
888
|
+
expect(resultadoLexador.erros).toHaveLength(0);
|
|
889
|
+
// O valor recebido deve ser mapeado como METODO
|
|
890
|
+
expect(resultadoLexador.simbolos).toEqual(expect.arrayContaining([
|
|
891
|
+
expect.objectContaining({ tipo: foles_1.default.METODO }),
|
|
892
|
+
]));
|
|
893
|
+
// O Lexador também deve encontrar número e qualitativo no mapeamento
|
|
894
|
+
expect(resultadoLexador.simbolos).toEqual(expect.arrayContaining([
|
|
895
|
+
expect.objectContaining({ tipo: foles_1.default.NUMERO }),
|
|
896
|
+
expect.objectContaining({ tipo: foles_1.default.QUALITATIVO }),
|
|
897
|
+
]));
|
|
898
|
+
// Avaliador Sintático
|
|
899
|
+
const resultadoAvaliadorSintatico = avaliador.analisar(resultadoLexador.simbolos);
|
|
900
|
+
// O Avaliador deve montar um objeto com os devidos nomes FolEs e CSS
|
|
901
|
+
expect(resultadoAvaliadorSintatico[0].modificadores[0].propriedadeCss).toStrictEqual(metodos_1.TraducaoValoresMetodos[metodos_1.MetodoPassos[index]]);
|
|
902
|
+
// // // // Tradutor
|
|
903
|
+
const resultadoTradutor = tradutor.serializar(resultadoAvaliadorSintatico);
|
|
904
|
+
expect(resultadoTradutor).toContain(metodos_1.TraducaoValoresMetodos[metodos_1.MetodoPassos[index]]);
|
|
905
|
+
expect(resultadoTradutor).toContain('steps(2, jump-start);');
|
|
906
|
+
}
|
|
907
|
+
});
|
|
908
|
+
it('Atribuindo Método "perspectivar()"', () => {
|
|
909
|
+
for (let index = 0; index < metodos_1.MetodoPerspectivar.length; index += 1) {
|
|
910
|
+
const valoresAceitos = ['800px', '6.5cm', '0.1', '0', '1', '1.75', 'nenhuma'];
|
|
911
|
+
for (let valIndex = 0; valIndex < valoresAceitos.length; valIndex += 1) {
|
|
912
|
+
// Lexador
|
|
913
|
+
const resultadoLexador = lexador.mapear([
|
|
914
|
+
"lmht {",
|
|
915
|
+
`${metodos_1.MetodoPerspectivar[index]}: perspectivar(${valoresAceitos[valIndex]});`,
|
|
916
|
+
"}"
|
|
917
|
+
]);
|
|
918
|
+
// O Lexador não deve encontrar erros
|
|
919
|
+
expect(resultadoLexador.erros).toHaveLength(0);
|
|
920
|
+
// O valor recebido deve ser mapeado como METODO
|
|
921
|
+
expect(resultadoLexador.simbolos).toEqual(expect.arrayContaining([
|
|
922
|
+
expect.objectContaining({ tipo: foles_1.default.METODO }),
|
|
923
|
+
]));
|
|
924
|
+
// O Lexador deve montar um objeto de comprimento 11 caso haja quantificador e 10 caso não haja
|
|
925
|
+
if (valIndex === 0 || valIndex === 1) {
|
|
926
|
+
expect(resultadoLexador.simbolos).toHaveLength(11);
|
|
927
|
+
expect(resultadoLexador.simbolos).toEqual(expect.arrayContaining([
|
|
928
|
+
expect.objectContaining({ tipo: foles_1.default.NUMERO }),
|
|
929
|
+
expect.objectContaining({ tipo: foles_1.default.QUANTIFICADOR }),
|
|
930
|
+
]));
|
|
931
|
+
}
|
|
932
|
+
else if (valIndex !== 6) {
|
|
933
|
+
expect(resultadoLexador.simbolos).toHaveLength(10);
|
|
934
|
+
expect(resultadoLexador.simbolos).toEqual(expect.arrayContaining([
|
|
935
|
+
expect.objectContaining({ tipo: foles_1.default.NUMERO }),
|
|
936
|
+
]));
|
|
937
|
+
}
|
|
938
|
+
else {
|
|
939
|
+
expect(resultadoLexador.simbolos).toHaveLength(10);
|
|
940
|
+
expect(resultadoLexador.simbolos).toEqual(expect.arrayContaining([
|
|
941
|
+
expect.objectContaining({ tipo: foles_1.default.IDENTIFICADOR }),
|
|
942
|
+
]));
|
|
943
|
+
}
|
|
944
|
+
// Avaliador Sintático
|
|
945
|
+
const resultadoAvaliadorSintatico = avaliador.analisar(resultadoLexador.simbolos);
|
|
946
|
+
// O Avaliador deve montar um objeto com os devidos nomes FolEs e CSS
|
|
947
|
+
expect(resultadoAvaliadorSintatico[0].modificadores[0].propriedadeCss).toStrictEqual(metodos_1.TraducaoValoresMetodos[metodos_1.MetodoPerspectivar[index]]);
|
|
948
|
+
// Tradutor
|
|
949
|
+
const resultadoTradutor = tradutor.serializar(resultadoAvaliadorSintatico);
|
|
950
|
+
// O Tradutor deve serializar de acordo e traduzir perspectivar para perspective
|
|
951
|
+
expect(resultadoTradutor).toContain(metodos_1.TraducaoValoresMetodos[metodos_1.MetodoPerspectivar[index]]);
|
|
952
|
+
expect(resultadoTradutor).toContain(`perspective(${valoresAceitos[valIndex]});`);
|
|
953
|
+
}
|
|
954
|
+
}
|
|
955
|
+
});
|
|
956
|
+
it('Atribuindo Método "projetar-sombra()" com valores de comprimento somente', () => {
|
|
957
|
+
for (let index = 0; index < metodos_1.MetodoProjetarSombra.length; index += 1) {
|
|
958
|
+
const comprimentos = ['15px 15px', '15px 15px 15px', '0.5rem 0.5rem', '0.5rem 0.5rem 1rem'];
|
|
959
|
+
for (let posIndex = 0; posIndex < comprimentos.length; posIndex += 1) {
|
|
960
|
+
// Lexador
|
|
961
|
+
const resultadoLexador = lexador.mapear([
|
|
962
|
+
"lmht {",
|
|
963
|
+
`${metodos_1.MetodoProjetarSombra[index]}: projetar-sombra(${comprimentos[posIndex]});`,
|
|
964
|
+
"}"
|
|
965
|
+
]);
|
|
966
|
+
// O Lexador deve montar um objeto de acordo, sem retornar nenhum erro
|
|
967
|
+
expect(resultadoLexador.erros).toHaveLength(0);
|
|
968
|
+
// O valor recebido deve ser mapeado como METODO
|
|
969
|
+
expect(resultadoLexador.simbolos).toEqual(expect.arrayContaining([
|
|
970
|
+
expect.objectContaining({ tipo: foles_1.default.METODO }),
|
|
971
|
+
]));
|
|
972
|
+
// O Lexador também deve sempre encontrar valores e quantificadores na operação
|
|
973
|
+
expect(resultadoLexador.simbolos).toEqual(expect.arrayContaining([
|
|
974
|
+
expect.objectContaining({ tipo: foles_1.default.NUMERO }),
|
|
975
|
+
expect.objectContaining({ tipo: foles_1.default.QUANTIFICADOR }),
|
|
976
|
+
]));
|
|
977
|
+
// Avaliador Sintático
|
|
978
|
+
const resultadoAvaliadorSintatico = avaliador.analisar(resultadoLexador.simbolos);
|
|
979
|
+
// O Avaliador deve montar um objeto com os devidos nomes FolEs e CSS
|
|
980
|
+
expect(resultadoAvaliadorSintatico[0].modificadores[0].propriedadeCss).toStrictEqual(metodos_1.TraducaoValoresMetodos[metodos_1.MetodoProjetarSombra[index]]);
|
|
981
|
+
// Tradutor
|
|
982
|
+
const resultadoTradutor = tradutor.serializar(resultadoAvaliadorSintatico);
|
|
983
|
+
// O Tradutor deve serializar de acordo e traduzir projetar-sombra para drop-shadow
|
|
984
|
+
expect(resultadoTradutor).toContain(metodos_1.TraducaoValoresMetodos[metodos_1.MetodoProjetarSombra[index]]);
|
|
985
|
+
expect(resultadoTradutor).toContain(`drop-shadow(${comprimentos[posIndex]});`);
|
|
986
|
+
}
|
|
987
|
+
}
|
|
988
|
+
});
|
|
989
|
+
it('Atribuindo Método "projetar-sombra()" com valores de cor e de comprimento', () => {
|
|
990
|
+
for (let index = 0; index < metodos_1.MetodoProjetarSombra.length; index += 1) {
|
|
991
|
+
const comprimentos = ['15px 15px vermelho', '15px 15px 15px vermelho', 'vermelho 0.5rem 0.5rem', 'vermelho 0.5rem 0.5rem 1rem'];
|
|
992
|
+
for (let posIndex = 0; posIndex < comprimentos.length; posIndex += 1) {
|
|
993
|
+
// Lexador
|
|
994
|
+
const resultadoLexador = lexador.mapear([
|
|
995
|
+
"lmht {",
|
|
996
|
+
`${metodos_1.MetodoProjetarSombra[index]}: projetar-sombra(${comprimentos[posIndex]});`,
|
|
997
|
+
"}"
|
|
998
|
+
]);
|
|
999
|
+
// O Lexador deve montar um objeto de acordo, sem retornar nenhum erro
|
|
1000
|
+
expect(resultadoLexador.erros).toHaveLength(0);
|
|
1001
|
+
// O valor recebido deve ser mapeado como METODO
|
|
1002
|
+
expect(resultadoLexador.simbolos).toEqual(expect.arrayContaining([
|
|
1003
|
+
expect.objectContaining({ tipo: foles_1.default.METODO }),
|
|
1004
|
+
]));
|
|
1005
|
+
// O Lexador também deve sempre encontrar valores e quantificadores na operação
|
|
1006
|
+
expect(resultadoLexador.simbolos).toEqual(expect.arrayContaining([
|
|
1007
|
+
expect.objectContaining({ tipo: foles_1.default.NUMERO }),
|
|
1008
|
+
expect.objectContaining({ tipo: foles_1.default.QUANTIFICADOR }),
|
|
1009
|
+
]));
|
|
1010
|
+
// Avaliador Sintático
|
|
1011
|
+
const resultadoAvaliadorSintatico = avaliador.analisar(resultadoLexador.simbolos);
|
|
1012
|
+
// O Avaliador deve montar um objeto com os devidos nomes FolEs e CSS
|
|
1013
|
+
expect(resultadoAvaliadorSintatico[0].modificadores[0].propriedadeCss).toStrictEqual(metodos_1.TraducaoValoresMetodos[metodos_1.MetodoProjetarSombra[index]]);
|
|
1014
|
+
// Tradutor
|
|
1015
|
+
const resultadoTradutor = tradutor.serializar(resultadoAvaliadorSintatico);
|
|
1016
|
+
// O Tradutor deve serializar de acordo e traduzir vermelho para red
|
|
1017
|
+
expect(resultadoTradutor).toContain(metodos_1.TraducaoValoresMetodos[metodos_1.MetodoProjetarSombra[index]]);
|
|
1018
|
+
expect(resultadoTradutor).toContain('red');
|
|
1019
|
+
}
|
|
1020
|
+
}
|
|
1021
|
+
});
|
|
1022
|
+
it('Atribuindo Método "raio()" com valores de posição e número/quantificador', () => {
|
|
1023
|
+
for (let index = 0; index < metodos_1.MetodoRaio.length; index += 1) {
|
|
1024
|
+
const valoresAceitos = ['lado-mais-próximo', 'lado-mais-proximo', 'canto-mais-próximo', 'canto-mais-proximo', 'lado-mais-distante', 'canto-mais-distante', 'lados', 'conter'];
|
|
1025
|
+
const traducaoValoresAceitos = ['closest-side', 'closest-side', 'closest-corner', 'closest-corner', 'farthest-side', 'farthest-corner', 'sides', 'contain'];
|
|
1026
|
+
for (let valIndex = 0; valIndex < valoresAceitos.length; valIndex += 1) {
|
|
1027
|
+
// Lexador
|
|
1028
|
+
const resultadoLexador = lexador.mapear([
|
|
1029
|
+
"lmht {",
|
|
1030
|
+
`${metodos_1.MetodoRaio[index]}: raio(${valoresAceitos[valIndex]} 200deg);`,
|
|
1031
|
+
"}"
|
|
1032
|
+
]);
|
|
1033
|
+
// O Lexador não deve encontrar erros
|
|
1034
|
+
expect(resultadoLexador.erros).toHaveLength(0);
|
|
1035
|
+
// O valor recebido deve ser mapeado como METODO
|
|
1036
|
+
expect(resultadoLexador.simbolos).toEqual(expect.arrayContaining([
|
|
1037
|
+
expect.objectContaining({ tipo: foles_1.default.METODO }),
|
|
1038
|
+
]));
|
|
1039
|
+
// O Lexador deve montar um objeto de comprimento 12
|
|
1040
|
+
expect(resultadoLexador.simbolos).toHaveLength(12);
|
|
1041
|
+
expect(resultadoLexador.simbolos).toEqual(expect.arrayContaining([
|
|
1042
|
+
expect.objectContaining({ tipo: foles_1.default.NUMERO }),
|
|
1043
|
+
expect.objectContaining({ tipo: foles_1.default.QUANTIFICADOR }),
|
|
1044
|
+
]));
|
|
1045
|
+
// Avaliador Sintático
|
|
1046
|
+
const resultadoAvaliadorSintatico = avaliador.analisar(resultadoLexador.simbolos);
|
|
1047
|
+
// O Avaliador deve montar um objeto com os devidos nomes FolEs e CSS
|
|
1048
|
+
expect(resultadoAvaliadorSintatico[0].modificadores[0].propriedadeCss).toStrictEqual(metodos_1.TraducaoValoresMetodos[metodos_1.MetodoRaio[index]]);
|
|
1049
|
+
// Tradutor
|
|
1050
|
+
const resultadoTradutor = tradutor.serializar(resultadoAvaliadorSintatico);
|
|
1051
|
+
// O Tradutor deve serializar de acordo e traduzir raio para ray
|
|
1052
|
+
expect(resultadoTradutor).toContain(metodos_1.TraducaoValoresMetodos[metodos_1.MetodoRaio[index]]);
|
|
1053
|
+
expect(resultadoTradutor).toContain(`ray(${traducaoValoresAceitos[valIndex]} 200deg);`);
|
|
1054
|
+
}
|
|
1055
|
+
}
|
|
1056
|
+
});
|
|
1057
|
+
it('Atribuindo Método "raio()" com somente número/quantificador', () => {
|
|
1058
|
+
for (let index = 0; index < metodos_1.MetodoRaio.length; index += 1) {
|
|
1059
|
+
// Lexador
|
|
1060
|
+
const resultadoLexador = lexador.mapear([
|
|
1061
|
+
"lmht {",
|
|
1062
|
+
`${metodos_1.MetodoRaio[index]}: raio(200deg);`,
|
|
1063
|
+
"}"
|
|
1064
|
+
]);
|
|
1065
|
+
// O Lexador não deve encontrar erros
|
|
1066
|
+
expect(resultadoLexador.erros).toHaveLength(0);
|
|
1067
|
+
// O valor recebido deve ser mapeado como METODO
|
|
1068
|
+
expect(resultadoLexador.simbolos).toEqual(expect.arrayContaining([
|
|
1069
|
+
expect.objectContaining({ tipo: foles_1.default.METODO }),
|
|
1070
|
+
]));
|
|
1071
|
+
// O Lexador deve montar um objeto de comprimento 11
|
|
1072
|
+
expect(resultadoLexador.simbolos).toHaveLength(11);
|
|
1073
|
+
expect(resultadoLexador.simbolos).toEqual(expect.arrayContaining([
|
|
1074
|
+
expect.objectContaining({ tipo: foles_1.default.NUMERO }),
|
|
1075
|
+
expect.objectContaining({ tipo: foles_1.default.QUANTIFICADOR }),
|
|
1076
|
+
]));
|
|
1077
|
+
// Avaliador Sintático
|
|
1078
|
+
const resultadoAvaliadorSintatico = avaliador.analisar(resultadoLexador.simbolos);
|
|
1079
|
+
// O Avaliador deve montar um objeto com os devidos nomes FolEs e CSS
|
|
1080
|
+
expect(resultadoAvaliadorSintatico[0].modificadores[0].propriedadeCss).toStrictEqual(metodos_1.TraducaoValoresMetodos[metodos_1.MetodoRaio[index]]);
|
|
1081
|
+
// Tradutor
|
|
1082
|
+
const resultadoTradutor = tradutor.serializar(resultadoAvaliadorSintatico);
|
|
1083
|
+
// O Tradutor deve serializar de acordo e traduzir raio para ray
|
|
1084
|
+
expect(resultadoTradutor).toContain(metodos_1.TraducaoValoresMetodos[metodos_1.MetodoRaio[index]]);
|
|
1085
|
+
expect(resultadoTradutor).toContain(`ray(200deg);`);
|
|
1086
|
+
}
|
|
1087
|
+
});
|
|
1088
|
+
it('Atribuindo Método "rotacionar()"', () => {
|
|
1089
|
+
for (let index = 0; index < metodos_1.MetodosRotacionar.length; index += 1) {
|
|
1090
|
+
const valoresAceitos = ['45deg', '3.142rad', '0.1', '0', '1', '1.75'];
|
|
1091
|
+
for (let valIndex = 0; valIndex < valoresAceitos.length; valIndex += 1) {
|
|
1092
|
+
// Lexador
|
|
1093
|
+
const resultadoLexador = lexador.mapear([
|
|
1094
|
+
"lmht {",
|
|
1095
|
+
`${metodos_1.MetodosRotacionar[index]}: rotacionar(${valoresAceitos[valIndex]});`,
|
|
1096
|
+
"}"
|
|
1097
|
+
]);
|
|
1098
|
+
// O Lexador não deve encontrar erros
|
|
1099
|
+
expect(resultadoLexador.erros).toHaveLength(0);
|
|
1100
|
+
// O valor recebido deve ser mapeado como METODO
|
|
1101
|
+
expect(resultadoLexador.simbolos).toEqual(expect.arrayContaining([
|
|
1102
|
+
expect.objectContaining({ tipo: foles_1.default.METODO }),
|
|
1103
|
+
]));
|
|
1104
|
+
// O Lexador deve montar um objeto de comprimento 11 caso haja quantificador e 10 caso não haja
|
|
1105
|
+
if (valIndex === 0 || valIndex === 1) {
|
|
1106
|
+
expect(resultadoLexador.simbolos).toHaveLength(11);
|
|
1107
|
+
expect(resultadoLexador.simbolos).toEqual(expect.arrayContaining([
|
|
1108
|
+
expect.objectContaining({ tipo: foles_1.default.NUMERO }),
|
|
1109
|
+
expect.objectContaining({ tipo: foles_1.default.QUANTIFICADOR }),
|
|
1110
|
+
]));
|
|
1111
|
+
}
|
|
1112
|
+
else {
|
|
1113
|
+
expect(resultadoLexador.simbolos).toHaveLength(10);
|
|
1114
|
+
expect(resultadoLexador.simbolos).toEqual(expect.arrayContaining([
|
|
1115
|
+
expect.objectContaining({ tipo: foles_1.default.NUMERO }),
|
|
1116
|
+
]));
|
|
1117
|
+
}
|
|
1118
|
+
// Avaliador Sintático
|
|
1119
|
+
const resultadoAvaliadorSintatico = avaliador.analisar(resultadoLexador.simbolos);
|
|
1120
|
+
// O Avaliador deve montar um objeto com os devidos nomes FolEs e CSS
|
|
1121
|
+
expect(resultadoAvaliadorSintatico[0].modificadores[0].propriedadeCss).toStrictEqual(metodos_1.TraducaoValoresMetodos[metodos_1.MetodosRotacionar[index]]);
|
|
1122
|
+
// Tradutor
|
|
1123
|
+
const resultadoTradutor = tradutor.serializar(resultadoAvaliadorSintatico);
|
|
1124
|
+
// O Tradutor deve serializar de acordo e traduzir rotacionar para rotate
|
|
1125
|
+
expect(resultadoTradutor).toContain(metodos_1.TraducaoValoresMetodos[metodos_1.MetodosRotacionar[index]]);
|
|
1126
|
+
expect(resultadoTradutor).toContain(`rotate(${valoresAceitos[valIndex]});`);
|
|
1127
|
+
}
|
|
1128
|
+
}
|
|
1129
|
+
});
|
|
1130
|
+
it('Atribuindo Método "rotacionar-eixo-z()"', () => {
|
|
1131
|
+
for (let index = 0; index < metodos_1.MetodosRotacionar.length; index += 1) {
|
|
1132
|
+
const valoresAceitos = ['45deg', '3.142rad', '0.1', '0', '1', '1.75'];
|
|
1133
|
+
for (let valIndex = 0; valIndex < valoresAceitos.length; valIndex += 1) {
|
|
1134
|
+
// Lexador
|
|
1135
|
+
const resultadoLexador = lexador.mapear([
|
|
1136
|
+
"lmht {",
|
|
1137
|
+
`${metodos_1.MetodosRotacionar[index]}: rotacionar-eixo-z(${valoresAceitos[valIndex]});`,
|
|
1138
|
+
"}"
|
|
1139
|
+
]);
|
|
1140
|
+
// O Lexador não deve encontrar erros
|
|
1141
|
+
expect(resultadoLexador.erros).toHaveLength(0);
|
|
1142
|
+
// O valor recebido deve ser mapeado como METODO
|
|
1143
|
+
expect(resultadoLexador.simbolos).toEqual(expect.arrayContaining([
|
|
1144
|
+
expect.objectContaining({ tipo: foles_1.default.METODO }),
|
|
1145
|
+
]));
|
|
1146
|
+
// O Lexador deve montar um objeto de comprimento 11 caso haja quantificador e 10 caso não haja
|
|
1147
|
+
if (valIndex === 0 || valIndex === 1) {
|
|
1148
|
+
expect(resultadoLexador.simbolos).toHaveLength(11);
|
|
1149
|
+
expect(resultadoLexador.simbolos).toEqual(expect.arrayContaining([
|
|
1150
|
+
expect.objectContaining({ tipo: foles_1.default.NUMERO }),
|
|
1151
|
+
expect.objectContaining({ tipo: foles_1.default.QUANTIFICADOR }),
|
|
1152
|
+
]));
|
|
1153
|
+
}
|
|
1154
|
+
else {
|
|
1155
|
+
expect(resultadoLexador.simbolos).toHaveLength(10);
|
|
1156
|
+
expect(resultadoLexador.simbolos).toEqual(expect.arrayContaining([
|
|
1157
|
+
expect.objectContaining({ tipo: foles_1.default.NUMERO }),
|
|
1158
|
+
]));
|
|
1159
|
+
}
|
|
1160
|
+
// Avaliador Sintático
|
|
1161
|
+
const resultadoAvaliadorSintatico = avaliador.analisar(resultadoLexador.simbolos);
|
|
1162
|
+
// O Avaliador deve montar um objeto com os devidos nomes FolEs e CSS
|
|
1163
|
+
expect(resultadoAvaliadorSintatico[0].modificadores[0].propriedadeCss).toStrictEqual(metodos_1.TraducaoValoresMetodos[metodos_1.MetodosRotacionar[index]]);
|
|
1164
|
+
// Tradutor
|
|
1165
|
+
const resultadoTradutor = tradutor.serializar(resultadoAvaliadorSintatico);
|
|
1166
|
+
// O Tradutor deve serializar de acordo e traduzir rotacionar-eixo-z para rotateZ
|
|
1167
|
+
expect(resultadoTradutor).toContain(metodos_1.TraducaoValoresMetodos[metodos_1.MetodosRotacionar[index]]);
|
|
1168
|
+
expect(resultadoTradutor).toContain(`rotateZ(${valoresAceitos[valIndex]});`);
|
|
1169
|
+
}
|
|
1170
|
+
}
|
|
1171
|
+
});
|
|
1172
|
+
it('Atribuindo Método "rotacionar-horizontal()"', () => {
|
|
1173
|
+
for (let index = 0; index < metodos_1.MetodosRotacionar.length; index += 1) {
|
|
1174
|
+
const valoresAceitos = ['45deg', '3.142rad', '0.1', '0', '1', '1.75'];
|
|
1175
|
+
for (let valIndex = 0; valIndex < valoresAceitos.length; valIndex += 1) {
|
|
1176
|
+
// Lexador
|
|
1177
|
+
const resultadoLexador = lexador.mapear([
|
|
1178
|
+
"lmht {",
|
|
1179
|
+
`${metodos_1.MetodosRotacionar[index]}: rotacionar-horizontal(${valoresAceitos[valIndex]});`,
|
|
1180
|
+
"}"
|
|
1181
|
+
]);
|
|
1182
|
+
// O Lexador não deve encontrar erros
|
|
1183
|
+
expect(resultadoLexador.erros).toHaveLength(0);
|
|
1184
|
+
// O valor recebido deve ser mapeado como METODO
|
|
1185
|
+
expect(resultadoLexador.simbolos).toEqual(expect.arrayContaining([
|
|
1186
|
+
expect.objectContaining({ tipo: foles_1.default.METODO }),
|
|
1187
|
+
]));
|
|
1188
|
+
// O Lexador deve montar um objeto de comprimento 11 caso haja quantificador e 10 caso não haja
|
|
1189
|
+
if (valIndex === 0 || valIndex === 1) {
|
|
1190
|
+
expect(resultadoLexador.simbolos).toHaveLength(11);
|
|
1191
|
+
expect(resultadoLexador.simbolos).toEqual(expect.arrayContaining([
|
|
1192
|
+
expect.objectContaining({ tipo: foles_1.default.NUMERO }),
|
|
1193
|
+
expect.objectContaining({ tipo: foles_1.default.QUANTIFICADOR }),
|
|
1194
|
+
]));
|
|
1195
|
+
}
|
|
1196
|
+
else {
|
|
1197
|
+
expect(resultadoLexador.simbolos).toHaveLength(10);
|
|
1198
|
+
expect(resultadoLexador.simbolos).toEqual(expect.arrayContaining([
|
|
1199
|
+
expect.objectContaining({ tipo: foles_1.default.NUMERO }),
|
|
1200
|
+
]));
|
|
1201
|
+
}
|
|
1202
|
+
// Avaliador Sintático
|
|
1203
|
+
const resultadoAvaliadorSintatico = avaliador.analisar(resultadoLexador.simbolos);
|
|
1204
|
+
// O Avaliador deve montar um objeto com os devidos nomes FolEs e CSS
|
|
1205
|
+
expect(resultadoAvaliadorSintatico[0].modificadores[0].propriedadeCss).toStrictEqual(metodos_1.TraducaoValoresMetodos[metodos_1.MetodosRotacionar[index]]);
|
|
1206
|
+
// Tradutor
|
|
1207
|
+
const resultadoTradutor = tradutor.serializar(resultadoAvaliadorSintatico);
|
|
1208
|
+
// O Tradutor deve serializar de acordo e traduzir rotacionar-horizontal para rotateX
|
|
1209
|
+
expect(resultadoTradutor).toContain(metodos_1.TraducaoValoresMetodos[metodos_1.MetodosRotacionar[index]]);
|
|
1210
|
+
expect(resultadoTradutor).toContain(`rotateX(${valoresAceitos[valIndex]});`);
|
|
1211
|
+
}
|
|
1212
|
+
}
|
|
1213
|
+
});
|
|
1214
|
+
it('Atribuindo Método "rotacionar-matiz()"', () => {
|
|
1215
|
+
for (let index = 0; index < metodos_1.MetodoRotacionarMatiz.length; index += 1) {
|
|
1216
|
+
const valoresAceitos = ['100px', '100%', '0.1', '0', '1', '1.75'];
|
|
1217
|
+
for (let valIndex = 0; valIndex < valoresAceitos.length; valIndex += 1) {
|
|
1218
|
+
// Lexador
|
|
1219
|
+
const resultadoLexador = lexador.mapear([
|
|
1220
|
+
"lmht {",
|
|
1221
|
+
`${metodos_1.MetodoRotacionarMatiz[index]}: rotacionar-matiz(${valoresAceitos[valIndex]});`,
|
|
1222
|
+
"}"
|
|
1223
|
+
]);
|
|
1224
|
+
// O Lexador não deve encontrar erros
|
|
1225
|
+
expect(resultadoLexador.erros).toHaveLength(0);
|
|
1226
|
+
// O valor recebido deve ser mapeado como METODO
|
|
1227
|
+
expect(resultadoLexador.simbolos).toEqual(expect.arrayContaining([
|
|
1228
|
+
expect.objectContaining({ tipo: foles_1.default.METODO }),
|
|
1229
|
+
]));
|
|
1230
|
+
// O Lexador deve montar um objeto de comprimento 11 caso haja quantificador e 10 caso não haja
|
|
1231
|
+
if (valIndex === 0 || valIndex === 1) {
|
|
1232
|
+
expect(resultadoLexador.simbolos).toHaveLength(11);
|
|
1233
|
+
expect(resultadoLexador.simbolos).toEqual(expect.arrayContaining([
|
|
1234
|
+
expect.objectContaining({ tipo: foles_1.default.NUMERO }),
|
|
1235
|
+
expect.objectContaining({ tipo: foles_1.default.QUANTIFICADOR }),
|
|
1236
|
+
]));
|
|
1237
|
+
}
|
|
1238
|
+
else {
|
|
1239
|
+
expect(resultadoLexador.simbolos).toHaveLength(10);
|
|
1240
|
+
expect(resultadoLexador.simbolos).toEqual(expect.arrayContaining([
|
|
1241
|
+
expect.objectContaining({ tipo: foles_1.default.NUMERO }),
|
|
1242
|
+
]));
|
|
1243
|
+
}
|
|
1244
|
+
// Avaliador Sintático
|
|
1245
|
+
const resultadoAvaliadorSintatico = avaliador.analisar(resultadoLexador.simbolos);
|
|
1246
|
+
// O Avaliador deve montar um objeto com os devidos nomes FolEs e CSS
|
|
1247
|
+
expect(resultadoAvaliadorSintatico[0].modificadores[0].propriedadeCss).toStrictEqual(metodos_1.TraducaoValoresMetodos[metodos_1.MetodoRotacionarMatiz[index]]);
|
|
1248
|
+
// Tradutor
|
|
1249
|
+
const resultadoTradutor = tradutor.serializar(resultadoAvaliadorSintatico);
|
|
1250
|
+
// O Tradutor deve serializar de acordo e traduzir rotacionar-matiz para hue-rotate
|
|
1251
|
+
expect(resultadoTradutor).toContain(metodos_1.TraducaoValoresMetodos[metodos_1.MetodoRotacionarMatiz[index]]);
|
|
1252
|
+
expect(resultadoTradutor).toContain(`hue-rotate(${valoresAceitos[valIndex]});`);
|
|
1253
|
+
}
|
|
1254
|
+
}
|
|
1255
|
+
});
|
|
1256
|
+
it('Atribuindo Método "rotacionar-vertical()"', () => {
|
|
1257
|
+
for (let index = 0; index < metodos_1.MetodosRotacionar.length; index += 1) {
|
|
1258
|
+
const valoresAceitos = ['45deg', '3.142rad', '0.1', '0', '1', '1.75'];
|
|
1259
|
+
for (let valIndex = 0; valIndex < valoresAceitos.length; valIndex += 1) {
|
|
1260
|
+
// Lexador
|
|
1261
|
+
const resultadoLexador = lexador.mapear([
|
|
1262
|
+
"lmht {",
|
|
1263
|
+
`${metodos_1.MetodosRotacionar[index]}: rotacionar-vertical(${valoresAceitos[valIndex]});`,
|
|
1264
|
+
"}"
|
|
1265
|
+
]);
|
|
1266
|
+
// O Lexador não deve encontrar erros
|
|
1267
|
+
expect(resultadoLexador.erros).toHaveLength(0);
|
|
1268
|
+
// O valor recebido deve ser mapeado como METODO
|
|
1269
|
+
expect(resultadoLexador.simbolos).toEqual(expect.arrayContaining([
|
|
1270
|
+
expect.objectContaining({ tipo: foles_1.default.METODO }),
|
|
1271
|
+
]));
|
|
1272
|
+
// O Lexador deve montar um objeto de comprimento 11 caso haja quantificador e 10 caso não haja
|
|
1273
|
+
if (valIndex === 0 || valIndex === 1) {
|
|
1274
|
+
expect(resultadoLexador.simbolos).toHaveLength(11);
|
|
1275
|
+
expect(resultadoLexador.simbolos).toEqual(expect.arrayContaining([
|
|
1276
|
+
expect.objectContaining({ tipo: foles_1.default.NUMERO }),
|
|
1277
|
+
expect.objectContaining({ tipo: foles_1.default.QUANTIFICADOR }),
|
|
1278
|
+
]));
|
|
1279
|
+
}
|
|
1280
|
+
else {
|
|
1281
|
+
expect(resultadoLexador.simbolos).toHaveLength(10);
|
|
1282
|
+
expect(resultadoLexador.simbolos).toEqual(expect.arrayContaining([
|
|
1283
|
+
expect.objectContaining({ tipo: foles_1.default.NUMERO }),
|
|
1284
|
+
]));
|
|
1285
|
+
}
|
|
1286
|
+
// Avaliador Sintático
|
|
1287
|
+
const resultadoAvaliadorSintatico = avaliador.analisar(resultadoLexador.simbolos);
|
|
1288
|
+
// O Avaliador deve montar um objeto com os devidos nomes FolEs e CSS
|
|
1289
|
+
expect(resultadoAvaliadorSintatico[0].modificadores[0].propriedadeCss).toStrictEqual(metodos_1.TraducaoValoresMetodos[metodos_1.MetodosRotacionar[index]]);
|
|
1290
|
+
// Tradutor
|
|
1291
|
+
const resultadoTradutor = tradutor.serializar(resultadoAvaliadorSintatico);
|
|
1292
|
+
// O Tradutor deve serializar de acordo e traduzir rotacionar-vertical para rotateY
|
|
1293
|
+
expect(resultadoTradutor).toContain(metodos_1.TraducaoValoresMetodos[metodos_1.MetodosRotacionar[index]]);
|
|
1294
|
+
expect(resultadoTradutor).toContain(`rotateY(${valoresAceitos[valIndex]});`);
|
|
1295
|
+
}
|
|
1296
|
+
}
|
|
1297
|
+
});
|
|
1298
|
+
it('Atribuindo Método "saturar()"', () => {
|
|
1299
|
+
for (let index = 0; index < metodos_1.MetodoSaturar.length; index += 1) {
|
|
1300
|
+
const valoresAceitos = ['100px', '100%', '0.1', '0', '1', '1.75'];
|
|
1301
|
+
for (let valIndex = 0; valIndex < valoresAceitos.length; valIndex += 1) {
|
|
1302
|
+
// Lexador
|
|
1303
|
+
const resultadoLexador = lexador.mapear([
|
|
1304
|
+
"lmht {",
|
|
1305
|
+
`${metodos_1.MetodoSaturar[index]}: saturar(${valoresAceitos[valIndex]});`,
|
|
1306
|
+
"}"
|
|
1307
|
+
]);
|
|
1308
|
+
// O Lexador não deve encontrar erros
|
|
1309
|
+
expect(resultadoLexador.erros).toHaveLength(0);
|
|
1310
|
+
// O valor recebido deve ser mapeado como METODO
|
|
1311
|
+
expect(resultadoLexador.simbolos).toEqual(expect.arrayContaining([
|
|
1312
|
+
expect.objectContaining({ tipo: foles_1.default.METODO }),
|
|
1313
|
+
]));
|
|
1314
|
+
// O Lexador deve montar um objeto de comprimento 11 caso haja quantificador e 10 caso não haja
|
|
1315
|
+
if (valIndex === 0 || valIndex === 1) {
|
|
1316
|
+
expect(resultadoLexador.simbolos).toHaveLength(11);
|
|
1317
|
+
expect(resultadoLexador.simbolos).toEqual(expect.arrayContaining([
|
|
1318
|
+
expect.objectContaining({ tipo: foles_1.default.NUMERO }),
|
|
1319
|
+
expect.objectContaining({ tipo: foles_1.default.QUANTIFICADOR }),
|
|
1320
|
+
]));
|
|
1321
|
+
}
|
|
1322
|
+
else {
|
|
1323
|
+
expect(resultadoLexador.simbolos).toHaveLength(10);
|
|
1324
|
+
expect(resultadoLexador.simbolos).toEqual(expect.arrayContaining([
|
|
1325
|
+
expect.objectContaining({ tipo: foles_1.default.NUMERO }),
|
|
1326
|
+
]));
|
|
1327
|
+
}
|
|
1328
|
+
// Avaliador Sintático
|
|
1329
|
+
const resultadoAvaliadorSintatico = avaliador.analisar(resultadoLexador.simbolos);
|
|
1330
|
+
// O Avaliador deve montar um objeto com os devidos nomes FolEs e CSS
|
|
1331
|
+
expect(resultadoAvaliadorSintatico[0].modificadores[0].propriedadeCss).toStrictEqual(metodos_1.TraducaoValoresMetodos[metodos_1.MetodoSaturar[index]]);
|
|
1332
|
+
// Tradutor
|
|
1333
|
+
const resultadoTradutor = tradutor.serializar(resultadoAvaliadorSintatico);
|
|
1334
|
+
// O Tradutor deve serializar de acordo e traduzir saturar para saturate
|
|
1335
|
+
expect(resultadoTradutor).toContain(metodos_1.TraducaoValoresMetodos[metodos_1.MetodoSaturar[index]]);
|
|
1336
|
+
expect(resultadoTradutor).toContain(`saturate(${valoresAceitos[valIndex]});`);
|
|
1337
|
+
}
|
|
1338
|
+
}
|
|
1339
|
+
});
|
|
1340
|
+
it('Atribuindo Método "sepia()"', () => {
|
|
1341
|
+
for (let index = 0; index < metodos_1.MetodoSepia.length; index += 1) {
|
|
1342
|
+
const valoresAceitos = ['100px', '100%', '0.1', '0', '1', '1.75'];
|
|
1343
|
+
for (let valIndex = 0; valIndex < valoresAceitos.length; valIndex += 1) {
|
|
1344
|
+
// Lexador
|
|
1345
|
+
const resultadoLexador = lexador.mapear([
|
|
1346
|
+
"lmht {",
|
|
1347
|
+
`${metodos_1.MetodoSepia[index]}: sepia(${valoresAceitos[valIndex]});`,
|
|
1348
|
+
"}"
|
|
1349
|
+
]);
|
|
1350
|
+
// O Lexador não deve encontrar erros
|
|
1351
|
+
expect(resultadoLexador.erros).toHaveLength(0);
|
|
1352
|
+
// O valor recebido deve ser mapeado como METODO
|
|
1353
|
+
expect(resultadoLexador.simbolos).toEqual(expect.arrayContaining([
|
|
1354
|
+
expect.objectContaining({ tipo: foles_1.default.METODO }),
|
|
1355
|
+
]));
|
|
1356
|
+
// O Lexador deve montar um objeto de comprimento 11 caso haja quantificador e 10 caso não haja
|
|
1357
|
+
if (valIndex === 0 || valIndex === 1) {
|
|
1358
|
+
expect(resultadoLexador.simbolos).toHaveLength(11);
|
|
1359
|
+
expect(resultadoLexador.simbolos).toEqual(expect.arrayContaining([
|
|
1360
|
+
expect.objectContaining({ tipo: foles_1.default.NUMERO }),
|
|
1361
|
+
expect.objectContaining({ tipo: foles_1.default.QUANTIFICADOR }),
|
|
1362
|
+
]));
|
|
1363
|
+
}
|
|
1364
|
+
else {
|
|
1365
|
+
expect(resultadoLexador.simbolos).toHaveLength(10);
|
|
1366
|
+
expect(resultadoLexador.simbolos).toEqual(expect.arrayContaining([
|
|
1367
|
+
expect.objectContaining({ tipo: foles_1.default.NUMERO }),
|
|
1368
|
+
]));
|
|
1369
|
+
}
|
|
1370
|
+
// Avaliador Sintático
|
|
1371
|
+
const resultadoAvaliadorSintatico = avaliador.analisar(resultadoLexador.simbolos);
|
|
1372
|
+
// O Avaliador deve montar um objeto com os devidos nomes FolEs e CSS
|
|
1373
|
+
expect(resultadoAvaliadorSintatico[0].modificadores[0].propriedadeCss).toStrictEqual(metodos_1.TraducaoValoresMetodos[metodos_1.MetodoSepia[index]]);
|
|
1374
|
+
// Tradutor
|
|
1375
|
+
const resultadoTradutor = tradutor.serializar(resultadoAvaliadorSintatico);
|
|
1376
|
+
// O Tradutor deve serializar de acordo e traduzir sépia para sepia
|
|
1377
|
+
expect(resultadoTradutor).toContain(metodos_1.TraducaoValoresMetodos[metodos_1.MetodoSepia[index]]);
|
|
1378
|
+
expect(resultadoTradutor).toContain(`sepia(${valoresAceitos[valIndex]});`);
|
|
1379
|
+
}
|
|
1380
|
+
}
|
|
1381
|
+
});
|
|
1382
|
+
it('Atribuindo Método "translação()"', () => {
|
|
1383
|
+
for (let index = 0; index < metodos_1.MetodosTranslacao.length; index += 1) {
|
|
1384
|
+
const valoresAceitos = ['18deg', '3.142rad', '0', '1'];
|
|
1385
|
+
for (let valIndex = 0; valIndex < valoresAceitos.length; valIndex += 1) {
|
|
1386
|
+
// Lexador
|
|
1387
|
+
const resultadoLexador = lexador.mapear([
|
|
1388
|
+
"lmht {",
|
|
1389
|
+
`${metodos_1.MetodosTranslacao[index]}: translação(${valoresAceitos[valIndex]});`,
|
|
1390
|
+
"}"
|
|
1391
|
+
]);
|
|
1392
|
+
// O Lexador não deve encontrar erros
|
|
1393
|
+
expect(resultadoLexador.erros).toHaveLength(0);
|
|
1394
|
+
// O valor recebido deve ser mapeado como METODO
|
|
1395
|
+
expect(resultadoLexador.simbolos).toEqual(expect.arrayContaining([
|
|
1396
|
+
expect.objectContaining({ tipo: foles_1.default.METODO }),
|
|
1397
|
+
]));
|
|
1398
|
+
// O Lexador deve montar um objeto de comprimento 11 caso haja quantificador e 10 caso não haja
|
|
1399
|
+
if (valIndex === 0 || valIndex === 1) {
|
|
1400
|
+
expect(resultadoLexador.simbolos).toHaveLength(11);
|
|
1401
|
+
expect(resultadoLexador.simbolos).toEqual(expect.arrayContaining([
|
|
1402
|
+
expect.objectContaining({ tipo: foles_1.default.NUMERO }),
|
|
1403
|
+
expect.objectContaining({ tipo: foles_1.default.QUANTIFICADOR }),
|
|
1404
|
+
]));
|
|
1405
|
+
}
|
|
1406
|
+
else {
|
|
1407
|
+
expect(resultadoLexador.simbolos).toHaveLength(10);
|
|
1408
|
+
expect(resultadoLexador.simbolos).toEqual(expect.arrayContaining([
|
|
1409
|
+
expect.objectContaining({ tipo: foles_1.default.NUMERO }),
|
|
1410
|
+
]));
|
|
1411
|
+
}
|
|
1412
|
+
// Avaliador Sintático
|
|
1413
|
+
const resultadoAvaliadorSintatico = avaliador.analisar(resultadoLexador.simbolos);
|
|
1414
|
+
// O Avaliador deve montar um objeto com os devidos nomes FolEs e CSS
|
|
1415
|
+
expect(resultadoAvaliadorSintatico[0].modificadores[0].propriedadeCss).toStrictEqual(metodos_1.TraducaoValoresMetodos[metodos_1.MetodosTranslacao[index]]);
|
|
1416
|
+
// Tradutor
|
|
1417
|
+
const resultadoTradutor = tradutor.serializar(resultadoAvaliadorSintatico);
|
|
1418
|
+
// O Tradutor deve serializar de acordo e traduzir translação para translate
|
|
1419
|
+
expect(resultadoTradutor).toContain(metodos_1.TraducaoValoresMetodos[metodos_1.MetodosTranslacao[index]]);
|
|
1420
|
+
expect(resultadoTradutor).toContain(`translate(${valoresAceitos[valIndex]});`);
|
|
1421
|
+
}
|
|
199
1422
|
}
|
|
200
1423
|
});
|
|
201
|
-
it('Atribuindo Método "
|
|
202
|
-
for (let index = 0; index < metodos_1.
|
|
1424
|
+
it('Atribuindo Método "translacao() com múltiplos valores"', () => {
|
|
1425
|
+
for (let index = 0; index < metodos_1.MetodosTranslacao.length; index += 1) {
|
|
203
1426
|
// Lexador
|
|
204
1427
|
const resultadoLexador = lexador.mapear([
|
|
205
1428
|
"lmht {",
|
|
206
|
-
`${metodos_1.
|
|
1429
|
+
`${metodos_1.MetodosTranslacao[index]}: translacao(3ch, 3mm);`,
|
|
207
1430
|
"}"
|
|
208
1431
|
]);
|
|
209
|
-
// O Lexador deve
|
|
210
|
-
expect(resultadoLexador.simbolos).toHaveLength(14);
|
|
1432
|
+
// O Lexador não deve encontrar erros
|
|
211
1433
|
expect(resultadoLexador.erros).toHaveLength(0);
|
|
212
1434
|
// O valor recebido deve ser mapeado como METODO
|
|
213
1435
|
expect(resultadoLexador.simbolos).toEqual(expect.arrayContaining([
|
|
214
1436
|
expect.objectContaining({ tipo: foles_1.default.METODO }),
|
|
215
1437
|
]));
|
|
216
|
-
// O Lexador
|
|
1438
|
+
// O Lexador deve montar um objeto de comprimento 14
|
|
1439
|
+
expect(resultadoLexador.simbolos).toHaveLength(14);
|
|
217
1440
|
expect(resultadoLexador.simbolos).toEqual(expect.arrayContaining([
|
|
218
1441
|
expect.objectContaining({ tipo: foles_1.default.NUMERO }),
|
|
219
1442
|
expect.objectContaining({ tipo: foles_1.default.QUANTIFICADOR }),
|
|
@@ -221,29 +1444,30 @@ describe('Testando Seletores que recebem MÉTODOS como valor', () => {
|
|
|
221
1444
|
// Avaliador Sintático
|
|
222
1445
|
const resultadoAvaliadorSintatico = avaliador.analisar(resultadoLexador.simbolos);
|
|
223
1446
|
// 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.
|
|
1447
|
+
expect(resultadoAvaliadorSintatico[0].modificadores[0].propriedadeCss).toStrictEqual(metodos_1.TraducaoValoresMetodos[metodos_1.MetodosTranslacao[index]]);
|
|
225
1448
|
// Tradutor
|
|
226
1449
|
const resultadoTradutor = tradutor.serializar(resultadoAvaliadorSintatico);
|
|
227
|
-
|
|
228
|
-
expect(resultadoTradutor).toContain(
|
|
1450
|
+
// O Tradutor deve serializar de acordo e traduzir translacao para translate
|
|
1451
|
+
expect(resultadoTradutor).toContain(metodos_1.TraducaoValoresMetodos[metodos_1.MetodosTranslacao[index]]);
|
|
1452
|
+
expect(resultadoTradutor).toContain(`translate(3ch, 3mm);`);
|
|
229
1453
|
}
|
|
230
1454
|
});
|
|
231
|
-
it('Atribuindo Método "
|
|
232
|
-
for (let index = 0; index < metodos_1.
|
|
1455
|
+
it('Atribuindo Método "translação-3d()"', () => {
|
|
1456
|
+
for (let index = 0; index < metodos_1.MetodosTranslacao.length; index += 1) {
|
|
233
1457
|
// Lexador
|
|
234
1458
|
const resultadoLexador = lexador.mapear([
|
|
235
1459
|
"lmht {",
|
|
236
|
-
`${metodos_1.
|
|
1460
|
+
`${metodos_1.MetodosTranslacao[index]}: translacao-3d(5ch, 0.4in, 5em);`,
|
|
237
1461
|
"}"
|
|
238
1462
|
]);
|
|
239
|
-
// O Lexador deve
|
|
240
|
-
expect(resultadoLexador.simbolos).toHaveLength(15);
|
|
1463
|
+
// O Lexador não deve encontrar erros
|
|
241
1464
|
expect(resultadoLexador.erros).toHaveLength(0);
|
|
242
1465
|
// O valor recebido deve ser mapeado como METODO
|
|
243
1466
|
expect(resultadoLexador.simbolos).toEqual(expect.arrayContaining([
|
|
244
1467
|
expect.objectContaining({ tipo: foles_1.default.METODO }),
|
|
245
1468
|
]));
|
|
246
|
-
// O Lexador
|
|
1469
|
+
// O Lexador deve montar um objeto de comprimento 17
|
|
1470
|
+
expect(resultadoLexador.simbolos).toHaveLength(17);
|
|
247
1471
|
expect(resultadoLexador.simbolos).toEqual(expect.arrayContaining([
|
|
248
1472
|
expect.objectContaining({ tipo: foles_1.default.NUMERO }),
|
|
249
1473
|
expect.objectContaining({ tipo: foles_1.default.QUANTIFICADOR }),
|
|
@@ -251,70 +1475,191 @@ describe('Testando Seletores que recebem MÉTODOS como valor', () => {
|
|
|
251
1475
|
// Avaliador Sintático
|
|
252
1476
|
const resultadoAvaliadorSintatico = avaliador.analisar(resultadoLexador.simbolos);
|
|
253
1477
|
// 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.
|
|
1478
|
+
expect(resultadoAvaliadorSintatico[0].modificadores[0].propriedadeCss).toStrictEqual(metodos_1.TraducaoValoresMetodos[metodos_1.MetodosTranslacao[index]]);
|
|
255
1479
|
// Tradutor
|
|
256
1480
|
const resultadoTradutor = tradutor.serializar(resultadoAvaliadorSintatico);
|
|
257
|
-
|
|
258
|
-
expect(resultadoTradutor).toContain(
|
|
1481
|
+
// O Tradutor deve serializar de acordo e traduzir translação-3d para translate3d
|
|
1482
|
+
expect(resultadoTradutor).toContain(metodos_1.TraducaoValoresMetodos[metodos_1.MetodosTranslacao[index]]);
|
|
1483
|
+
expect(resultadoTradutor).toContain(`translate3d(5ch, 0.4in, 5em);`);
|
|
259
1484
|
}
|
|
260
1485
|
});
|
|
261
|
-
it('Atribuindo Método "
|
|
262
|
-
for (let index = 0; index < metodos_1.
|
|
263
|
-
const
|
|
264
|
-
|
|
1486
|
+
it('Atribuindo Método "translação-3d() cobrindo todos os casos"', () => {
|
|
1487
|
+
for (let index = 0; index < metodos_1.MetodosTranslacao.length; index += 1) {
|
|
1488
|
+
const valoresAceitos = [
|
|
1489
|
+
'0',
|
|
1490
|
+
'0, 62px, 135px',
|
|
1491
|
+
'2.7rem, 0, 1rem',
|
|
1492
|
+
'5ch, 0.4in, 0',
|
|
1493
|
+
'0, 0, 135px',
|
|
1494
|
+
'0, 2.7rem, 0',
|
|
1495
|
+
'5ch, 0, 0',
|
|
1496
|
+
'42px, 62px, 135px',
|
|
1497
|
+
'0, 0, 0',
|
|
1498
|
+
];
|
|
1499
|
+
for (let valIndex = 0; valIndex < valoresAceitos.length; valIndex += 1) {
|
|
265
1500
|
// Lexador
|
|
266
1501
|
const resultadoLexador = lexador.mapear([
|
|
267
1502
|
"lmht {",
|
|
268
|
-
`${metodos_1.
|
|
1503
|
+
`${metodos_1.MetodosTranslacao[index]}: translação-3d(${valoresAceitos[valIndex]});`,
|
|
269
1504
|
"}"
|
|
270
1505
|
]);
|
|
271
|
-
// O Lexador deve
|
|
272
|
-
expect(resultadoLexador.simbolos).toHaveLength(14);
|
|
1506
|
+
// O Lexador não deve encontrar erros
|
|
273
1507
|
expect(resultadoLexador.erros).toHaveLength(0);
|
|
274
1508
|
// O valor recebido deve ser mapeado como METODO
|
|
275
1509
|
expect(resultadoLexador.simbolos).toEqual(expect.arrayContaining([
|
|
276
1510
|
expect.objectContaining({ tipo: foles_1.default.METODO }),
|
|
277
1511
|
]));
|
|
278
|
-
// O Lexador
|
|
1512
|
+
// O Lexador deve montar um objeto de comprimento 11 caso haja quantificador e 10 caso não haja
|
|
1513
|
+
if (valIndex === 0) {
|
|
1514
|
+
expect(resultadoLexador.simbolos).toHaveLength(10);
|
|
1515
|
+
expect(resultadoLexador.simbolos).toEqual(expect.arrayContaining([
|
|
1516
|
+
expect.objectContaining({ tipo: foles_1.default.NUMERO }),
|
|
1517
|
+
]));
|
|
1518
|
+
}
|
|
1519
|
+
else if (valIndex === 1 || valIndex === 2 || valIndex === 3) {
|
|
1520
|
+
expect(resultadoLexador.simbolos).toHaveLength(16);
|
|
1521
|
+
expect(resultadoLexador.simbolos).toEqual(expect.arrayContaining([
|
|
1522
|
+
expect.objectContaining({ tipo: foles_1.default.NUMERO }),
|
|
1523
|
+
expect.objectContaining({ tipo: foles_1.default.QUANTIFICADOR }),
|
|
1524
|
+
]));
|
|
1525
|
+
}
|
|
1526
|
+
else if (valIndex === 4 || valIndex === 5 || valIndex === 6) {
|
|
1527
|
+
expect(resultadoLexador.simbolos).toHaveLength(15);
|
|
1528
|
+
expect(resultadoLexador.simbolos).toEqual(expect.arrayContaining([
|
|
1529
|
+
expect.objectContaining({ tipo: foles_1.default.NUMERO }),
|
|
1530
|
+
expect.objectContaining({ tipo: foles_1.default.QUANTIFICADOR }),
|
|
1531
|
+
]));
|
|
1532
|
+
}
|
|
1533
|
+
else if (valIndex === 7) {
|
|
1534
|
+
expect(resultadoLexador.simbolos).toHaveLength(17);
|
|
1535
|
+
expect(resultadoLexador.simbolos).toEqual(expect.arrayContaining([
|
|
1536
|
+
expect.objectContaining({ tipo: foles_1.default.NUMERO }),
|
|
1537
|
+
expect.objectContaining({ tipo: foles_1.default.QUANTIFICADOR }),
|
|
1538
|
+
]));
|
|
1539
|
+
}
|
|
1540
|
+
else {
|
|
1541
|
+
expect(resultadoLexador.simbolos).toHaveLength(14);
|
|
1542
|
+
expect(resultadoLexador.simbolos).toEqual(expect.arrayContaining([
|
|
1543
|
+
expect.objectContaining({ tipo: foles_1.default.NUMERO }),
|
|
1544
|
+
]));
|
|
1545
|
+
}
|
|
1546
|
+
// Avaliador Sintático
|
|
1547
|
+
const resultadoAvaliadorSintatico = avaliador.analisar(resultadoLexador.simbolos);
|
|
1548
|
+
// O Avaliador deve montar um objeto com os devidos nomes FolEs e CSS
|
|
1549
|
+
expect(resultadoAvaliadorSintatico[0].modificadores[0].propriedadeCss).toStrictEqual(metodos_1.TraducaoValoresMetodos[metodos_1.MetodosTranslacao[index]]);
|
|
1550
|
+
// Tradutor
|
|
1551
|
+
const resultadoTradutor = tradutor.serializar(resultadoAvaliadorSintatico);
|
|
1552
|
+
// O Tradutor deve serializar de acordo e traduzir translação-3d para translate3d
|
|
1553
|
+
expect(resultadoTradutor).toContain(metodos_1.TraducaoValoresMetodos[metodos_1.MetodosTranslacao[index]]);
|
|
1554
|
+
if (valIndex !== 8) {
|
|
1555
|
+
expect(resultadoTradutor).toContain(`translate3d(${valoresAceitos[valIndex]});`);
|
|
1556
|
+
}
|
|
1557
|
+
else {
|
|
1558
|
+
expect(resultadoTradutor).toContain(`translate3d(0);`);
|
|
1559
|
+
}
|
|
1560
|
+
}
|
|
1561
|
+
}
|
|
1562
|
+
});
|
|
1563
|
+
it('Atribuindo Método "translação-eixo-z()"', () => {
|
|
1564
|
+
for (let index = 0; index < metodos_1.MetodosTranslacao.length; index += 1) {
|
|
1565
|
+
const valoresAceitos = ['42px', '3ch', '0'];
|
|
1566
|
+
for (let valIndex = 0; valIndex < valoresAceitos.length; valIndex += 1) {
|
|
1567
|
+
// Lexador
|
|
1568
|
+
const resultadoLexador = lexador.mapear([
|
|
1569
|
+
"lmht {",
|
|
1570
|
+
`${metodos_1.MetodosTranslacao[index]}: translação-eixo-z(${valoresAceitos[valIndex]});`,
|
|
1571
|
+
"}"
|
|
1572
|
+
]);
|
|
1573
|
+
// O Lexador não deve encontrar erros
|
|
1574
|
+
expect(resultadoLexador.erros).toHaveLength(0);
|
|
1575
|
+
// O valor recebido deve ser mapeado como METODO
|
|
279
1576
|
expect(resultadoLexador.simbolos).toEqual(expect.arrayContaining([
|
|
280
|
-
expect.objectContaining({ tipo: foles_1.default.
|
|
1577
|
+
expect.objectContaining({ tipo: foles_1.default.METODO }),
|
|
281
1578
|
]));
|
|
1579
|
+
// O Lexador deve montar um objeto de comprimento 11 caso haja quantificador e 10 caso não haja
|
|
1580
|
+
if (valIndex === 0 || valIndex === 1) {
|
|
1581
|
+
expect(resultadoLexador.simbolos).toHaveLength(11);
|
|
1582
|
+
expect(resultadoLexador.simbolos).toEqual(expect.arrayContaining([
|
|
1583
|
+
expect.objectContaining({ tipo: foles_1.default.NUMERO }),
|
|
1584
|
+
expect.objectContaining({ tipo: foles_1.default.QUANTIFICADOR }),
|
|
1585
|
+
]));
|
|
1586
|
+
}
|
|
1587
|
+
else {
|
|
1588
|
+
expect(resultadoLexador.simbolos).toHaveLength(10);
|
|
1589
|
+
expect(resultadoLexador.simbolos).toEqual(expect.arrayContaining([
|
|
1590
|
+
expect.objectContaining({ tipo: foles_1.default.NUMERO }),
|
|
1591
|
+
]));
|
|
1592
|
+
}
|
|
282
1593
|
// Avaliador Sintático
|
|
283
1594
|
const resultadoAvaliadorSintatico = avaliador.analisar(resultadoLexador.simbolos);
|
|
284
1595
|
// 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.
|
|
1596
|
+
expect(resultadoAvaliadorSintatico[0].modificadores[0].propriedadeCss).toStrictEqual(metodos_1.TraducaoValoresMetodos[metodos_1.MetodosTranslacao[index]]);
|
|
286
1597
|
// Tradutor
|
|
287
1598
|
const resultadoTradutor = tradutor.serializar(resultadoAvaliadorSintatico);
|
|
288
|
-
|
|
289
|
-
|
|
290
|
-
|
|
291
|
-
|
|
292
|
-
|
|
293
|
-
|
|
294
|
-
|
|
295
|
-
|
|
296
|
-
|
|
297
|
-
|
|
298
|
-
|
|
299
|
-
|
|
300
|
-
|
|
301
|
-
|
|
302
|
-
|
|
303
|
-
|
|
1599
|
+
// O Tradutor deve serializar de acordo e traduzir translação-eixo-z para translateZ
|
|
1600
|
+
expect(resultadoTradutor).toContain(metodos_1.TraducaoValoresMetodos[metodos_1.MetodosTranslacao[index]]);
|
|
1601
|
+
expect(resultadoTradutor).toContain(`translateZ(${valoresAceitos[valIndex]});`);
|
|
1602
|
+
}
|
|
1603
|
+
}
|
|
1604
|
+
});
|
|
1605
|
+
it('Atribuindo Método "translacao-eixo-z()"', () => {
|
|
1606
|
+
for (let index = 0; index < metodos_1.MetodosTranslacao.length; index += 1) {
|
|
1607
|
+
const valoresAceitos = ['42px', '3ch', '0'];
|
|
1608
|
+
for (let valIndex = 0; valIndex < valoresAceitos.length; valIndex += 1) {
|
|
1609
|
+
// Lexador
|
|
1610
|
+
const resultadoLexador = lexador.mapear([
|
|
1611
|
+
"lmht {",
|
|
1612
|
+
`${metodos_1.MetodosTranslacao[index]}: translacao-eixo-z(${valoresAceitos[valIndex]});`,
|
|
1613
|
+
"}"
|
|
1614
|
+
]);
|
|
1615
|
+
// O Lexador não deve encontrar erros
|
|
1616
|
+
expect(resultadoLexador.erros).toHaveLength(0);
|
|
1617
|
+
// O valor recebido deve ser mapeado como METODO
|
|
1618
|
+
expect(resultadoLexador.simbolos).toEqual(expect.arrayContaining([
|
|
1619
|
+
expect.objectContaining({ tipo: foles_1.default.METODO }),
|
|
1620
|
+
]));
|
|
1621
|
+
// O Lexador deve montar um objeto de comprimento 11 caso haja quantificador e 10 caso não haja
|
|
1622
|
+
if (valIndex === 0 || valIndex === 1) {
|
|
1623
|
+
expect(resultadoLexador.simbolos).toHaveLength(11);
|
|
1624
|
+
expect(resultadoLexador.simbolos).toEqual(expect.arrayContaining([
|
|
1625
|
+
expect.objectContaining({ tipo: foles_1.default.NUMERO }),
|
|
1626
|
+
expect.objectContaining({ tipo: foles_1.default.QUANTIFICADOR }),
|
|
1627
|
+
]));
|
|
1628
|
+
}
|
|
1629
|
+
else {
|
|
1630
|
+
expect(resultadoLexador.simbolos).toHaveLength(10);
|
|
1631
|
+
expect(resultadoLexador.simbolos).toEqual(expect.arrayContaining([
|
|
1632
|
+
expect.objectContaining({ tipo: foles_1.default.NUMERO }),
|
|
1633
|
+
]));
|
|
304
1634
|
}
|
|
1635
|
+
// Avaliador Sintático
|
|
1636
|
+
const resultadoAvaliadorSintatico = avaliador.analisar(resultadoLexador.simbolos);
|
|
1637
|
+
// O Avaliador deve montar um objeto com os devidos nomes FolEs e CSS
|
|
1638
|
+
expect(resultadoAvaliadorSintatico[0].modificadores[0].propriedadeCss).toStrictEqual(metodos_1.TraducaoValoresMetodos[metodos_1.MetodosTranslacao[index]]);
|
|
1639
|
+
// Tradutor
|
|
1640
|
+
const resultadoTradutor = tradutor.serializar(resultadoAvaliadorSintatico);
|
|
1641
|
+
// O Tradutor deve serializar de acordo e traduzir translacao-eixo-z para translateZ
|
|
1642
|
+
expect(resultadoTradutor).toContain(metodos_1.TraducaoValoresMetodos[metodos_1.MetodosTranslacao[index]]);
|
|
1643
|
+
expect(resultadoTradutor).toContain(`translateZ(${valoresAceitos[valIndex]});`);
|
|
305
1644
|
}
|
|
306
1645
|
}
|
|
307
1646
|
});
|
|
308
|
-
it('Atribuindo Método "
|
|
309
|
-
for (let index = 0; index < metodos_1.
|
|
310
|
-
const valoresAceitos = ['
|
|
1647
|
+
it('Atribuindo Método "translação-horizontal()"', () => {
|
|
1648
|
+
for (let index = 0; index < metodos_1.MetodosTranslacao.length; index += 1) {
|
|
1649
|
+
const valoresAceitos = ['42px', '3ch', '0'];
|
|
311
1650
|
for (let valIndex = 0; valIndex < valoresAceitos.length; valIndex += 1) {
|
|
312
1651
|
// Lexador
|
|
313
1652
|
const resultadoLexador = lexador.mapear([
|
|
314
1653
|
"lmht {",
|
|
315
|
-
`${metodos_1.
|
|
1654
|
+
`${metodos_1.MetodosTranslacao[index]}: translação-horizontal(${valoresAceitos[valIndex]});`,
|
|
316
1655
|
"}"
|
|
317
1656
|
]);
|
|
1657
|
+
// O Lexador não deve encontrar erros
|
|
1658
|
+
expect(resultadoLexador.erros).toHaveLength(0);
|
|
1659
|
+
// O valor recebido deve ser mapeado como METODO
|
|
1660
|
+
expect(resultadoLexador.simbolos).toEqual(expect.arrayContaining([
|
|
1661
|
+
expect.objectContaining({ tipo: foles_1.default.METODO }),
|
|
1662
|
+
]));
|
|
318
1663
|
// O Lexador deve montar um objeto de comprimento 11 caso haja quantificador e 10 caso não haja
|
|
319
1664
|
if (valIndex === 0 || valIndex === 1) {
|
|
320
1665
|
expect(resultadoLexador.simbolos).toHaveLength(11);
|
|
@@ -329,20 +1674,141 @@ describe('Testando Seletores que recebem MÉTODOS como valor', () => {
|
|
|
329
1674
|
expect.objectContaining({ tipo: foles_1.default.NUMERO }),
|
|
330
1675
|
]));
|
|
331
1676
|
}
|
|
1677
|
+
// Avaliador Sintático
|
|
1678
|
+
const resultadoAvaliadorSintatico = avaliador.analisar(resultadoLexador.simbolos);
|
|
1679
|
+
// O Avaliador deve montar um objeto com os devidos nomes FolEs e CSS
|
|
1680
|
+
expect(resultadoAvaliadorSintatico[0].modificadores[0].propriedadeCss).toStrictEqual(metodos_1.TraducaoValoresMetodos[metodos_1.MetodosTranslacao[index]]);
|
|
1681
|
+
// Tradutor
|
|
1682
|
+
const resultadoTradutor = tradutor.serializar(resultadoAvaliadorSintatico);
|
|
1683
|
+
// O Tradutor deve serializar de acordo e traduzir translação-horizontal para translateX
|
|
1684
|
+
expect(resultadoTradutor).toContain(metodos_1.TraducaoValoresMetodos[metodos_1.MetodosTranslacao[index]]);
|
|
1685
|
+
expect(resultadoTradutor).toContain(`translateX(${valoresAceitos[valIndex]});`);
|
|
1686
|
+
}
|
|
1687
|
+
}
|
|
1688
|
+
});
|
|
1689
|
+
it('Atribuindo Método "translacao-horizontal()"', () => {
|
|
1690
|
+
for (let index = 0; index < metodos_1.MetodosTranslacao.length; index += 1) {
|
|
1691
|
+
const valoresAceitos = ['42px', '3ch', '0'];
|
|
1692
|
+
for (let valIndex = 0; valIndex < valoresAceitos.length; valIndex += 1) {
|
|
1693
|
+
// Lexador
|
|
1694
|
+
const resultadoLexador = lexador.mapear([
|
|
1695
|
+
"lmht {",
|
|
1696
|
+
`${metodos_1.MetodosTranslacao[index]}: translacao-horizontal(${valoresAceitos[valIndex]});`,
|
|
1697
|
+
"}"
|
|
1698
|
+
]);
|
|
332
1699
|
// O Lexador não deve encontrar erros
|
|
333
1700
|
expect(resultadoLexador.erros).toHaveLength(0);
|
|
334
1701
|
// O valor recebido deve ser mapeado como METODO
|
|
335
1702
|
expect(resultadoLexador.simbolos).toEqual(expect.arrayContaining([
|
|
336
1703
|
expect.objectContaining({ tipo: foles_1.default.METODO }),
|
|
337
1704
|
]));
|
|
1705
|
+
// O Lexador deve montar um objeto de comprimento 11 caso haja quantificador e 10 caso não haja
|
|
1706
|
+
if (valIndex === 0 || valIndex === 1) {
|
|
1707
|
+
expect(resultadoLexador.simbolos).toHaveLength(11);
|
|
1708
|
+
expect(resultadoLexador.simbolos).toEqual(expect.arrayContaining([
|
|
1709
|
+
expect.objectContaining({ tipo: foles_1.default.NUMERO }),
|
|
1710
|
+
expect.objectContaining({ tipo: foles_1.default.QUANTIFICADOR }),
|
|
1711
|
+
]));
|
|
1712
|
+
}
|
|
1713
|
+
else {
|
|
1714
|
+
expect(resultadoLexador.simbolos).toHaveLength(10);
|
|
1715
|
+
expect(resultadoLexador.simbolos).toEqual(expect.arrayContaining([
|
|
1716
|
+
expect.objectContaining({ tipo: foles_1.default.NUMERO }),
|
|
1717
|
+
]));
|
|
1718
|
+
}
|
|
338
1719
|
// Avaliador Sintático
|
|
339
1720
|
const resultadoAvaliadorSintatico = avaliador.analisar(resultadoLexador.simbolos);
|
|
340
1721
|
// 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.
|
|
1722
|
+
expect(resultadoAvaliadorSintatico[0].modificadores[0].propriedadeCss).toStrictEqual(metodos_1.TraducaoValoresMetodos[metodos_1.MetodosTranslacao[index]]);
|
|
342
1723
|
// Tradutor
|
|
343
1724
|
const resultadoTradutor = tradutor.serializar(resultadoAvaliadorSintatico);
|
|
344
|
-
|
|
345
|
-
expect(resultadoTradutor).toContain(
|
|
1725
|
+
// O Tradutor deve serializar de acordo e traduzir translação-horizontal para translateX
|
|
1726
|
+
expect(resultadoTradutor).toContain(metodos_1.TraducaoValoresMetodos[metodos_1.MetodosTranslacao[index]]);
|
|
1727
|
+
expect(resultadoTradutor).toContain(`translateX(${valoresAceitos[valIndex]});`);
|
|
1728
|
+
}
|
|
1729
|
+
}
|
|
1730
|
+
});
|
|
1731
|
+
it('Atribuindo Método "translação-vertical()"', () => {
|
|
1732
|
+
for (let index = 0; index < metodos_1.MetodosTranslacao.length; index += 1) {
|
|
1733
|
+
const valoresAceitos = ['42px', '3ch', '0'];
|
|
1734
|
+
for (let valIndex = 0; valIndex < valoresAceitos.length; valIndex += 1) {
|
|
1735
|
+
// Lexador
|
|
1736
|
+
const resultadoLexador = lexador.mapear([
|
|
1737
|
+
"lmht {",
|
|
1738
|
+
`${metodos_1.MetodosTranslacao[index]}: translação-vertical(${valoresAceitos[valIndex]});`,
|
|
1739
|
+
"}"
|
|
1740
|
+
]);
|
|
1741
|
+
// O Lexador não deve encontrar erros
|
|
1742
|
+
expect(resultadoLexador.erros).toHaveLength(0);
|
|
1743
|
+
// O valor recebido deve ser mapeado como METODO
|
|
1744
|
+
expect(resultadoLexador.simbolos).toEqual(expect.arrayContaining([
|
|
1745
|
+
expect.objectContaining({ tipo: foles_1.default.METODO }),
|
|
1746
|
+
]));
|
|
1747
|
+
// O Lexador deve montar um objeto de comprimento 11 caso haja quantificador e 10 caso não haja
|
|
1748
|
+
if (valIndex === 0 || valIndex === 1) {
|
|
1749
|
+
expect(resultadoLexador.simbolos).toHaveLength(11);
|
|
1750
|
+
expect(resultadoLexador.simbolos).toEqual(expect.arrayContaining([
|
|
1751
|
+
expect.objectContaining({ tipo: foles_1.default.NUMERO }),
|
|
1752
|
+
expect.objectContaining({ tipo: foles_1.default.QUANTIFICADOR }),
|
|
1753
|
+
]));
|
|
1754
|
+
}
|
|
1755
|
+
else {
|
|
1756
|
+
expect(resultadoLexador.simbolos).toHaveLength(10);
|
|
1757
|
+
expect(resultadoLexador.simbolos).toEqual(expect.arrayContaining([
|
|
1758
|
+
expect.objectContaining({ tipo: foles_1.default.NUMERO }),
|
|
1759
|
+
]));
|
|
1760
|
+
}
|
|
1761
|
+
// Avaliador Sintático
|
|
1762
|
+
const resultadoAvaliadorSintatico = avaliador.analisar(resultadoLexador.simbolos);
|
|
1763
|
+
// O Avaliador deve montar um objeto com os devidos nomes FolEs e CSS
|
|
1764
|
+
expect(resultadoAvaliadorSintatico[0].modificadores[0].propriedadeCss).toStrictEqual(metodos_1.TraducaoValoresMetodos[metodos_1.MetodosTranslacao[index]]);
|
|
1765
|
+
// Tradutor
|
|
1766
|
+
const resultadoTradutor = tradutor.serializar(resultadoAvaliadorSintatico);
|
|
1767
|
+
// O Tradutor deve serializar de acordo e traduzir translação-vertical para translateY
|
|
1768
|
+
expect(resultadoTradutor).toContain(metodos_1.TraducaoValoresMetodos[metodos_1.MetodosTranslacao[index]]);
|
|
1769
|
+
expect(resultadoTradutor).toContain(`translateY(${valoresAceitos[valIndex]});`);
|
|
1770
|
+
}
|
|
1771
|
+
}
|
|
1772
|
+
});
|
|
1773
|
+
it('Atribuindo Método "translacao-vertical()"', () => {
|
|
1774
|
+
for (let index = 0; index < metodos_1.MetodosTranslacao.length; index += 1) {
|
|
1775
|
+
const valoresAceitos = ['42px', '3ch', '0'];
|
|
1776
|
+
for (let valIndex = 0; valIndex < valoresAceitos.length; valIndex += 1) {
|
|
1777
|
+
// Lexador
|
|
1778
|
+
const resultadoLexador = lexador.mapear([
|
|
1779
|
+
"lmht {",
|
|
1780
|
+
`${metodos_1.MetodosTranslacao[index]}: translacao-vertical(${valoresAceitos[valIndex]});`,
|
|
1781
|
+
"}"
|
|
1782
|
+
]);
|
|
1783
|
+
// O Lexador não deve encontrar erros
|
|
1784
|
+
expect(resultadoLexador.erros).toHaveLength(0);
|
|
1785
|
+
// O valor recebido deve ser mapeado como METODO
|
|
1786
|
+
expect(resultadoLexador.simbolos).toEqual(expect.arrayContaining([
|
|
1787
|
+
expect.objectContaining({ tipo: foles_1.default.METODO }),
|
|
1788
|
+
]));
|
|
1789
|
+
// O Lexador deve montar um objeto de comprimento 11 caso haja quantificador e 10 caso não haja
|
|
1790
|
+
if (valIndex === 0 || valIndex === 1) {
|
|
1791
|
+
expect(resultadoLexador.simbolos).toHaveLength(11);
|
|
1792
|
+
expect(resultadoLexador.simbolos).toEqual(expect.arrayContaining([
|
|
1793
|
+
expect.objectContaining({ tipo: foles_1.default.NUMERO }),
|
|
1794
|
+
expect.objectContaining({ tipo: foles_1.default.QUANTIFICADOR }),
|
|
1795
|
+
]));
|
|
1796
|
+
}
|
|
1797
|
+
else {
|
|
1798
|
+
expect(resultadoLexador.simbolos).toHaveLength(10);
|
|
1799
|
+
expect(resultadoLexador.simbolos).toEqual(expect.arrayContaining([
|
|
1800
|
+
expect.objectContaining({ tipo: foles_1.default.NUMERO }),
|
|
1801
|
+
]));
|
|
1802
|
+
}
|
|
1803
|
+
// Avaliador Sintático
|
|
1804
|
+
const resultadoAvaliadorSintatico = avaliador.analisar(resultadoLexador.simbolos);
|
|
1805
|
+
// O Avaliador deve montar um objeto com os devidos nomes FolEs e CSS
|
|
1806
|
+
expect(resultadoAvaliadorSintatico[0].modificadores[0].propriedadeCss).toStrictEqual(metodos_1.TraducaoValoresMetodos[metodos_1.MetodosTranslacao[index]]);
|
|
1807
|
+
// Tradutor
|
|
1808
|
+
const resultadoTradutor = tradutor.serializar(resultadoAvaliadorSintatico);
|
|
1809
|
+
// O Tradutor deve serializar de acordo e traduzir translação-vertical para translateY
|
|
1810
|
+
expect(resultadoTradutor).toContain(metodos_1.TraducaoValoresMetodos[metodos_1.MetodosTranslacao[index]]);
|
|
1811
|
+
expect(resultadoTradutor).toContain(`translateY(${valoresAceitos[valIndex]});`);
|
|
346
1812
|
}
|
|
347
1813
|
}
|
|
348
1814
|
});
|