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

added test-cases to reproduce bug #96

This commit is contained in:
oblonski 2014-05-15 10:48:44 +02:00
parent 1a67d1e20e
commit b641adf98c

View file

@ -16,19 +16,17 @@
******************************************************************************/
package jsprit.core.problem.vehicle;
import static org.junit.Assert.*;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collection;
import java.util.List;
import jsprit.core.problem.vehicle.FiniteFleetManagerFactory;
import jsprit.core.problem.vehicle.PenaltyVehicleType;
import jsprit.core.problem.vehicle.Vehicle;
import jsprit.core.problem.vehicle.VehicleFleetManager;
import jsprit.core.problem.vehicle.VehicleImpl;
import jsprit.core.problem.vehicle.VehicleTypeImpl;
import junit.framework.TestCase;
import org.junit.Before;
import org.junit.Test;
public class TestVehicleFleetManagerImpl extends TestCase{
public class TestVehicleFleetManagerImpl {
VehicleFleetManager fleetManager;
@ -36,6 +34,7 @@ public class TestVehicleFleetManagerImpl extends TestCase{
Vehicle v2;
@Before
public void setUp(){
List<Vehicle> vehicles = new ArrayList<Vehicle>();
@ -48,17 +47,20 @@ public class TestVehicleFleetManagerImpl extends TestCase{
fleetManager = new FiniteFleetManagerFactory(vehicles).createFleetManager();
}
@Test
public void testGetVehicles(){
Collection<Vehicle> vehicles = fleetManager.getAvailableVehicles();
assertEquals(2, vehicles.size());
}
@Test
public void testLock(){
fleetManager.lock(v1);
Collection<Vehicle> vehicles = fleetManager.getAvailableVehicles();
assertEquals(1, vehicles.size());
}
@Test
public void testLockTwice(){
fleetManager.lock(v1);
Collection<Vehicle> vehicles = fleetManager.getAvailableVehicles();
@ -74,6 +76,7 @@ public class TestVehicleFleetManagerImpl extends TestCase{
}
}
@Test
public void testGetVehiclesWithout(){
Collection<Vehicle> vehicles = fleetManager.getAvailableVehicles(v1);
@ -81,6 +84,7 @@ public class TestVehicleFleetManagerImpl extends TestCase{
assertEquals(1, vehicles.size());
}
@Test
public void testUnlock(){
fleetManager.lock(v1);
Collection<Vehicle> vehicles = fleetManager.getAvailableVehicles();
@ -90,6 +94,7 @@ public class TestVehicleFleetManagerImpl extends TestCase{
assertEquals(2, vehicles_.size());
}
@Test
public void testWithPenalty_whenHavingOneRegularVehicleAvailable_noPenaltyVehicleIsReturn(){
Vehicle penalty4standard = VehicleImpl.Builder.newInstance("standard_penalty").setStartLocationId("loc").
setType(VehicleTypeImpl.Builder.newInstance("standard").build()).build();
@ -104,6 +109,7 @@ public class TestVehicleFleetManagerImpl extends TestCase{
assertEquals(2, availableVehicles.size());
}
@Test
public void testWithPenalty_whenHavingTwoRegularVehicleAvailablePlusOnePenaltyVehicle_andOneIsLocked_returnTheOtherRegularVehicle(){
VehicleTypeImpl penaltyType = VehicleTypeImpl.Builder.newInstance("standard").build();
PenaltyVehicleType penaltyVehicleType = new PenaltyVehicleType(penaltyType);
@ -127,6 +133,7 @@ public class TestVehicleFleetManagerImpl extends TestCase{
assertEquals(v3, availableVehicles.iterator().next());
}
@Test
public void testWithPenalty_whenHavingNoRegularVehicleAvailable_penaltyVehicleIsReturned(){
VehicleTypeImpl penaltyType = VehicleTypeImpl.Builder.newInstance("standard").build();
@ -143,4 +150,106 @@ public class TestVehicleFleetManagerImpl extends TestCase{
Collection<Vehicle> availableVehicles = fleetManager.getAvailableVehicles();
assertEquals(penalty4standard, availableVehicles.iterator().next());
}
@Test
public void whenAddingTwoVehiclesWithSameTypeIdAndLocation_getAvailableVehicleShouldReturnOnlyOneOfThem(){
VehicleTypeImpl type = VehicleTypeImpl.Builder.newInstance("standard").build();
Vehicle v1 = VehicleImpl.Builder.newInstance("v1").setStartLocationId("loc").setType(type).build();
Vehicle v2 = VehicleImpl.Builder.newInstance("v2").setStartLocationId("loc").setType(type).build();
VehicleFleetManager fleetManager = new FiniteFleetManagerFactory(Arrays.asList(v1,v2)).createFleetManager();
Collection<Vehicle> vehicles = fleetManager.getAvailableVehicles();
assertEquals(1,vehicles.size());
}
@Test
public void whenAddingTwoVehiclesWithSameTypeIdStartAndEndLocationAndWorkingShift_getAvailableVehicleShouldReturnOnlyOneOfThem(){
VehicleTypeImpl type = VehicleTypeImpl.Builder.newInstance("standard").build();
Vehicle v1 = VehicleImpl.Builder.newInstance("v1").setStartLocationId("loc").setEndLocationId("endLoc")
.setType(type).setEarliestStart(0.).setLatestArrival(10.).build();
Vehicle v2 = VehicleImpl.Builder.newInstance("v2").setStartLocationId("loc").setEndLocationId("endLoc")
.setType(type).setEarliestStart(0.).setLatestArrival(10.).build();
VehicleFleetManager fleetManager = new FiniteFleetManagerFactory(Arrays.asList(v1,v2)).createFleetManager();
Collection<Vehicle> vehicles = fleetManager.getAvailableVehicles();
assertEquals(1,vehicles.size());
}
@Test
public void whenAddingTwoVehiclesWithDifferentType_getAvailableVehicleShouldReturnBoth(){
VehicleTypeImpl type = VehicleTypeImpl.Builder.newInstance("standard").build();
VehicleTypeImpl type2 = VehicleTypeImpl.Builder.newInstance("type2").build();
Vehicle v1 = VehicleImpl.Builder.newInstance("v1").setStartLocationId("loc").setEndLocationId("endLoc")
.setType(type).setEarliestStart(0.).setLatestArrival(10.).build();
Vehicle v2 = VehicleImpl.Builder.newInstance("v2").setStartLocationId("loc").setEndLocationId("endLoc")
.setType(type2).setEarliestStart(0.).setLatestArrival(10.).build();
VehicleFleetManager fleetManager = new FiniteFleetManagerFactory(Arrays.asList(v1,v2)).createFleetManager();
Collection<Vehicle> vehicles = fleetManager.getAvailableVehicles();
assertEquals(2,vehicles.size());
assertTrue(vehicleInCollection(v1,vehicles));
assertTrue(vehicleInCollection(v2,vehicles));
}
@Test
public void whenAddingTwoVehiclesWithDifferentStartLocation_getAvailableVehicleShouldReturnBoth(){
VehicleTypeImpl type = VehicleTypeImpl.Builder.newInstance("standard").build();
Vehicle v1 = VehicleImpl.Builder.newInstance("v1").setStartLocationId("startloc").setEndLocationId("endLoc")
.setType(type).setEarliestStart(0.).setLatestArrival(10.).build();
Vehicle v2 = VehicleImpl.Builder.newInstance("v2").setStartLocationId("loc").setEndLocationId("endLoc")
.setType(type).setEarliestStart(0.).setLatestArrival(10.).build();
VehicleFleetManager fleetManager = new FiniteFleetManagerFactory(Arrays.asList(v1,v2)).createFleetManager();
Collection<Vehicle> vehicles = fleetManager.getAvailableVehicles();
assertEquals(2,vehicles.size());
assertTrue(vehicleInCollection(v1,vehicles));
assertTrue(vehicleInCollection(v2,vehicles));
}
@Test
public void whenAddingTwoVehiclesWithDifferentEndLocation_getAvailableVehicleShouldReturnBoth(){
VehicleTypeImpl type = VehicleTypeImpl.Builder.newInstance("standard").build();
Vehicle v1 = VehicleImpl.Builder.newInstance("v1").setStartLocationId("loc").setEndLocationId("endLocation")
.setType(type).setEarliestStart(0.).setLatestArrival(10.).build();
Vehicle v2 = VehicleImpl.Builder.newInstance("v2").setStartLocationId("loc").setEndLocationId("endLoc")
.setType(type).setEarliestStart(0.).setLatestArrival(10.).build();
VehicleFleetManager fleetManager = new FiniteFleetManagerFactory(Arrays.asList(v1,v2)).createFleetManager();
Collection<Vehicle> vehicles = fleetManager.getAvailableVehicles();
assertEquals(2,vehicles.size());
assertTrue(vehicleInCollection(v1,vehicles));
assertTrue(vehicleInCollection(v2,vehicles));
}
@Test
public void whenAddingTwoVehiclesWithDifferentEarliestStart_getAvailableVehicleShouldReturnBoth(){
VehicleTypeImpl type = VehicleTypeImpl.Builder.newInstance("standard").build();
Vehicle v1 = VehicleImpl.Builder.newInstance("v1").setStartLocationId("loc").setEndLocationId("endLoc")
.setType(type).setEarliestStart(5.).setLatestArrival(10.).build();
Vehicle v2 = VehicleImpl.Builder.newInstance("v2").setStartLocationId("loc").setEndLocationId("endLoc")
.setType(type).setEarliestStart(0.).setLatestArrival(10.).build();
VehicleFleetManager fleetManager = new FiniteFleetManagerFactory(Arrays.asList(v1,v2)).createFleetManager();
Collection<Vehicle> vehicles = fleetManager.getAvailableVehicles();
assertEquals(2,vehicles.size());
assertTrue(vehicleInCollection(v1,vehicles));
assertTrue(vehicleInCollection(v2,vehicles));
}
@Test
public void whenAddingTwoVehiclesWithDifferentLatestArr_getAvailableVehicleShouldReturnBoth(){
VehicleTypeImpl type = VehicleTypeImpl.Builder.newInstance("standard").build();
Vehicle v1 = VehicleImpl.Builder.newInstance("v1").setStartLocationId("loc").setEndLocationId("endLoc")
.setType(type).setEarliestStart(0.).setLatestArrival(20.).build();
Vehicle v2 = VehicleImpl.Builder.newInstance("v2").setStartLocationId("loc").setEndLocationId("endLoc")
.setType(type).setEarliestStart(0.).setLatestArrival(10.).build();
VehicleFleetManager fleetManager = new FiniteFleetManagerFactory(Arrays.asList(v1,v2)).createFleetManager();
Collection<Vehicle> vehicles = fleetManager.getAvailableVehicles();
assertEquals(2,vehicles.size());
assertTrue(vehicleInCollection(v1,vehicles));
assertTrue(vehicleInCollection(v2,vehicles));
}
private boolean vehicleInCollection(Vehicle v, Collection<Vehicle> vehicles) {
for(Vehicle veh : vehicles){
if(veh == v) return true;
}
return false;
}
}