mirror of
https://github.com/graphhopper/jsprit.git
synced 2020-01-24 07:45:05 +01:00
add and test removeActivity(act) and hasActivity(act) in TourActivities
This commit is contained in:
parent
818cf7aaba
commit
f733587b2b
3 changed files with 315 additions and 146 deletions
|
|
@ -1,118 +0,0 @@
|
|||
/*******************************************************************************
|
||||
* Copyright (C) 2014 Stefan Schroeder
|
||||
*
|
||||
* This library is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU Lesser General Public
|
||||
* License as published by the Free Software Foundation; either
|
||||
* version 3.0 of the License, or (at your option) any later version.
|
||||
*
|
||||
* This library is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
* Lesser General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Lesser General Public
|
||||
* License along with this library. If not, see <http://www.gnu.org/licenses/>.
|
||||
******************************************************************************/
|
||||
package jsprit.core.problem.solution.route.activity;
|
||||
|
||||
import jsprit.core.problem.job.Service;
|
||||
import jsprit.core.problem.job.Shipment;
|
||||
import org.junit.Before;
|
||||
import org.junit.Test;
|
||||
|
||||
import static org.junit.Assert.*;
|
||||
|
||||
|
||||
|
||||
public class TestTour {
|
||||
|
||||
private Service service;
|
||||
private ServiceActivity act;
|
||||
private TourActivities tour;
|
||||
|
||||
@Before
|
||||
public void doBefore(){
|
||||
service = Service.Builder.newInstance("yo").addSizeDimension(0, 10).setLocationId("loc").build();
|
||||
act = ServiceActivity.newInstance(service);
|
||||
tour = new TourActivities();
|
||||
}
|
||||
|
||||
@Test
|
||||
public void whenAddingServiceAct_serviceActIsAdded(){
|
||||
assertFalse(tour.servesJob(service));
|
||||
tour.addActivity(act);
|
||||
assertTrue(tour.servesJob(service));
|
||||
}
|
||||
|
||||
@Test(expected=IllegalStateException.class)
|
||||
public void whenAddingServiceActTwice_anExceptionIsThrown(){
|
||||
assertFalse(tour.servesJob(service));
|
||||
tour.addActivity(act);
|
||||
tour.addActivity(act);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void whenAddingServiceAndRemovingItImmediately_tourShouldNotServeServiceAnymore(){
|
||||
assertFalse(tour.servesJob(service));
|
||||
tour.addActivity(act);
|
||||
assertTrue(tour.servesJob(service));
|
||||
tour.removeJob(service);
|
||||
assertFalse(tour.servesJob(service));
|
||||
}
|
||||
|
||||
@Test
|
||||
public void whenAddingAServiceAndThenRemovingTheServiceAgain_tourShouldNotServeItAnymore(){
|
||||
assertEquals(0, tour.getActivities().size());
|
||||
tour.addActivity(act);
|
||||
assertEquals(1, tour.getActivities().size());
|
||||
Service anotherServiceInstance = Service.Builder.newInstance("yo").addSizeDimension(0, 10).setLocationId("loc").build();
|
||||
assertTrue(service.equals(anotherServiceInstance));
|
||||
boolean removed = tour.removeJob(anotherServiceInstance);
|
||||
assertTrue(removed);
|
||||
assertEquals(0, tour.getActivities().size());
|
||||
}
|
||||
|
||||
@Test
|
||||
public void whenAddingAShipmentActivity_tourShouldServeShipment(){
|
||||
Shipment s = Shipment.Builder.newInstance("s").addSizeDimension(0, 1).setDeliveryLocationId("delLoc").setPickupLocationId("pickLoc").build();
|
||||
TourShipmentActivityFactory fac = new DefaultShipmentActivityFactory();
|
||||
TourActivity pickupShipment = fac.createPickup(s);
|
||||
TourActivity deliverShipment = fac.createDelivery(s);
|
||||
tour.addActivity(pickupShipment);
|
||||
tour.addActivity(deliverShipment);
|
||||
assertTrue(tour.servesJob(s));
|
||||
assertEquals(2,tour.getActivities().size());
|
||||
}
|
||||
|
||||
|
||||
|
||||
@Test
|
||||
public void whenRemovingShipment_tourShouldNotServiceItAnymore(){
|
||||
Shipment s = Shipment.Builder.newInstance("s").addSizeDimension(0, 1).setDeliveryLocationId("delLoc").setPickupLocationId("pickLoc").build();
|
||||
TourShipmentActivityFactory fac = new DefaultShipmentActivityFactory();
|
||||
TourActivity pickupShipment = fac.createPickup(s);
|
||||
TourActivity deliverShipment = fac.createDelivery(s);
|
||||
tour.addActivity(pickupShipment);
|
||||
tour.addActivity(deliverShipment);
|
||||
|
||||
tour.removeJob(s);
|
||||
assertFalse(tour.servesJob(s));
|
||||
}
|
||||
|
||||
|
||||
@Test
|
||||
public void whenRemovingShipment_theirCorrespondingActivitiesShouldBeRemoved(){
|
||||
Shipment s = Shipment.Builder.newInstance("s").addSizeDimension(0, 1).setDeliveryLocationId("delLoc").setPickupLocationId("pickLoc").build();
|
||||
TourShipmentActivityFactory fac = new DefaultShipmentActivityFactory();
|
||||
TourActivity pickupShipment = fac.createPickup(s);
|
||||
TourActivity deliverShipment = fac.createDelivery(s);
|
||||
tour.addActivity(pickupShipment);
|
||||
tour.addActivity(deliverShipment);
|
||||
|
||||
assertEquals(2, tour.getActivities().size());
|
||||
tour.removeJob(s);
|
||||
assertEquals(0, tour.getActivities().size());
|
||||
}
|
||||
|
||||
}
|
||||
|
|
@ -0,0 +1,230 @@
|
|||
/*******************************************************************************
|
||||
* Copyright (C) 2014 Stefan Schroeder
|
||||
*
|
||||
* This library is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU Lesser General Public
|
||||
* License as published by the Free Software Foundation; either
|
||||
* version 3.0 of the License, or (at your option) any later version.
|
||||
*
|
||||
* This library is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
* Lesser General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Lesser General Public
|
||||
* License along with this library. If not, see <http://www.gnu.org/licenses/>.
|
||||
******************************************************************************/
|
||||
package jsprit.core.problem.solution.route.activity;
|
||||
|
||||
import jsprit.core.problem.job.Service;
|
||||
import jsprit.core.problem.job.Shipment;
|
||||
import org.junit.Before;
|
||||
import org.junit.Test;
|
||||
|
||||
import static org.junit.Assert.*;
|
||||
|
||||
|
||||
|
||||
public class TestTourActivities {
|
||||
|
||||
private Service service;
|
||||
private ServiceActivity act;
|
||||
private TourActivities tour;
|
||||
|
||||
@Before
|
||||
public void doBefore(){
|
||||
service = Service.Builder.newInstance("yo").addSizeDimension(0, 10).setLocationId("loc").build();
|
||||
act = ServiceActivity.newInstance(service);
|
||||
tour = new TourActivities();
|
||||
}
|
||||
|
||||
@Test
|
||||
public void whenAddingServiceAct_serviceActIsAdded(){
|
||||
assertFalse(tour.servesJob(service));
|
||||
tour.addActivity(act);
|
||||
assertTrue(tour.servesJob(service));
|
||||
}
|
||||
|
||||
@Test(expected=IllegalStateException.class)
|
||||
public void whenAddingServiceActTwice_anExceptionIsThrown(){
|
||||
assertFalse(tour.servesJob(service));
|
||||
tour.addActivity(act);
|
||||
tour.addActivity(act);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void whenAddingServiceAndRemovingItImmediately_tourShouldNotServeServiceAnymore(){
|
||||
assertFalse(tour.servesJob(service));
|
||||
tour.addActivity(act);
|
||||
assertTrue(tour.servesJob(service));
|
||||
tour.removeJob(service);
|
||||
assertFalse(tour.servesJob(service));
|
||||
}
|
||||
|
||||
@Test
|
||||
public void whenAddingAServiceAndThenRemovingTheServiceAgain_tourShouldNotServeItAnymore(){
|
||||
assertEquals(0, tour.getActivities().size());
|
||||
tour.addActivity(act);
|
||||
assertEquals(1, tour.getActivities().size());
|
||||
Service anotherServiceInstance = Service.Builder.newInstance("yo").addSizeDimension(0, 10).setLocationId("loc").build();
|
||||
assertTrue(service.equals(anotherServiceInstance));
|
||||
boolean removed = tour.removeJob(anotherServiceInstance);
|
||||
assertTrue(removed);
|
||||
assertEquals(0, tour.getActivities().size());
|
||||
}
|
||||
|
||||
@Test
|
||||
public void whenAddingAShipmentActivity_tourShouldServeShipment(){
|
||||
Shipment s = Shipment.Builder.newInstance("s").addSizeDimension(0, 1).setDeliveryLocationId("delLoc").setPickupLocationId("pickLoc").build();
|
||||
TourShipmentActivityFactory fac = new DefaultShipmentActivityFactory();
|
||||
TourActivity pickupShipment = fac.createPickup(s);
|
||||
TourActivity deliverShipment = fac.createDelivery(s);
|
||||
tour.addActivity(pickupShipment);
|
||||
tour.addActivity(deliverShipment);
|
||||
assertTrue(tour.servesJob(s));
|
||||
assertEquals(2,tour.getActivities().size());
|
||||
}
|
||||
|
||||
|
||||
|
||||
@Test
|
||||
public void whenRemovingShipment_tourShouldNotServiceItAnymore(){
|
||||
Shipment s = Shipment.Builder.newInstance("s").addSizeDimension(0, 1).setDeliveryLocationId("delLoc").setPickupLocationId("pickLoc").build();
|
||||
TourShipmentActivityFactory fac = new DefaultShipmentActivityFactory();
|
||||
TourActivity pickupShipment = fac.createPickup(s);
|
||||
TourActivity deliverShipment = fac.createDelivery(s);
|
||||
tour.addActivity(pickupShipment);
|
||||
tour.addActivity(deliverShipment);
|
||||
|
||||
tour.removeJob(s);
|
||||
assertFalse(tour.servesJob(s));
|
||||
}
|
||||
|
||||
|
||||
@Test
|
||||
public void whenRemovingShipment_theirCorrespondingActivitiesShouldBeRemoved(){
|
||||
Shipment s = Shipment.Builder.newInstance("s").addSizeDimension(0, 1).setDeliveryLocationId("delLoc").setPickupLocationId("pickLoc").build();
|
||||
TourShipmentActivityFactory fac = new DefaultShipmentActivityFactory();
|
||||
TourActivity pickupShipment = fac.createPickup(s);
|
||||
TourActivity deliverShipment = fac.createDelivery(s);
|
||||
tour.addActivity(pickupShipment);
|
||||
tour.addActivity(deliverShipment);
|
||||
|
||||
assertEquals(2, tour.getActivities().size());
|
||||
tour.removeJob(s);
|
||||
assertEquals(0, tour.getActivities().size());
|
||||
}
|
||||
|
||||
@Test
|
||||
public void removingActivityShouldWork(){
|
||||
tour.addActivity(act);
|
||||
assertTrue(tour.servesJob(service));
|
||||
assertTrue(tour.hasActivity(act));
|
||||
|
||||
tour.removeActivity(act);
|
||||
|
||||
assertTrue(tour.isEmpty());
|
||||
assertFalse(tour.hasActivity(act));
|
||||
assertFalse(tour.servesJob(service));
|
||||
assertEquals(0,tour.jobSize());
|
||||
}
|
||||
|
||||
@Test
|
||||
public void copyingSeqShouldWork(){
|
||||
tour.addActivity(act);
|
||||
|
||||
assertTrue(tour.servesJob(service));
|
||||
assertTrue(tour.hasActivity(act));
|
||||
|
||||
TourActivities acts = TourActivities.copyOf(tour);
|
||||
|
||||
assertTrue(acts.servesJob(service));
|
||||
assertTrue(acts.hasActivity(act));
|
||||
}
|
||||
|
||||
@Test
|
||||
public void removingShipmentActivityShouldWork(){
|
||||
Shipment s = Shipment.Builder.newInstance("s").addSizeDimension(0, 1).setDeliveryLocationId("delLoc").setPickupLocationId("pickLoc").build();
|
||||
TourShipmentActivityFactory fac = new DefaultShipmentActivityFactory();
|
||||
TourActivity pickupShipment = fac.createPickup(s);
|
||||
TourActivity deliverShipment = fac.createDelivery(s);
|
||||
tour.addActivity(pickupShipment);
|
||||
tour.addActivity(deliverShipment);
|
||||
|
||||
assertEquals(1,tour.jobSize());
|
||||
assertEquals(2,tour.getActivities().size());
|
||||
assertTrue(tour.getActivities().contains(pickupShipment));
|
||||
assertTrue(tour.hasActivity(pickupShipment));
|
||||
assertTrue(tour.hasActivity(deliverShipment));
|
||||
|
||||
tour.removeActivity(pickupShipment);
|
||||
|
||||
assertEquals(1,tour.jobSize());
|
||||
assertEquals(1, tour.getActivities().size());
|
||||
assertTrue(tour.hasActivity(deliverShipment));
|
||||
assertFalse(tour.hasActivity(pickupShipment));
|
||||
assertFalse(tour.getActivities().contains(pickupShipment));
|
||||
|
||||
}
|
||||
|
||||
@Test
|
||||
public void whenCopyingShipmentActivitySeq_jobSizeShouldBeCorrect(){
|
||||
Shipment s = Shipment.Builder.newInstance("s").addSizeDimension(0, 1).setDeliveryLocationId("delLoc").setPickupLocationId("pickLoc").build();
|
||||
TourShipmentActivityFactory fac = new DefaultShipmentActivityFactory();
|
||||
TourActivity pickupShipment = fac.createPickup(s);
|
||||
TourActivity deliverShipment = fac.createDelivery(s);
|
||||
tour.addActivity(pickupShipment);
|
||||
tour.addActivity(deliverShipment);
|
||||
|
||||
assertEquals(1,tour.jobSize());
|
||||
assertEquals(2,tour.getActivities().size());
|
||||
assertTrue(tour.getActivities().contains(pickupShipment));
|
||||
assertTrue(tour.hasActivity(pickupShipment));
|
||||
assertTrue(tour.hasActivity(deliverShipment));
|
||||
|
||||
TourActivities copiedTour = TourActivities.copyOf(tour);
|
||||
|
||||
assertEquals(1,copiedTour.jobSize());
|
||||
}
|
||||
|
||||
@Test
|
||||
public void whenCopyingShipmentActivitySeq_noActivitiesShouldBeCorrect(){
|
||||
Shipment s = Shipment.Builder.newInstance("s").addSizeDimension(0, 1).setDeliveryLocationId("delLoc").setPickupLocationId("pickLoc").build();
|
||||
TourShipmentActivityFactory fac = new DefaultShipmentActivityFactory();
|
||||
TourActivity pickupShipment = fac.createPickup(s);
|
||||
TourActivity deliverShipment = fac.createDelivery(s);
|
||||
tour.addActivity(pickupShipment);
|
||||
tour.addActivity(deliverShipment);
|
||||
|
||||
assertEquals(1,tour.jobSize());
|
||||
assertEquals(2,tour.getActivities().size());
|
||||
assertTrue(tour.getActivities().contains(pickupShipment));
|
||||
assertTrue(tour.hasActivity(pickupShipment));
|
||||
assertTrue(tour.hasActivity(deliverShipment));
|
||||
|
||||
TourActivities copiedTour = TourActivities.copyOf(tour);
|
||||
|
||||
assertEquals(2,copiedTour.getActivities().size());
|
||||
}
|
||||
|
||||
@Test
|
||||
public void whenCopyingShipmentActivitySeq_itShouldContaintPickupAct(){
|
||||
Shipment s = Shipment.Builder.newInstance("s").addSizeDimension(0, 1).setDeliveryLocationId("delLoc").setPickupLocationId("pickLoc").build();
|
||||
TourShipmentActivityFactory fac = new DefaultShipmentActivityFactory();
|
||||
TourActivity pickupShipment = fac.createPickup(s);
|
||||
TourActivity deliverShipment = fac.createDelivery(s);
|
||||
tour.addActivity(pickupShipment);
|
||||
tour.addActivity(deliverShipment);
|
||||
|
||||
assertEquals(1,tour.jobSize());
|
||||
assertEquals(2,tour.getActivities().size());
|
||||
assertTrue(tour.getActivities().contains(pickupShipment));
|
||||
assertTrue(tour.hasActivity(pickupShipment));
|
||||
assertTrue(tour.hasActivity(deliverShipment));
|
||||
|
||||
TourActivities copiedTour = TourActivities.copyOf(tour);
|
||||
|
||||
assertTrue(copiedTour.servesJob(s));
|
||||
}
|
||||
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue