@designliquido/foles 0.8.0 → 0.8.1

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