@designliquido/foles 0.9.3 → 0.9.5

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