From 949ac548dcfddb3f30ed6f1ebba5438e3a1fc219 Mon Sep 17 00:00:00 2001 From: SofiaCalaviaGomez <129267309+SofiaCalaviaGomez@users.noreply.github.com> Date: Thu, 27 Feb 2025 23:41:10 +0100 Subject: [PATCH 01/26] Update ReusablePoolTest.java MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Se crea lo primero la instancia del pool y luego hacemos algunas verificaciones como si la instancia es nula o si la instancia 1 sería igual a las instancia 2 --- src/test/java/ubu/gii/dass/c01/ReusablePoolTest.java | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/src/test/java/ubu/gii/dass/c01/ReusablePoolTest.java b/src/test/java/ubu/gii/dass/c01/ReusablePoolTest.java index 4e8c38d0..02cf0b64 100644 --- a/src/test/java/ubu/gii/dass/c01/ReusablePoolTest.java +++ b/src/test/java/ubu/gii/dass/c01/ReusablePoolTest.java @@ -34,8 +34,16 @@ public static void tearDown() throws Exception { */ @Test @DisplayName("testGetInstance") - @Disabled("Not implemented yet") public void testGetInstance() { + // Crear una instancia del pool + ReusablePool instance1 = ReusablePool.getInstance(); + + //Verifica que la instancia no sea nula + assertNotNull (instance1,"La instancia adquirida no debe ser nula"); + + //Comprueba si la instancia 1 es igual que la instancia 2 + ReusablePool instance2 = ReusablePool.getInstance(); + assertSame(instance1, instance2); } From ca8598dba2f8d861df6d4ec8534ea56658dde527 Mon Sep 17 00:00:00 2001 From: SofiaCalaviaGomez <129267309+SofiaCalaviaGomez@users.noreply.github.com> Date: Thu, 27 Feb 2025 23:42:35 +0100 Subject: [PATCH 02/26] Update ReusablePoolTest.java Se crea una instancia del pool y luego se hacen varias comprobaciones, como verificar si la instancia es nula o si la instancia 1 es igual a la instancia 2 --- src/test/java/ubu/gii/dass/c01/ReusablePoolTest.java | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/test/java/ubu/gii/dass/c01/ReusablePoolTest.java b/src/test/java/ubu/gii/dass/c01/ReusablePoolTest.java index 02cf0b64..c1506aaa 100644 --- a/src/test/java/ubu/gii/dass/c01/ReusablePoolTest.java +++ b/src/test/java/ubu/gii/dass/c01/ReusablePoolTest.java @@ -43,7 +43,8 @@ public void testGetInstance() { //Comprueba si la instancia 1 es igual que la instancia 2 ReusablePool instance2 = ReusablePool.getInstance(); - assertSame(instance1, instance2); + assertSame(instance1, instance2); + } From 7717a0bd38bb22765e300f8c6fb9eaaf003c1950 Mon Sep 17 00:00:00 2001 From: SofiaCalaviaGomez <129267309+SofiaCalaviaGomez@users.noreply.github.com> Date: Thu, 27 Feb 2025 23:47:31 +0100 Subject: [PATCH 03/26] TestGetInstance Crea una instancia del pool y verificamos varias cosas, como por ejemplo que la instancia no sea nula o que la instancia uno es igual a la segunda. --- src/test/java/ubu/gii/dass/c01/ReusablePoolTest.java | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/test/java/ubu/gii/dass/c01/ReusablePoolTest.java b/src/test/java/ubu/gii/dass/c01/ReusablePoolTest.java index c1506aaa..c5be5bcf 100644 --- a/src/test/java/ubu/gii/dass/c01/ReusablePoolTest.java +++ b/src/test/java/ubu/gii/dass/c01/ReusablePoolTest.java @@ -50,7 +50,7 @@ public void testGetInstance() { /** * Test method for {@link ubu.gii.dass.c01.ReusablePool#acquireReusable()}. - */ + @Test @DisplayName("testAcquireReusable") @Disabled("Not implemented yet") @@ -61,12 +61,12 @@ public void testAcquireReusable() { /** * Test method for {@link ubu.gii.dass.c01.ReusablePool#releaseReusable(ubu.gii.dass.c01.Reusable)}. - */ + @Test @DisplayName("testReleaseReusable") @Disabled("Not implemented yet") public void testReleaseReusable() { } - + */ } From 2bd8fc551d52d78891f92006cfcaaa59e972c234 Mon Sep 17 00:00:00 2001 From: SofiaCalaviaGomez <129267309+SofiaCalaviaGomez@users.noreply.github.com> Date: Thu, 27 Feb 2025 23:49:58 +0100 Subject: [PATCH 04/26] Update README.md --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 47c98e44..fb435596 100644 --- a/README.md +++ b/README.md @@ -1,7 +1,7 @@ poolobject ========== - +[![codecov](https://codecov.io/gh/SofiaCalaviaGomez/Poolobject/graph/badge.svg?token=R35YMOPP2V)](https://codecov.io/gh/SofiaCalaviaGomez/Poolobject) Java code example of creational design pattern pool object Workshop to use good practices in software development: testing, ci and measurement. From dc9929cd9ff8623ec9c519b6b1bc15925bafc3ea Mon Sep 17 00:00:00 2001 From: SofiaCalaviaGomez <129267309+SofiaCalaviaGomez@users.noreply.github.com> Date: Thu, 27 Feb 2025 23:51:37 +0100 Subject: [PATCH 05/26] Update ReusablePoolTest.java --- .../ubu/gii/dass/c01/ReusablePoolTest.java | 94 ++++++++++++++----- 1 file changed, 71 insertions(+), 23 deletions(-) diff --git a/src/test/java/ubu/gii/dass/c01/ReusablePoolTest.java b/src/test/java/ubu/gii/dass/c01/ReusablePoolTest.java index c5be5bcf..c354c82e 100644 --- a/src/test/java/ubu/gii/dass/c01/ReusablePoolTest.java +++ b/src/test/java/ubu/gii/dass/c01/ReusablePoolTest.java @@ -3,25 +3,33 @@ */ package ubu.gii.dass.c01; +import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.junit.jupiter.api.Assertions.assertNotNull; +import static org.junit.jupiter.api.Assertions.assertSame; import static org.junit.jupiter.api.Assertions.assertTrue; +import static org.junit.jupiter.api.Assertions.fail; import org.junit.jupiter.api.AfterAll; import org.junit.jupiter.api.BeforeAll; import org.junit.jupiter.api.Test; import org.junit.jupiter.api.DisplayName; -import org.junit.jupiter.api.Disabled; /** - * @author alumno + * @author Sofía Calavia + * @author Andrés Puentes + * @author Mario Cea + * @author Alejandro García * */ public class ReusablePoolTest { - + /** + * @throws java.lang.Exception + */ @BeforeAll - public static void setUp(){ + public static void setUp() throws Exception{ } @@ -35,38 +43,78 @@ public static void tearDown() throws Exception { @Test @DisplayName("testGetInstance") public void testGetInstance() { - // Crear una instancia del pool + // Crear una instancia del pool ReusablePool instance1 = ReusablePool.getInstance(); - //Verifica que la instancia no sea nula + //Verifica que la instancia no sea nula assertNotNull (instance1,"La instancia adquirida no debe ser nula"); - //Comprueba si la instancia 1 es igual que la instancia 2 + //Comprueba si la instancia 1 es igual que la instancia 2 ReusablePool instance2 = ReusablePool.getInstance(); - assertSame(instance1, instance2); - - + assertSame(instance1, instance2); } /** * Test method for {@link ubu.gii.dass.c01.ReusablePool#acquireReusable()}. - - @Test - @DisplayName("testAcquireReusable") - @Disabled("Not implemented yet") - + */ + @Test + @DisplayName("testAcquireReusable") public void testAcquireReusable() { + // Crear una instancia del pool + ReusablePool pool = ReusablePool.getInstance(); + + try { + //Va a adquirir un objeto reusable del pool + Reusable reusable = pool.acquireReusable(); + + // Verifica que el objeto reusable adquirido no es nulo + assertNotNull(reusable,"El objeto reusable adquirido no debería ser nulo"); + + // Verifica que el objeto adquirido es una instancia de la clase Reusable + assertTrue(reusable instanceof Reusable, "El objeto adquirido debe ser una instancia de Reusable"); + + + } catch (NotFreeInstanceException e) { + // Si hay excepción, imprimirá un mensaje de error + fail("No se lanzaría una excepción si hemos adquirirido un objeto reusable del pool"); + } } /** * Test method for {@link ubu.gii.dass.c01.ReusablePool#releaseReusable(ubu.gii.dass.c01.Reusable)}. - - @Test - @DisplayName("testReleaseReusable") - @Disabled("Not implemented yet") - public void testReleaseReusable() { - - } - */ + * @throws NotFreeInstanceException + */ + @Test + @DisplayName("testReleaseReusable") + public void testReleaseReusable() throws DuplicatedInstanceException, NotFreeInstanceException { + // Crear una instancia del pool + ReusablePool pool = ReusablePool.getInstance(); + + //Crea un nuevo objeto reusable + Reusable reusable = new Reusable(); + + try{ + //Libera este objeto del pool + pool.releaseReusable(reusable); + + //Intenta adquirir un nuevo objeto de este + Reusable acqReusable = pool.acquireReusable(); + + // Verifica si el objeto adquirido es el mismo que el objeto liberado + assertEquals(reusable, acqReusable, "El objeto que ha sido adquirido debe ser el mismo que el liberado"); + + //Verifica que el poll tiene un objeto antes de liberarlo + assertNotNull(pool.acquireReusable(), "El pool debería tener al menos un objeto reusable después de liberarlo"); + + } catch (DuplicatedInstanceException e) { + //Si se lanza una excepción, imprime un mensaje de error + fail("No debería saltar una excepcion al liberar un objeto reusable"); + + } catch (NotFreeInstanceException e) { + //Si se lanza una excepción, imprime un mensaje de error + fail("No se debe lanzar una excepción al adquirir un objeto reusable"); + + } + } } From bb8e534e3e3e7c556c353e11bb5d3ba0cf03b363 Mon Sep 17 00:00:00 2001 From: SofiaCalaviaGomez <129267309+SofiaCalaviaGomez@users.noreply.github.com> Date: Thu, 27 Feb 2025 23:54:53 +0100 Subject: [PATCH 06/26] Update README.md MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Añade el codecov --- README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/README.md b/README.md index fb435596..9d40ca3d 100644 --- a/README.md +++ b/README.md @@ -2,6 +2,7 @@ poolobject ========== [![codecov](https://codecov.io/gh/SofiaCalaviaGomez/Poolobject/graph/badge.svg?token=R35YMOPP2V)](https://codecov.io/gh/SofiaCalaviaGomez/Poolobject) + Java code example of creational design pattern pool object Workshop to use good practices in software development: testing, ci and measurement. From 18040f4117aa5634af65d611b65b709b19e4859c Mon Sep 17 00:00:00 2001 From: SofiaCalaviaGomez <129267309+SofiaCalaviaGomez@users.noreply.github.com> Date: Thu, 27 Feb 2025 23:58:08 +0100 Subject: [PATCH 07/26] Test Get Instance Creamos una instancia en el pool y luego hacemos varias verificaciones, como por ejemplo que la instancia no sea nula o que la instancia uno sea igual que la segunda instancia. --- src/test/java/ubu/gii/dass/c01/ReusablePoolTest.java | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/src/test/java/ubu/gii/dass/c01/ReusablePoolTest.java b/src/test/java/ubu/gii/dass/c01/ReusablePoolTest.java index c354c82e..c0b1d394 100644 --- a/src/test/java/ubu/gii/dass/c01/ReusablePoolTest.java +++ b/src/test/java/ubu/gii/dass/c01/ReusablePoolTest.java @@ -56,7 +56,7 @@ public void testGetInstance() { /** * Test method for {@link ubu.gii.dass.c01.ReusablePool#acquireReusable()}. - */ + @Test @DisplayName("testAcquireReusable") public void testAcquireReusable() { @@ -78,13 +78,14 @@ public void testAcquireReusable() { // Si hay excepción, imprimirá un mensaje de error fail("No se lanzaría una excepción si hemos adquirirido un objeto reusable del pool"); } + */ } /** * Test method for {@link ubu.gii.dass.c01.ReusablePool#releaseReusable(ubu.gii.dass.c01.Reusable)}. * @throws NotFreeInstanceException - */ + @Test @DisplayName("testReleaseReusable") public void testReleaseReusable() throws DuplicatedInstanceException, NotFreeInstanceException { @@ -117,4 +118,5 @@ public void testReleaseReusable() throws DuplicatedInstanceException, NotFreeIns } } + */ } From 29ed02717c25f6917220ea61e7b62ad063648dbc Mon Sep 17 00:00:00 2001 From: SofiaCalaviaGomez <129267309+SofiaCalaviaGomez@users.noreply.github.com> Date: Thu, 27 Feb 2025 23:59:38 +0100 Subject: [PATCH 08/26] Update ReusablePoolTest.java --- src/test/java/ubu/gii/dass/c01/ReusablePoolTest.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/test/java/ubu/gii/dass/c01/ReusablePoolTest.java b/src/test/java/ubu/gii/dass/c01/ReusablePoolTest.java index c0b1d394..abe95887 100644 --- a/src/test/java/ubu/gii/dass/c01/ReusablePoolTest.java +++ b/src/test/java/ubu/gii/dass/c01/ReusablePoolTest.java @@ -78,7 +78,7 @@ public void testAcquireReusable() { // Si hay excepción, imprimirá un mensaje de error fail("No se lanzaría una excepción si hemos adquirirido un objeto reusable del pool"); } - */ + } @@ -118,5 +118,5 @@ public void testReleaseReusable() throws DuplicatedInstanceException, NotFreeIns } } - */ + } From edf89d200373ac17d0f606d0e818795e36d8bdb3 Mon Sep 17 00:00:00 2001 From: SofiaCalaviaGomez <129267309+SofiaCalaviaGomez@users.noreply.github.com> Date: Fri, 28 Feb 2025 00:01:59 +0100 Subject: [PATCH 09/26] ReusablePoolTest.java --- src/test/java/ubu/gii/dass/c01/ReusablePoolTest.java | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/src/test/java/ubu/gii/dass/c01/ReusablePoolTest.java b/src/test/java/ubu/gii/dass/c01/ReusablePoolTest.java index abe95887..4bab34d5 100644 --- a/src/test/java/ubu/gii/dass/c01/ReusablePoolTest.java +++ b/src/test/java/ubu/gii/dass/c01/ReusablePoolTest.java @@ -56,7 +56,7 @@ public void testGetInstance() { /** * Test method for {@link ubu.gii.dass.c01.ReusablePool#acquireReusable()}. - + */ @Test @DisplayName("testAcquireReusable") public void testAcquireReusable() { @@ -78,14 +78,13 @@ public void testAcquireReusable() { // Si hay excepción, imprimirá un mensaje de error fail("No se lanzaría una excepción si hemos adquirirido un objeto reusable del pool"); } - } /** * Test method for {@link ubu.gii.dass.c01.ReusablePool#releaseReusable(ubu.gii.dass.c01.Reusable)}. * @throws NotFreeInstanceException - + */ @Test @DisplayName("testReleaseReusable") public void testReleaseReusable() throws DuplicatedInstanceException, NotFreeInstanceException { @@ -118,5 +117,4 @@ public void testReleaseReusable() throws DuplicatedInstanceException, NotFreeIns } } - } From b02fc8046900cf92e451ffc23776fe882b692f7d Mon Sep 17 00:00:00 2001 From: haleks5 <150005518+haleks5@users.noreply.github.com> Date: Fri, 28 Feb 2025 11:25:02 +0100 Subject: [PATCH 10/26] 1.1 --- .../ubu/gii/dass/c01/ReusablePoolTest.java | 88 +------------------ 1 file changed, 3 insertions(+), 85 deletions(-) diff --git a/src/test/java/ubu/gii/dass/c01/ReusablePoolTest.java b/src/test/java/ubu/gii/dass/c01/ReusablePoolTest.java index 4bab34d5..91c502ff 100644 --- a/src/test/java/ubu/gii/dass/c01/ReusablePoolTest.java +++ b/src/test/java/ubu/gii/dass/c01/ReusablePoolTest.java @@ -1,120 +1,38 @@ -/** - * - */ package ubu.gii.dass.c01; - import static org.junit.jupiter.api.Assertions.assertEquals; import static org.junit.jupiter.api.Assertions.assertNotNull; import static org.junit.jupiter.api.Assertions.assertSame; import static org.junit.jupiter.api.Assertions.assertTrue; import static org.junit.jupiter.api.Assertions.fail; - import org.junit.jupiter.api.AfterAll; import org.junit.jupiter.api.BeforeAll; import org.junit.jupiter.api.Test; import org.junit.jupiter.api.DisplayName; - - -/** - * @author Sofía Calavia - * @author Andrés Puentes - * @author Mario Cea - * @author Alejandro García - * - */ public class ReusablePoolTest { - /** * @throws java.lang.Exception */ @BeforeAll public static void setUp() throws Exception{ } - @AfterAll public static void tearDown() throws Exception { } - /** * Test method for {@link ubu.gii.dass.c01.ReusablePool#getInstance()}. */ @Test @DisplayName("testGetInstance") public void testGetInstance() { - // Crear una instancia del pool ReusablePool instance1 = ReusablePool.getInstance(); - - //Verifica que la instancia no sea nula assertNotNull (instance1,"La instancia adquirida no debe ser nula"); - - //Comprueba si la instancia 1 es igual que la instancia 2 ReusablePool instance2 = ReusablePool.getInstance(); assertSame(instance1, instance2); } + - /** - * Test method for {@link ubu.gii.dass.c01.ReusablePool#acquireReusable()}. - */ - @Test - @DisplayName("testAcquireReusable") - public void testAcquireReusable() { - // Crear una instancia del pool - ReusablePool pool = ReusablePool.getInstance(); - - try { - //Va a adquirir un objeto reusable del pool - Reusable reusable = pool.acquireReusable(); - - // Verifica que el objeto reusable adquirido no es nulo - assertNotNull(reusable,"El objeto reusable adquirido no debería ser nulo"); - - // Verifica que el objeto adquirido es una instancia de la clase Reusable - assertTrue(reusable instanceof Reusable, "El objeto adquirido debe ser una instancia de Reusable"); - - - } catch (NotFreeInstanceException e) { - // Si hay excepción, imprimirá un mensaje de error - fail("No se lanzaría una excepción si hemos adquirirido un objeto reusable del pool"); - } - - } - - /** - * Test method for {@link ubu.gii.dass.c01.ReusablePool#releaseReusable(ubu.gii.dass.c01.Reusable)}. - * @throws NotFreeInstanceException - */ - @Test - @DisplayName("testReleaseReusable") - public void testReleaseReusable() throws DuplicatedInstanceException, NotFreeInstanceException { - // Crear una instancia del pool - ReusablePool pool = ReusablePool.getInstance(); - - //Crea un nuevo objeto reusable - Reusable reusable = new Reusable(); - - try{ - //Libera este objeto del pool - pool.releaseReusable(reusable); - - //Intenta adquirir un nuevo objeto de este - Reusable acqReusable = pool.acquireReusable(); - - // Verifica si el objeto adquirido es el mismo que el objeto liberado - assertEquals(reusable, acqReusable, "El objeto que ha sido adquirido debe ser el mismo que el liberado"); - - //Verifica que el poll tiene un objeto antes de liberarlo - assertNotNull(pool.acquireReusable(), "El pool debería tener al menos un objeto reusable después de liberarlo"); - - } catch (DuplicatedInstanceException e) { - //Si se lanza una excepción, imprime un mensaje de error - fail("No debería saltar una excepcion al liberar un objeto reusable"); - - } catch (NotFreeInstanceException e) { - //Si se lanza una excepción, imprime un mensaje de error - fail("No se debe lanzar una excepción al adquirir un objeto reusable"); - - } - } + + } From a77483994ad47cd7abf9ea389eadb8855cfe37e5 Mon Sep 17 00:00:00 2001 From: MarioCea <150005508+MarioCea@users.noreply.github.com> Date: Fri, 28 Feb 2025 11:27:32 +0100 Subject: [PATCH 11/26] 1.2 Update ReusablePoolTest.java --- .../ubu/gii/dass/c01/ReusablePoolTest.java | 20 +++++++++++++++++++ 1 file changed, 20 insertions(+) diff --git a/src/test/java/ubu/gii/dass/c01/ReusablePoolTest.java b/src/test/java/ubu/gii/dass/c01/ReusablePoolTest.java index 91c502ff..47328269 100644 --- a/src/test/java/ubu/gii/dass/c01/ReusablePoolTest.java +++ b/src/test/java/ubu/gii/dass/c01/ReusablePoolTest.java @@ -32,6 +32,26 @@ public void testGetInstance() { assertSame(instance1, instance2); } + /** + * Test method for {@link ubu.gii.dass.c01.ReusablePool#releaseReusable(ubu.gii.dass.c01.Reusable)}. + * @throws NotFreeInstanceException + */ + @Test + @DisplayName("testReleaseReusable") + public void testReleaseReusable() throws DuplicatedInstanceException, NotFreeInstanceException { ReusablePool pool = ReusablePool.getInstance(); + Reusable reusable = new Reusable(); + try{ + pool.releaseReusable(reusable); + Reusable acqReusable = pool.acquireReusable(); + + assertEquals(reusable, acqReusable, "El objeto que ha sido adquirido debe ser el mismo que el liberado"); + assertNotNull(pool.acquireReusable(), "El pool debería tener al menos un objeto reusable después de liberarlo"); + } catch (DuplicatedInstanceException e) { + fail("No debería saltar una excepcion al liberar un objeto reusable"); + } catch (NotFreeInstanceException e) { + fail("No se debe lanzar una excepción al adquirir un objeto reusable"); + } + } From ac3c4543dcfc45b506ec7b0f8e98340b1dd81d1d Mon Sep 17 00:00:00 2001 From: andrespuentesg <150024530+andrespuentesg@users.noreply.github.com> Date: Fri, 28 Feb 2025 11:29:10 +0100 Subject: [PATCH 12/26] 1.3 Update ReusablePoolTest.java --- .../ubu/gii/dass/c01/ReusablePoolTest.java | 30 +++++++++++++++++++ 1 file changed, 30 insertions(+) diff --git a/src/test/java/ubu/gii/dass/c01/ReusablePoolTest.java b/src/test/java/ubu/gii/dass/c01/ReusablePoolTest.java index 47328269..a044dd06 100644 --- a/src/test/java/ubu/gii/dass/c01/ReusablePoolTest.java +++ b/src/test/java/ubu/gii/dass/c01/ReusablePoolTest.java @@ -54,5 +54,35 @@ public void testGetInstance() { } + /** + * Test method for exception when no free instances are available. + */ + @Test + @DisplayName("testAcquireReusableWhenNoFreeInstances") + public void testAcquireReusableWhenNoFreeInstances() { + ReusablePool pool = ReusablePool.getInstance(); + + try { + Reusable r1 = pool.acquireReusable(); + Reusable r2 = pool.acquireReusable(); + + assertNotNull(r1, "First reusable should not be null"); + assertNotNull(r2, "Second reusable should not be null"); + + try { + pool.acquireReusable(); + fail("Should have thrown NotFreeInstanceException"); + } catch (NotFreeInstanceException e) { + assertEquals("No hay más instancias reutilizables disponibles. Reintentalo más tarde", e.getMessage()); + } + + pool.releaseReusable(r1); + pool.releaseReusable(r2); + + } catch (Exception e) { + fail("Unexpected exception: " + e.getMessage()); + } + } + } From 99487b361919a23cd8faf69a4f2b6d7cb8621488 Mon Sep 17 00:00:00 2001 From: haleks5 <150005518+haleks5@users.noreply.github.com> Date: Fri, 28 Feb 2025 11:31:33 +0100 Subject: [PATCH 13/26] 1.4 Update ReusablePoolTest.java --- .../ubu/gii/dass/c01/ReusablePoolTest.java | 25 +++++++++++++++++++ 1 file changed, 25 insertions(+) diff --git a/src/test/java/ubu/gii/dass/c01/ReusablePoolTest.java b/src/test/java/ubu/gii/dass/c01/ReusablePoolTest.java index a044dd06..4b1f6008 100644 --- a/src/test/java/ubu/gii/dass/c01/ReusablePoolTest.java +++ b/src/test/java/ubu/gii/dass/c01/ReusablePoolTest.java @@ -84,5 +84,30 @@ public void testAcquireReusableWhenNoFreeInstances() { } } + /** + * Test method for exception when releasing a duplicate instance. + */ + @Test + @DisplayName("testReleaseReusableDuplicated") + public void testReleaseReusableDuplicated() { + ReusablePool pool = ReusablePool.getInstance(); + + try { + Reusable reusable = pool.acquireReusable(); + + pool.releaseReusable(reusable); + + try { + pool.releaseReusable(reusable); + fail("Should have thrown DuplicatedInstanceException"); + } catch (DuplicatedInstanceException e) { + assertEquals("Ya existe esa instancia en el pool.", e.getMessage()); + } + + } catch (Exception e) { + fail("Unexpected exception: " + e.getMessage()); + } + } + } From 373b726d7295910540970b3499e60c03623a3b5a Mon Sep 17 00:00:00 2001 From: MarioCea <150005508+MarioCea@users.noreply.github.com> Date: Fri, 28 Feb 2025 11:33:26 +0100 Subject: [PATCH 14/26] 1.5 Update ReusablePoolTest.java --- .../ubu/gii/dass/c01/ReusablePoolTest.java | 33 +++++++++++++++++++ 1 file changed, 33 insertions(+) diff --git a/src/test/java/ubu/gii/dass/c01/ReusablePoolTest.java b/src/test/java/ubu/gii/dass/c01/ReusablePoolTest.java index 4b1f6008..4092e422 100644 --- a/src/test/java/ubu/gii/dass/c01/ReusablePoolTest.java +++ b/src/test/java/ubu/gii/dass/c01/ReusablePoolTest.java @@ -109,5 +109,38 @@ public void testReleaseReusableDuplicated() { } } + /** + * Test for proper functioning of the pool with multiple operations. + */ + @Test + @DisplayName("testPoolCycleOperations") + public void testPoolCycleOperations() { + ReusablePool pool = ReusablePool.getInstance(); + + try { + Reusable r1 = pool.acquireReusable(); + Reusable r2 = pool.acquireReusable(); + + assertNotNull(r1, "First reusable should not be null"); + assertNotNull(r2, "Second reusable should not be null"); + assertTrue(r1 != r2, "Should be different objects"); + + pool.releaseReusable(r2); + pool.releaseReusable(r1); + + Reusable r3 = pool.acquireReusable(); + Reusable r4 = pool.acquireReusable(); + + assertSame(r1, r3, "First released object should be first acquired"); + assertSame(r2, r4, "Second released object should be second acquired"); + + pool.releaseReusable(r3); + pool.releaseReusable(r4); + + } catch (Exception e) { + fail("Unexpected exception: " + e.getMessage()); + } + } + } From db8a3f1fab0f48e116be738a476aa90d91dec2fc Mon Sep 17 00:00:00 2001 From: andrespuentesg <150024530+andrespuentesg@users.noreply.github.com> Date: Fri, 28 Feb 2025 11:35:15 +0100 Subject: [PATCH 15/26] 1.6 Update ReusablePoolTest.java From 6ddd26afe3fb0c384d5403ad5e5b391ae7d12d1d Mon Sep 17 00:00:00 2001 From: haleks5 <150005518+haleks5@users.noreply.github.com> Date: Fri, 28 Feb 2025 11:37:59 +0100 Subject: [PATCH 16/26] 1.7 Update ReusablePoolTest.java --- .../java/ubu/gii/dass/c01/ReusablePoolTest.java | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) diff --git a/src/test/java/ubu/gii/dass/c01/ReusablePoolTest.java b/src/test/java/ubu/gii/dass/c01/ReusablePoolTest.java index 4092e422..cf05f446 100644 --- a/src/test/java/ubu/gii/dass/c01/ReusablePoolTest.java +++ b/src/test/java/ubu/gii/dass/c01/ReusablePoolTest.java @@ -143,4 +143,21 @@ public void testPoolCycleOperations() { } + /** + * Test method for Reusable.util() functionality. + */ + @Test + @DisplayName("testReusableUtil") + public void testReusableUtil() { + Reusable reusable = new Reusable(); + + String utilString = reusable.util(); + + assertTrue(utilString.contains(String.valueOf(reusable.hashCode())), + "Util string should contain the object's hashcode"); + assertTrue(utilString.contains(":Uso del objeto Reutilizable"), + "Util string should contain the expected message"); + } + + } From 89fad574409818ddf32c424f1ecad3774903a3bc Mon Sep 17 00:00:00 2001 From: MarioCea <150005508+MarioCea@users.noreply.github.com> Date: Fri, 28 Feb 2025 11:42:25 +0100 Subject: [PATCH 17/26] 1.8 Update ReusablePoolTest.java --- .../ubu/gii/dass/c01/ReusablePoolTest.java | 51 +++++++++++++++---- 1 file changed, 42 insertions(+), 9 deletions(-) diff --git a/src/test/java/ubu/gii/dass/c01/ReusablePoolTest.java b/src/test/java/ubu/gii/dass/c01/ReusablePoolTest.java index cf05f446..500d9be6 100644 --- a/src/test/java/ubu/gii/dass/c01/ReusablePoolTest.java +++ b/src/test/java/ubu/gii/dass/c01/ReusablePoolTest.java @@ -31,14 +31,34 @@ public void testGetInstance() { ReusablePool instance2 = ReusablePool.getInstance(); assertSame(instance1, instance2); } - + /** + * Test method for {@link ubu.gii.dass.c01.ReusablePool#acquireReusable()}. + */ + @Test + @DisplayName("testAcquireReusable") + public void testAcquireReusable() { + + ReusablePool pool = ReusablePool.getInstance(); + try { + + Reusable reusable = pool.acquireReusable(); + + assertNotNull(reusable,"El objeto reusable adquirido no debería ser nulo"); + + assertTrue(reusable instanceof Reusable, "El objeto adquirido debe ser una instancia de Reusable"); + } catch (NotFreeInstanceException e) { + fail("No se lanzaría una excepción si hemos adquirirido un objeto reusable del pool"); + } + + } /** * Test method for {@link ubu.gii.dass.c01.ReusablePool#releaseReusable(ubu.gii.dass.c01.Reusable)}. - * @throws NotFreeInstanceException - */ - @Test - @DisplayName("testReleaseReusable") - public void testReleaseReusable() throws DuplicatedInstanceException, NotFreeInstanceException { ReusablePool pool = ReusablePool.getInstance(); + * @throws NotFreeInstanceException + */ + @Test + @DisplayName("testReleaseReusable") + public void testReleaseReusable() throws DuplicatedInstanceException, NotFreeInstanceException { + ReusablePool pool = ReusablePool.getInstance(); Reusable reusable = new Reusable(); try{ pool.releaseReusable(reusable); @@ -53,7 +73,6 @@ public void testGetInstance() { } } - /** * Test method for exception when no free instances are available. */ @@ -142,7 +161,6 @@ public void testPoolCycleOperations() { } } - /** * Test method for Reusable.util() functionality. */ @@ -159,5 +177,20 @@ public void testReusableUtil() { "Util string should contain the expected message"); } - + /** + * Test method for exception classes. + */ + @Test + @DisplayName("testExceptionMessages") + public void testExceptionMessages() { + NotFreeInstanceException notFreeEx = new NotFreeInstanceException(); + assertEquals("No hay más instancias reutilizables disponibles. Reintentalo más tarde", + notFreeEx.getMessage(), + "NotFreeInstanceException should have correct message"); + + DuplicatedInstanceException dupEx = new DuplicatedInstanceException(); + assertEquals("Ya existe esa instancia en el pool.", + dupEx.getMessage(), + "DuplicatedInstanceException should have correct message"); + } } From 8cdf8046ef4b847569d977050f33fa11333bed4e Mon Sep 17 00:00:00 2001 From: andrespuentesg <150024530+andrespuentesg@users.noreply.github.com> Date: Fri, 28 Feb 2025 11:44:06 +0100 Subject: [PATCH 18/26] Comentado el 66% Codecov --- .../ubu/gii/dass/c01/ReusablePoolTest.java | 376 +++++++++--------- 1 file changed, 192 insertions(+), 184 deletions(-) diff --git a/src/test/java/ubu/gii/dass/c01/ReusablePoolTest.java b/src/test/java/ubu/gii/dass/c01/ReusablePoolTest.java index 500d9be6..a08f55ac 100644 --- a/src/test/java/ubu/gii/dass/c01/ReusablePoolTest.java +++ b/src/test/java/ubu/gii/dass/c01/ReusablePoolTest.java @@ -1,196 +1,204 @@ package ubu.gii.dass.c01; + import static org.junit.jupiter.api.Assertions.assertEquals; import static org.junit.jupiter.api.Assertions.assertNotNull; import static org.junit.jupiter.api.Assertions.assertSame; import static org.junit.jupiter.api.Assertions.assertTrue; import static org.junit.jupiter.api.Assertions.fail; + import org.junit.jupiter.api.AfterAll; import org.junit.jupiter.api.BeforeAll; -import org.junit.jupiter.api.Test; import org.junit.jupiter.api.DisplayName; - +import org.junit.jupiter.api.Test; +/** + * @author Sofía Calavia + * @author Andrés Puentes + * @author Mario Cea + * @author Alejandro García + * + */ public class ReusablePoolTest { - /** - * @throws java.lang.Exception - */ - @BeforeAll - public static void setUp() throws Exception{ - } - - @AfterAll - public static void tearDown() throws Exception { - } - /** - * Test method for {@link ubu.gii.dass.c01.ReusablePool#getInstance()}. - */ - @Test - @DisplayName("testGetInstance") - public void testGetInstance() { - ReusablePool instance1 = ReusablePool.getInstance(); - assertNotNull (instance1,"La instancia adquirida no debe ser nula"); - ReusablePool instance2 = ReusablePool.getInstance(); - assertSame(instance1, instance2); - } - /** - * Test method for {@link ubu.gii.dass.c01.ReusablePool#acquireReusable()}. - */ - @Test - @DisplayName("testAcquireReusable") - public void testAcquireReusable() { - - ReusablePool pool = ReusablePool.getInstance(); - try { - - Reusable reusable = pool.acquireReusable(); - - assertNotNull(reusable,"El objeto reusable adquirido no debería ser nulo"); - - assertTrue(reusable instanceof Reusable, "El objeto adquirido debe ser una instancia de Reusable"); - } catch (NotFreeInstanceException e) { - fail("No se lanzaría una excepción si hemos adquirirido un objeto reusable del pool"); + + /** + * Configuración inicial antes de todas las pruebas + * + * @throws java.lang.Exception + */ + @BeforeAll + public static void setUp() throws Exception { + } + + /** + * Limpieza después de todas las pruebas + * + * @throws java.lang.Exception + */ + @AfterAll + public static void tearDown() throws Exception { + } + + /** + * Método de prueba para {@link ubu.gii.dass.c01.ReusablePool#getInstance()}. + */ + @Test + @DisplayName("testGetInstance") + public void testGetInstance() { + // Obtener dos instancias del singleton ReusablePool + ReusablePool instance1 = ReusablePool.getInstance(); + assertNotNull(instance1, "La instancia adquirida no debe ser nula"); + ReusablePool instance2 = ReusablePool.getInstance(); + assertSame(instance1, instance2); + } + + /** + * Método de prueba para {@link ubu.gii.dass.c01.ReusablePool#acquireReusable()}. + */ + @Test + @DisplayName("testAcquireReusable") + public void testAcquireReusable() { + ReusablePool pool = ReusablePool.getInstance(); + try { + // Adquirir un objeto reusable del pool + Reusable reusable = pool.acquireReusable(); + assertNotNull(reusable, "El objeto reusable adquirido no debería ser nulo"); + assertTrue(reusable instanceof Reusable, "El objeto adquirido debe ser una instancia de Reusable"); + } catch (NotFreeInstanceException e) { + fail("No se lanzaría una excepción si hemos adquirido un objeto reusable del pool"); + } + } + + /** + * Método de prueba para {@link ubu.gii.dass.c01.ReusablePool#releaseReusable(ubu.gii.dass.c01.Reusable)}. + * + * @throws NotFreeInstanceException + */ + @Test + @DisplayName("testReleaseReusable") + public void testReleaseReusable() throws DuplicatedInstanceException, NotFreeInstanceException { + ReusablePool pool = ReusablePool.getInstance(); + Reusable reusable = new Reusable(); + try { + // Liberar el objeto reusable en el pool + pool.releaseReusable(reusable); + Reusable acqReusable = pool.acquireReusable(); + assertEquals(reusable, acqReusable, "El objeto que ha sido adquirido debe ser el mismo que el liberado"); + assertNotNull(pool.acquireReusable(), "El pool debería tener al menos un objeto reusable después de liberarlo"); + } catch (DuplicatedInstanceException e) { + fail("No debería saltar una excepción al liberar un objeto reusable"); + } catch (NotFreeInstanceException e) { + fail("No se debe lanzar una excepción al adquirir un objeto reusable"); } - - } - /** - * Test method for {@link ubu.gii.dass.c01.ReusablePool#releaseReusable(ubu.gii.dass.c01.Reusable)}. - * @throws NotFreeInstanceException - */ - @Test - @DisplayName("testReleaseReusable") - public void testReleaseReusable() throws DuplicatedInstanceException, NotFreeInstanceException { - ReusablePool pool = ReusablePool.getInstance(); - Reusable reusable = new Reusable(); - try{ - pool.releaseReusable(reusable); - Reusable acqReusable = pool.acquireReusable(); - - assertEquals(reusable, acqReusable, "El objeto que ha sido adquirido debe ser el mismo que el liberado"); - assertNotNull(pool.acquireReusable(), "El pool debería tener al menos un objeto reusable después de liberarlo"); - } catch (DuplicatedInstanceException e) { - fail("No debería saltar una excepcion al liberar un objeto reusable"); - } catch (NotFreeInstanceException e) { - fail("No se debe lanzar una excepción al adquirir un objeto reusable"); - } - } - - /** - * Test method for exception when no free instances are available. - */ - @Test - @DisplayName("testAcquireReusableWhenNoFreeInstances") - public void testAcquireReusableWhenNoFreeInstances() { - ReusablePool pool = ReusablePool.getInstance(); - - try { - Reusable r1 = pool.acquireReusable(); - Reusable r2 = pool.acquireReusable(); - - assertNotNull(r1, "First reusable should not be null"); - assertNotNull(r2, "Second reusable should not be null"); - - try { - pool.acquireReusable(); - fail("Should have thrown NotFreeInstanceException"); - } catch (NotFreeInstanceException e) { - assertEquals("No hay más instancias reutilizables disponibles. Reintentalo más tarde", e.getMessage()); - } - - pool.releaseReusable(r1); - pool.releaseReusable(r2); - - } catch (Exception e) { - fail("Unexpected exception: " + e.getMessage()); - } - } - - /** - * Test method for exception when releasing a duplicate instance. - */ - @Test - @DisplayName("testReleaseReusableDuplicated") - public void testReleaseReusableDuplicated() { - ReusablePool pool = ReusablePool.getInstance(); - - try { - Reusable reusable = pool.acquireReusable(); - - pool.releaseReusable(reusable); - - try { - pool.releaseReusable(reusable); - fail("Should have thrown DuplicatedInstanceException"); - } catch (DuplicatedInstanceException e) { - assertEquals("Ya existe esa instancia en el pool.", e.getMessage()); - } - - } catch (Exception e) { - fail("Unexpected exception: " + e.getMessage()); - } - } - - /** - * Test for proper functioning of the pool with multiple operations. - */ - @Test - @DisplayName("testPoolCycleOperations") - public void testPoolCycleOperations() { - ReusablePool pool = ReusablePool.getInstance(); - - try { - Reusable r1 = pool.acquireReusable(); - Reusable r2 = pool.acquireReusable(); - - assertNotNull(r1, "First reusable should not be null"); - assertNotNull(r2, "Second reusable should not be null"); - assertTrue(r1 != r2, "Should be different objects"); - - pool.releaseReusable(r2); - pool.releaseReusable(r1); - - Reusable r3 = pool.acquireReusable(); - Reusable r4 = pool.acquireReusable(); - - assertSame(r1, r3, "First released object should be first acquired"); - assertSame(r2, r4, "Second released object should be second acquired"); - - pool.releaseReusable(r3); - pool.releaseReusable(r4); - - } catch (Exception e) { - fail("Unexpected exception: " + e.getMessage()); - } - } - - /** - * Test method for Reusable.util() functionality. - */ - @Test - @DisplayName("testReusableUtil") - public void testReusableUtil() { - Reusable reusable = new Reusable(); - - String utilString = reusable.util(); - - assertTrue(utilString.contains(String.valueOf(reusable.hashCode())), - "Util string should contain the object's hashcode"); - assertTrue(utilString.contains(":Uso del objeto Reutilizable"), - "Util string should contain the expected message"); - } - - /** - * Test method for exception classes. - */ - @Test - @DisplayName("testExceptionMessages") - public void testExceptionMessages() { - NotFreeInstanceException notFreeEx = new NotFreeInstanceException(); - assertEquals("No hay más instancias reutilizables disponibles. Reintentalo más tarde", - notFreeEx.getMessage(), - "NotFreeInstanceException should have correct message"); - - DuplicatedInstanceException dupEx = new DuplicatedInstanceException(); - assertEquals("Ya existe esa instancia en el pool.", - dupEx.getMessage(), - "DuplicatedInstanceException should have correct message"); - } + } + + /** + * Método de prueba para excepción cuando no hay instancias libres disponibles. + */ + @Test + @DisplayName("testAcquireReusableWhenNoFreeInstances") + public void testAcquireReusableWhenNoFreeInstances() { + ReusablePool pool = ReusablePool.getInstance(); + try { + Reusable r1 = pool.acquireReusable(); + Reusable r2 = pool.acquireReusable(); + assertNotNull(r1, "First reusable should not be null"); + assertNotNull(r2, "Second reusable should not be null"); + + try { + pool.acquireReusable(); + fail("Should have thrown NotFreeInstanceException"); + } catch (NotFreeInstanceException e) { + assertEquals("No hay más instancias reutilizables disponibles. Reinténtalo más tarde", e.getMessage()); + } + + pool.releaseReusable(r1); + pool.releaseReusable(r2); + + } catch (Exception e) { + fail("Unexpected exception: " + e.getMessage()); + } + } + + /** + * Método de prueba para excepción al liberar una instancia duplicada. + */ + @Test + @DisplayName("testReleaseReusableDuplicated") + public void testReleaseReusableDuplicated() { + ReusablePool pool = ReusablePool.getInstance(); + try { + Reusable reusable = pool.acquireReusable(); + pool.releaseReusable(reusable); + + try { + pool.releaseReusable(reusable); + fail("Should have thrown DuplicatedInstanceException"); + } catch (DuplicatedInstanceException e) { + assertEquals("Ya existe esa instancia en el pool.", e.getMessage()); + } + + } catch (Exception e) { + fail("Unexpected exception: " + e.getMessage()); + } + } + + /** + * Prueba para el correcto funcionamiento del pool con múltiples operaciones. + */ + @Test + @DisplayName("testPoolCycleOperations") + public void testPoolCycleOperations() { + ReusablePool pool = ReusablePool.getInstance(); + try { + Reusable r1 = pool.acquireReusable(); + Reusable r2 = pool.acquireReusable(); + assertNotNull(r1, "First reusable should not be null"); + assertNotNull(r2, "Second reusable should not be null"); + assertTrue(r1 != r2, "Should be different objects"); + + pool.releaseReusable(r2); + pool.releaseReusable(r1); + + Reusable r3 = pool.acquireReusable(); + Reusable r4 = pool.acquireReusable(); + assertSame(r1, r3, "First released object should be first acquired"); + assertSame(r2, r4, "Second released object should be second acquired"); + + pool.releaseReusable(r3); + pool.releaseReusable(r4); + + } catch (Exception e) { + fail("Unexpected exception: " + e.getMessage()); + } + } + + /** + * Método de prueba para la funcionalidad Reusable.util(). + */ + @Test + @DisplayName("testReusableUtil") + public void testReusableUtil() { + Reusable reusable = new Reusable(); + String utilString = reusable.util(); + assertTrue(utilString.contains(String.valueOf(reusable.hashCode())), + "Util string should contain the object's hashcode"); + assertTrue(utilString.contains(":Uso del objeto Reutilizable"), + "Util string should contain the expected message"); + } + + /** + * Método de prueba para las clases de excepción. + */ + @Test + @DisplayName("testExceptionMessages") + public void testExceptionMessages() { + NotFreeInstanceException notFreeEx = new NotFreeInstanceException(); + assertEquals("No hay más instancias reutilizables disponibles. Reinténtalo más tarde", + notFreeEx.getMessage(), + "NotFreeInstanceException should have correct message"); + + DuplicatedInstanceException dupEx = new DuplicatedInstanceException(); + assertEquals("Ya existe esa instancia en el pool.", + dupEx.getMessage(), + "DuplicatedInstanceException should have correct message"); + } } From 0b0f75c88b60c32a30f5cd8f60c1087274b8e544 Mon Sep 17 00:00:00 2001 From: andrespuentesg <150024530+andrespuentesg@users.noreply.github.com> Date: Fri, 28 Feb 2025 11:52:46 +0100 Subject: [PATCH 19/26] Comentado y da 66 Codecov --- .../ubu/gii/dass/c01/ReusablePoolTest.java | 399 ++++++++++-------- 1 file changed, 214 insertions(+), 185 deletions(-) diff --git a/src/test/java/ubu/gii/dass/c01/ReusablePoolTest.java b/src/test/java/ubu/gii/dass/c01/ReusablePoolTest.java index a08f55ac..c9c08b52 100644 --- a/src/test/java/ubu/gii/dass/c01/ReusablePoolTest.java +++ b/src/test/java/ubu/gii/dass/c01/ReusablePoolTest.java @@ -1,15 +1,16 @@ +/** + * + */ package ubu.gii.dass.c01; - import static org.junit.jupiter.api.Assertions.assertEquals; import static org.junit.jupiter.api.Assertions.assertNotNull; import static org.junit.jupiter.api.Assertions.assertSame; import static org.junit.jupiter.api.Assertions.assertTrue; import static org.junit.jupiter.api.Assertions.fail; - import org.junit.jupiter.api.AfterAll; import org.junit.jupiter.api.BeforeAll; -import org.junit.jupiter.api.DisplayName; import org.junit.jupiter.api.Test; +import org.junit.jupiter.api.DisplayName; /** * @author Sofía Calavia * @author Andrés Puentes @@ -18,187 +19,215 @@ * */ public class ReusablePoolTest { - - /** - * Configuración inicial antes de todas las pruebas - * - * @throws java.lang.Exception - */ - @BeforeAll - public static void setUp() throws Exception { - } - - /** - * Limpieza después de todas las pruebas - * - * @throws java.lang.Exception - */ - @AfterAll - public static void tearDown() throws Exception { - } - - /** - * Método de prueba para {@link ubu.gii.dass.c01.ReusablePool#getInstance()}. - */ - @Test - @DisplayName("testGetInstance") - public void testGetInstance() { - // Obtener dos instancias del singleton ReusablePool - ReusablePool instance1 = ReusablePool.getInstance(); - assertNotNull(instance1, "La instancia adquirida no debe ser nula"); - ReusablePool instance2 = ReusablePool.getInstance(); - assertSame(instance1, instance2); - } - - /** - * Método de prueba para {@link ubu.gii.dass.c01.ReusablePool#acquireReusable()}. - */ - @Test - @DisplayName("testAcquireReusable") - public void testAcquireReusable() { - ReusablePool pool = ReusablePool.getInstance(); - try { - // Adquirir un objeto reusable del pool - Reusable reusable = pool.acquireReusable(); - assertNotNull(reusable, "El objeto reusable adquirido no debería ser nulo"); - assertTrue(reusable instanceof Reusable, "El objeto adquirido debe ser una instancia de Reusable"); - } catch (NotFreeInstanceException e) { - fail("No se lanzaría una excepción si hemos adquirido un objeto reusable del pool"); - } - } - - /** - * Método de prueba para {@link ubu.gii.dass.c01.ReusablePool#releaseReusable(ubu.gii.dass.c01.Reusable)}. - * - * @throws NotFreeInstanceException - */ - @Test - @DisplayName("testReleaseReusable") - public void testReleaseReusable() throws DuplicatedInstanceException, NotFreeInstanceException { - ReusablePool pool = ReusablePool.getInstance(); - Reusable reusable = new Reusable(); - try { - // Liberar el objeto reusable en el pool - pool.releaseReusable(reusable); - Reusable acqReusable = pool.acquireReusable(); - assertEquals(reusable, acqReusable, "El objeto que ha sido adquirido debe ser el mismo que el liberado"); - assertNotNull(pool.acquireReusable(), "El pool debería tener al menos un objeto reusable después de liberarlo"); - } catch (DuplicatedInstanceException e) { - fail("No debería saltar una excepción al liberar un objeto reusable"); - } catch (NotFreeInstanceException e) { - fail("No se debe lanzar una excepción al adquirir un objeto reusable"); - } - } - - /** - * Método de prueba para excepción cuando no hay instancias libres disponibles. - */ - @Test - @DisplayName("testAcquireReusableWhenNoFreeInstances") - public void testAcquireReusableWhenNoFreeInstances() { - ReusablePool pool = ReusablePool.getInstance(); - try { - Reusable r1 = pool.acquireReusable(); - Reusable r2 = pool.acquireReusable(); - assertNotNull(r1, "First reusable should not be null"); - assertNotNull(r2, "Second reusable should not be null"); - - try { - pool.acquireReusable(); - fail("Should have thrown NotFreeInstanceException"); - } catch (NotFreeInstanceException e) { - assertEquals("No hay más instancias reutilizables disponibles. Reinténtalo más tarde", e.getMessage()); - } - - pool.releaseReusable(r1); - pool.releaseReusable(r2); - - } catch (Exception e) { - fail("Unexpected exception: " + e.getMessage()); - } - } - - /** - * Método de prueba para excepción al liberar una instancia duplicada. - */ - @Test - @DisplayName("testReleaseReusableDuplicated") - public void testReleaseReusableDuplicated() { - ReusablePool pool = ReusablePool.getInstance(); - try { - Reusable reusable = pool.acquireReusable(); - pool.releaseReusable(reusable); - - try { - pool.releaseReusable(reusable); - fail("Should have thrown DuplicatedInstanceException"); - } catch (DuplicatedInstanceException e) { - assertEquals("Ya existe esa instancia en el pool.", e.getMessage()); - } - - } catch (Exception e) { - fail("Unexpected exception: " + e.getMessage()); + /** + * @throws java.lang.Exception + */ + @BeforeAll + public static void setUp() throws Exception{ + } + + @AfterAll + public static void tearDown() throws Exception { + } + /** + * Test method for {@link ubu.gii.dass.c01.ReusablePool#getInstance()}. + */ + @Test + @DisplayName("testGetInstance") + public void testGetInstance() { + // Crear una instancia del pool + ReusablePool instance1 = ReusablePool.getInstance(); + //Verifica que la instancia no sea nula + assertNotNull (instance1,"La instancia adquirida no debe ser nula"); + //Comprueba si la instancia 1 es igual que la instancia 2 + ReusablePool instance2 = ReusablePool.getInstance(); + assertSame(instance1, instance2); + } + /** + * Test method for {@link ubu.gii.dass.c01.ReusablePool#acquireReusable()}. + */ + @Test + @DisplayName("testAcquireReusable") + public void testAcquireReusable() { + // Crear una instancia del pool + ReusablePool pool = ReusablePool.getInstance(); + try { + //Va a adquirir un objeto reusable del pool + Reusable reusable = pool.acquireReusable(); + // Verifica que el objeto reusable adquirido no es nulo + assertNotNull(reusable,"El objeto reusable adquirido no debería ser nulo"); + // Verifica que el objeto adquirido es una instancia de la clase Reusable + assertTrue(reusable instanceof Reusable, "El objeto adquirido debe ser una instancia de Reusable"); + } catch (NotFreeInstanceException e) { + // Si hay excepción, imprimirá un mensaje de error + fail("No se lanzaría una excepción si hemos adquirirido un objeto reusable del pool"); } - } - - /** - * Prueba para el correcto funcionamiento del pool con múltiples operaciones. - */ - @Test - @DisplayName("testPoolCycleOperations") - public void testPoolCycleOperations() { - ReusablePool pool = ReusablePool.getInstance(); - try { - Reusable r1 = pool.acquireReusable(); - Reusable r2 = pool.acquireReusable(); - assertNotNull(r1, "First reusable should not be null"); - assertNotNull(r2, "Second reusable should not be null"); - assertTrue(r1 != r2, "Should be different objects"); - - pool.releaseReusable(r2); - pool.releaseReusable(r1); - - Reusable r3 = pool.acquireReusable(); - Reusable r4 = pool.acquireReusable(); - assertSame(r1, r3, "First released object should be first acquired"); - assertSame(r2, r4, "Second released object should be second acquired"); - - pool.releaseReusable(r3); - pool.releaseReusable(r4); - - } catch (Exception e) { - fail("Unexpected exception: " + e.getMessage()); - } - } - - /** - * Método de prueba para la funcionalidad Reusable.util(). - */ - @Test - @DisplayName("testReusableUtil") - public void testReusableUtil() { - Reusable reusable = new Reusable(); - String utilString = reusable.util(); - assertTrue(utilString.contains(String.valueOf(reusable.hashCode())), - "Util string should contain the object's hashcode"); - assertTrue(utilString.contains(":Uso del objeto Reutilizable"), - "Util string should contain the expected message"); - } - - /** - * Método de prueba para las clases de excepción. - */ - @Test - @DisplayName("testExceptionMessages") - public void testExceptionMessages() { - NotFreeInstanceException notFreeEx = new NotFreeInstanceException(); - assertEquals("No hay más instancias reutilizables disponibles. Reinténtalo más tarde", - notFreeEx.getMessage(), - "NotFreeInstanceException should have correct message"); - - DuplicatedInstanceException dupEx = new DuplicatedInstanceException(); - assertEquals("Ya existe esa instancia en el pool.", - dupEx.getMessage(), - "DuplicatedInstanceException should have correct message"); - } + + } + /** + * Test method for {@link ubu.gii.dass.c01.ReusablePool#releaseReusable(ubu.gii.dass.c01.Reusable)}. + * @throws NotFreeInstanceException + */ + @Test + @DisplayName("testReleaseReusable") + public void testReleaseReusable() throws DuplicatedInstanceException, NotFreeInstanceException { + // Crear una instancia del pool + ReusablePool pool = ReusablePool.getInstance(); + //Crea un nuevo objeto reusable + Reusable reusable = new Reusable(); + try{ + //Libera este objeto del pool + pool.releaseReusable(reusable); + //Intenta adquirir un nuevo objeto de este + Reusable acqReusable = pool.acquireReusable(); + // Verifica si el objeto adquirido es el mismo que el objeto liberado + assertEquals(reusable, acqReusable, "El objeto que ha sido adquirido debe ser el mismo que el liberado"); + //Verifica que el poll tiene un objeto antes de liberarlo + assertNotNull(pool.acquireReusable(), "El pool debería tener al menos un objeto reusable después de liberarlo"); + } catch (DuplicatedInstanceException e) { + //Si se lanza una excepción, imprime un mensaje de error + fail("No debería saltar una excepcion al liberar un objeto reusable"); + } catch (NotFreeInstanceException e) { + //Si se lanza una excepción, imprime un mensaje de error + fail("No se debe lanzar una excepción al adquirir un objeto reusable"); + } + } + + /** + * Test method for exception when no free instances are available. + */ + @Test + @DisplayName("testAcquireReusableWhenNoFreeInstances") + public void testAcquireReusableWhenNoFreeInstances() { + // Instancia un pool + ReusablePool pool = ReusablePool.getInstance(); + + try { + // Adquiere 2 pools disponibles + Reusable r1 = pool.acquireReusable(); + Reusable r2 = pool.acquireReusable(); + + // Verifica que ambos objetos no son nulls y que estan instanciados + assertNotNull(r1, "First reusable should not be null"); + assertNotNull(r2, "Second reusable should not be null"); + + // Trata de adquirir un tercer reusable (deberia hacer un throw NotFreeInstanceException) + try { + pool.acquireReusable(); + fail("Should have thrown NotFreeInstanceException"); + } catch (NotFreeInstanceException e) { + // Excepcion esperada + assertEquals("No hay más instancias reutilizables disponibles. Reintentalo más tarde", e.getMessage()); + } + // Limpia y devuelve los objetos al pool + pool.releaseReusable(r1); + pool.releaseReusable(r2); + + } catch (Exception e) { + fail("Unexpected exception: " + e.getMessage()); + } + } + + /** + * Test method for exception when releasing a duplicate instance. + */ + @Test + @DisplayName("testReleaseReusableDuplicated") + public void testReleaseReusableDuplicated() { + // Instancia un pool + ReusablePool pool = ReusablePool.getInstance(); + + try { + // Adquiere a reusable + Reusable reusable = pool.acquireReusable(); + pool.releaseReusable(reusable); + + // Intenta hacerlo de nuevo (sino throw DuplicatedInstanceException) + try { + pool.releaseReusable(reusable); + fail("Should have thrown DuplicatedInstanceException"); + } catch (DuplicatedInstanceException e) { + // Excepcion esperada + assertEquals("Ya existe esa instancia en el pool.", e.getMessage()); + } + + } catch (Exception e) { + fail("Unexpected exception: " + e.getMessage()); + } + } + + /** + * Test for proper functioning of the pool with multiple operations. + */ + @Test + @DisplayName("testPoolCycleOperations") + public void testPoolCycleOperations() { + // Consigue la instancia pool + ReusablePool pool = ReusablePool.getInstance(); + + try { + // Paso 1: adquiere todas las variables reusables disponibles + Reusable r1 = pool.acquireReusable(); + Reusable r2 = pool.acquireReusable(); + + // Paso 2: Verifica que sean objetos diferentes + assertNotNull(r1, "First reusable should not be null"); + assertNotNull(r2, "Second reusable should not be null"); + assertTrue(r1 != r2, "Should be different objects"); + + // Paso 3: Cambia el orden + pool.releaseReusable(r2); + pool.releaseReusable(r1); + + // Paso 4: Readquiere y verifica el orden LIFO + Reusable r3 = pool.acquireReusable(); + Reusable r4 = pool.acquireReusable(); + + // El pool deberia de retornar objetos siguiendo el orden LIFO + assertSame(r1, r3, "First released object should be first acquired"); + assertSame(r2, r4, "Second released object should be second acquired"); + + pool.releaseReusable(r3); + pool.releaseReusable(r4); + + } catch (Exception e) { + fail("Unexpected exception: " + e.getMessage()); + } + } + + /** + * Test method for Reusable.util() functionality. + */ + @Test + @DisplayName("testReusableUtil") + public void testReusableUtil() { + // Crea un objeto reusable y un string + Reusable reusable = new Reusable(); + String utilString = reusable.util(); + + // Verifica si contiene lo esperado + assertTrue(utilString.contains(String.valueOf(reusable.hashCode())), + "Util string should contain the object's hashcode"); + assertTrue(utilString.contains(":Uso del objeto Reutilizable"), + "Util string should contain the expected message"); + } + + /** + * Test method for exception classes. + */ + @Test + @DisplayName("testExceptionMessages") + public void testExceptionMessages() { + // Test NotFreeInstanceException + NotFreeInstanceException notFreeEx = new NotFreeInstanceException(); + assertEquals("No hay más instancias reutilizables disponibles. Reintentalo más tarde", + notFreeEx.getMessage(), + "NotFreeInstanceException should have correct message"); + + // Test DuplicatedInstanceException + DuplicatedInstanceException dupEx = new DuplicatedInstanceException(); + assertEquals("Ya existe esa instancia en el pool.", + dupEx.getMessage(), + "DuplicatedInstanceException should have correct message"); + } } From 9aa9fdaf5aef9c80bda7de287ad1aec0a6d10863 Mon Sep 17 00:00:00 2001 From: SofiaCalaviaGomez <129267309+SofiaCalaviaGomez@users.noreply.github.com> Date: Fri, 28 Feb 2025 12:36:32 +0100 Subject: [PATCH 20/26] Update README.md --- README.md | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/README.md b/README.md index 9d40ca3d..d176a0a9 100644 --- a/README.md +++ b/README.md @@ -11,3 +11,11 @@ Authors: - Carlos Lopez Nozal - Jesus Alonso Abad + +Editors: + +- @SofiaCalaviaGomez - Sofía Calavia +- @Haleks5 -Alejandro García +- @Andrespuentesg -Andrés Puentes +- @Mariocea -Mario Cea + From 8ee37f8eeecc31169ed4b817c60ca10beffa65d3 Mon Sep 17 00:00:00 2001 From: MarioCea <150005508+MarioCea@users.noreply.github.com> Date: Tue, 4 Mar 2025 18:04:53 +0100 Subject: [PATCH 21/26] Update src/test/java/ubu/gii/dass/c01/ReusablePoolTest.java Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> --- src/test/java/ubu/gii/dass/c01/ReusablePoolTest.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/test/java/ubu/gii/dass/c01/ReusablePoolTest.java b/src/test/java/ubu/gii/dass/c01/ReusablePoolTest.java index c9c08b52..db9e0b6f 100644 --- a/src/test/java/ubu/gii/dass/c01/ReusablePoolTest.java +++ b/src/test/java/ubu/gii/dass/c01/ReusablePoolTest.java @@ -82,7 +82,7 @@ public void testReleaseReusable() throws DuplicatedInstanceException, NotFreeIns Reusable acqReusable = pool.acquireReusable(); // Verifica si el objeto adquirido es el mismo que el objeto liberado assertEquals(reusable, acqReusable, "El objeto que ha sido adquirido debe ser el mismo que el liberado"); - //Verifica que el poll tiene un objeto antes de liberarlo + //Verifica que el pool tiene un objeto antes de liberarlo assertNotNull(pool.acquireReusable(), "El pool debería tener al menos un objeto reusable después de liberarlo"); } catch (DuplicatedInstanceException e) { //Si se lanza una excepción, imprime un mensaje de error From 416af2829c71d12c94a95fabcc0b5a7df0108fd0 Mon Sep 17 00:00:00 2001 From: andrespuentesg <150024530+andrespuentesg@users.noreply.github.com> Date: Thu, 13 Mar 2025 16:47:32 +0100 Subject: [PATCH 22/26] Update README.md --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index d176a0a9..ed652f88 100644 --- a/README.md +++ b/README.md @@ -2,7 +2,7 @@ poolobject ========== [![codecov](https://codecov.io/gh/SofiaCalaviaGomez/Poolobject/graph/badge.svg?token=R35YMOPP2V)](https://codecov.io/gh/SofiaCalaviaGomez/Poolobject) - +[![codebeat badge](https://codebeat.co/badges/797148b4-c42b-4a7a-a2e1-4b3d41f8dce7)](https://codebeat.co/projects/github-com-chendye-badges-demo-master) Java code example of creational design pattern pool object Workshop to use good practices in software development: testing, ci and measurement. From e1d97c9d7260ee16c51dd61b4013cc1ddc7c3f61 Mon Sep 17 00:00:00 2001 From: andrespuentesg <150024530+andrespuentesg@users.noreply.github.com> Date: Thu, 13 Mar 2025 17:39:29 +0100 Subject: [PATCH 23/26] Markdown de Codecov --- README.md | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index ed652f88..b17b72d1 100644 --- a/README.md +++ b/README.md @@ -2,7 +2,9 @@ poolobject ========== [![codecov](https://codecov.io/gh/SofiaCalaviaGomez/Poolobject/graph/badge.svg?token=R35YMOPP2V)](https://codecov.io/gh/SofiaCalaviaGomez/Poolobject) -[![codebeat badge](https://codebeat.co/badges/797148b4-c42b-4a7a-a2e1-4b3d41f8dce7)](https://codebeat.co/projects/github-com-chendye-badges-demo-master) + +[![codebeat badge](https://codebeat.co/badges/2abe3899-b4d8-4895-94d1-c2fc4711fe91)](https://codebeat.co/projects/github-com-andrespuentesg-poolobject-master) + Java code example of creational design pattern pool object Workshop to use good practices in software development: testing, ci and measurement. From 0123e15cbee26330c2a2c11e9b399b72aabfeab6 Mon Sep 17 00:00:00 2001 From: haleks5 <150005518+haleks5@users.noreply.github.com> Date: Thu, 13 Mar 2025 17:48:44 +0100 Subject: [PATCH 24/26] Update README.md --- README.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/README.md b/README.md index b17b72d1..543f5d6a 100644 --- a/README.md +++ b/README.md @@ -5,6 +5,8 @@ poolobject [![codebeat badge](https://codebeat.co/badges/2abe3899-b4d8-4895-94d1-c2fc4711fe91)](https://codebeat.co/projects/github-com-andrespuentesg-poolobject-master) +[![Maintainability](https://api.codeclimate.com/v1/badges/7804cde0fee384324c3a/maintainability)](https://codeclimate.com/github/haleks5/Poolobject/maintainability) + Java code example of creational design pattern pool object Workshop to use good practices in software development: testing, ci and measurement. From e034ee777474eb21580ad15818589454cd75bc11 Mon Sep 17 00:00:00 2001 From: MarioCea <150005508+MarioCea@users.noreply.github.com> Date: Thu, 13 Mar 2025 18:30:14 +0100 Subject: [PATCH 25/26] Update README.md --- README.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/README.md b/README.md index 543f5d6a..56acfaf8 100644 --- a/README.md +++ b/README.md @@ -7,6 +7,8 @@ poolobject [![Maintainability](https://api.codeclimate.com/v1/badges/7804cde0fee384324c3a/maintainability)](https://codeclimate.com/github/haleks5/Poolobject/maintainability) +[![Quality Gate Status](https://sonarcloud.io/api/project_badges/measure?project=MarioCea_Poolobject&metric=alert_status)](https://sonarcloud.io/summary/new_code?id=MarioCea_Poolobject) + Java code example of creational design pattern pool object Workshop to use good practices in software development: testing, ci and measurement. From b60657f213052ffc7e5a86c093fd105cf74ff8da Mon Sep 17 00:00:00 2001 From: haleks5 <150005518+haleks5@users.noreply.github.com> Date: Thu, 13 Mar 2025 19:35:21 +0100 Subject: [PATCH 26/26] Update README.md --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 56acfaf8..1fa19cca 100644 --- a/README.md +++ b/README.md @@ -5,7 +5,7 @@ poolobject [![codebeat badge](https://codebeat.co/badges/2abe3899-b4d8-4895-94d1-c2fc4711fe91)](https://codebeat.co/projects/github-com-andrespuentesg-poolobject-master) -[![Maintainability](https://api.codeclimate.com/v1/badges/7804cde0fee384324c3a/maintainability)](https://codeclimate.com/github/haleks5/Poolobject/maintainability) +[![Maintainability](https://api.codeclimate.com/v1/badges/c978d5bde52a3f8c8c7b/maintainability)](https://codeclimate.com/github/haleks5/Poolobject/maintainability) [![Quality Gate Status](https://sonarcloud.io/api/project_badges/measure?project=MarioCea_Poolobject&metric=alert_status)](https://sonarcloud.io/summary/new_code?id=MarioCea_Poolobject)