diff --git a/src/main/java/seng202/group9/Core/Airline.java b/src/main/java/seng202/group9/Core/Airline.java index 4e60e17..76f9765 100644 --- a/src/main/java/seng202/group9/Core/Airline.java +++ b/src/main/java/seng202/group9/Core/Airline.java @@ -2,6 +2,7 @@ package seng202.group9.Core; import seng202.group9.Controller.DataException; +import javax.xml.crypto.Data; import java.util.ArrayList; /** @@ -251,8 +252,12 @@ public class Airline{ * deletes a route by matching index keep in mind that the array position will change for all indexs after this. * @param index */ - public void delRoutes(int index){ - routes.remove(index); + public void delRoutes(int index) throws DataException{ + if (routes.size() > index && index >= 0) { + routes.remove(index); + }else{ + throw new DataException("The Route at index "+index+ "does not exist to be deleted."); + } } /** diff --git a/src/main/java/seng202/group9/Core/Airport.java b/src/main/java/seng202/group9/Core/Airport.java index c41964b..c533460 100644 --- a/src/main/java/seng202/group9/Core/Airport.java +++ b/src/main/java/seng202/group9/Core/Airport.java @@ -2,6 +2,7 @@ package seng202.group9.Core; import java.util.ArrayList; +import javafx.scene.chart.PieChart; import seng202.group9.Controller.DataException; /** * Airport Class @@ -363,8 +364,12 @@ public class Airport { * deletes a member of arrival routes by index * @param index */ - public void delArrivalRoutes(int index){ - arrivalRoutes.remove(index); + public void delArrivalRoutes(int index) throws DataException{ + if (arrivalRoutes.size() > index && index >= 0) { + arrivalRoutes.remove(index); + }else{ + throw new DataException("Index "+index+" of number of Arrival Routes array size."); + } } /** * deletes a member of departure routes by matching route pointer @@ -378,8 +383,12 @@ public class Airport { * deletes a member of departure routes by index * @param index */ - public void delDepartureRoutes(int index){ - departureRoutes.remove(index); + public void delDepartureRoutes(int index) throws DataException{ + if (departureRoutes.size() > index && index >= 0) { + departureRoutes.remove(index); + }else{ + throw new DataException("Index "+index+" is out of number of Departure Routes array size."); + } } /** diff --git a/src/main/java/seng202/group9/Core/City.java b/src/main/java/seng202/group9/Core/City.java index f520641..ed3fdbd 100644 --- a/src/main/java/seng202/group9/Core/City.java +++ b/src/main/java/seng202/group9/Core/City.java @@ -1,5 +1,7 @@ package seng202.group9.Core; +import seng202.group9.Controller.DataException; + import java.util.ArrayList; public class City { @@ -137,9 +139,11 @@ public class City { * Deletes an Airport by Index from this City. * @param index */ - public void delAirport(int index) { - if (airports.size() > index) { + public void delAirport(int index) throws DataException{ + if (airports.size() > index && index >= 0) { airports.remove(index); + }else{ + throw new DataException("Index "+index+" is out of number of City Airports array size."); } } @Override diff --git a/src/test/java/seng202/group9/AirlineTest.java b/src/test/java/seng202/group9/AirlineTest.java index 7024e53..b7d8454 100644 --- a/src/test/java/seng202/group9/AirlineTest.java +++ b/src/test/java/seng202/group9/AirlineTest.java @@ -11,6 +11,7 @@ import seng202.group9.Core.Route; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertTrue; +import static org.junit.Assert.fail; /** * Test the functions for the Airline @@ -102,15 +103,35 @@ public class AirlineTest{ assertEquals(allNipponAirways.getRoutes().get(1), route2); assertEquals(allNipponAirways.getRoutes().get(2), route1); assertEquals(allNipponAirways.getRoutes().get(3), route2); - - allNipponAirways.delRoutes(3); + try { + allNipponAirways.delRoutes(3); + }catch (DataException e){ + fail("3 is a valid deletable index."); + } assertTrue(allNipponAirways.getRoutes().size() == 3); allNipponAirways.delRoutes(route2); assertTrue(allNipponAirways.getRoutes().size() == 2); - } + @Test(expected = DataException.class) + public void testInvalidRouteDelete() throws DataException{ + //ID, Name, Alias, IATA, ICAO, CallSign, Country, Active + //324,"All Nippon Airways","ANA All Nippon Airways","NH","ANA","ALL NIPPON","Japan","Y" + Airline allNipponAirways = new Airline(324, "All Nippon Airways", "ANA All Nippon Airways", + "NH", "ANA", "ALL NIPPON", "Japan", "Y"); + allNipponAirways.delRoutes(0); + } + + @Test(expected = DataException.class) + public void testInvalidIndexRouteDelete() throws DataException{ + //ID, Name, Alias, IATA, ICAO, CallSign, Country, Active + //324,"All Nippon Airways","ANA All Nippon Airways","NH","ANA","ALL NIPPON","Japan","Y" + Airline allNipponAirways = new Airline(324, "All Nippon Airways", "ANA All Nippon Airways", + "NH", "ANA", "ALL NIPPON", "Japan", "Y"); + allNipponAirways.delRoutes(-1); + } + @Test(expected = DataException.class) public void hasDuplicateNameTest() throws DataException { Airline allNipponAirways = new Airline(324, "All Nippon Airways", "ANA All Nippon Airways", diff --git a/src/test/java/seng202/group9/AirportUnitTest.java b/src/test/java/seng202/group9/AirportUnitTest.java index 5b49042..be24e9c 100644 --- a/src/test/java/seng202/group9/AirportUnitTest.java +++ b/src/test/java/seng202/group9/AirportUnitTest.java @@ -100,7 +100,12 @@ public class AirportUnitTest { assertEquals(heathrow.getArrivalRoutes().get(2).getArrivalAirport(), "LHR2"); assertEquals(heathrow.getArrivalRoutes().get(3).getArrivalAirport(), "LHR3"); - heathrow.delArrivalRoutes(0); + try { + heathrow.delArrivalRoutes(0); + } catch (DataException e) { + + } + assertTrue(heathrow.getArrivalRoutes().size() == 3); heathrow.delArrivalRoutes(heathrow.getArrivalRoutes().get(0)); assertTrue(heathrow.getArrivalRoutes().size() == 2); @@ -114,7 +119,11 @@ public class AirportUnitTest { assertEquals(heathrow.getDepartureRoutes().get(2).getDepartureAirport(), "SIN2"); assertEquals(heathrow.getDepartureRoutes().get(3).getDepartureAirport(), "SIN3"); - heathrow.delDepartureRoutes(0); + try { + heathrow.delDepartureRoutes(0); + } catch (DataException e) { + + } assertTrue(heathrow.getDepartureRoutes().size() == 3); heathrow.delDepartureRoutes(heathrow.getDepartureRoutes().get(0)); assertTrue(heathrow.getDepartureRoutes().size() == 2); @@ -214,6 +223,38 @@ public class AirportUnitTest { assertEquals(heathrow.getID(), 544);//check ID no id should be thrown } + @Test(expected = DataException.class) + public void checkDelArrivalNoIndexFailure() throws DataException{ + //507,"Heathrow","London","United Kingdom","LHR","EGLL",51.4775,-0.461389,83,0,"E","Europe/London" + //ID, NaWme, City, Country, IATA/FFA, ICAO, Latitude, Longitude, Altitude, Timezone, DST, Tz Data + Airport heathrow = new Airport("Heathrow", "London", "United Kingdom", "LHR", "EGLL", 51.4775, -0.41389, 83); + heathrow.delArrivalRoutes(0); + } + + @Test(expected = DataException.class) + public void checkDelArrivalNegativeIndexFailure() throws DataException{ + //507,"Heathrow","London","United Kingdom","LHR","EGLL",51.4775,-0.461389,83,0,"E","Europe/London" + //ID, NaWme, City, Country, IATA/FFA, ICAO, Latitude, Longitude, Altitude, Timezone, DST, Tz Data + Airport heathrow = new Airport("Heathrow", "London", "United Kingdom", "LHR", "EGLL", 51.4775, -0.41389, 83); + heathrow.delArrivalRoutes(-1); + } + + @Test(expected = DataException.class) + public void checkDelDepartureNoIndexFailure() throws DataException{ + //507,"Heathrow","London","United Kingdom","LHR","EGLL",51.4775,-0.461389,83,0,"E","Europe/London" + //ID, NaWme, City, Country, IATA/FFA, ICAO, Latitude, Longitude, Altitude, Timezone, DST, Tz Data + Airport heathrow = new Airport("Heathrow", "London", "United Kingdom", "LHR", "EGLL", 51.4775, -0.41389, 83); + heathrow.delDepartureRoutes(0); + } + + @Test(expected = DataException.class) + public void checkDelDepatureNegativeIndexFailure() throws DataException{ + //507,"Heathrow","London","United Kingdom","LHR","EGLL",51.4775,-0.461389,83,0,"E","Europe/London" + //ID, NaWme, City, Country, IATA/FFA, ICAO, Latitude, Longitude, Altitude, Timezone, DST, Tz Data + Airport heathrow = new Airport("Heathrow", "London", "United Kingdom", "LHR", "EGLL", 51.4775, -0.41389, 83); + heathrow.delDepartureRoutes(-1); + } + @Test public void checkToString(){ //507,"Heathrow","London","United Kingdom","LHR","EGLL",51.4775,-0.461389,83,0,"E","Europe/London" diff --git a/src/test/java/seng202/group9/CityTest.java b/src/test/java/seng202/group9/CityTest.java index 776b9ed..79551ab 100644 --- a/src/test/java/seng202/group9/CityTest.java +++ b/src/test/java/seng202/group9/CityTest.java @@ -5,6 +5,7 @@ package seng202.group9;/** import static org.junit.Assert.*; import org.junit.Test; +import seng202.group9.Controller.DataException; import seng202.group9.Core.Airport; import seng202.group9.Core.City; @@ -37,7 +38,7 @@ public class CityTest { @Test public void testAirports(){ City matsumoto = new City("Matsumoto", "Japan", 9, "Asia/Tokyo"); - Airport matsumotoAirport = new Airport(2280,"Matsumoto","Matsumoto","Japan","MMJ","RJAF",36.166758,137.922669,2182); + Airport matsumotoAirport = new Airport(2280, "Matsumoto", "Matsumoto", "Japan", "MMJ", "RJAF", 36.166758, 137.922669, 2182); assertTrue(matsumoto.getAirports().size() == 0); matsumoto.addAirport(matsumotoAirport); assertEquals(matsumoto.getAirports().get(0), matsumotoAirport); @@ -49,17 +50,31 @@ public class CityTest { airports.add(matsumotoAirport); matsumoto.addAirport(airports); assertTrue(matsumoto.getAirports().size() == 2); - matsumoto.delAirport(0); - assertTrue(matsumoto.getAirports().size() == 1); - matsumoto.delAirport(0); - //try to remove more than the city has for airports - matsumoto.delAirport(0); + try { + matsumoto.delAirport(0); + assertTrue(matsumoto.getAirports().size() == 1); + matsumoto.delAirport(0); + }catch (DataException e){ + + } matsumoto.delAirport(matsumotoAirport); //set the airports matsumoto.setAirports(airports); assertTrue(matsumoto.getAirports().size() == 2); } + @Test(expected = DataException.class) + public void testDelAirportsMissingIndexErrors() throws DataException{ + City matsumoto = new City("Matsumoto", "Japan", 9, "Asia/Tokyo"); + matsumoto.delAirport(0); + } + + @Test(expected = DataException.class) + public void testDelAirportsNegativeIndexErrors() throws DataException{ + City matsumoto = new City("Matsumoto", "Japan", 9, "Asia/Tokyo"); + matsumoto.delAirport(-1); + } + @Test public void testString(){ City matsumoto = new City("Matsumoto", "Japan", 9, "Asia/Tokyo");