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