Repository: DesignLiquido/delegua
Pull request #455 (2023-06-13 17:16:21)

Melhorias e testes do método `encaixar`
Resolve: https://github.com/DesignLiquido/delegua/issues/445


Patch:
diff --git a/fontes/bibliotecas/primitivas-vetor.ts b/fontes/bibliotecas/primitivas-vetor.ts
index bdf9cbb0..d72f1611 100644
--- a/fontes/bibliotecas/primitivas-vetor.ts
+++ b/fontes/bibliotecas/primitivas-vetor.ts
@@ -16,19 +16,12 @@ export default {
     encaixar: (
         interpretador: VisitanteComumInterface, 
         vetor: Array<any>,
-        posicaoInicio: number,
+        inicio: number,
         excluirQuantidade: number,
-        elemento: any = null,
-        obterElementosExcluidos: boolean = false
+        ...items: any[]
     ): Promise<any> => {
-        let elementosExcluidos = elemento
-            ? vetor.splice(posicaoInicio, excluirQuantidade, elemento)
-            : vetor.splice(posicaoInicio, excluirQuantidade);
-
-        if (obterElementosExcluidos) {
-            return Promise.resolve(elementosExcluidos);
-        }
-        return Promise.resolve(vetor);
+        const elementos = !items.length ? vetor.splice(inicio, excluirQuantidade) : vetor.splice(inicio, excluirQuantidade, ...items)
+        return Promise.resolve(elementos);
     },
     fatiar: (interpretador: VisitanteComumInterface, vetor: Array<any>, inicio: number, fim: number): Promise<any> => Promise.resolve(vetor.slice(inicio, fim)),
     filtrarPor: async (interpretador: VisitanteComumInterface, vetor: Array<any>, funcao: DeleguaFuncao): Promise<any> => {


Test patch:
diff --git a/testes/primitivas/primitivas-vetor.test.ts b/testes/primitivas/primitivas-vetor.test.ts
index 1a441e7d..8af776d8 100644
--- a/testes/primitivas/primitivas-vetor.test.ts
+++ b/testes/primitivas/primitivas-vetor.test.ts
@@ -102,37 +102,32 @@ describe('Primitivas de vetor', () => {
         });
     });
 
-    describe('encaixar() - adicionando item na posição 2', () => {
-        it('Trivial', async () => {
-            const resultado = await primitivasVetor.encaixar(interpretador, [1, 2, 3], 2, 0, 10);
-            expect(resultado).toStrictEqual([1, 2, 10, 3]);
+    describe('encaixar()', () => {
+        it('Inserindo novo elemento', async () => {
+            let vetor = [1, 2, 3]
+            await primitivasVetor.encaixar(interpretador, vetor, 2, 0, 10);
+            expect(vetor).toStrictEqual([1, 2, 10, 3]);
         });
-    });
 
-    describe('encaixar() - removendo item na posição 2', () => {
-        it('Trivial', async () => {
-            const resultado = await primitivasVetor.encaixar(interpretador, [1, 2, 3], 2, 1, 10);
-            expect(resultado).toStrictEqual([1, 2, 10]);
+        it('Removendo elemento na posição 2', async () => {
+            let vetor = [1, 2, 3]
+            const resultado = await primitivasVetor.encaixar(interpretador, vetor, 2, 1, 10);
+            expect(vetor).toStrictEqual([1, 2, 10]);
+            expect(resultado).toStrictEqual([3]);
         });
-    });
 
-    describe('encaixar() - não passando novo elemento', () => {
-        it('Trivial', async () => {
-            const promises = await Promise.all([
-                primitivasVetor.encaixar(interpretador, [1, 2, 3, 4], 3, 4, null, true),
-                primitivasVetor.encaixar(interpretador, [1, 2, 3, 4], 0, 3)
-            ]);
-            const resultado1 = promises[0];
-            const resultado2 = promises[1];
-            expect(resultado1).toStrictEqual([4]);
-            expect(resultado2).toStrictEqual([4]);
+        it('Um elemento', async () => {
+            let vetor = [1, 2, 3, 4, 5]
+            const resultado = await primitivasVetor.encaixar(interpretador, vetor, 1, 3, "texto");
+            expect(vetor).toStrictEqual([1, 'texto', 5]);
+            expect(resultado).toStrictEqual([2, 3, 4]);
         });
-    });
 
-    describe('encaixar() - não passando novo elemento', () => {
-        it('Trivial', async () => {
-            const resultado1 = await primitivasVetor.encaixar(interpretador, ["maçã", "banana", "morango", "laranja", "uva"], 0, 3, null, true);
-            expect(resultado1).toStrictEqual(["maçã", "banana", "morango"]);
+        it('Mais de um elemento', async () => {
+            let vetor = [1, 2, 3, 4, 5]
+            const resultado = await primitivasVetor.encaixar(interpretador, vetor, 1, 3, "texto1", "texto2");
+            expect(vetor).toStrictEqual([1, 'texto1', 'texto2', 5]);
+            expect(resultado).toStrictEqual([2, 3, 4]);
         });
     });