1
0
Fork 0
mirror of https://github.com/graphhopper/jsprit.git synced 2020-01-24 07:45:05 +01:00

added multiple cap-dims to activity and corresponding tests

This commit is contained in:
oblonski 2014-02-19 17:18:46 +01:00
parent 21e4bb09f5
commit 237075c463
18 changed files with 512 additions and 45 deletions

View file

@ -7,6 +7,8 @@ public final class DeliverService implements DeliveryActivity{
private Delivery delivery;
private Capacity capacity;
private double arrTime;
private double endTime;
@ -14,14 +16,20 @@ public final class DeliverService implements DeliveryActivity{
public DeliverService(Delivery delivery) {
super();
this.delivery = delivery;
capacity = Capacity.invert(delivery.getCapacity());
}
private DeliverService(DeliverService deliveryActivity){
this.delivery=deliveryActivity.getJob();
this.arrTime=deliveryActivity.getArrTime();
this.endTime=deliveryActivity.getEndTime();
capacity = deliveryActivity.getCapacity();
}
/**
* @deprecated use <code>getCapacity()</code> instead
*/
@Deprecated
@Override
public int getCapacityDemand() {
return delivery.getCapacityDemand()*-1;
@ -89,6 +97,6 @@ public final class DeliverService implements DeliveryActivity{
@Override
public Capacity getCapacity() {
return null;
return capacity;
}
}

View file

@ -7,18 +7,24 @@ import jsprit.core.problem.job.Shipment;
public final class DeliverShipment implements DeliveryActivity{
private Shipment shipment;
private double endTime;
private double arrTime;
private Capacity capacity;
public DeliverShipment(Shipment shipment) {
super();
this.shipment = shipment;
this.capacity = Capacity.invert(shipment.getCapacity());
}
public DeliverShipment(DeliverShipment deliveryShipmentActivity) {
this.shipment = (Shipment) deliveryShipmentActivity.getJob();
this.arrTime = deliveryShipmentActivity.getArrTime();
this.endTime = deliveryShipmentActivity.getEndTime();
this.capacity = deliveryShipmentActivity.getCapacity();
}
@Override
@ -26,6 +32,10 @@ public final class DeliverShipment implements DeliveryActivity{
return shipment;
}
/**
* @deprecated use <code>getCapacity()</code> instead
*/
@Deprecated
@Override
public int getCapacityDemand() {
return shipment.getCapacityDemand()*-1;
@ -88,6 +98,6 @@ public final class DeliverShipment implements DeliveryActivity{
@Override
public Capacity getCapacity() {
return null;
return capacity;
}
}

View file

@ -82,7 +82,12 @@ public final class PickupService implements PickupActivity{
return pickup;
}
/**
* @deprecated use <code>getCapacity()</code> instead
*
*/
@Override
@Deprecated
public int getCapacityDemand() {
return pickup.getCapacityDemand();
}
@ -94,8 +99,7 @@ public final class PickupService implements PickupActivity{
@Override
public Capacity getCapacity() {
// TODO Auto-generated method stub
return null;
return pickup.getCapacity();
}
}

View file

@ -28,6 +28,10 @@ public final class PickupShipment implements PickupActivity{
return shipment;
}
/**
* @deprecated use <code>getCapacity()</code> instead
*/
@Deprecated
@Override
public int getCapacityDemand() {
return shipment.getCapacityDemand();

View file

@ -28,8 +28,6 @@ public class ServiceActivity implements JobActivity{
public double endTime;
public int capacityDemand;
/**
* @return the arrTime
*/
@ -66,23 +64,12 @@ public class ServiceActivity implements JobActivity{
return new ServiceActivity(service);
}
/**
* creates a new instance of {@link ServiceActivity} with a flag that indicates whether smthing is unloaded or loaded.
*
* @param service
* @param capacityDemand
* @return
*/
// public static ServiceActivity newInstance(Service service, boolean isPickup){
// return new ServiceActivity(service, capacityDemand);
// }
private final Service service;
protected ServiceActivity(Service service) {
counter++;
this.service = service;
this.capacityDemand = service.getCapacityDemand();
}
protected ServiceActivity(ServiceActivity serviceActivity) {
@ -90,7 +77,6 @@ public class ServiceActivity implements JobActivity{
this.service = serviceActivity.getJob();
this.arrTime = serviceActivity.getArrTime();
this.endTime = serviceActivity.getEndTime();
this.capacityDemand = serviceActivity.getCapacityDemand();
}
@ -133,9 +119,13 @@ public class ServiceActivity implements JobActivity{
return service.getTimeWindow().getEnd();
}
/**
* @deprecated use <code>getCapacity()</code> instead
*/
@Override
@Deprecated
public int getCapacityDemand() {
return this.capacityDemand;
return service.getCapacityDemand();
}
@Override
@ -170,8 +160,7 @@ public class ServiceActivity implements JobActivity{
@Override
public Capacity getCapacity() {
// TODO Auto-generated method stub
return null;
return service.getCapacity();
}

View file

@ -5,6 +5,7 @@ import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.when;
import jsprit.core.algorithm.recreate.listener.InsertionListeners;
import jsprit.core.algorithm.state.UpdateEndLocationIfRouteIsOpen;
import jsprit.core.problem.Capacity;
import jsprit.core.problem.driver.Driver;
import jsprit.core.problem.job.Service;
import jsprit.core.problem.job.Shipment;
@ -73,6 +74,8 @@ public class TestInserter {
@Test
public void whenInsertingShipmentAndRouteIsClosed_itInsertsCorrectly(){
Shipment shipment = mock(Shipment.class);
Capacity capacity = Capacity.Builder.newInstance().build();
when(shipment.getCapacity()).thenReturn(capacity);
Vehicle vehicle = mock(Vehicle.class);
when(vehicle.getStartLocationId()).thenReturn("vehLoc");
when(vehicle.getEndLocationId()).thenReturn("vehLoc");
@ -82,6 +85,7 @@ public class TestInserter {
VehicleRoute route = VehicleRoute.Builder.newInstance(vehicle, mock(Driver.class)).addPickup(shipment).addDelivery(shipment).build();
//start - pick(shipment) - del(shipment) - end
Shipment shipmentToInsert = mock(Shipment.class);
when(shipmentToInsert.getCapacity()).thenReturn(capacity);
when(shipmentToInsert.getDeliveryLocation()).thenReturn("delLoc");
when(shipmentToInsert.getPickupLocation()).thenReturn("pickLoc");
InsertionData iData = mock(InsertionData.class);
@ -101,6 +105,8 @@ public class TestInserter {
@Test
public void whenInsertingShipmentAndRouteIsOpen_itInsertsCorrectlyAndSwitchesEndLocation(){
Shipment shipment = mock(Shipment.class);
Capacity capacity = Capacity.Builder.newInstance().build();
when(shipment.getCapacity()).thenReturn(capacity);
Vehicle vehicle = mock(Vehicle.class);
when(vehicle.isReturnToDepot()).thenReturn(false);
when(vehicle.getId()).thenReturn("vehId");
@ -108,6 +114,7 @@ public class TestInserter {
VehicleRoute route = VehicleRoute.Builder.newInstance(vehicle, mock(Driver.class)).addPickup(shipment).addDelivery(shipment).build();
//start - pick(shipment) - del(shipment) - end
Shipment shipmentToInsert = mock(Shipment.class);
when(shipmentToInsert.getCapacity()).thenReturn(capacity);
when(shipmentToInsert.getDeliveryLocation()).thenReturn("delLoc");
when(shipmentToInsert.getPickupLocation()).thenReturn("pickLoc");
InsertionData iData = mock(InsertionData.class);
@ -127,12 +134,15 @@ public class TestInserter {
@Test
public void whenSwitchingVehicleAndRouteIsClosed_newStartAndEndShouldBeTheLocationOfNewVehicle(){
Shipment shipment = mock(Shipment.class);
Capacity capacity = Capacity.Builder.newInstance().build();
when(shipment.getCapacity()).thenReturn(capacity);
Vehicle vehicle = VehicleImpl.Builder.newInstance("vehId").setStartLocationId("vehLoc").setType(mock(VehicleType.class)).build();
Vehicle newVehicle = VehicleImpl.Builder.newInstance("newVehId").setStartLocationId("newVehLoc").setType(mock(VehicleType.class)).build();
VehicleRoute route = VehicleRoute.Builder.newInstance(vehicle, mock(Driver.class)).addPickup(shipment).addDelivery(shipment).build();
//start - pick(shipment) - del(shipment) - end
Shipment shipmentToInsert = mock(Shipment.class);
when(shipmentToInsert.getCapacity()).thenReturn(capacity);
when(shipmentToInsert.getDeliveryLocation()).thenReturn("delLoc");
when(shipmentToInsert.getPickupLocation()).thenReturn("pickLoc");
@ -150,12 +160,15 @@ public class TestInserter {
@Test
public void whenSwitchingVehicleAndRouteIsOpen_endLocationShouldBeTheLocationOfTheLastActivity(){
Shipment shipment = mock(Shipment.class);
Capacity capacity = Capacity.Builder.newInstance().build();
when(shipment.getCapacity()).thenReturn(capacity);
Vehicle vehicle = VehicleImpl.Builder.newInstance("vehId").setReturnToDepot(false).setStartLocationId("vehLoc").setType(mock(VehicleType.class)).build();
Vehicle newVehicle = VehicleImpl.Builder.newInstance("newVehId").setReturnToDepot(false).setStartLocationId("newVehLoc").setType(mock(VehicleType.class)).build();
VehicleRoute route = VehicleRoute.Builder.newInstance(vehicle, mock(Driver.class)).addPickup(shipment).addDelivery(shipment).build();
//start - pick(shipment) - del(shipment) - end
Shipment shipmentToInsert = mock(Shipment.class);
when(shipmentToInsert.getCapacity()).thenReturn(capacity);
when(shipmentToInsert.getDeliveryLocation()).thenReturn("delLoc");
when(shipmentToInsert.getPickupLocation()).thenReturn("pickLoc");
@ -173,6 +186,8 @@ public class TestInserter {
@Test
public void whenInsertingShipmentAtBeginningAndSwitchingVehicleAndRouteIsOpen_endLocationShouldBeTheLocationOfTheLastActivity(){
Shipment shipment = mock(Shipment.class);
Capacity capacity = Capacity.Builder.newInstance().build();
when(shipment.getCapacity()).thenReturn(capacity);
when(shipment.getDeliveryLocation()).thenReturn("oldShipmentDelLoc");
Vehicle vehicle = VehicleImpl.Builder.newInstance("vehId").setReturnToDepot(false).setStartLocationId("vehLoc").setType(mock(VehicleType.class)).build();
Vehicle newVehicle = VehicleImpl.Builder.newInstance("newVehId").setReturnToDepot(false).setStartLocationId("newVehLoc").setType(mock(VehicleType.class)).build();
@ -180,6 +195,7 @@ public class TestInserter {
VehicleRoute route = VehicleRoute.Builder.newInstance(vehicle, mock(Driver.class)).addPickup(shipment).addDelivery(shipment).build();
//start - pick(shipment) - del(shipment) - end
Shipment shipmentToInsert = mock(Shipment.class);
when(shipmentToInsert.getCapacity()).thenReturn(capacity);
when(shipmentToInsert.getDeliveryLocation()).thenReturn("delLoc");
when(shipmentToInsert.getPickupLocation()).thenReturn("pickLoc");

View file

@ -4,6 +4,7 @@ import static org.junit.Assert.assertEquals;
import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.when;
import jsprit.core.algorithm.state.StateManager;
import jsprit.core.problem.Capacity;
import jsprit.core.problem.VehicleRoutingProblem;
import jsprit.core.problem.constraint.PickupAndDeliverShipmentLoadActivityLevelConstraint;
import jsprit.core.problem.constraint.HardActivityStateLevelConstraint.ConstraintsStatus;
@ -39,6 +40,8 @@ public class HardPickupAndDeliveryShipmentActivityConstraintTest {
stateManager = new StateManager(mock(VehicleRoutingProblem.class));
shipment = mock(Shipment.class);
when(shipment.getCapacityDemand()).thenReturn(1);
Capacity capacity = Capacity.Builder.newInstance().addDimension(0, 1).build();
when(shipment.getCapacity()).thenReturn(capacity);
iFacts = new JobInsertionContext(null, null, vehicle, null, 0.0);
constraint = new PickupAndDeliverShipmentLoadActivityLevelConstraint(stateManager);
}

View file

@ -200,7 +200,7 @@ public class ShipmentTest {
assertEquals(2.0,s.getDeliveryTimeWindow().getEnd(),0.01);
}
@Test(expected=IllegalStateException.class)
@Test(expected=IllegalArgumentException.class)
public void whenShipmentHasNegativeCapacityVal_throwIllegalStateExpception(){
@SuppressWarnings("unused")
Shipment one = Shipment.Builder.newInstance("s").setPickupLocation("foo").setDeliveryLocation("foofoo")

View file

@ -3,6 +3,7 @@ package jsprit.core.problem.solution.route;
import static org.junit.Assert.assertEquals;
import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.when;
import jsprit.core.problem.Capacity;
import jsprit.core.problem.driver.Driver;
import jsprit.core.problem.job.Shipment;
import jsprit.core.problem.vehicle.Vehicle;
@ -30,6 +31,8 @@ public class VehicleRouteBuilderTest {
@Test(expected=IllegalStateException.class)
public void whenShipmentIsPickedDeliveredAndDeliveredAgain_throwsException(){
Shipment s = mock(Shipment.class);
Capacity capacity = Capacity.Builder.newInstance().build();
when(s.getCapacity()).thenReturn(capacity);
VehicleRoute.Builder builder = VehicleRoute.Builder.newInstance(mock(Vehicle.class), mock(Driver.class));
builder.addPickup(s);
builder.addDelivery(s);
@ -39,6 +42,8 @@ public class VehicleRouteBuilderTest {
@Test(expected=IllegalStateException.class)
public void whenShipmentIsPickedUpThoughButHasNotBeenDeliveredAndRouteIsBuilt_throwsException(){
Shipment s = mock(Shipment.class);
Capacity capacity = Capacity.Builder.newInstance().build();
when(s.getCapacity()).thenReturn(capacity);
VehicleRoute.Builder builder = VehicleRoute.Builder.newInstance(mock(Vehicle.class), mock(Driver.class));
builder.addPickup(s);
builder.addPickup(mock(Shipment.class));
@ -50,6 +55,9 @@ public class VehicleRouteBuilderTest {
public void whenTwoShipmentsHaveBeenAdded_nuOfActivitiesMustEqualFour(){
Shipment s = mock(Shipment.class);
Shipment s2 = mock(Shipment.class);
Capacity capacity = Capacity.Builder.newInstance().build();
when(s.getCapacity()).thenReturn(capacity);
when(s2.getCapacity()).thenReturn(capacity);
VehicleRoute.Builder builder = VehicleRoute.Builder.newInstance(mock(Vehicle.class), mock(Driver.class));
builder.addPickup(s);
builder.addPickup(s2);
@ -63,6 +71,9 @@ public class VehicleRouteBuilderTest {
public void whenBuildingClosedRoute_routeEndShouldHaveLocationOfVehicle(){
Shipment s = mock(Shipment.class);
Shipment s2 = mock(Shipment.class);
Capacity capacity = Capacity.Builder.newInstance().build();
when(s.getCapacity()).thenReturn(capacity);
when(s2.getCapacity()).thenReturn(capacity);
Vehicle vehicle = mock(Vehicle.class);
when(vehicle.isReturnToDepot()).thenReturn(true);
when(vehicle.getStartLocationId()).thenReturn("vehLoc");
@ -80,6 +91,9 @@ public class VehicleRouteBuilderTest {
public void whenBuildingOpenRoute_routeEndShouldHaveLocationOfLastActivity(){
Shipment s = mock(Shipment.class);
Shipment s2 = mock(Shipment.class);
Capacity capacity = Capacity.Builder.newInstance().build();
when(s.getCapacity()).thenReturn(capacity);
when(s2.getCapacity()).thenReturn(capacity);
when(s2.getDeliveryLocation()).thenReturn("delLoc");
Vehicle vehicle = mock(Vehicle.class);
when(vehicle.isReturnToDepot()).thenReturn(false);
@ -97,6 +111,9 @@ public class VehicleRouteBuilderTest {
public void whenSettingDepartureTime(){
Shipment s = mock(Shipment.class);
Shipment s2 = mock(Shipment.class);
Capacity capacity = Capacity.Builder.newInstance().build();
when(s.getCapacity()).thenReturn(capacity);
when(s2.getCapacity()).thenReturn(capacity);
when(s2.getDeliveryLocation()).thenReturn("delLoc");
Vehicle vehicle = mock(Vehicle.class);
when(vehicle.isReturnToDepot()).thenReturn(false);
@ -117,6 +134,9 @@ public class VehicleRouteBuilderTest {
public void whenSettingEndTime(){
Shipment s = mock(Shipment.class);
Shipment s2 = mock(Shipment.class);
Capacity capacity = Capacity.Builder.newInstance().build();
when(s.getCapacity()).thenReturn(capacity);
when(s2.getCapacity()).thenReturn(capacity);
when(s2.getDeliveryLocation()).thenReturn("delLoc");
Vehicle vehicle = mock(Vehicle.class);
when(vehicle.isReturnToDepot()).thenReturn(false);

View file

@ -1,5 +1,30 @@
package jsprit.core.problem.solution.route.activity;
import static org.junit.Assert.assertNotNull;
import static org.junit.Assert.assertTrue;
import jsprit.core.problem.job.Shipment;
import org.junit.Test;
public class DefaultShipmentActivityFactoryTest {
@Test
public void whenCreatingPickupActivityWithShipment_itShouldReturnPickupShipment(){
DefaultShipmentActivityFactory factory = new DefaultShipmentActivityFactory();
Shipment shipment = Shipment.Builder.newInstance("s")
.setPickupLocation("pLoc").setDeliveryLocation("dLoc").build();
TourActivity act = factory.createPickup(shipment);
assertNotNull(act);
assertTrue(act instanceof PickupShipment);
}
@Test
public void whenCreatingDeliverActivityWithShipment_itShouldReturnDeliverShipment(){
DefaultShipmentActivityFactory factory = new DefaultShipmentActivityFactory();
Shipment shipment = Shipment.Builder.newInstance("s")
.setPickupLocation("pLoc").setDeliveryLocation("dLoc").build();
TourActivity act = factory.createDelivery(shipment);
assertNotNull(act);
assertTrue(act instanceof DeliverShipment);
}
}

View file

@ -0,0 +1,40 @@
package jsprit.core.problem.solution.route.activity;
import static org.junit.Assert.assertNotNull;
import static org.junit.Assert.assertTrue;
import jsprit.core.problem.job.Delivery;
import jsprit.core.problem.job.Pickup;
import jsprit.core.problem.job.Service;
import org.junit.Test;
public class DefaultTourActivityFactoryTest {
@Test
public void whenCreatingActivityWithService_itShouldReturnPickupService(){
DefaultTourActivityFactory factory = new DefaultTourActivityFactory();
Service service = Service.Builder.newInstance("service").setLocationId("loc").build();
TourActivity act = factory.createActivity(service);
assertNotNull(act);
assertTrue(act instanceof PickupService);
}
@Test
public void whenCreatingActivityWithPickup_itShouldReturnPickupService(){
DefaultTourActivityFactory factory = new DefaultTourActivityFactory();
Pickup service = (Pickup) Pickup.Builder.newInstance("service").setLocationId("loc").build();
TourActivity act = factory.createActivity(service);
assertNotNull(act);
assertTrue(act instanceof PickupService);
}
@Test
public void whenCreatingActivityWithDelivery_itShouldReturnDeliverService(){
DefaultTourActivityFactory factory = new DefaultTourActivityFactory();
Delivery service = (Delivery) Delivery.Builder.newInstance("service").setLocationId("loc").build();
TourActivity act = factory.createActivity(service);
assertNotNull(act);
assertTrue(act instanceof DeliverService);
}
}

View file

@ -1,5 +0,0 @@
package jsprit.core.problem.solution.route.activity;
public class DefaultTourActivityTest {
}

View file

@ -1,5 +1,76 @@
package jsprit.core.problem.solution.route.activity;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertTrue;
import jsprit.core.problem.job.Delivery;
import org.junit.Before;
import org.junit.Test;
public class DeliverServiceTest {
private Delivery service;
private DeliverService deliver;
@Before
public void doBefore(){
service = (Delivery) Delivery.Builder.newInstance("service").setLocationId("loc").
setTimeWindow(TimeWindow.newInstance(1., 2.)).
addCapacityDimension(0, 10).addCapacityDimension(1, 100).addCapacityDimension(2, 1000).build();
deliver = new DeliverService(service);
}
@Test
public void whenCallingCapacity_itShouldReturnCorrectCapacity(){
assertEquals(-10,deliver.getCapacity().get(0));
assertEquals(-100,deliver.getCapacity().get(1));
assertEquals(-1000,deliver.getCapacity().get(2));
}
@SuppressWarnings("deprecation")
@Test
public void whenCallingCapacityDemand_itShouldReturnCapDimWithIndex0(){
assertEquals(-10,deliver.getCapacityDemand());
}
@Test
public void whenStartIsIniWithEarliestStart_itShouldBeSetCorrectly(){
assertEquals(1.,deliver.getTheoreticalEarliestOperationStartTime(),0.01);
}
@Test
public void whenStartIsIniWithLatestStart_itShouldBeSetCorrectly(){
assertEquals(2.,deliver.getTheoreticalLatestOperationStartTime(),0.01);
}
@Test
public void whenSettingArrTime_itShouldBeSetCorrectly(){
deliver.setArrTime(4.0);
assertEquals(4.,deliver.getArrTime(),0.01);
}
@Test
public void whenSettingEndTime_itShouldBeSetCorrectly(){
deliver.setEndTime(5.0);
assertEquals(5.,deliver.getEndTime(),0.01);
}
@Test
public void whenIniLocationId_itShouldBeSetCorrectly(){
assertEquals("loc",deliver.getLocationId());
}
@Test
public void whenCopyingStart_itShouldBeDoneCorrectly(){
DeliverService copy = (DeliverService) deliver.duplicate();
assertEquals(1.,copy.getTheoreticalEarliestOperationStartTime(),0.01);
assertEquals(2.,copy.getTheoreticalLatestOperationStartTime(),0.01);
assertEquals("loc",copy.getLocationId());
assertEquals(-10,copy.getCapacity().get(0));
assertEquals(-100,copy.getCapacity().get(1));
assertEquals(-1000,copy.getCapacity().get(2));
assertTrue(copy!=deliver);
}
}

View file

@ -1,5 +1,88 @@
package jsprit.core.problem.solution.route.activity;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertTrue;
import jsprit.core.problem.job.Shipment;
import org.junit.Before;
import org.junit.Test;
public class DeliverShipmentTest {
private Shipment shipment;
private DeliverShipment deliver;
@Before
public void doBefore(){
shipment = Shipment.Builder.newInstance("shipment").setPickupLocation("pickupLoc")
.setDeliveryLocation("deliveryLoc")
.setPickupTimeWindow(TimeWindow.newInstance(1., 2.))
.setDeliveryTimeWindow(TimeWindow.newInstance(3., 4.))
.addCapacityDimension(0, 10).addCapacityDimension(1, 100).addCapacityDimension(2, 1000).build();
deliver = new DeliverShipment(shipment);
}
@Test
public void whenCallingCapacity_itShouldReturnCorrectCapacity(){
assertEquals(-10,deliver.getCapacity().get(0));
assertEquals(-100,deliver.getCapacity().get(1));
assertEquals(-1000,deliver.getCapacity().get(2));
}
@SuppressWarnings("deprecation")
@Test
public void whenCallingCapacityDemand_itShouldReturnCapDimWithIndex0(){
assertEquals(-10,deliver.getCapacityDemand());
}
@Test
public void whenStartIsIniWithEarliestStart_itShouldBeSetCorrectly(){
assertEquals(3.,deliver.getTheoreticalEarliestOperationStartTime(),0.01);
}
@Test
public void whenStartIsIniWithLatestStart_itShouldBeSetCorrectly(){
assertEquals(4.,deliver.getTheoreticalLatestOperationStartTime(),0.01);
}
@Test
public void whenSettingArrTime_itShouldBeSetCorrectly(){
deliver.setArrTime(4.0);
assertEquals(4.,deliver.getArrTime(),0.01);
}
@Test
public void whenSettingEndTime_itShouldBeSetCorrectly(){
deliver.setEndTime(5.0);
assertEquals(5.,deliver.getEndTime(),0.01);
}
@Test
public void whenIniLocationId_itShouldBeSetCorrectly(){
assertEquals("deliveryLoc",deliver.getLocationId());
}
@Test
public void whenCopyingStart_itShouldBeDoneCorrectly(){
DeliverShipment copy = (DeliverShipment) deliver.duplicate();
assertEquals(3.,copy.getTheoreticalEarliestOperationStartTime(),0.01);
assertEquals(4.,copy.getTheoreticalLatestOperationStartTime(),0.01);
assertEquals("deliveryLoc",copy.getLocationId());
assertEquals(-10,copy.getCapacity().get(0));
assertEquals(-100,copy.getCapacity().get(1));
assertEquals(-1000,copy.getCapacity().get(2));
assertTrue(copy!=deliver);
}
@Test
public void whenGettingCapacity_itShouldReturnItCorrectly(){
Shipment shipment = Shipment.Builder.newInstance("s").setPickupLocation("pickLoc").setDeliveryLocation("delLoc")
.addCapacityDimension(0, 10).addCapacityDimension(1, 100).build();
PickupShipment pick = new PickupShipment(shipment);
assertEquals(10,pick.getCapacity().get(0));
assertEquals(100,pick.getCapacity().get(1));
}
}

View file

@ -1,5 +1,76 @@
package jsprit.core.problem.solution.route.activity;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertTrue;
import jsprit.core.problem.job.Service;
import org.junit.Before;
import org.junit.Test;
public class PickupServiceTest {
private Service service;
private PickupService pickup;
@Before
public void doBefore(){
service = Service.Builder.newInstance("service").setLocationId("loc").
setTimeWindow(TimeWindow.newInstance(1., 2.)).
addCapacityDimension(0, 10).addCapacityDimension(1, 100).addCapacityDimension(2, 1000).build();
pickup = new PickupService(service);
}
@Test
public void whenCallingCapacity_itShouldReturnCorrectCapacity(){
assertEquals(10,pickup.getCapacity().get(0));
assertEquals(100,pickup.getCapacity().get(1));
assertEquals(1000,pickup.getCapacity().get(2));
}
@SuppressWarnings("deprecation")
@Test
public void whenCallingCapacityDemand_itShouldReturnCapDimWithIndex0(){
assertEquals(10,pickup.getCapacityDemand());
}
@Test
public void whenStartIsIniWithEarliestStart_itShouldBeSetCorrectly(){
assertEquals(1.,pickup.getTheoreticalEarliestOperationStartTime(),0.01);
}
@Test
public void whenStartIsIniWithLatestStart_itShouldBeSetCorrectly(){
assertEquals(2.,pickup.getTheoreticalLatestOperationStartTime(),0.01);
}
@Test
public void whenSettingArrTime_itShouldBeSetCorrectly(){
pickup.setArrTime(4.0);
assertEquals(4.,pickup.getArrTime(),0.01);
}
@Test
public void whenSettingEndTime_itShouldBeSetCorrectly(){
pickup.setEndTime(5.0);
assertEquals(5.,pickup.getEndTime(),0.01);
}
@Test
public void whenIniLocationId_itShouldBeSetCorrectly(){
assertEquals("loc",pickup.getLocationId());
}
@Test
public void whenCopyingStart_itShouldBeDoneCorrectly(){
PickupService copy = (PickupService) pickup.duplicate();
assertEquals(1.,copy.getTheoreticalEarliestOperationStartTime(),0.01);
assertEquals(2.,copy.getTheoreticalLatestOperationStartTime(),0.01);
assertEquals("loc",copy.getLocationId());
assertEquals(10,copy.getCapacity().get(0));
assertEquals(100,copy.getCapacity().get(1));
assertEquals(1000,copy.getCapacity().get(2));
assertTrue(copy!=pickup);
}
}

View file

@ -1,12 +1,81 @@
package jsprit.core.problem.solution.route.activity;
import static org.junit.Assert.*;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertTrue;
import jsprit.core.problem.job.Shipment;
import org.junit.Before;
import org.junit.Test;
public class PickupShipmentTest {
private Shipment shipment;
private PickupShipment pickup;
@Before
public void doBefore(){
shipment = Shipment.Builder.newInstance("shipment").setPickupLocation("pickupLoc")
.setDeliveryLocation("deliveryLoc")
.setPickupTimeWindow(TimeWindow.newInstance(1., 2.))
.setDeliveryTimeWindow(TimeWindow.newInstance(3., 4.))
.addCapacityDimension(0, 10).addCapacityDimension(1, 100).addCapacityDimension(2, 1000).build();
pickup = new PickupShipment(shipment);
}
@Test
public void whenCallingCapacity_itShouldReturnCorrectCapacity(){
assertEquals(10,pickup.getCapacity().get(0));
assertEquals(100,pickup.getCapacity().get(1));
assertEquals(1000,pickup.getCapacity().get(2));
}
@SuppressWarnings("deprecation")
@Test
public void whenCallingCapacityDemand_itShouldReturnCapDimWithIndex0(){
assertEquals(10,pickup.getCapacityDemand());
}
@Test
public void whenStartIsIniWithEarliestStart_itShouldBeSetCorrectly(){
assertEquals(1.,pickup.getTheoreticalEarliestOperationStartTime(),0.01);
}
@Test
public void whenStartIsIniWithLatestStart_itShouldBeSetCorrectly(){
assertEquals(2.,pickup.getTheoreticalLatestOperationStartTime(),0.01);
}
@Test
public void whenSettingArrTime_itShouldBeSetCorrectly(){
pickup.setArrTime(4.0);
assertEquals(4.,pickup.getArrTime(),0.01);
}
@Test
public void whenSettingEndTime_itShouldBeSetCorrectly(){
pickup.setEndTime(5.0);
assertEquals(5.,pickup.getEndTime(),0.01);
}
@Test
public void whenIniLocationId_itShouldBeSetCorrectly(){
assertEquals("pickupLoc",pickup.getLocationId());
}
@Test
public void whenCopyingStart_itShouldBeDoneCorrectly(){
PickupShipment copy = (PickupShipment) pickup.duplicate();
assertEquals(1.,copy.getTheoreticalEarliestOperationStartTime(),0.01);
assertEquals(2.,copy.getTheoreticalLatestOperationStartTime(),0.01);
assertEquals("pickupLoc",copy.getLocationId());
assertEquals(10,copy.getCapacity().get(0));
assertEquals(100,copy.getCapacity().get(1));
assertEquals(1000,copy.getCapacity().get(2));
assertTrue(copy!=pickup);
}
@Test
public void whenGettingCapacity_itShouldReturnItCorrectly(){
Shipment shipment = Shipment.Builder.newInstance("s").setPickupLocation("pickLoc").setDeliveryLocation("delLoc")
@ -16,10 +85,4 @@ public class PickupShipmentTest {
assertEquals(100,pick.getCapacity().get(1));
}
@Test
public void whenCopyingAct_itShouldCopyItCorrectly(){
}
}

View file

@ -16,20 +16,85 @@
******************************************************************************/
package jsprit.core.problem.solution.route.activity;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertFalse;
import static org.junit.Assert.assertTrue;
import jsprit.core.problem.job.Service;
import jsprit.core.problem.solution.route.activity.ServiceActivity;
import org.junit.Before;
import org.junit.Test;
public class ServiceActivityTest {
private Service service;
private ServiceActivity serviceActivity;
@Before
public void doBefore(){
service = Service.Builder.newInstance("service").setLocationId("loc").
setTimeWindow(TimeWindow.newInstance(1., 2.)).
addCapacityDimension(0, 10).addCapacityDimension(1, 100).addCapacityDimension(2, 1000).build();
serviceActivity = ServiceActivity.newInstance(service);
}
@Test
public void whenCallingCapacity_itShouldReturnCorrectCapacity(){
assertEquals(10,serviceActivity.getCapacity().get(0));
assertEquals(100,serviceActivity.getCapacity().get(1));
assertEquals(1000,serviceActivity.getCapacity().get(2));
}
@SuppressWarnings("deprecation")
@Test
public void whenCallingCapacityDemand_itShouldReturnCapDimWithIndex0(){
assertEquals(10,serviceActivity.getCapacityDemand());
}
@Test
public void whenStartIsIniWithEarliestStart_itShouldBeSetCorrectly(){
assertEquals(1.,serviceActivity.getTheoreticalEarliestOperationStartTime(),0.01);
}
@Test
public void whenStartIsIniWithLatestStart_itShouldBeSetCorrectly(){
assertEquals(2.,serviceActivity.getTheoreticalLatestOperationStartTime(),0.01);
}
@Test
public void whenSettingArrTime_itShouldBeSetCorrectly(){
serviceActivity.setArrTime(4.0);
assertEquals(4.,serviceActivity.getArrTime(),0.01);
}
@Test
public void whenSettingEndTime_itShouldBeSetCorrectly(){
serviceActivity.setEndTime(5.0);
assertEquals(5.,serviceActivity.getEndTime(),0.01);
}
@Test
public void whenIniLocationId_itShouldBeSetCorrectly(){
assertEquals("loc",serviceActivity.getLocationId());
}
@Test
public void whenCopyingStart_itShouldBeDoneCorrectly(){
ServiceActivity copy = (ServiceActivity) serviceActivity.duplicate();
assertEquals(1.,copy.getTheoreticalEarliestOperationStartTime(),0.01);
assertEquals(2.,copy.getTheoreticalLatestOperationStartTime(),0.01);
assertEquals("loc",copy.getLocationId());
assertTrue(copy!=serviceActivity);
}
@Test
public void whenTwoDeliveriesHaveTheSameUnderlyingJob_theyAreEqual(){
Service s1 = Service.Builder.newInstance("s", 10).setLocationId("loc").build();
Service s2 = Service.Builder.newInstance("s", 10).setLocationId("loc").build();
Service s1 = Service.Builder.newInstance("s").setLocationId("loc").build();
Service s2 = Service.Builder.newInstance("s").setLocationId("loc").build();
ServiceActivity d1 = ServiceActivity.newInstance(s1);
ServiceActivity d2 = ServiceActivity.newInstance(s2);
@ -39,8 +104,8 @@ public class ServiceActivityTest {
@Test
public void whenTwoDeliveriesHaveTheDifferentUnderlyingJob_theyAreNotEqual(){
Service s1 = Service.Builder.newInstance("s", 10).setLocationId("loc").build();
Service s2 = Service.Builder.newInstance("s1", 10).setLocationId("loc").build();
Service s1 = Service.Builder.newInstance("s").setLocationId("loc").build();
Service s2 = Service.Builder.newInstance("s1").setLocationId("loc").build();
ServiceActivity d1 = ServiceActivity.newInstance(s1);
ServiceActivity d2 = ServiceActivity.newInstance(s2);

View file

@ -40,7 +40,7 @@ public class TestTour {
@Before
public void doBefore(){
service = Service.Builder.newInstance("yo", 10).setLocationId("loc").build();
service = Service.Builder.newInstance("yo").addCapacityDimension(0, 10).setLocationId("loc").build();
act = ServiceActivity.newInstance(service);
tour = new TourActivities();
}
@ -73,7 +73,7 @@ public class TestTour {
assertEquals(0, tour.getActivities().size());
tour.addActivity(act);
assertEquals(1, tour.getActivities().size());
Service anotherServiceInstance = Service.Builder.newInstance("yo", 10).setLocationId("loc").build();
Service anotherServiceInstance = Service.Builder.newInstance("yo").addCapacityDimension(0, 10).setLocationId("loc").build();
assertTrue(service.equals(anotherServiceInstance));
boolean removed = tour.removeJob(anotherServiceInstance);
assertTrue(removed);
@ -82,7 +82,7 @@ public class TestTour {
@Test
public void whenAddingAShipmentActivity_tourShouldServeShipment(){
Shipment s = Shipment.Builder.newInstance("s", 1).setDeliveryLocation("delLoc").setPickupLocation("pickLoc").build();
Shipment s = Shipment.Builder.newInstance("s").addCapacityDimension(0, 1).setDeliveryLocation("delLoc").setPickupLocation("pickLoc").build();
TourShipmentActivityFactory fac = new DefaultShipmentActivityFactory();
TourActivity pickupShipment = fac.createPickup(s);
TourActivity deliverShipment = fac.createDelivery(s);
@ -96,7 +96,7 @@ public class TestTour {
@Test
public void whenRemovingShipment_tourShouldNotServiceItAnymore(){
Shipment s = Shipment.Builder.newInstance("s", 1).setDeliveryLocation("delLoc").setPickupLocation("pickLoc").build();
Shipment s = Shipment.Builder.newInstance("s").addCapacityDimension(0, 1).setDeliveryLocation("delLoc").setPickupLocation("pickLoc").build();
TourShipmentActivityFactory fac = new DefaultShipmentActivityFactory();
TourActivity pickupShipment = fac.createPickup(s);
TourActivity deliverShipment = fac.createDelivery(s);
@ -110,7 +110,7 @@ public class TestTour {
@Test
public void whenRemovingShipment_theirCorrespondingActivitiesShouldBeRemoved(){
Shipment s = Shipment.Builder.newInstance("s", 1).setDeliveryLocation("delLoc").setPickupLocation("pickLoc").build();
Shipment s = Shipment.Builder.newInstance("s").addCapacityDimension(0, 1).setDeliveryLocation("delLoc").setPickupLocation("pickLoc").build();
TourShipmentActivityFactory fac = new DefaultShipmentActivityFactory();
TourActivity pickupShipment = fac.createPickup(s);
TourActivity deliverShipment = fac.createDelivery(s);