@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.
- package/fontes/avaliador-sintatico/avaliador-sintatico-reverso.js +534 -2
- package/fontes/avaliador-sintatico/avaliador-sintatico-reverso.js.map +1 -1
- package/fontes/avaliador-sintatico/avaliador-sintatico.js +7 -7
- package/fontes/avaliador-sintatico/avaliador-sintatico.js.map +1 -1
- package/fontes/foles.js +2 -2
- package/fontes/foles.js.map +1 -1
- package/fontes/lexador/lexador-reverso.js +8 -0
- package/fontes/lexador/lexador-reverso.js.map +1 -1
- package/fontes/lexador/palavras-reservadas/css.d.ts +145 -1
- package/fontes/lexador/palavras-reservadas/css.js +149 -1
- package/fontes/lexador/palavras-reservadas/css.js.map +1 -1
- package/fontes/modificadores/dicionario/dicionario-reverso-modificadores.js +74 -1
- package/fontes/modificadores/dicionario/dicionario-reverso-modificadores.js.map +1 -1
- package/fontes/modificadores/dicionario/dicionario-suplementar-metodos.d.ts +3 -0
- package/fontes/modificadores/dicionario/dicionario-suplementar-metodos.js +16 -0
- package/fontes/modificadores/dicionario/dicionario-suplementar-metodos.js.map +1 -0
- package/fontes/serializadores/serializador-reverso.js +1 -1
- package/fontes/serializadores/serializador-reverso.js.map +1 -1
- package/fontes/tipos-de-simbolos/css.d.ts +1 -0
- package/fontes/tipos-de-simbolos/css.js +1 -0
- package/fontes/tipos-de-simbolos/css.js.map +1 -1
- package/fontes/valores/metodos/css/calc.d.ts +12 -0
- package/fontes/valores/metodos/css/calc.js +20 -0
- package/fontes/valores/metodos/css/calc.js.map +1 -0
- package/fontes/valores/metodos/css/clamp.d.ts +13 -0
- package/fontes/valores/metodos/css/clamp.js +21 -0
- package/fontes/valores/metodos/css/clamp.js.map +1 -0
- package/fontes/valores/metodos/css/constrast.d.ts +9 -0
- package/fontes/valores/metodos/css/constrast.js +20 -0
- package/fontes/valores/metodos/css/constrast.js.map +1 -0
- package/fontes/valores/metodos/css/cubic-bezier.d.ts +11 -0
- package/fontes/valores/metodos/css/cubic-bezier.js +19 -0
- package/fontes/valores/metodos/css/cubic-bezier.js.map +1 -0
- package/fontes/valores/metodos/css/drop-shadow.d.ts +14 -0
- package/fontes/valores/metodos/css/drop-shadow.js +41 -0
- package/fontes/valores/metodos/css/drop-shadow.js.map +1 -0
- package/fontes/valores/metodos/css/fit-content.d.ts +9 -0
- package/fontes/valores/metodos/css/fit-content.js +17 -0
- package/fontes/valores/metodos/css/fit-content.js.map +1 -0
- package/fontes/valores/metodos/css/grayscale.d.ts +9 -0
- package/fontes/valores/metodos/css/grayscale.js +20 -0
- package/fontes/valores/metodos/css/grayscale.js.map +1 -0
- package/fontes/valores/metodos/css/hue-rotate.d.ts +9 -0
- package/fontes/valores/metodos/css/hue-rotate.js +20 -0
- package/fontes/valores/metodos/css/hue-rotate.js.map +1 -0
- package/fontes/valores/metodos/css/invert.d.ts +9 -0
- package/fontes/valores/metodos/css/invert.js +20 -0
- package/fontes/valores/metodos/css/invert.js.map +1 -0
- package/fontes/valores/metodos/css/linear-gradient.d.ts +11 -0
- package/fontes/valores/metodos/css/linear-gradient.js +24 -0
- package/fontes/valores/metodos/css/linear-gradient.js.map +1 -0
- package/fontes/valores/metodos/css/minmax.d.ts +13 -0
- package/fontes/valores/metodos/css/minmax.js +28 -0
- package/fontes/valores/metodos/css/minmax.js.map +1 -0
- package/fontes/valores/metodos/css/opacity.d.ts +9 -0
- package/fontes/valores/metodos/css/opacity.js +20 -0
- package/fontes/valores/metodos/css/opacity.js.map +1 -0
- package/fontes/valores/metodos/css/perspective.d.ts +9 -0
- package/fontes/valores/metodos/css/perspective.js +20 -0
- package/fontes/valores/metodos/css/perspective.js.map +1 -0
- package/fontes/valores/metodos/css/ray.d.ts +10 -0
- package/fontes/valores/metodos/css/ray.js +27 -0
- package/fontes/valores/metodos/css/ray.js.map +1 -0
- package/fontes/valores/metodos/css/rotate.d.ts +9 -0
- package/fontes/valores/metodos/css/rotate.js +20 -0
- package/fontes/valores/metodos/css/rotate.js.map +1 -0
- package/fontes/valores/metodos/css/rotateX.d.ts +9 -0
- package/fontes/valores/metodos/css/rotateX.js +20 -0
- package/fontes/valores/metodos/css/rotateX.js.map +1 -0
- package/fontes/valores/metodos/css/rotateY.d.ts +9 -0
- package/fontes/valores/metodos/css/rotateY.js +20 -0
- package/fontes/valores/metodos/css/rotateY.js.map +1 -0
- package/fontes/valores/metodos/css/rotateZ.d.ts +9 -0
- package/fontes/valores/metodos/css/rotateZ.js +20 -0
- package/fontes/valores/metodos/css/rotateZ.js.map +1 -0
- package/fontes/valores/metodos/css/saturate.d.ts +9 -0
- package/fontes/valores/metodos/css/saturate.js +20 -0
- package/fontes/valores/metodos/css/saturate.js.map +1 -0
- package/fontes/valores/metodos/css/scale.d.ts +9 -0
- package/fontes/valores/metodos/css/scale.js +20 -0
- package/fontes/valores/metodos/css/scale.js.map +1 -0
- package/fontes/valores/metodos/css/scale3d.d.ts +10 -0
- package/fontes/valores/metodos/css/scale3d.js +18 -0
- package/fontes/valores/metodos/css/scale3d.js.map +1 -0
- package/fontes/valores/metodos/css/scaleX.d.ts +8 -0
- package/fontes/valores/metodos/css/scaleX.js +16 -0
- package/fontes/valores/metodos/css/scaleX.js.map +1 -0
- package/fontes/valores/metodos/css/scaleY.d.ts +8 -0
- package/fontes/valores/metodos/css/scaleY.js +16 -0
- package/fontes/valores/metodos/css/scaleY.js.map +1 -0
- package/fontes/valores/metodos/css/scaleZ.d.ts +8 -0
- package/fontes/valores/metodos/css/scaleZ.js +16 -0
- package/fontes/valores/metodos/css/scaleZ.js.map +1 -0
- package/fontes/valores/metodos/css/sepia.d.ts +9 -0
- package/fontes/valores/metodos/css/sepia.js +20 -0
- package/fontes/valores/metodos/css/sepia.js.map +1 -0
- package/fontes/valores/metodos/css/skew.d.ts +11 -0
- package/fontes/valores/metodos/css/skew.js +25 -0
- package/fontes/valores/metodos/css/skew.js.map +1 -0
- package/fontes/valores/metodos/css/skewX.d.ts +9 -0
- package/fontes/valores/metodos/css/skewX.js +20 -0
- package/fontes/valores/metodos/css/skewX.js.map +1 -0
- package/fontes/valores/metodos/css/skewY.d.ts +9 -0
- package/fontes/valores/metodos/css/skewY.js +20 -0
- package/fontes/valores/metodos/css/skewY.js.map +1 -0
- package/fontes/valores/metodos/css/steps.d.ts +17 -0
- package/fontes/valores/metodos/css/steps.js +25 -0
- package/fontes/valores/metodos/css/steps.js.map +1 -0
- package/fontes/valores/metodos/css/translate.d.ts +11 -0
- package/fontes/valores/metodos/css/translate.js +25 -0
- package/fontes/valores/metodos/css/translate.js.map +1 -0
- package/fontes/valores/metodos/css/translate3d.d.ts +13 -0
- package/fontes/valores/metodos/css/translate3d.js +42 -0
- package/fontes/valores/metodos/css/translate3d.js.map +1 -0
- package/fontes/valores/metodos/css/translateX.d.ts +9 -0
- package/fontes/valores/metodos/css/translateX.js +20 -0
- package/fontes/valores/metodos/css/translateX.js.map +1 -0
- package/fontes/valores/metodos/css/translateY.d.ts +9 -0
- package/fontes/valores/metodos/css/translateY.js +20 -0
- package/fontes/valores/metodos/css/translateY.js.map +1 -0
- package/fontes/valores/metodos/css/translateZ.d.ts +9 -0
- package/fontes/valores/metodos/css/translateZ.js +20 -0
- package/fontes/valores/metodos/css/translateZ.js.map +1 -0
- package/fontes/valores/metodos/foles/inclinar.js +6 -2
- package/fontes/valores/metodos/foles/inclinar.js.map +1 -1
- package/fontes/valores/metodos/foles/perspectivar.js +1 -1
- package/fontes/valores/metodos/foles/perspectivar.js.map +1 -1
- package/fontes/valores/metodos/foles/raio.js +3 -1
- package/fontes/valores/metodos/foles/raio.js.map +1 -1
- package/fontes/valores/metodos/foles/translacao.js +6 -2
- package/fontes/valores/metodos/foles/translacao.js.map +1 -1
- package/fontes/valores/seletor-valor-reverso.d.ts +3 -0
- package/fontes/valores/seletor-valor-reverso.js +23 -0
- package/fontes/valores/seletor-valor-reverso.js.map +1 -0
- package/package.json +2 -2
- package/testes/listas/metodos-css.d.ts +25 -0
- package/testes/listas/metodos-css.js +128 -0
- package/testes/listas/metodos-css.js.map +1 -0
- package/testes/modificadores/metodos-reversos.test.d.ts +1 -0
- package/testes/modificadores/metodos-reversos.test.js +1630 -0
- package/testes/modificadores/metodos-reversos.test.js.map +1 -0
- package/testes/modificadores/metodos.test.js +11 -6
- 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
|