diff --git a/.classpath b/.classpath
new file mode 100644
index 00000000..bff161fd
--- /dev/null
+++ b/.classpath
@@ -0,0 +1,10 @@
+
+
+
+
+
+
+
+
+
+
diff --git a/.github/workflows/ant.yml b/.github/workflows/ant.yml
new file mode 100644
index 00000000..56c581ac
--- /dev/null
+++ b/.github/workflows/ant.yml
@@ -0,0 +1,28 @@
+# This workflow will build a Java project with Ant
+# For more information see: https://help.github.com/actions/language-and-framework-guides/building-and-testing-java-with-ant
+
+name: Java CI
+
+on:
+ push:
+ branches: [ master ]
+ pull_request:
+ branches: [ master ]
+
+jobs:
+ build:
+
+ runs-on: ubuntu-latest
+
+ steps:
+ - uses: actions/checkout@v2
+ - name: Set up JDK 11
+ uses: actions/setup-java@v2
+ with:
+ java-version: '11'
+ distribution: 'temurin'
+ - name: Build with Ant
+ run: ant -noinput -buildfile build.xml
+ - name: Test with Ant
+ run: ant -buildfile build.xml test
+ - uses: codecov/codecov-action@v1
diff --git a/.project b/.project
new file mode 100644
index 00000000..f9b4c626
--- /dev/null
+++ b/.project
@@ -0,0 +1,17 @@
+
+
+ git_poolobject
+
+
+
+
+
+ org.eclipse.jdt.core.javabuilder
+
+
+
+
+
+ org.eclipse.jdt.core.javanature
+
+
diff --git a/.travis.yml b/.travis.yml
index 60b2ed00..aa9ea62f 100644
--- a/.travis.yml
+++ b/.travis.yml
@@ -1,7 +1,10 @@
language: java
before_script:
- sudo apt-get install ant-optional
+before_install:
+ - sudo apt-get install jq
+ - wget -O ~/codacy-coverage-reporter-assembly-latest.jar $(curl https://api.github.com/repos/codacy/codacy-coverage-reporter/releases/latest | jq -r .assets[0].browser_download_url)
after_success:
- - bash <(curl -s https://codecov.io/bash)
+ - java -jar ~/codacy-coverage-reporter-assembly-latest.jar report -l Java -r target/jacoco/jacoco.xml
jdk:
- openjdk8
diff --git a/README.md b/README.md
index 4078dc6e..feb0d6a9 100644
--- a/README.md
+++ b/README.md
@@ -1,6 +1,63 @@
+[](https://codecov.io/gh/andonivianez/poolobject)
+
+
+=======
+
poolobject
==========
-Java code example of design creational pattern pool object
+## **Autores**
+- [Andoni Vianez Ulloa](https://github.com/andonivianez)
+- [Yobana Nido Álvarez](https://github.com/Yobana)
+
+
+
+## **Objetivos de la práctica**
+- Comprender los objetivos de medición relacionados con la caracterización y la evaluación de productos, procesos y recursos software
+- Comprender, aplicar y analizar técnicas de medición sobre entidades de productos software relacionados con conjuntos de pruebas de software
+- Comprender, aplicar y analizar medidas relacionadas sobre entidades de proceso y recursos de prueba del software
+
+## **Enunciado**
+- En la práctica se va simular un pequeño desarrollo de un producto software para realizar mediciones sobre él. El objetivo es establecer un caso de estudio que sirva para caracterizar y evaluar tanto el producto desarrollado como el proceso seguido.
+
+## **Preguntas**
+
+**¿Se ha realizado trabajo en equipo?**
+Sí, hemos participado los dos integrantes del equipo:
+
+**¿Tiene calidad el conjunto de pruebas disponibles?**
+Sí ya que superan el 94% del coverage en la carpeta principal (main).
+
+**¿Cuál es el esfuerzo invertido en realizar la actividad?**
+El esfuerzo ha sido compartido entre ambos, repartiéndonos por un lado la creación del fork e indagación de las herramientas,
+y por el otro el desarrollo de los propios tests. El mayor problema (por llamarlo de alguna manera) es la cuestión de los permisos
+en Github, ya que el que no es propietario del fork no puede vincularlo a Codecov. El descubrir cómo funcionan las Actions ha sido interesante,
+mucho más fácil que utilizar una herramienta externa como Travis.
+
+=======
+
+
+## **Objetivos de la práctica**
+- Comprender los objetivos de medición relacionados con la caracterización y la evaluación de productos, procesos y recursos software
+- Comprender, aplicar y analizar técnicas de medición sobre entidades de productos software relacionados con conjuntos de pruebas de software
+- Comprender, aplicar y analizar medidas relacionadas sobre entidades de proceso y recursos de prueba del software
+
+## **Enunciado**
+- En la práctica se va simular un pequeño desarrollo de un producto software para realizar mediciones sobre él. El objetivo es establecer un caso de estudio que sirva para caracterizar y evaluar tanto el producto desarrollado como el proceso seguido.
+
+## **Preguntas**
+
+**¿Se ha realizado trabajo en equipo?**
+Sí, hemos participado los dos integrantes del equipo:
+
+**¿Tiene calidad el conjunto de pruebas disponibles?**
+Sí ya que superan el 94% del coverage en la carpeta principal (main).
+
+**¿Cuál es el esfuerzo invertido en realizar la actividad?**
+El esfuerzo ha sido compartido entre ambos, repartiéndonos por un lado la creación del fork e indagación de las herramientas,
+y por el otro el desarrollo de los propios tests. El mayor problema (por llamarlo de alguna manera) es la cuestión de los permisos
+en Github, ya que el que no es propietario del fork no puede vincularlo a Codecov. El descubrir cómo funcionan las Actions ha sido interesante,
+mucho más fácil que utilizar una herramienta externa como Travis.
-Example to apply good practise in software developmemnt: test and mesurement.
+**¿Cuál es el número de fallos encontrados en el código?**
+No encontramos ningún fallo en el código (compila correctamente tal y como puede verse en Github Actions).
diff --git a/cobertura.xml b/cobertura.xml
new file mode 100644
index 00000000..afd10955
--- /dev/null
+++ b/cobertura.xml
@@ -0,0 +1,37 @@
+ versión xml = " 1.0 " ?>
+
+< cobertura líneas-válidas = " 8 " líneas-cubiertas = " 8 " línea-tarifa = " 1 " ramas-válidas = " 4 " ramas-cubiertas = " 4 " rama-tasa = " 1 " timestamp = " 1394890504210 " complejidad = " 0 " versión = " 0.1 " >
+ < fuentes >
+ < fuente >fuentes fuente >
+ fuentes >
+ < paquetes >
+ < nombre del paquete = " 3 " line-rate = " 1 " branch-rate = " 1 " >
+ < clases >
+ < nombre de clase = " cc.js " nombre de archivo = " cc.js " line-rate = " 1 " branch-rate = " 1 " >
+ < métodos >
+ < nombre del método = " normalizar " aciertos = " 11 " firma = " ()V " >
+ < líneas >
+ < número de línea = " 1 " hits = " 11 " />
+ lineas >
+ método >
+ < nombre del método = " getBrand " visitas = " 7 " firma = " ()V " >
+ < líneas >
+ < número de línea = " 5 " hits = " 7 " />
+ lineas >
+ método >
+ métodos >
+ < líneas >
+ < número de línea = " 1 " hits = " 1 " branch = " false " />
+ < número de línea = " 2 " hits = " 11 " branch = " false " />
+ < número de línea = " 5 " hits = " 1 " branch = " false " />
+ < número de línea = " 6 " hits = " 7 " branch = " false " />
+ < número de línea = " 15 " hits = " 7 " branch = " false " />
+ < número de línea = " 17 " hits = " 7 " branch = " false " />
+ < número de línea = " 18 " hits = " 25 " branch = " true " condition-coverage = " 100% (4/4) " />
+ < número de línea = " 20 " hits = " 6 " branch = " false " />
+ lineas >
+ clase >
+ clases >
+ paquete >
+ paquetes >
+ cobertura >
\ No newline at end of file
diff --git a/src/main/ubu/gii/dass/c01/Client.java b/src/main/ubu/gii/dass/c01/Client.java
index 2ec1d57f..99d12cb4 100644
--- a/src/main/ubu/gii/dass/c01/Client.java
+++ b/src/main/ubu/gii/dass/c01/Client.java
@@ -8,7 +8,9 @@ public class Client{
public static void main(String arg[]) throws NotFreeInstanceException, DuplicatedInstanceException{
ReusablePool pool;
- Reusable r1,r2,r3;
+ Reusable r1;
+ Reusable r2;
+ Reusable r3;
Logger logger = Logger.getLogger("c01");
@@ -31,4 +33,4 @@ public static void main(String arg[]) throws NotFreeInstanceException, Duplicate
}
-}
\ No newline at end of file
+}
diff --git a/src/test/ubu/gii/dass/test/c01/ReusablePoolTest.java b/src/test/ubu/gii/dass/test/c01/ReusablePoolTest.java
index ae9b0d18..d07b9a8d 100644
--- a/src/test/ubu/gii/dass/test/c01/ReusablePoolTest.java
+++ b/src/test/ubu/gii/dass/test/c01/ReusablePoolTest.java
@@ -9,17 +9,26 @@
import org.junit.Before;
import org.junit.Test;
+import ubu.gii.dass.c01.DuplicatedInstanceException;
+import ubu.gii.dass.c01.NotFreeInstanceException;
+import ubu.gii.dass.c01.Reusable;
+import ubu.gii.dass.c01.ReusablePool;
+import ubu.gii.dass.c01.Client;
+
/**
- * @author alumno
+ * @author Andoni Vianez Ulloa
+ * @author Yobana Nido Alvarez
*
*/
public class ReusablePoolTest {
-
+
+ private ReusablePool pool;
/**
* @throws java.lang.Exception
*/
@Before
public void setUp() throws Exception {
+ pool = ReusablePool.getInstance();
}
/**
@@ -27,6 +36,7 @@ public void setUp() throws Exception {
*/
@After
public void tearDown() throws Exception {
+ pool = null;
}
/**
@@ -34,23 +44,78 @@ public void tearDown() throws Exception {
*/
@Test
public void testGetInstance() {
- fail("Not yet implemented");
+ ReusablePool pool = ReusablePool.getInstance();
+ // Comprobamos que no es null
+ assertNotNull("Devuelve un objeto nulo", pool);
+ // Comprobamos que el objeto devuelto es una instancia
+ assertTrue(pool instanceof ReusablePool);
+
+ ReusablePool pool2 = ReusablePool.getInstance();
+ // Comprobamos que no es null
+ assertNotNull("Devuelve un objeto nulo", pool2);
+ // Comprobamos que el objeto devuelto es una instancia
+ assertTrue(pool2 instanceof ReusablePool);
+ assertSame("Misma instancia que el Singleton", pool, pool2);
}
/**
* Test method for {@link ubu.gii.dass.c01.ReusablePool#acquireReusable()}.
+ * @throws NotFreeInstanceException
*/
@Test
- public void testAcquireReusable() {
- fail("Not yet implemented");
+ public void testAcquireReusable() throws NotFreeInstanceException {
+ Reusable r1, r2, r3 = null;
+ try {
+ r1 = pool.acquireReusable();
+ assertNotNull(r1);
+ assertTrue(r1 instanceof Reusable);
+ r2 = pool.acquireReusable();
+ assertNotNull(r2);
+ assertTrue(r2 instanceof Reusable);
+ // Se comprueba que no son el mismo objeto
+ assertFalse(r1.util().equals(r2.util()));
+ r3 = pool.acquireReusable();
+ } catch (NotFreeInstanceException e) {
+ assertNull(r3);
+ }
}
/**
* Test method for {@link ubu.gii.dass.c01.ReusablePool#releaseReusable(ubu.gii.dass.c01.Reusable)}.
+ * @throws NotFreeInstanceException
+ * @throws DuplicatedInstanceException
+ */
+ @Test
+ public void testReleaseReusable() throws NotFreeInstanceException, DuplicatedInstanceException {
+ Reusable r1, r2 = null;
+ try {
+ r1 = pool.acquireReusable();
+ String hash1 = r1.util(); // Guardamos
+ pool.releaseReusable(r1); // Liberamos
+ r2 = pool.acquireReusable(); // Cogemos un nuevo reusable
+ assertTrue(hash1.equals(r2.util()));
+ pool.releaseReusable(r2); // Liberamos
+ pool.releaseReusable(r2); // Liberamos y salta la excepción
+ } catch (NotFreeInstanceException e) {
+ e.printStackTrace();
+ } catch (DuplicatedInstanceException e) {
+ assertTrue(true);
+ }
+ }
+
+ /**
+ * Test method for {@link ubu.gii.dass.c01.Client#main(ubu.gii.dass.c01.Client)}.
+ * @throws DuplicatedInstanceException
+ * @throws NotFreeInstanceException
*/
+ @SuppressWarnings("static-access")
@Test
- public void testReleaseReusable() {
- fail("Not yet implemented");
+ public void testClient() throws NotFreeInstanceException, DuplicatedInstanceException {
+ Client client = new Client();
+ assertNotNull(client);
+ assertTrue(client instanceof Client);
+
+ client.main(null);
}
}