From eac9a931b66aaa11e44d22b61fff067cd1a3557d Mon Sep 17 00:00:00 2001 From: YaFedImYaEatIm Date: Thu, 25 Aug 2016 13:28:44 +1200 Subject: [PATCH] Added Route Unit Tests and DataException Exceptions Class --- pom.xml | 2 +- .../group9/Controller/DataException.java | 21 +++++ src/main/java/seng202/group9/Core/Route.java | 25 +++--- src/test/java/seng202/group9/RouteTest.java | 80 +++++++++++++++++++ 4 files changed, 117 insertions(+), 11 deletions(-) create mode 100644 src/main/java/seng202/group9/Controller/DataException.java create mode 100644 src/test/java/seng202/group9/RouteTest.java diff --git a/pom.xml b/pom.xml index d19badb..b6665e3 100644 --- a/pom.xml +++ b/pom.xml @@ -11,7 +11,7 @@ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/ma junit junit - 3.8.1 + 4.12 test diff --git a/src/main/java/seng202/group9/Controller/DataException.java b/src/main/java/seng202/group9/Controller/DataException.java new file mode 100644 index 0000000..ba7b583 --- /dev/null +++ b/src/main/java/seng202/group9/Controller/DataException.java @@ -0,0 +1,21 @@ +package seng202.group9.Controller; + +public class DataException extends Exception{ + + public DataException(){ + super(); + } + + public DataException(String message) { + super(message); + } + + public DataException(String message, Throwable cause) { + super(message, cause); + } + + public DataException(Throwable cause) { + super(cause); + } + +} diff --git a/src/main/java/seng202/group9/Core/Route.java b/src/main/java/seng202/group9/Core/Route.java index 825eb12..8a874ab 100644 --- a/src/main/java/seng202/group9/Core/Route.java +++ b/src/main/java/seng202/group9/Core/Route.java @@ -1,5 +1,7 @@ package seng202.group9.Core; +import seng202.group9.Controller.DataException; + /** * Route Class * @author Fan-Wu Yang @@ -46,6 +48,7 @@ public class Route { String codeShare, int stops, String equipment){ //remember to set the id manually later after adding it to the database and grab //the new id value of the route. + this.ID = -1; this.stops = stops; this.codeShare = codeShare; this.equipment = equipment; @@ -53,18 +56,11 @@ public class Route { this.departureAirport = departureAirport; this.arrivalAirport = arrivalAirport; } - /** - * Returns code share of the route - * @return - */ - public String getCodeShare() { - return codeShare; - } /** * sets code share of the route * @param codeShare */ - public void setCodeShare(String codeShare) { + public void setCode(String codeShare) { this.codeShare = codeShare; } /** @@ -113,8 +109,12 @@ public class Route { * returns the id of this route * @return */ - public int getID(){ - return ID; + public int getID() throws DataException{ + if (this.ID == -1){ + throw new DataException("ID not set."); + }else{ + return ID; + } } /** * returns the number of stops the route stops. @@ -159,5 +159,10 @@ public class Route { return arrivalAirport; } + @Override + public String toString(){ + + return airline+" flies from "+departureAirport+" to "+arrivalAirport+" on a "+equipment +" stopping "+stops+" amount of times"; + } } diff --git a/src/test/java/seng202/group9/RouteTest.java b/src/test/java/seng202/group9/RouteTest.java new file mode 100644 index 0000000..9a9c674 --- /dev/null +++ b/src/test/java/seng202/group9/RouteTest.java @@ -0,0 +1,80 @@ +package seng202.group9; + +import org.junit.rules.ExpectedException; +import org.junit.Test; + +import junit.framework.TestCase; +import seng202.group9.Controller.DataException; +import seng202.group9.Core.Route; +/** + * + * Route tests + * @author Fan-Wu Yang + * + */ +public class RouteTest extends TestCase { + + public ExpectedException thrown = ExpectedException.none(); + + @Test + public void testRouteGetSet(){ + //sample entry + //BA,1355,SIN,3316,LHR,507,,0,744 777 + //airline, airline ID (This is not parsed as this will be different + //from our database id for this route), source Aiport, source Airport ID (not parsed), + //destination airport, destination ID (not parsed), Codeshare, stops, Equipment + Route route = new Route("BA", "SIN", "LHR", "", 0, "744 777"); + ////////////// + //test getters + ////////////// + assertEquals(route.getAirline(), "BA"); + assertEquals(route.departsFrom(), "SIN"); + assertEquals(route.arrivesAt(), "LHR"); + assertEquals(route.getCode(), ""); + assertEquals(route.getEquipment(), "744 777"); + /////////////// + //test setters + /////////////// + route.setAirline("BAH"); + route.setArrivalAirport("LEFT-HAND-RULE"); + route.setDepartureAirport("SING-SONG"); + route.setCode("Y"); + route.setStops(5); + route.setEquipment("747 840"); + + assertEquals(route.getAirline(), "BAH"); + assertEquals(route.departsFrom(), "SING-SONG"); + assertEquals(route.arrivesAt(), "LEFT-HAND-RULE"); + assertEquals(route.getCode(), "Y"); + assertEquals(route.getEquipment(), "747 840"); + //////////////////////////// + //test alternate constructor + //////////////////////////// + Route route2 = new Route(1355, "BA", "SIN", "LHR", "", 0, "744 777"); + try { + assertTrue(1355 == route2.getID()); + } catch (DataException e) { + e.printStackTrace(); + } + } + + @Test + public void testRouteIDException() throws DataException{ + //sample entry + //BA,1355,SIN,3316,LHR,507,,0,744 777 + //airline, airline ID (This is not parsed as this will be different + //from our database id for this route), source Aiport, source Airport ID (not parsed), + //destination airport, destination ID (not parsed), Codeshare, stops, Equipment + Route route = new Route("BA", "SIN", "LHR", "", 0, "744 777"); + ///////////////////////////////////////////////// + //test that id is not set and throws an exception + ///////////////////////////////////////////////// + thrown.expect(DataException.class); + thrown.expectMessage("ID not set. Error in Database Implementation for adding code."); + try{ + route.getID(); + }catch (DataException e){ + //e.printStackTrace(); + } + } +}