diff --git a/.classpath b/.classpath new file mode 100644 index 0000000000000000000000000000000000000000..007020e241febdf2f501551f6e7b2b9a96223bac --- /dev/null +++ b/.classpath @@ -0,0 +1,27 @@ +<?xml version="1.0" encoding="UTF-8"?> +<classpath> + <classpathentry kind="src" output="target/classes" path="src/main/java/"> + <attributes> + <attribute name="optional" value="true"/> + <attribute name="maven.pomderived" value="true"/> + </attributes> + </classpathentry> + <classpathentry kind="src" output="target/test-classes" path="src/test/java/"> + <attributes> + <attribute name="optional" value="true"/> + <attribute name="maven.pomderived" value="true"/> + </attributes> + </classpathentry> + <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.8"> + <attributes> + <attribute name="maven.pomderived" value="true"/> + </attributes> + </classpathentry> + <classpathentry kind="con" path="org.eclipse.jdt.junit.JUNIT_CONTAINER/4"/> + <classpathentry kind="con" path="org.eclipse.m2e.MAVEN2_CLASSPATH_CONTAINER"> + <attributes> + <attribute name="maven.pomderived" value="true"/> + </attributes> + </classpathentry> + <classpathentry kind="output" path="target/classes"/> +</classpath> diff --git a/.gitignore b/.gitignore index f78622ce4db553b85bc1139478a3fd49e6298c49..fd3c34a602ea5e87284591e1f3c18ed7fa563b64 100644 --- a/.gitignore +++ b/.gitignore @@ -19,4 +19,7 @@ *.rar # virtual machine crash logs, see http://www.java.com/en/download/help/error_hotspot.xml -hs_err_pid* \ No newline at end of file +hs_err_pid* + +/bin/ +/target/ diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml new file mode 100644 index 0000000000000000000000000000000000000000..1c6c11f1ceb24b74b652cef7f143106e7abffda6 --- /dev/null +++ b/.gitlab-ci.yml @@ -0,0 +1,63 @@ +image: maven:3.5.0-jdk-8-alpine + +variables: + MAVEN_CLI_OPTS: "-s .m2/settings.xml --batch-mode" + JACOCO_AGENT: "target/coverage/jacoco.exec" + +stages: + - build + - test + - qa + +cache: + paths: + - .m2/repository + - target/ + +build_job: + stage: build + script: + - mvn --batch-mode compile -Dmaven.test.skip=true -Djacoco.skip=true + +test_unit: + stage: test + script: + - mvn test -P Unit + +test_isolation: + stage: test + script: + - mvn test -P Isolation + except: + - master + +test_integration: + stage: test + script: + - mvn test -P Integration + only: + - master + +sonar_publish_job: + stage: qa + before_script: + - mvn -Djacoco.destFile=$JACOCO_AGENT clean org.jacoco:jacoco-maven-plugin:0.7.8:prepare-agent install + - mvn -X -Djacoco.dataFile=$JACOCO_AGENT -Djacoco.outputDirectory=./jacoco_ut org.jacoco:jacoco-maven-plugin:report + script: + - mvn --batch-mode verify jxr:jxr pmd:pmd sonar:sonar -Dsonar.host.url=$SONAR_URL -Dsonar.login=$SONAR_USER_TOKEN -Dsonar.analysis.mode=publish -Dsonar.issuesReport.console.enable=true -Dsonar.jacoco.reportPath=$JACOCO_AGENT -Dsonar.junit.reportPaths=target/surefire-reports + coverage: /Total.*?([0-9]{1,3})%/ + only: + - develop + - master + +sonar_preview_job: + stage: qa + before_script: + - mvn -Djacoco.destFile=$JACOCO_AGENT clean org.jacoco:jacoco-maven-plugin:0.7.8:prepare-agent install + - mvn -X -Djacoco.dataFile=$JACOCO_AGENT -Djacoco.outputDirectory=./jacoco_ut org.jacoco:jacoco-maven-plugin:report + script: + - mvn --batch-mode verify org.sonarsource.scanner.maven:sonar-maven-plugin:3.0.1:sonar -Dsonar.host.url=$SONAR_URL -Dsonar.login=$SONAR_USER_TOKEN -Dsonar.analysis.mode=preview -Dsonar.gitlab.project_id=$CI_PROJECT_PATH -Dsonar.gitlab.commit_sha=$CI_BUILD_REF -Dsonar.gitlab.ref_name=$CI_BUILD_REF_NAME -Dsonar.gitlab.user_token=$GITLAB_USER_TOKEN -Dsonar.gitlab.url="https://gitlab.inf.uva.es" -Dsonar.issuesReport.console.enable=true -Dsonar.gitlab.only_issue_from_commit_line=true -Dsonar.gitlab.comment_no_issue=true -Dsonar.gitlab.disable_global_comment=true + coverage: /Total.*?([0-9]{1,3})%/ + except: + - develop + - master diff --git a/.m2/settings.xml b/.m2/settings.xml new file mode 100644 index 0000000000000000000000000000000000000000..de53b57defd8b174cb177bc957ee8f478bd7f985 --- /dev/null +++ b/.m2/settings.xml @@ -0,0 +1,280 @@ +<?xml version="1.0" encoding="UTF-8"?> + +<!-- +Licensed to the Apache Software Foundation (ASF) under one +or more contributor license agreements. See the NOTICE file +distributed with this work for additional information +regarding copyright ownership. The ASF licenses this file +to you under the Apache License, Version 2.0 (the +"License"); you may not use this file except in compliance +with the License. You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, +software distributed under the License is distributed on an +"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +KIND, either express or implied. See the License for the +specific language governing permissions and limitations +under the License. +--> + +<!-- + | This is the configuration file for Maven. It can be specified at two levels: + | + | 1. User Level. This settings.xml file provides configuration for a single + | user, and is normally provided in + | ${user.home}/.m2/settings.xml. + | + | NOTE: This location can be overridden with the CLI option: + | + | -s /path/to/user/settings.xml + | + | 2. Global Level. This settings.xml file provides configuration for all + | Maven users on a machine (assuming they're all using the + | same Maven installation). It's normally provided in + | ${maven.home}/conf/settings.xml. + | + | NOTE: This location can be overridden with the CLI option: + | + | -gs /path/to/global/settings.xml + | + | The sections in this sample file are intended to give you a running start + | at getting the most out of your Maven installation. Where appropriate, the + | default values (values used when the setting is not specified) are provided. + | + |--> +<settings xmlns="http://maven.apache.org/SETTINGS/1.0.0" + xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" + xsi:schemaLocation="http://maven.apache.org/SETTINGS/1.0.0 http://maven.apache.org/xsd/settings-1.0.0.xsd"> + + <!-- localRepository + | The path to the local repository maven will use to store artifacts. + | + | Default: ~/.m2/repository + <localRepository>/path/to/local/repo</localRepository> + --> + + <!-- interactiveMode + | This will determine whether maven prompts you when it needs input. If set + | to false, maven will use a sensible default value, perhaps based on some + | other setting, for the parameter in question. + | + | Default: true + <interactiveMode>true</interactiveMode> + --> + + <!-- offline + | Determines whether maven should attempt to connect to the network when + | executing a build. This will have an effect on artifact downloads, + | artifact deployment, and others. + | + | Default: false + <offline>false</offline> + --> + + <!-- pluginGroups + | This is a list of additional group identifiers that will be searched when + | resolving plugins by their prefix, i.e. when invoking a command line like + | "mvn prefix:goal". Maven will automatically add the group identifiers + | "org.apache.maven.plugins" and "org.codehaus.mojo" if these are not + | already contained in the list. + |--> + <pluginGroups> + <!-- pluginGroup + | Specifies a further group identifier to use for plugin lookup. + <pluginGroup>com.your.plugins</pluginGroup> + --> + </pluginGroups> + + <!-- proxies + | This is a list of proxies which can be used on this machine to connect to + | the network. Unless otherwise specified (by system property or command- + | line switch), the first proxy specification in this list marked as active + | will be used. + |--> + <proxies> + <!-- proxy + | Specification for one proxy, to be used in connecting to the network. + | + <proxy> + <id>optional</id> + <active>true</active> + <protocol>http</protocol> + <username>proxyuser</username> + <password>proxypass</password> + <host>proxy.host.net</host> + <port>80</port> + <nonProxyHosts>local.net|some.host.com</nonProxyHosts> + </proxy> + --> + </proxies> + + <!-- servers + | This is a list of authentication profiles, keyed by the server-id used + | within the system. Authentication profiles can be used whenever maven must + | make a connection to a remote server. + |--> + <servers> + <!-- server + | Specifies the authentication information to use when connecting to a + | particular server, identified by a unique name within the system + | (referred to by the 'id' attribute below). + | + | NOTE: You should either specify username/password OR + | privateKey/passphrase, since these pairings are used together. + | + <server> + <id>deploymentRepo</id> + <username>repouser</username> + <password>repopwd</password> + </server> + --> + + <!-- Another sample, using keys to authenticate. + <server> + <id>siteServer</id> + <privateKey>/path/to/private/key</privateKey> + <passphrase>optional; leave empty if not used.</passphrase> + </server> + --> + </servers> + + <!-- mirrors + | This is a list of mirrors to be used in downloading artifacts from remote + | repositories. + | + | It works like this: a POM may declare a repository to use in resolving + | certain artifacts. However, this repository may have problems with heavy + | traffic at times, so people have mirrored it to several places. + | + | That repository definition will have a unique id, so we can create a + | mirror reference for that repository, to be used as an alternate download + | site. The mirror site will be the preferred server for that repository. + |--> + <mirrors> + <!-- mirror + | Specifies a repository mirror site to use instead of a given repository. + | The repository that this mirror serves has an ID that matches the + | mirrorOf element of this mirror. IDs are used for inheritance and direct + | lookup purposes, and must be unique across the set of mirrors. + | + <mirror> + <id>mirrorId</id> + <mirrorOf>repositoryId</mirrorOf> + <name>Human Readable Name for this Mirror.</name> + <url>http://my.repository.com/repo/path</url> + </mirror> + --> + </mirrors> + + <!-- profiles + | This is a list of profiles which can be activated in a variety of ways, + | and which can modify the build process. Profiles provided in the + | settings.xml are intended to provide local machine-specific paths and + | repository locations which allow the build to work in the local + | environment. + | + | For example, if you have an integration testing plugin - like cactus - + | that needs to know where your Tomcat instance is installed, you can + | provide a variable here such that the variable is dereferenced during the + | build process to configure the cactus plugin. + | + | As noted above, profiles can be activated in a variety of ways. One + | way - the activeProfiles section of this document (settings.xml) - will be + | discussed later. Another way essentially relies on the detection of a + | system property, either matching a particular value for the property, or + | merely testing its existence. Profiles can also be activated by JDK + | version prefix, where a value of '1.4' might activate a profile when the + | build is executed on a JDK version of '1.4.2_07'. Finally, the list of + | active profiles can be specified directly from the command line. + | + | NOTE: For profiles defined in the settings.xml, you are restricted to + | specifying only artifact repositories, plugin repositories, and + | free-form properties to be used as configuration variables for + | plugins in the POM. + | + |--> + + <profiles> + <!-- profile + | Specifies a set of introductions to the build process, to be activated + | using one or more of the mechanisms described above. For inheritance + | purposes, and to activate profiles via <activatedProfiles/> or the + | command line, profiles have to have an ID that is unique. + | + | An encouraged best practice for profile identification is to use a + | consistent naming convention for profiles, such as 'env-dev', + | 'env-test', 'env-production', 'user-jdcasey', 'user-brett', etc. This + | will make it more intuitive to understand what the set of introduced + | profiles is attempting to accomplish, particularly when you only have a + | list of profile id's for debug. + | + | This profile example uses the JDK version to trigger activation, and + | provides a JDK-specific repo. + <profile> + <id>jdk-1.4</id> + + <activation> + <jdk>1.4</jdk> + </activation> + + <repositories> + <repository> + <id>jdk14</id> + <name>Repository for JDK 1.4 builds</name> + <url>http://www.myhost.com/maven/jdk14</url> + <layout>default</layout> + <snapshotPolicy>always</snapshotPolicy> + </repository> + </repositories> + </profile> + --> + + <!-- + | Here is another profile, activated by the system property 'target-env' + | with a value of 'dev', which provides a specific path to the Tomcat + | instance. To use this, your plugin configuration might hypothetically + | look like: + | + | ... + | <plugin> + | <groupId>org.myco.myplugins</groupId> + | <artifactId>myplugin</artifactId> + | + | <configuration> + | <tomcatLocation>${tomcatPath}</tomcatLocation> + | </configuration> + | </plugin> + | ... + | + | NOTE: If you just wanted to inject this configuration whenever someone + | set 'target-env' to anything, you could just leave off the + | <value/> inside the activation-property. + | + <profile> + <id>env-dev</id> + + <activation> + <property> + <name>target-env</name> + <value>dev</value> + </property> + </activation> + + <properties> + <tomcatPath>/path/to/tomcat/instance</tomcatPath> + </properties> + </profile> + --> + </profiles> + + <!-- activeProfiles + | List of profiles that are active for all builds. + | + <activeProfiles> + <activeProfile>alwaysActiveProfile</activeProfile> + <activeProfile>anotherAlwaysActiveProfile</activeProfile> + </activeProfiles> + --> +</settings> diff --git a/ivagonz-antroma-practica2/.project b/.project similarity index 69% rename from ivagonz-antroma-practica2/.project rename to .project index 014cba9b6fb52d4bd4e00e7056b8bc0f1645e39a..bd95be5b2bd280d29b2ddec3cc9bc9118ae32739 100644 --- a/ivagonz-antroma-practica2/.project +++ b/.project @@ -10,8 +10,14 @@ <arguments> </arguments> </buildCommand> + <buildCommand> + <name>org.eclipse.m2e.core.maven2Builder</name> + <arguments> + </arguments> + </buildCommand> </buildSpec> <natures> + <nature>org.eclipse.m2e.core.maven2Nature</nature> <nature>org.eclipse.jdt.core.javanature</nature> </natures> </projectDescription> diff --git a/.settings/org.eclipse.core.resources.prefs b/.settings/org.eclipse.core.resources.prefs new file mode 100644 index 0000000000000000000000000000000000000000..f9fe34593fcd3624a964478aeb438b0d44fe7237 --- /dev/null +++ b/.settings/org.eclipse.core.resources.prefs @@ -0,0 +1,4 @@ +eclipse.preferences.version=1 +encoding//src/main/java=UTF-8 +encoding//src/test/java=UTF-8 +encoding/<project>=UTF-8 diff --git a/ivagonz-antroma-practica2/.settings/org.eclipse.jdt.core.prefs b/.settings/org.eclipse.jdt.core.prefs similarity index 90% rename from ivagonz-antroma-practica2/.settings/org.eclipse.jdt.core.prefs rename to .settings/org.eclipse.jdt.core.prefs index 3a21537071bf4118b9e1ee864cb4bc258aa48211..672496e107ed4e070613aad776b4df5146306bd4 100644 --- a/ivagonz-antroma-practica2/.settings/org.eclipse.jdt.core.prefs +++ b/.settings/org.eclipse.jdt.core.prefs @@ -8,4 +8,5 @@ org.eclipse.jdt.core.compiler.debug.localVariable=generate org.eclipse.jdt.core.compiler.debug.sourceFile=generate org.eclipse.jdt.core.compiler.problem.assertIdentifier=error org.eclipse.jdt.core.compiler.problem.enumIdentifier=error +org.eclipse.jdt.core.compiler.problem.forbiddenReference=warning org.eclipse.jdt.core.compiler.source=1.8 diff --git a/.settings/org.eclipse.m2e.core.prefs b/.settings/org.eclipse.m2e.core.prefs new file mode 100644 index 0000000000000000000000000000000000000000..f897a7f1cb2389f85fe6381425d29f0a9866fb65 --- /dev/null +++ b/.settings/org.eclipse.m2e.core.prefs @@ -0,0 +1,4 @@ +activeProfiles= +eclipse.preferences.version=1 +resolveWorkspaceProjects=true +version=1 diff --git a/README.md b/README.md index 68afcc8b422db5760ad7bdb12dcc6e99a4672231..adb64671af8e0f44b8ed3e62d706f6a9a6c0b0e3 100644 --- a/README.md +++ b/README.md @@ -1 +1,44 @@ -Inicio de readme \ No newline at end of file +# Información del proyecto + +## Tecnologías utilizadas +El proyecto se ha realizado usando JUnit4. +Se he llevado a cabo su desarrollo con jdk 8 en el IDE Eclipse Mars 2. + + +Hemos usado git con un repositorio remoto en Gitlab: https://gitlab.inf.uva.es/ivagonz/ivagonz-antroma-practica2.git, y con un repositorio de respaldo en BitBucket: https://antroma@bitbucket.org/ivagonz/ivagonz-antroma-practica2.git. + + +Se ha utilizado la herramienta tracking time para medir los tiempos gastados en realizar cada tarea y la comunicación entre los miembros del desarrollo se ha llevado a cabo mediante slack y skype. + +## Resumen y funcionalidades +Se ha llevado a cabo un test driven development para una red de autobuses con varias lineas y sus respectivas paradas con posiciones GPS. + +## Clases de las que consta el proyecto +Las clases que se han desarrollado para dar solucion al proyectos son: DirecionGPS, Linea, Parada, Red, AllTest, AllLineaTest, AllRedTest, DireccionGPSTest, LineaConstructorTest, LineaCorrespondenciasyTransbordosTest, LineaGestionDeParadasTest, ParadaTest, RedConstructorTest, RedGestionDeDistanciasTest, RedGestionDeLineasTest. + +## SLOC +- DirecionGPS: 47. +- Linea: 232. +- Parada: 48. +- Red: 126. +- DireccionGPSTest: 78. +- LineaConstructorTest: 171. +- LineaCorrespondenciasyTransbordosTest: 215. +- LineaGestionDeParadasTest: 177. +- ParadaTest: 59. +- RedConstructorTest: 122. +- RedGestionDeDistanciasTest. 124. +- RedGestionDeLineasTest: 151. + +## LLOC +- DireccionGPSTest: 36. +- LineaConstructorTest: 111. +- LineaCorrespondenciasyTransbordosTest: 129. +- LineaGestionDeParadasTest: 79. +- ParadaTest: 27. +- RedConstructorTest: 56. +- RedGestionDeDistanciasTest: 55. +- RedGestionDeLineasTest: 75. + +## Horas-Hombre +El numero de horas hombre es de 13,66. diff --git a/build.xml b/build.xml new file mode 100644 index 0000000000000000000000000000000000000000..da7174e4c3b6e3b37c3ab5da812a425b38d464e3 --- /dev/null +++ b/build.xml @@ -0,0 +1,92 @@ +<project name="ivagonz-antroma-practica3" default="compilar" basedir="."> + <description> + Fichero build de Ant con los objetivos definidos en el enunciado de la practica + </description> + + <!-- Properties --> + <property name="jacocoagent" location="target/coverage/jacoco.exec" /> + <property environment="env"/> + <property name="SONAR_USER_TOKEN" value="e0591cee4f7d7243465bf26e3367278459272da2"/> + + <!-- Condicion para comprobar la existencia del agente --> + <condition property="jacoco-agent-present"> + <available file="${jacocoagent}" /> + </condition> + + <!-- Objetivos --> + + <!-- Objetivo compilar --> + <target name="compilar" description="obtiene dependencias y compila" depends="limpiar, compilar_unix" /> + <target name="compilar_unix" description="compilar unix"> + <exec dir="." executable="sh"> + <arg line="-c 'mvn compile test-compile'" /> + </exec> + </target> + + <!-- Objetivo ejecutarTodo --> + <target name="ejecutarTodo" depends="ejecutarTestsTDDyCajaNegra, ejecutarTestEnAislamiento, ejecutarPruebasSecuencia" /> + + <!-- Objetivo ejecutarTestsTDD --> + <target name="ejecutarTestsTDDyCajaNegra" description="pruebas TDD y de caja negra" depends="ejecutarTestsTDDyCajaNegra_unix" /> + <target name="ejecutarTestsTDDyCajaNegra_unix" description="ejecutarTestsTDDyCajaNegra unix"> + <exec dir="." executable="sh"> + <arg line="-c 'mvn test -P Unit'" /> + </exec> + </target> + + <!-- Objetivo ejecutarTestEnAislamiento --> + <target name="ejecutarTestEnAislamiento" description="pruebas de caja blanca en aislamiento" depends="ejecutarTestEnAislamiento_unix" /> + <target name="ejecutarTestEnAislamiento_unix" description="ejecutarTestEnAislamiento unix"> + <exec dir="." executable="sh"> + <arg line="-c 'mvn test -P Isolation'" /> + </exec> + </target> + + <!-- Objetivo ejecutarPruebasSecuencia --> + <target name="ejecutarPruebasSecuencia" description="caja negra, pruebas de secuencia" depends="ejecutarPruebasSecuencia_unix" /> + <target name="ejecutarPruebasSecuencia_unix" description="ejecutarPruebasSecuencia unix"> + <exec dir="." executable="sh"> + <arg line="-c 'mvn test -P Sequences'" /> + </exec> + </target> + + <!-- Objetivo obtenerInformeCobertura --> + <target name="obtenerInformeCobertura" description="obtener informes de cobertura" depends="compilar, obtenerInformeCobertura_unix" /> + <target name="obtenerInformeCobertura_unix" description="obtenerInformeCobertura Unix" depends="prepare-agent_unix"> + <exec dir="." executable="sh"> + <arg line="-c 'mvn compile test-compile'" /> + </exec> + <exec dir="." executable="sh"> + <arg line="-c 'mvn -X -Djacoco.dataFile=${jacocoagent} -Djacoco.outputDirectory=./jacoco_ut org.jacoco:jacoco-maven-plugin:report'" /> + </exec> + </target> + <target name="prepare-agent_unix" unless="jacoco-agent-present"> + <exec dir="." executable="sh"> + <arg line="-c 'mvn -Djacoco.destFile=${jacocoagent} clean org.jacoco:jacoco-maven-plugin:0.7.8:prepare-agent install'" /> + </exec> + </target> + + <!-- Objetivo medidas --> + <target name="medidas" description="obtener informe sobre medidas" depends="obtenerInformeCobertura, medidas_unix" /> + <target name="medidas_unix" description="medidas Unix"> + <exec dir="." executable="sh"> + <arg line="-c 'mvn -P Unit,Integration jxr:jxr pmd:pmd sonar:sonar -Dsonar.host.url=https://sonarqube.inf.uva.es/ -Dsonar.login=${SONAR_USER_TOKEN.value} -Dsonar.analysis.mode=publish -Dsonar.issuesReport.console.enable=true -Dsonar.jacoco.reportPath=target/coverage/jacoco.exec -Dsonar.junit.reportPaths=target/surefire-reports'" /> + </exec> + </target> + + <!-- Objetivo documentar --> + <target name="documentar" description="genera el site de la documentación del proyecto" depends="documentar_unix" /> + <target name="documentar_unix" description="documentar en Unix"> + <exec dir="." executable="sh"> + <arg line="-c 'mvn javadoc:javadoc'" /> + </exec> + </target> + + <!-- Objetivo limpiar --> + <target name="limpiar" description="Elimina archivos innecesarios" depends="limpiar_unix" /> + <target name="limpiar_unix" description="limpiar en Unix"> + <exec dir="." executable="sh"> + <arg line="-c 'mvn clean'" /> + </exec> + </target> +</project> diff --git a/ivagonz-antroma-practica2/.classpath b/ivagonz-antroma-practica2/.classpath deleted file mode 100644 index f3cf8a50c1a916ffbbd7ca825039b32aa07dbfed..0000000000000000000000000000000000000000 --- a/ivagonz-antroma-practica2/.classpath +++ /dev/null @@ -1,8 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<classpath> - <classpathentry kind="src" path="src"/> - <classpathentry kind="src" path="srctests"/> - <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.8"/> - <classpathentry kind="con" path="org.eclipse.jdt.junit.JUNIT_CONTAINER/4"/> - <classpathentry kind="output" path="bin"/> -</classpath> diff --git a/ivagonz-antroma-practica2/srctests/uva/tds/pr2/equipo10/LineaTest.java b/ivagonz-antroma-practica2/srctests/uva/tds/pr2/equipo10/LineaTest.java deleted file mode 100644 index ea94892e6bf654cccca6cc59be8ba7df2b985990..0000000000000000000000000000000000000000 --- a/ivagonz-antroma-practica2/srctests/uva/tds/pr2/equipo10/LineaTest.java +++ /dev/null @@ -1,14 +0,0 @@ -package uva.tds.pr2.equipo10; - -import static org.junit.Assert.*; - -import org.junit.Test; - -public class LineaTest { - - @Test - public void test() { - fail("Not yet implemented"); - } - -} diff --git a/pom.xml b/pom.xml new file mode 100644 index 0000000000000000000000000000000000000000..58be75b9e731b95b60fb164cb1937c9b50345e96 --- /dev/null +++ b/pom.xml @@ -0,0 +1,107 @@ +<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" + xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> + <modelVersion>4.0.0</modelVersion> + <groupId>uva.tds.pr2.equipo10</groupId> + <artifactId>ivagonz-antroma-practica3</artifactId> + <version>0.0.1-SNAPSHOT</version> + <properties> + <maven.compiler.source>1.8</maven.compiler.source> + <maven.compiler.target>1.8</maven.compiler.target> + <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> + </properties> + <dependencies> + <dependency> + <groupId>junit</groupId> + <artifactId>junit</artifactId> + <version>4.12</version> + <scope>test</scope> + </dependency> + <!-- https://mvnrepository.com/artifact/org.easymock/easymock --> + <dependency> + <groupId>org.easymock</groupId> + <artifactId>easymock</artifactId> + <version>3.4</version> + <scope>test</scope> + </dependency> + </dependencies> + <profiles> + <profile> + <id>Unit</id> + <properties> + <testcase.groups>uva.tds.pr2.equipo10.Unit</testcase.groups> + </properties> + <activation> + <activeByDefault>true</activeByDefault> + </activation> + </profile> + <profile> + <id>Isolation</id> + <properties> + <testcase.groups>uva.tds.pr2.equipo10.Isolation</testcase.groups> + </properties> + </profile> + <profile> + <id>Integration</id> + <properties> + <testcase.groups>uva.tds.pr2.equipo10.Integration</testcase.groups> + </properties> + </profile> + </profiles> + <build> + <pluginManagement> + <plugins> + <plugin> + <groupId>org.apache.maven.plugins</groupId> + <artifactId>maven-surefire-plugin</artifactId> + <version>2.20</version> + <configuration> + <groups>${testcase.groups}</groups> + </configuration> + <dependencies> + <dependency> + <groupId>org.apache.maven.surefire</groupId> + <artifactId>surefire-junit47</artifactId> + <version>2.20.1</version> + </dependency> + </dependencies> + </plugin> + <plugin> + <groupId>org.jacoco</groupId> + <artifactId>jacoco-maven-plugin</artifactId> + <version>0.7.9</version> + </plugin> + <plugin> + <groupId>org.sonarsource.scanner.maven</groupId> + <artifactId>sonar-maven-plugin</artifactId> + <version>3.4.0.905</version> + </plugin> + </plugins> + </pluginManagement> + </build> + <reporting> + <plugins> + <plugin> + <groupId>org.apache.maven.plugins</groupId> + <artifactId>maven-project-info-reports-plugin</artifactId> + <version>2.7</version> + </plugin> + <plugin> + <groupId>org.apache.maven.plugins</groupId> + <artifactId>maven-jxr-plugin</artifactId> + <version>2.3</version> + </plugin> + <plugin> + <groupId>org.apache.maven.plugins</groupId> + <artifactId>maven-pmd-plugin</artifactId> + <version>3.8</version> + <configuration> + <linkXref>true</linkXref> + <sourceEncoding>utf-8</sourceEncoding> + <minimumTokens>100</minimumTokens> + <targetJdk>1.8</targetJdk> + </configuration> + </plugin> + </plugins> + </reporting> + +</project> diff --git a/src/main/java/uva/tds/pr2/equipo10/DireccionGPS.java b/src/main/java/uva/tds/pr2/equipo10/DireccionGPS.java new file mode 100644 index 0000000000000000000000000000000000000000..48a2c337a71db8f3d00fbeffaccf5773c8c35e67 --- /dev/null +++ b/src/main/java/uva/tds/pr2/equipo10/DireccionGPS.java @@ -0,0 +1,58 @@ +package uva.tds.pr2.equipo10; + +/** + * Implementación de una DirecciónGPS para la segunda práctica de la asignatura + * TDS. + * + * @author ivagonz + * @author antroma + */ +public class DireccionGPS { + + private double latitud; + private double longitud; + + /** + * Constructor de una dirección GPS. + * + * @param latitud + * Número que indica la latitud de la dirección. Debe ser + * correcto: >=-180 && <=180. + * @param longitud + * Número que indica la longitud de la dirección. Debe ser + * correcto: >=-180 && <=180. + * @throws IllegalArgumentException + * En caso de incumplir alguna de las condiciones impuestas a + * los argumentos del constructor. + */ + public DireccionGPS(double latitud, double longitud) { + if (latitud < -180) + throw new IllegalArgumentException("La latitud debe ser mayor o igual a -180"); + if (latitud > 180) + throw new IllegalArgumentException("La latitud debe ser menor o igual a 180"); + if (longitud < -180) + throw new IllegalArgumentException("La longitud debe ser mayor o igual a -180"); + if (longitud > 180) + throw new IllegalArgumentException("La longitud debe ser menor o igual a 180"); + this.latitud = latitud; + this.longitud = longitud; + } + + /** + * @return latitud de la DireccionGPS. + */ + public double getLatitud() { + // TODO Auto-generated method stub + return latitud; + } + + /** + * + * @return longitud de la DireccionGPS . + */ + public double getLongitud() { + // TODO Auto-generated method stub + return longitud; + } + +} diff --git a/src/main/java/uva/tds/pr2/equipo10/Linea.java b/src/main/java/uva/tds/pr2/equipo10/Linea.java new file mode 100644 index 0000000000000000000000000000000000000000..dcfe69cb37301372f0bd1605ddb04917d6bc7286 --- /dev/null +++ b/src/main/java/uva/tds/pr2/equipo10/Linea.java @@ -0,0 +1,232 @@ +package uva.tds.pr2.equipo10; + + +/** + * Implementación basica de una linea de buses + * + * @author antroma + * @author ivagonz + * + */ +public class Linea { + + /** + * Constructor de la clase linea + * + * @param identificador + * Identificadeor de la linea. Debe ser correcto: identificador + * positivo + * @param paradas + * Array que contiene las paradas de la linea y cuya primera y + * ultima posicion seran la primera y ultima parada de la linea + * respectivamente. Debe ser correcto: No debe ser nulo No debe + * contener elementos nulos Debe tener 3 elmentos o mas La + * distancia entre el primer y ultimo elemento del array debe ser + * menor a 100. + * @throws IllegalArgumentException + * en caso de incumplir las condiciones impuestas a los + * parámetros. + */ + public Linea(int identificador, Parada[] paradas) { + // TODO Auto-generated constructor stub + } + + /** + * Añade Paradas intermedias a la línea. + * + * @param parada + * Parada a anadir. Debe ser correcta: No nula. + * @param posicion + * Posicion en la que añadir la Parada.Debe ser correcta: No + * puede ser el inicio ni el final de la Linea. + * @throws IllegalArgumentException + * en caso de incumplir las condiciones impuestas a los + * parámetros. + */ + public void addParadaIntermedia(Parada parada, int posicion) { + // TODO Auto-generated method stub + + } + + /** + * Añade una parada como final del recorrido + * + * @param parada + * parada que se añade. Debe ser correcta: no nula estar a menos + * de 100 metros de la parada inicial. + */ + public void addParadaFinal(Parada parada) { + // TODO Auto-generated method stub + } + + /** + * Anade una parada como inicio del recorrido. + * + * @param parada + * parada que se añade. Debe ser correcta: no nula estar a menos + * de 100 metros de la parada final. + */ + public void addParadaInicial(Parada parada) { + + // TODO Auto-generated method stub + + } + + /** + * Elimina una parada de la linea, si la parada proporcionada no está, no + * hará nada + * + * @param parada + * parada que se elimina. Debe ser correcta: no nula, no debe ser + * la parada inicial ni la final. + * @throws IllegalArgumentException + * si se incumplen las condiciones impuestas + */ + public void removeParada(Parada parada) { + // TODO Auto-generated method stub + + } + + /** + * Comprueba si la Linea tiene una Parada cerca de la direccion pasada. + * + * @param direccion2 + * DireccionGPS a comprobar.Debe ser correcto: No ser null. + * @return true si tiene una Parada a menos de 200m de la Direccion pasada, + * false en caso contrario. + * @throws IllegalArgumentException + * si se incumplen las condiciones impuestas al parámetro. + */ + public boolean hasParadaCerca(DireccionGPS direccion2) { + // TODO Auto-generated method stub + return false; + } + + /** + * Comprueba si la Linea pasada como argumento tiene correspondencia con + * this. + * + * @param linea + * Linea a comparar con this. Tendrá correspondencia si tiene una + * Parada a menos de 200 metros de una Parada de this. Tiene que + * ser correcta: No nula. + * @return true si linea tiene correspondencia con this, false en caso + * contrario. + * @throws IllegalArgumentException + * si se incumplen las condiciones impuestas al parámetro. + */ + public boolean hasCorrespondencia(Linea linea) { + // TODO Auto-generated method stub + return false; + } + + /** + * Da información sobre las Paradas que tienen correspondencia de linea y + * this. + * + * @param linea + * Linea a comparar con this. Debe ser correcta: No debe ser null + * y debe tener correspondencia con this. + * @return Vector con las Paradas que tienen correspondencia con Paradas de + * this. + * @throws IllegalArgumentException + * si se incumplen las condiciones impuestas al parámetro. + */ + public Parada[] getParadasConCorrespondencia(Linea linea) { + // TODO Auto-generated method stub + return null; + } + + /** + * Comprueba si la Linea pasada como parámetro tiene trasbordo directa con + * this. + * + * @param linea + * Linea a comparar con this. Debe ser correcta: No nula. + * @return true si la Linea tiene trasbordo directo con this, false en caso + * contrario. + * @throws IllegalArgumentException + * si se incumplen las condiciones impuestas al parámetro. + */ + public boolean hasTrasbordoDirecto(Linea linea) { + // TODO Auto-generated method stub + return false; + } + + /** + * Obtiene un vector de Paradas con trasbordo directo entre Linea y this, si + * linea tiene trasbordo directo con this. + * + * @param linea + * Linea a comparar con this, para obtener las Paradas con + * trasbordo directo. Debe ser correcta: No nula y tiene que + * tener Paradas con trasbordo directo. + * @return Vector con las Paradas de trasbordo directo entre Linea y this. + * @throws IllegalArgumentException + * si se incumplen las condiciones impuestas al parámetro. + */ + public Parada[] getParadasConTrasbordoDirecto(Linea linea) { + // TODO Auto-generated method stub + return null; + } + + /** + * Comprobará la distancia entre 2 Paradas de la Linea. + * + * @param parada1 + * Primera Parada a comprobar. Debe ser correcta: No nula. + * @param parada2 + * Segunda Parada a comprobar.Debe ser correcta: No nula. + * @return La distancia entre las 2 paradas pasadas como parámetro si están + * en la Ĺinea, 0 en caso contrario. + * @throws IllegalArgumentException + * si se incumplen las condiciones impuestas a los parámetros. + */ + public int checkDistancia(Parada parada1, Parada parada2) { + // TODO Auto-generated method stub + return 0; + } + + /** + * + * @return Identificador de this. + */ + public int getId() { + // TODO Auto-generated method stub + return 0; + } + + /** + * + * @return Vector de Paradas de this. + */ + public Parada[] getParadas() { + // TODO Auto-generated method stub + return null; + } + + /** + * Comprobará si la Linea tiene alguna Parada null, para informar al + * usuario. + * + * @return true si tiene alguna Parada null, false en caso contrario. + */ + public boolean hasParadaNull() { + // TODO Auto-generated method stub + return false; + } + + /** + * Comprueba si la Linea tiene una Parada. + * + * @param parada + * Parada a comprobar dentro de la linea. Debe ser correcta:No + * nula. + * @return true si la Linea tiene la Parada, false en caso contrario. + */ + public boolean hasParada(Parada parada) { + // TODO Auto-generated method stub + return false; + } + +} diff --git a/src/main/java/uva/tds/pr2/equipo10/Parada.java b/src/main/java/uva/tds/pr2/equipo10/Parada.java new file mode 100644 index 0000000000000000000000000000000000000000..2649d838eef61769a3f35c1ad8b12ef8233172a3 --- /dev/null +++ b/src/main/java/uva/tds/pr2/equipo10/Parada.java @@ -0,0 +1,48 @@ +package uva.tds.pr2.equipo10; + + +/** + * Implementación de una Parada para la segunda práctica de la asignatura TDS. + * + * @author ivagonz + * @author antroma + */ +public class Parada { + + /** + * Constructor de la clase Parada. + * + * @param direccionGPS + * Recibe un objeto DireccionGPS que indicara la posición de la + * Parada dentro de una Linea de la Red. Debe ser correcto: no + * nulo. + * @throws IllegalArgumentException + * si se incumplen las condiciones impuestas al parámetro. + */ + public Parada(DireccionGPS direccionGPS) { + // TODO Auto-generated constructor stub + } + + /** + * Función que dada otra parada, obtendrá la distancia entre this y dicha + * Parada, expresada en metros. + * + * @param parada + * Parada a comparar con this. Debe ser correcta: no nula. + * @throws IllegalArgumentException + * si se incumplen las condiciones impuestas al parámetro. + */ + public int getDistancia(Parada parada) { + // TODO Auto-generated method stub + return 0; + } + + /** + * @return DireccionGPS de this. + */ + public DireccionGPS getDireccion() { + // TODO Auto-generated method stub + return null; + } + +} diff --git a/src/main/java/uva/tds/pr2/equipo10/Red.java b/src/main/java/uva/tds/pr2/equipo10/Red.java new file mode 100644 index 0000000000000000000000000000000000000000..3d7c75bdea886eb4f45bfdcc0b9b62cc85ba0ff4 --- /dev/null +++ b/src/main/java/uva/tds/pr2/equipo10/Red.java @@ -0,0 +1,126 @@ +package uva.tds.pr2.equipo10; + + +/** + * Implementación sencilla de una red de buses. + * + * @author ivagonz + * @author antroma + */ +public class Red { + + /** + * Inicia una red de autobuses con un vector de Lineas que la componen. + * + * @param lineas + * Vector de lineas de la Red. Debe ser correcto: No nulo, no + * debe contener elementos nulos y debe contener al menos 2 + * lineas. + * @throws IllegalArgumentException + * si no se cumplen las conciones impuestas al parámetro. + */ + public Red(Linea[] lineas) { + // TODO Auto-generated constructor stub + } + + /** + * + * @return vector de Lineas de la Red. + */ + public Linea[] getLineas() { + // TODO Auto-generated method stub + return null; + } + + /** + * Comprueba si la Red tiene alguna Linea nula. + * + * @return true si tiene al menos una Linea nula, false en caso contrario. + */ + public boolean hasLineaNull() { + // TODO Auto-generated method stub + return false; + } + + /** + * Agrega una Linea dentro de la Red de buses. + * + * @param linea + * Linea a agregar en la Red. Debe ser correcta: No nula, no debe + * estar ya en la Red. + * @throws IllegalArgumentException + * en caso de incumplir las condiciones impuestas al par�metro. + */ + public void addLinea(Linea linea) { + // TODO Auto-generated method stub + + } + + /** + * Obtiene una Linea de la Red mediante la posición indicada como parámetro. + * + * @param posicion + * Entero que indica la posición de la Linea a obtener dentro de + * la Red.Debe ser correcto: Positiva. + * @return La Linea en la posición dada de existir Linea en la posición, + * null en caso contrario. + * @throws IllegalArgumentException + * en caso de incumplir las condiciones impuestas al parámetro. + */ + public Linea getLinea(int posicion) { + // TODO Auto-generated method stub + return null; + } + + /** + * Elimina una Linea de la Red de autobuses. + * + * @param linea + * Linea a borrar.Debe ser correcta: No nula y debe estar dentro + * de la Red. + * @throws IllegalArgumentException + * en caso de incumplir las condiciones impuestas al parámetro. + */ + public void removeLinea(Linea linea) { + // TODO Auto-generated method stub + + } + + /** + * Obtiene un vector de Lineas que tienen Parada cerca de una Direccion y un + * radio dados. + * + * @param direccion + * DireccionGPS en la que debe haber Paradas cerca.Debe ser + * correcta: No nula. + * @param radio + * Radio para buscar Paradas dentro de la Red.Debe ser correcto: + * Positivo. + * @return Vector con las Lineas que tienen Parada cerca de la Direccion. + * @throws IllegalArgumentException + * en caso de incumplir alguna de las condiciones impuestas a + * los parámetros. + */ + public Linea[] infoParadas(DireccionGPS direccion, int radio) { + // TODO Auto-generated method stub + return null; + } + + /** + * Obtiene la distancia en metros entre dos Paradas de la Red. + * + * @param parada1 + * Primera Parada a comprobar. Debe ser correcta: No nula. + * @param parada2 + * Segunda Parada a comprobar. Debe ser correcta: No nula. + * @return La distancia en metros entre las 2 Paradas. + * @throws IllegalArgumentException + * si se incumple alguna de las condiciones impuestas a los + * parámetros. + */ + public int getDistanciaParadas(Parada parada1, Parada parada2) { + // TODO Auto-generated method stub + return 0; + } + +} diff --git a/src/test/java/uva/tds/pr2/equipo10/AllLineaTest.java b/src/test/java/uva/tds/pr2/equipo10/AllLineaTest.java new file mode 100644 index 0000000000000000000000000000000000000000..5ddb121803aefb6a417c689ecc4fce5e44d0e4e9 --- /dev/null +++ b/src/test/java/uva/tds/pr2/equipo10/AllLineaTest.java @@ -0,0 +1,12 @@ +package uva.tds.pr2.equipo10; + +import org.junit.runner.RunWith; +import org.junit.runners.Suite; +import org.junit.runners.Suite.SuiteClasses; + +@RunWith(Suite.class) +@SuiteClasses({ LineaConstructorTest.class, LineaGestionDeParadasTest.class, + LineaCorrespondenciasYTrasbordosTest.class }) +public class AllLineaTest { + +} diff --git a/src/test/java/uva/tds/pr2/equipo10/AllRedTest.java b/src/test/java/uva/tds/pr2/equipo10/AllRedTest.java new file mode 100644 index 0000000000000000000000000000000000000000..9183939983b1e476fcfc934b63f3dcae62a7f28e --- /dev/null +++ b/src/test/java/uva/tds/pr2/equipo10/AllRedTest.java @@ -0,0 +1,12 @@ +package uva.tds.pr2.equipo10; + +import org.junit.runner.RunWith; +import org.junit.runners.Suite; +import org.junit.runners.Suite.SuiteClasses; + +@RunWith(Suite.class) +@SuiteClasses({ RedConstructorTest.class, RedGestionDeDistanciasTest.class, RedGestionDeLineasTest.class }) + +public class AllRedTest { + +} \ No newline at end of file diff --git a/src/test/java/uva/tds/pr2/equipo10/AllTest.java b/src/test/java/uva/tds/pr2/equipo10/AllTest.java new file mode 100644 index 0000000000000000000000000000000000000000..1f88da867d78d7618fc29a540ad78f73fe5293d0 --- /dev/null +++ b/src/test/java/uva/tds/pr2/equipo10/AllTest.java @@ -0,0 +1,12 @@ +package uva.tds.pr2.equipo10; + +import org.junit.runner.RunWith; +import org.junit.runners.Suite; +import org.junit.runners.Suite.SuiteClasses; + +@RunWith(Suite.class) +@SuiteClasses({ DireccionGPSTest.class, ParadaTest.class, AllLineaTest.class, AllRedTest.class }) + +public class AllTest { + +} diff --git a/src/test/java/uva/tds/pr2/equipo10/DireccionGPSTest.java b/src/test/java/uva/tds/pr2/equipo10/DireccionGPSTest.java new file mode 100644 index 0000000000000000000000000000000000000000..db9cf9d3c70544f299b31944466bcd696021e2d9 --- /dev/null +++ b/src/test/java/uva/tds/pr2/equipo10/DireccionGPSTest.java @@ -0,0 +1,78 @@ +package uva.tds.pr2.equipo10; + +import static org.junit.Assert.*; + +import org.junit.Test; +import org.junit.experimental.categories.Category; + +@Category(Unit.class) +public class DireccionGPSTest { + + private final double errorAdmisible = 0.001; + + @Test + public void constructorCorrectoTest() { + double latitud = 1.0; + double longitud = 1.0; + + DireccionGPS direccion = new DireccionGPS(latitud, longitud); + assertEquals(latitud, direccion.getLatitud(), errorAdmisible); + assertEquals(longitud, direccion.getLongitud(), errorAdmisible); + } + + @Test(expected = IllegalArgumentException.class) + public void constructorLatitudMenorQueMenos180Test() { + double longitud = 1.0; + @SuppressWarnings("unused") + DireccionGPS direccion = new DireccionGPS(-180.01, longitud); + } + + @Test(expected = IllegalArgumentException.class) + public void constructorLatitudMayorQue180Test() { + double longitud = 1.0; + @SuppressWarnings("unused") + DireccionGPS direccion = new DireccionGPS(180.01, longitud); + } + + @Test(expected = IllegalArgumentException.class) + public void constructorLongitudMenorQueMenos180Test() { + double latitud = 1.0; + @SuppressWarnings("unused") + DireccionGPS direccion = new DireccionGPS(latitud, -180.01); + } + + @Test(expected = IllegalArgumentException.class) + public void constructorLongitudMayorQue180Test() { + double latitud = 1.0; + @SuppressWarnings("unused") + DireccionGPS direccion = new DireccionGPS(latitud, 180.01); + } + + @Test + public void getLatitudCorrectoTest() { + double latitud = 1.0; + double longitud = 1.0; + + DireccionGPS direccion = new DireccionGPS(latitud, longitud); + assertEquals(latitud, direccion.getLatitud(), errorAdmisible); + } + + @Test + public void getLongitudCorrectoTest() { + double latitud = 1.0; + double longitud = 1.0; + + DireccionGPS direccion = new DireccionGPS(latitud, longitud); + assertEquals(longitud, direccion.getLongitud(), errorAdmisible); + } + + @Test + public void secuenciaTest() { + double latitud = 1.0; + double longitud = 1.0; + DireccionGPS direccion = new DireccionGPS(latitud, longitud); + direccion.getLatitud(); + direccion.getLongitud(); + } + +} diff --git a/src/test/java/uva/tds/pr2/equipo10/Integration.java b/src/test/java/uva/tds/pr2/equipo10/Integration.java new file mode 100644 index 0000000000000000000000000000000000000000..ff02759b3faae466256c3acd629f6f022ac358c4 --- /dev/null +++ b/src/test/java/uva/tds/pr2/equipo10/Integration.java @@ -0,0 +1,5 @@ +package uva.tds.pr2.equipo10; + +public interface Integration { + +} diff --git a/src/test/java/uva/tds/pr2/equipo10/Isolation.java b/src/test/java/uva/tds/pr2/equipo10/Isolation.java new file mode 100644 index 0000000000000000000000000000000000000000..93ead36140fa49c31703d3d4c9c9f1bca67cd6a1 --- /dev/null +++ b/src/test/java/uva/tds/pr2/equipo10/Isolation.java @@ -0,0 +1,5 @@ +package uva.tds.pr2.equipo10; + +public interface Isolation { + +} diff --git a/src/test/java/uva/tds/pr2/equipo10/LineaConstructorTest.java b/src/test/java/uva/tds/pr2/equipo10/LineaConstructorTest.java new file mode 100644 index 0000000000000000000000000000000000000000..104fb2ef76487a4cfdaec6a34f0d38e64ff2fdfa --- /dev/null +++ b/src/test/java/uva/tds/pr2/equipo10/LineaConstructorTest.java @@ -0,0 +1,171 @@ +package uva.tds.pr2.equipo10; + + +import static org.junit.Assert.*; + +import org.junit.Test; + +public class LineaConstructorTest { + + private final double errorAdmisible = 0.001; + + @Test + public void constructorCorrectoTest() { + DireccionGPS direccion1 = new DireccionGPS(20.45, 30.50); + DireccionGPS direccion2 = new DireccionGPS(30.5, 20.4); + DireccionGPS direccion3 = new DireccionGPS(20.4498, 30.50); + Parada parada1 = new Parada(direccion1); + Parada parada2 = new Parada(direccion2); + Parada parada3 = new Parada(direccion3); + Parada[] paradas = new Parada[3]; + paradas[0] = parada1; + paradas[1] = parada2; + paradas[2] = parada3; + int identificador = 1; + + Linea linea = new Linea(identificador, paradas); + + assertEquals(identificador, linea.getId(), errorAdmisible); + assertNotNull(linea.getParadas()); + assertArrayEquals(paradas, linea.getParadas()); + assertFalse(linea.hasParadaNull()); + + } + + @Test(expected = IllegalArgumentException.class) + public void constructorIdentificadorMenorQue1Test() { + DireccionGPS direccion1 = new DireccionGPS(20.45, 30.50); + DireccionGPS direccion2 = new DireccionGPS(30.5, 20.4); + DireccionGPS direccion3 = new DireccionGPS(20.4498, 30.50); + Parada parada1 = new Parada(direccion1); + Parada parada2 = new Parada(direccion2); + Parada parada3 = new Parada(direccion3); + Parada[] paradas = new Parada[3]; + paradas[0] = parada1; + paradas[1] = parada2; + paradas[2] = parada3; + int identificador = 0; + + @SuppressWarnings("unused") + Linea linea = new Linea(identificador, paradas); + } + + @Test(expected = NullPointerException.class) + public void constructorParadasNullTest() { + Parada[] paradas = null; + + int identificador = 1; + + @SuppressWarnings("unused") + Linea linea = new Linea(identificador, paradas); + } + + @Test(expected = NullPointerException.class) + public void constructorParadasConUnElementoNullTest() { + DireccionGPS direccion1 = new DireccionGPS(20.45, 30.50); + DireccionGPS direccion3 = new DireccionGPS(20.4498, 30.50); + Parada parada1 = new Parada(direccion1); + Parada parada3 = new Parada(direccion3); + Parada[] paradas = new Parada[3]; + paradas[0] = parada1; + paradas[1] = null; + paradas[2] = parada3; + int identificador = 1; + + @SuppressWarnings("unused") + Linea linea = new Linea(identificador, paradas); + } + + @Test(expected = IllegalArgumentException.class) + public void constructorParadasConMenosDe3ElementosTest() { + DireccionGPS direccion1 = new DireccionGPS(20.45, 30.50); + DireccionGPS direccion2 = new DireccionGPS(20.4498, 30.50); + Parada parada1 = new Parada(direccion1); + Parada parada2 = new Parada(direccion2); + Parada[] paradas = new Parada[2]; + paradas[0] = parada1; + paradas[1] = parada2; + int identificador = 1; + + @SuppressWarnings("unused") + Linea linea = new Linea(identificador, paradas); + } + + @Test(expected = IllegalArgumentException.class) + public void constructorDistanciaParadaInicioYParadaFinMayorQue100Test() { + DireccionGPS direccion1 = new DireccionGPS(20.45, 30.50); + DireccionGPS direccion2 = new DireccionGPS(30.5, 20.4); + DireccionGPS direccion3 = new DireccionGPS(20.4509, 30.50); + Parada parada1 = new Parada(direccion1); + Parada parada2 = new Parada(direccion2); + Parada parada3 = new Parada(direccion3); + Parada[] paradas = new Parada[3]; + paradas[0] = parada1; + paradas[1] = parada2; + paradas[2] = parada3; + int identificador = 1; + + @SuppressWarnings("unused") + Linea linea = new Linea(identificador, paradas); + } + + @Test + public void getIdCorrectoTest() { + DireccionGPS direccion1 = new DireccionGPS(20.45, 30.50); + DireccionGPS direccion2 = new DireccionGPS(30.5, 20.4); + DireccionGPS direccion3 = new DireccionGPS(20.4498, 30.50); + Parada parada1 = new Parada(direccion1); + Parada parada2 = new Parada(direccion2); + Parada parada3 = new Parada(direccion3); + Parada[] paradas = new Parada[3]; + paradas[0] = parada1; + paradas[1] = parada2; + paradas[2] = parada3; + int identificador = 1; + + Linea linea = new Linea(identificador, paradas); + assertEquals(identificador, linea.getId(), errorAdmisible); + } + + @Test + public void getParadasCorrectoTest() { + DireccionGPS direccion1 = new DireccionGPS(20.45, 30.50); + DireccionGPS direccion2 = new DireccionGPS(30.5, 20.4); + DireccionGPS direccion3 = new DireccionGPS(20.4498, 30.50); + Parada parada1 = new Parada(direccion1); + Parada parada2 = new Parada(direccion2); + Parada parada3 = new Parada(direccion3); + Parada[] paradas = new Parada[3]; + paradas[0] = parada1; + paradas[1] = parada2; + paradas[2] = parada3; + int identificador = 1; + + Linea linea = new Linea(identificador, paradas); + assertArrayEquals(paradas, linea.getParadas()); + } + + @Test + public void secuenciaTest() { + fail("Quitar en implementacion"); + DireccionGPS direccion1 = new DireccionGPS(20.45, 30.50); + DireccionGPS direccion2 = new DireccionGPS(30.5, 20.4); + DireccionGPS direccion3 = new DireccionGPS(20.4498, 30.50); + Parada parada1 = new Parada(direccion1); + Parada parada2 = new Parada(direccion2); + Parada parada3 = new Parada(direccion3); + Parada[] paradas = new Parada[3]; + paradas[0] = parada1; + paradas[1] = parada2; + paradas[2] = parada3; + int identificador = 1; + + Linea linea = new Linea(identificador, paradas); + linea.addParadaIntermedia(parada1, 2); + linea.removeParada(parada1); + linea.hasParadaCerca(direccion1); + linea.hasCorrespondencia(linea); + linea.getParadasConTrasbordoDirecto(linea); + } + +} diff --git a/src/test/java/uva/tds/pr2/equipo10/LineaCorrespondenciasYTrasbordosTest.java b/src/test/java/uva/tds/pr2/equipo10/LineaCorrespondenciasYTrasbordosTest.java new file mode 100644 index 0000000000000000000000000000000000000000..8f84e169e8d621eef47d6a25cc7a95a342f3c374 --- /dev/null +++ b/src/test/java/uva/tds/pr2/equipo10/LineaCorrespondenciasYTrasbordosTest.java @@ -0,0 +1,215 @@ +package uva.tds.pr2.equipo10; + + +import static org.junit.Assert.*; + +import org.junit.After; +import org.junit.Before; +import org.junit.Test; + +public class LineaCorrespondenciasYTrasbordosTest { + + private DireccionGPS direccion1; + private DireccionGPS direccion2; + private DireccionGPS direccion3; + private Parada parada1; + private Parada parada2; + private Parada parada3; + private Parada paradas[]; + private int identificador; + private Linea linea; + + private final double errorAdmisible = 0.001; + + @Before + public void setUp() throws Exception { + direccion1 = new DireccionGPS(20.45, 30.50); + direccion2 = new DireccionGPS(30.5, 20.4); + direccion3 = new DireccionGPS(20.4498, 30.50); + parada1 = new Parada(direccion1); + parada2 = new Parada(direccion2); + parada3 = new Parada(direccion3); + paradas = new Parada[3]; + paradas[0] = parada1; + paradas[1] = parada2; + paradas[2] = parada3; + identificador = 1; + linea = new Linea(identificador, paradas); + } + + @After + public void tearDown() throws Exception { + direccion1 = null; + direccion2 = null; + direccion3 = null; + parada1 = null; + parada2 = null; + parada3 = null; + paradas = null; + identificador = 0; + linea = null; + } + + @Test + public void hasCorrespondenciaCorrectoTest() { + fail("Quitar en implementación"); + DireccionGPS _direccion1 = new DireccionGPS(20.45, 30.50); + DireccionGPS _direccion2 = new DireccionGPS(30.5, 20.4); + DireccionGPS _direccion3 = new DireccionGPS(20.4498, 30.50); + Parada _parada1 = new Parada(_direccion1); + Parada _parada2 = new Parada(_direccion2); + Parada _parada3 = new Parada(_direccion3); + Parada _paradas[] = new Parada[3]; + _paradas[0] = _parada1; + _paradas[1] = _parada2; + _paradas[2] = _parada3; + int _identificador = 2; + Linea _linea = new Linea(_identificador, _paradas); + + assertTrue(linea.hasCorrespondencia(_linea)); + assertNotNull(_linea); + } + + @Test(expected = IllegalArgumentException.class) + public void hasCorrespondenciaConLineaNullTest() { + linea.hasCorrespondencia(null); + } + + @Test + public void getParadasConCorrespondenciaCorrectoTest() { + fail("Quitar en implementación"); + DireccionGPS _direccion1 = new DireccionGPS(20.45, 30.50); + DireccionGPS _direccion2 = new DireccionGPS(30.5, 20.4); + DireccionGPS _direccion3 = new DireccionGPS(20.4498, 30.50); + Parada _parada1 = new Parada(_direccion1); + Parada _parada2 = new Parada(_direccion2); + Parada _parada3 = new Parada(_direccion3); + Parada _paradas[] = new Parada[3]; + _paradas[0] = _parada1; + _paradas[1] = _parada2; + _paradas[2] = _parada3; + int _identificador = 2; + Linea _linea = new Linea(_identificador, _paradas); + + Parada paradasConCorrespondencia[] = linea.getParadasConCorrespondencia(_linea); + Parada correspondencias[] = new Parada[] { _parada1, _parada2, _parada3 }; + + assertNotNull(_linea); + assertTrue(linea.hasCorrespondencia(_linea)); + assertArrayEquals(correspondencias, paradasConCorrespondencia); + } + + @Test(expected = IllegalArgumentException.class) + public void getParadasConCorrespondenciaLineaNullTest() { + linea.getParadasConCorrespondencia(null); + } + + @Test(expected = IllegalArgumentException.class) + public void getParadasConCorrespondenciaConLineaSinCorrespondenciaTest() { + DireccionGPS _direccion1 = new DireccionGPS(21.45, 31.50); + DireccionGPS _direccion2 = new DireccionGPS(31.5, 21.4); + DireccionGPS _direccion3 = new DireccionGPS(21.4498, 31.50); + Parada _parada1 = new Parada(_direccion1); + Parada _parada2 = new Parada(_direccion2); + Parada _parada3 = new Parada(_direccion3); + Parada _paradas[] = new Parada[3]; + _paradas[0] = _parada1; + _paradas[1] = _parada2; + _paradas[2] = _parada3; + int _identificador = 2; + Linea _linea = new Linea(_identificador, _paradas); + linea.getParadasConCorrespondencia(_linea); + } + + @Test + public void hasTrasbordoDirectoCorrectoTest() { + fail("Quitar en implementación"); + DireccionGPS _direccion1 = new DireccionGPS(21.45, 31.50); + DireccionGPS _direccion2 = new DireccionGPS(30.5, 20.4); + DireccionGPS _direccion3 = new DireccionGPS(21.4498, 31.50); + Parada _parada1 = new Parada(_direccion1); + Parada _parada2 = new Parada(_direccion2); + Parada _parada3 = new Parada(_direccion3); + Parada _paradas[] = new Parada[3]; + _paradas[0] = _parada1; + _paradas[1] = _parada2; + _paradas[2] = _parada3; + int _identificador = 2; + Linea _linea = new Linea(_identificador, _paradas); + assertTrue(linea.hasTrasbordoDirecto(_linea)); + assertNotNull(_linea); + } + + @Test(expected = IllegalArgumentException.class) + public void hasTrasbordoDirectoConLineaNullTest() { + linea.hasTrasbordoDirecto(null); + } + + @Test + public void getParadasConTrasbordoDirectoCorrectoTest() { + fail("Quitar en implementación"); + DireccionGPS _direccion1 = new DireccionGPS(21.45, 31.50); + DireccionGPS _direccion2 = new DireccionGPS(30.5, 20.4); + DireccionGPS _direccion3 = new DireccionGPS(21.4498, 31.50); + Parada _parada1 = new Parada(_direccion1); + + Parada _parada2 = new Parada(_direccion2); + Parada _parada3 = new Parada(_direccion3); + Parada _paradas[] = new Parada[3]; + _paradas[0] = _parada1; + _paradas[1] = _parada2; + _paradas[2] = _parada3; + int _identificador = 2; + Linea _linea = new Linea(_identificador, _paradas); + + Parada paradasConCorrespondencia[] = linea.getParadasConTrasbordoDirecto(_linea); + assertNotNull(_linea); + assertTrue(linea.hasTrasbordoDirecto(_linea)); + Parada trasbordos[] = new Parada[] { _parada2 }; + assertArrayEquals(trasbordos, paradasConCorrespondencia); + + } + + @Test(expected = IllegalArgumentException.class) + public void getParadasConTrasbordoDirectoConLineaNullTest() { + linea.getParadasConCorrespondencia(null); + } + + @Test(expected = IllegalArgumentException.class) + public void getParadasConTrasbordoDirectoConLineaSinTrasbordoDirectoTest() { + DireccionGPS _direccion1 = new DireccionGPS(21.45, 31.50); + DireccionGPS _direccion2 = new DireccionGPS(31.5, 21.4); + DireccionGPS _direccion3 = new DireccionGPS(21.4498, 31.50); + Parada _parada1 = new Parada(_direccion1); + Parada _parada2 = new Parada(_direccion2); + Parada _parada3 = new Parada(_direccion3); + Parada _paradas[] = new Parada[3]; + _paradas[0] = _parada1; + _paradas[1] = _parada2; + _paradas[2] = _parada3; + int _identificador = 2; + Linea _linea = new Linea(_identificador, _paradas); + linea.getParadasConTrasbordoDirecto(_linea); + } + + @Test + public void checkDistanciaCorrectoTest() { + fail("Quitar en implementación"); + int distancia = linea.checkDistancia(parada1, parada2); + assertNotNull(parada1); + assertNotNull(parada2); + assertEquals(1698851, distancia, errorAdmisible); + } + + @Test(expected = IllegalArgumentException.class) + public void checkDistanciaConPrimerParametroNullTest() { + linea.checkDistancia(null, parada2); + } + + @Test(expected = IllegalArgumentException.class) + public void checkDistanciaConSegundoParametroNullTest() { + + linea.checkDistancia(parada1, null); + } + +} diff --git a/src/test/java/uva/tds/pr2/equipo10/LineaGestionDeParadasTest.java b/src/test/java/uva/tds/pr2/equipo10/LineaGestionDeParadasTest.java new file mode 100644 index 0000000000000000000000000000000000000000..f6bef90cb9acf6e23336900a5ef90b948d98c241 --- /dev/null +++ b/src/test/java/uva/tds/pr2/equipo10/LineaGestionDeParadasTest.java @@ -0,0 +1,177 @@ +package uva.tds.pr2.equipo10; + + +import static org.junit.Assert.*; + +import org.junit.*; + +public class LineaGestionDeParadasTest { + + private DireccionGPS direccion1; + private DireccionGPS direccion2; + private DireccionGPS direccion3; + private Parada parada1; + private Parada parada2; + private Parada parada3; + private Parada paradas[]; + private int identificador; + private Linea linea; + + @Before + public void setUp() throws Exception { + direccion1 = new DireccionGPS(20.45, 30.50); + direccion2 = new DireccionGPS(30.5, 20.4); + direccion3 = new DireccionGPS(20.4498, 30.50); + parada1 = new Parada(direccion1); + parada2 = new Parada(direccion2); + parada3 = new Parada(direccion3); + paradas = new Parada[3]; + paradas[0] = parada1; + paradas[1] = parada2; + paradas[2] = parada3; + identificador = 1; + linea = new Linea(identificador, paradas); + } + + @After + public void tearDown() throws Exception { + direccion1 = null; + direccion2 = null; + direccion3 = null; + parada1 = null; + parada2 = null; + parada3 = null; + paradas = null; + identificador = 0; + linea = null; + } + + @Test + public void addParadaIntermediaCorrectoTest() { + fail("Cambiar"); + DireccionGPS direccionGPS = new DireccionGPS(20.1, 31); + Parada parada = new Parada(direccionGPS); + int posicion = 1; + linea.addParadaIntermedia(parada, posicion); + assertFalse(linea.hasParadaNull()); + assertEquals(linea.getParadas()[posicion], parada); + } + + @Test(expected = NullPointerException.class) + public void addParadaIntermediaConParadaNullTest() { + int posicion = 1; + linea.addParadaIntermedia(null, posicion); + } + + @Test(expected = IllegalArgumentException.class) + public void addParadaIntermediaConPosicionMenorDeCeroTest() { + DireccionGPS direccionGPS = new DireccionGPS(20.1, 31); + Parada parada = new Parada(direccionGPS); + int posicion = 0; + linea.addParadaIntermedia(parada, posicion); + } + + @Test(expected = IllegalArgumentException.class) + public void addParadaIntermediaConPosicionMayorQueParadaFinalTest() { + DireccionGPS direccionGPS = new DireccionGPS(20.1, 31); + Parada parada = new Parada(direccionGPS); + int posicion = paradas.length - 1; + linea.addParadaIntermedia(parada, posicion); + } + + @Test + public void addParadaFinalCorrectoTest() { + fail("Quitar en implementación"); + DireccionGPS direccionGPS = new DireccionGPS(20.44989, 30.5); + Parada parada = new Parada(direccionGPS); + linea.addParadaFinal(parada); + + assertFalse(linea.hasParadaNull()); + assertEquals(linea.getParadas()[linea.getParadas().length - 1], parada); + } + + @Test(expected = IllegalArgumentException.class) + public void addParadaFinalParadaNulaTest() { + linea.addParadaFinal(null); + + } + + @Test(expected = IllegalArgumentException.class) + public void addParadaFinalConParadaAMasDe100MetrosDeLaInicialSTest() { + DireccionGPS direccionGPS = new DireccionGPS(20.4509, 30.5); + Parada parada = new Parada(direccionGPS); + linea.addParadaFinal(parada); + } + + @Test + public void addParadaInicialCorrectoTest() { + fail("Cambiar"); + DireccionGPS direccionGPS = new DireccionGPS(20.44989, 30.5); + Parada parada = new Parada(direccionGPS); + linea.addParadaInicial(parada); + assertFalse(linea.hasParadaNull()); + assertEquals(linea.getParadas()[0], parada); + } + + @Test(expected = IllegalArgumentException.class) + public void addParadaInicialConParadaNullTest() { + linea.addParadaInicial(null); + } + + @Test(expected = IllegalArgumentException.class) + public void addParadaInicialConParadaAMasDistanciaDeCienTest() { + DireccionGPS direccionGPS = new DireccionGPS(20.44989, 30.5); + Parada parada = new Parada(direccionGPS); + linea.addParadaInicial(parada); + } + + @Test + public void removeParadaCorrectoTest() { + fail("Quitar en implementación"); + linea.removeParada(parada2); + + assertFalse(linea.hasParadaNull()); + assertFalse(linea.hasParada(parada2)); + + } + + @Test(expected = IllegalArgumentException.class) + public void removeParadaNulaTest() { + linea.removeParada(null); + + } + + @Test(expected = IllegalArgumentException.class) + public void removeParadaConparadaInicialTest() { + linea.removeParada(parada1); + + } + + @Test(expected = IllegalArgumentException.class) + public void removeParadaConparadaFinTest() { + linea.removeParada(parada3); + + } + + @Test + public void hasParadaCercaCorrectoTest() { + fail("Quitar en implementación"); + assertTrue(linea.hasParadaCerca(direccion2)); + assertNotNull(direccion2); + } + + @Test(expected = IllegalArgumentException.class) + public void hasParadaCercaConDireccionNullTest() { + linea.hasParadaCerca(direccion2); + } + + @Test + public void hasParadaCorrectoTest() { + assertTrue(linea.hasParada(parada1)); + } + + @Test(expected = IllegalArgumentException.class) + public void hasParadaConParadaNullTest() { + linea.hasParada(null); + } +} diff --git a/src/test/java/uva/tds/pr2/equipo10/ParadaTest.java b/src/test/java/uva/tds/pr2/equipo10/ParadaTest.java new file mode 100644 index 0000000000000000000000000000000000000000..f57eed05917792166bfb89e3deb550dc0cb9b58f --- /dev/null +++ b/src/test/java/uva/tds/pr2/equipo10/ParadaTest.java @@ -0,0 +1,60 @@ +package uva.tds.pr2.equipo10; + + +import static org.junit.Assert.*; + +import org.junit.Test; + + +public class ParadaTest { + + @Test + public void constructorCorrectoTest() { + DireccionGPS direccion = new DireccionGPS(5.1, -5.1); + + Parada parada = new Parada(direccion); + assertNotNull(parada.getDireccion()); + assertEquals(direccion, parada.getDireccion()); + } + + @Test(expected = IllegalArgumentException.class) + public void constructorDireccionNullTest() { + @SuppressWarnings("unused") + Parada parada = new Parada(null); + } + + @Test + public void getDireccionCorrectoTest() { + DireccionGPS direccion = new DireccionGPS(5.1, -5.1); + Parada parada = new Parada(direccion); + assertEquals(direccion, parada.getDireccion()); + } + + @Test + public void getDistanciaCorrectoTest() { + fail("Quitar en implentación"); + DireccionGPS direccion = new DireccionGPS(5.1, -5.1); + Parada parada = new Parada(direccion); + Parada parada2 = new Parada(direccion); + parada.getDistancia(parada2); + assertNotNull(parada2); + } + + @Test(expected = IllegalArgumentException.class) + public void getDistanciaParadaACompararNullTest() { + DireccionGPS direccion = new DireccionGPS(5.1, -5.1); + Parada parada = new Parada(direccion); + parada.getDistancia(null); + } + + @Test + public void secuenciaTest() { + fail("Quitar en implementacion"); + DireccionGPS direccion = new DireccionGPS(5.1, -5.1); + Parada parada = new Parada(direccion); + Parada parada2 = new Parada(direccion); + parada.getDireccion(); + parada.getDistancia(parada2); + } + +} diff --git a/src/test/java/uva/tds/pr2/equipo10/RedConstructorTest.java b/src/test/java/uva/tds/pr2/equipo10/RedConstructorTest.java new file mode 100644 index 0000000000000000000000000000000000000000..cd061b14e7d0402e3d4e1db8033b5aaa58767013 --- /dev/null +++ b/src/test/java/uva/tds/pr2/equipo10/RedConstructorTest.java @@ -0,0 +1,122 @@ +package uva.tds.pr2.equipo10; + + +import static org.junit.Assert.*; + +import org.junit.After; +import org.junit.Before; +import org.junit.Test; + +public class RedConstructorTest { + + private DireccionGPS direccion1; + private DireccionGPS direccion2; + private DireccionGPS direccion3; + private Parada parada1; + private Parada parada2; + private Parada parada3; + private Parada paradas[]; + private int identificador; + private Linea linea; + + private Parada parada4; + private Parada parada5; + private Parada parada6; + private Parada paradas2[]; + private int identificador2; + private Linea linea2; + + @Before + public void setUp() throws Exception { + direccion1 = new DireccionGPS(20.45, 30.50); + direccion2 = new DireccionGPS(30.5, 20.4); + direccion3 = new DireccionGPS(20.4498, 30.50); + parada1 = new Parada(direccion1); + parada2 = new Parada(direccion2); + parada3 = new Parada(direccion3); + paradas = new Parada[3]; + paradas[0] = parada1; + paradas[1] = parada2; + paradas[2] = parada3; + identificador = 1; + linea = new Linea(identificador, paradas); + + parada6 = new Parada(direccion3); + parada5 = new Parada(direccion2); + parada4 = new Parada(direccion1); + paradas2 = new Parada[3]; + paradas2[0] = parada6; + paradas2[1] = parada5; + paradas2[2] = parada4; + identificador2 = 2; + linea2 = new Linea(identificador2, paradas2); + } + + @After + public void tearDown() throws Exception { + direccion1 = null; + direccion2 = null; + direccion3 = null; + parada1 = null; + parada2 = null; + parada3 = null; + paradas = null; + identificador = 0; + linea = null; + parada6 = null; + parada5 = null; + parada4 = null; + paradas2 = null; + identificador2 = 0; + linea2 = null; + } + + @Test + public void constructorCorrectoTest() { + Linea lineas[] = new Linea[] { linea, linea2 }; + Red red = new Red(lineas); + assertNotNull(lineas); + assertArrayEquals(lineas, red.getLineas()); + assertFalse(red.hasLineaNull()); + } + + @Test(expected = IllegalArgumentException.class) + public void constructorConLineasNullTest() { + @SuppressWarnings("unused") + Red red = new Red(null); + } + + @Test(expected = IllegalArgumentException.class) + public void constructorConLineaNullTest() { + Linea lineas[] = new Linea[] { linea, null }; + @SuppressWarnings("unused") + Red red = new Red(lineas); + } + + @Test(expected = IllegalArgumentException.class) + public void constructorConLineasDeTamanioMenorDe2Test() { + Linea lineas[] = new Linea[] { linea }; + @SuppressWarnings("unused") + Red red = new Red(lineas); + } + + @Test + public void getLineasCorrectoTest() { + Linea lineas[] = new Linea[] { linea, linea2 }; + Red red = new Red(lineas); + assertArrayEquals(lineas, red.getLineas()); + } + + @Test + public void secuenciaTest() { + fail("Quitar en implementacion"); + Linea lineas[] = new Linea[] { linea, linea2 }; + Red red = new Red(lineas); + red.addLinea(linea); + red.removeLinea(linea); + red.getDistanciaParadas(parada1, parada2); + red.getLinea(0); + red.infoParadas(direccion1, 100); + } + +} diff --git a/src/test/java/uva/tds/pr2/equipo10/RedGestionDeDistanciasTest.java b/src/test/java/uva/tds/pr2/equipo10/RedGestionDeDistanciasTest.java new file mode 100644 index 0000000000000000000000000000000000000000..56c790d22e01392fe1d19c7cacc59daac819b865 --- /dev/null +++ b/src/test/java/uva/tds/pr2/equipo10/RedGestionDeDistanciasTest.java @@ -0,0 +1,124 @@ +package uva.tds.pr2.equipo10; + + +import static org.junit.Assert.*; + +import org.junit.After; +import org.junit.Before; +import org.junit.Test; + +public class RedGestionDeDistanciasTest { + + private DireccionGPS direccion1; + private DireccionGPS direccion2; + private DireccionGPS direccion3; + private Parada parada1; + private Parada parada2; + private Parada parada3; + private Parada paradas[]; + private int identificador; + private Linea linea; + + private Parada parada4; + private Parada parada5; + private Parada parada6; + private Parada paradas2[]; + private int identificador2; + private Linea linea2; + + private Linea[] lineas; + private Red red; + + @Before + public void setUp() throws Exception { + direccion1 = new DireccionGPS(20.45, 30.50); + direccion2 = new DireccionGPS(30.5, 20.4); + direccion3 = new DireccionGPS(20.4498, 30.50); + parada1 = new Parada(direccion1); + parada2 = new Parada(direccion2); + parada3 = new Parada(direccion3); + paradas = new Parada[3]; + paradas[0] = parada1; + paradas[1] = parada2; + paradas[2] = parada3; + identificador = 1; + linea = new Linea(identificador, paradas); + + parada6 = new Parada(direccion3); + parada5 = new Parada(direccion2); + parada4 = new Parada(direccion1); + paradas2 = new Parada[3]; + paradas2[0] = parada6; + paradas2[1] = parada5; + paradas2[2] = parada4; + identificador2 = 2; + linea2 = new Linea(identificador2, paradas2); + + lineas = new Linea[] { linea, linea2 }; + red = new Red(lineas); + } + + @After + public void tearDown() throws Exception { + direccion1 = null; + direccion2 = null; + direccion3 = null; + parada1 = null; + parada2 = null; + parada3 = null; + paradas = null; + identificador = 0; + linea = null; + + parada6 = null; + parada5 = null; + parada4 = null; + paradas2 = null; + identificador2 = 0; + linea2 = null; + + lineas = null; + red = null; + } + + @Test + public void infoParadasCorrectoTest() { + int radio = 200; + Linea info[] = new Linea[] { linea, linea2 }; + Linea infoVuelta[] = red.infoParadas(direccion1, radio); + assertNotNull(direccion1); + assertArrayEquals(info, infoVuelta); + } + + @Test(expected = IllegalArgumentException.class) + public void infoParadasConDireccionNullTest() { + int radio = 200; + red.infoParadas(null, radio); + } + + @Test(expected = IllegalArgumentException.class) + public void infoParadasConRadioNegativoTest() { + int radio = -1; + red.infoParadas(direccion1, radio); + } + + @Test + public void getDistanciaParadasCorrectoTest() { + @SuppressWarnings("unused") + int distancia = red.getDistanciaParadas(parada1, parada5); + assertNotNull(parada1); + assertNotNull(parada5); + assertEquals(6887904, red.getDistanciaParadas(parada1, parada5)); + } + + @Test(expected = IllegalArgumentException.class) + public void getDistanciaConPrimerParametroNullTest() { + red.getDistanciaParadas(null, parada5); + } + + @Test(expected = IllegalArgumentException.class) + public void getDistanciaConSegundoParametroNullTest() { + red.getDistanciaParadas(parada1, null); + } + +} diff --git a/src/test/java/uva/tds/pr2/equipo10/RedGestionDeLineasTest.java b/src/test/java/uva/tds/pr2/equipo10/RedGestionDeLineasTest.java new file mode 100644 index 0000000000000000000000000000000000000000..01da72737ac3be175d8dfdc412a4bfefe90bbf05 --- /dev/null +++ b/src/test/java/uva/tds/pr2/equipo10/RedGestionDeLineasTest.java @@ -0,0 +1,152 @@ +package uva.tds.pr2.equipo10; + + +import static org.junit.Assert.*; + +import org.junit.After; +import org.junit.Before; +import org.junit.Test; + +public class RedGestionDeLineasTest { + + private DireccionGPS direccion1; + private DireccionGPS direccion2; + private DireccionGPS direccion3; + private Parada parada1; + private Parada parada2; + private Parada parada3; + private Parada paradas[]; + private int identificador; + private Linea linea; + + private Parada parada4; + private Parada parada5; + private Parada parada6; + private Parada paradas2[]; + private int identificador2; + private Linea linea2; + + private Linea[] lineas; + private Red red; + + + @Before + public void setUp() throws Exception { + direccion1 = new DireccionGPS(20.45, 30.50); + direccion2 = new DireccionGPS(30.5, 20.4); + direccion3 = new DireccionGPS(20.4498, 30.50); + parada1 = new Parada(direccion1); + parada2 = new Parada(direccion2); + parada3 = new Parada(direccion3); + paradas = new Parada[3]; + paradas[0] = parada1; + paradas[1] = parada2; + paradas[2] = parada3; + identificador = 1; + linea = new Linea(identificador, paradas); + + parada6 = new Parada(direccion3); + parada5 = new Parada(direccion2); + parada4 = new Parada(direccion1); + paradas2 = new Parada[3]; + paradas2[0] = parada6; + paradas2[1] = parada5; + paradas2[2] = parada4; + identificador2 = 2; + linea2 = new Linea(identificador2, paradas2); + + lineas = new Linea[] { linea, linea2 }; + red = new Red(lineas); + } + + @After + public void tearDown() throws Exception { + direccion1 = null; + direccion2 = null; + direccion3 = null; + parada1 = null; + parada2 = null; + parada3 = null; + paradas = null; + identificador = 0; + linea = null; + + parada6 = null; + parada5 = null; + parada4 = null; + paradas2 = null; + identificador2 = 0; + linea2 = null; + + lineas = null; + red = null; + } + + @Test + public void addLineaCorrectoTest() { + DireccionGPS d1 = new DireccionGPS(20.45, 30.50); + DireccionGPS d2 = new DireccionGPS(30.5, 20.4); + DireccionGPS d3 = new DireccionGPS(20.4498, 30.50); + Parada p1 = new Parada(d1); + Parada p2 = new Parada(d2); + Parada p3 = new Parada(d3); + Parada p[] = new Parada[3]; + p[0] = p1; + p[1] = p2; + p[2] = p3; + int identificador3 = 3; + Linea linea3 = new Linea(identificador3, p); + red.addLinea(linea3); + assertNotNull(linea3); + assertEquals(linea3, red.getLinea(2)); + } + + @Test(expected = IllegalArgumentException.class) + public void addLineaConLineaNullTest() { + red.addLinea(null); + } + + @Test(expected = IllegalArgumentException.class) + public void addLineaConLineaYaExistenteEnLaRedTest() { + red.addLinea(linea); + } + + @Test + public void getLineaCorrectoTest() { + assertEquals(linea, red.getLinea(0)); + } + + @Test(expected = IllegalArgumentException.class) + public void getLineaConPosicionNegativaTest() { + red.getLinea(-1); + } + + @Test + public void removeLineaCorrectoTest() { + fail("Quitar en implementación"); + red.removeLinea(linea); + assertNotNull(linea); + } + + @Test(expected = IllegalArgumentException.class) + public void removeLineaConLineaNullTest() { + red.removeLinea(null); + } + + @Test(expected = IllegalArgumentException.class) + public void removeLineaConLineaQueNoEstaEnLaRedTest() { + DireccionGPS d1 = new DireccionGPS(20.45, 30.50); + DireccionGPS d2 = new DireccionGPS(30.5, 20.4); + DireccionGPS d3 = new DireccionGPS(20.4498, 30.50); + Parada p1 = new Parada(d1); + Parada p2 = new Parada(d2); + Parada p3 = new Parada(d3); + Parada p[] = new Parada[3]; + p[0] = p1; + p[1] = p2; + p[2] = p3; + int identificador3 = 3; + Linea linea3 = new Linea(identificador3, p); + red.removeLinea(linea3); + } +} diff --git a/ivagonz-antroma-practica2/src/uva/tds/pr2/equipo10/Linea.java b/src/test/java/uva/tds/pr2/equipo10/Unit.java similarity index 57% rename from ivagonz-antroma-practica2/src/uva/tds/pr2/equipo10/Linea.java rename to src/test/java/uva/tds/pr2/equipo10/Unit.java index 2cb7b4fa1895d9451831be70dd27b131a8802e29..f70e292ab0b1023368ec35b92004b9990d65e976 100644 --- a/ivagonz-antroma-practica2/src/uva/tds/pr2/equipo10/Linea.java +++ b/src/test/java/uva/tds/pr2/equipo10/Unit.java @@ -1,5 +1,6 @@ package uva.tds.pr2.equipo10; -public class Linea { +public interface Unit { } +