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:
parent
1a67d1e20e
commit
b641adf98c
1 changed files with 117 additions and 8 deletions
|
|
@ -16,19 +16,17 @@
|
||||||
******************************************************************************/
|
******************************************************************************/
|
||||||
package jsprit.core.problem.vehicle;
|
package jsprit.core.problem.vehicle;
|
||||||
|
|
||||||
|
import static org.junit.Assert.*;
|
||||||
|
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
|
import java.util.Arrays;
|
||||||
import java.util.Collection;
|
import java.util.Collection;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
import jsprit.core.problem.vehicle.FiniteFleetManagerFactory;
|
import org.junit.Before;
|
||||||
import jsprit.core.problem.vehicle.PenaltyVehicleType;
|
import org.junit.Test;
|
||||||
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;
|
|
||||||
|
|
||||||
public class TestVehicleFleetManagerImpl extends TestCase{
|
public class TestVehicleFleetManagerImpl {
|
||||||
|
|
||||||
VehicleFleetManager fleetManager;
|
VehicleFleetManager fleetManager;
|
||||||
|
|
||||||
|
|
@ -36,6 +34,7 @@ public class TestVehicleFleetManagerImpl extends TestCase{
|
||||||
|
|
||||||
Vehicle v2;
|
Vehicle v2;
|
||||||
|
|
||||||
|
@Before
|
||||||
public void setUp(){
|
public void setUp(){
|
||||||
List<Vehicle> vehicles = new ArrayList<Vehicle>();
|
List<Vehicle> vehicles = new ArrayList<Vehicle>();
|
||||||
|
|
||||||
|
|
@ -48,17 +47,20 @@ public class TestVehicleFleetManagerImpl extends TestCase{
|
||||||
fleetManager = new FiniteFleetManagerFactory(vehicles).createFleetManager();
|
fleetManager = new FiniteFleetManagerFactory(vehicles).createFleetManager();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
public void testGetVehicles(){
|
public void testGetVehicles(){
|
||||||
Collection<Vehicle> vehicles = fleetManager.getAvailableVehicles();
|
Collection<Vehicle> vehicles = fleetManager.getAvailableVehicles();
|
||||||
assertEquals(2, vehicles.size());
|
assertEquals(2, vehicles.size());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
public void testLock(){
|
public void testLock(){
|
||||||
fleetManager.lock(v1);
|
fleetManager.lock(v1);
|
||||||
Collection<Vehicle> vehicles = fleetManager.getAvailableVehicles();
|
Collection<Vehicle> vehicles = fleetManager.getAvailableVehicles();
|
||||||
assertEquals(1, vehicles.size());
|
assertEquals(1, vehicles.size());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
public void testLockTwice(){
|
public void testLockTwice(){
|
||||||
fleetManager.lock(v1);
|
fleetManager.lock(v1);
|
||||||
Collection<Vehicle> vehicles = fleetManager.getAvailableVehicles();
|
Collection<Vehicle> vehicles = fleetManager.getAvailableVehicles();
|
||||||
|
|
@ -74,6 +76,7 @@ public class TestVehicleFleetManagerImpl extends TestCase{
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
public void testGetVehiclesWithout(){
|
public void testGetVehiclesWithout(){
|
||||||
Collection<Vehicle> vehicles = fleetManager.getAvailableVehicles(v1);
|
Collection<Vehicle> vehicles = fleetManager.getAvailableVehicles(v1);
|
||||||
|
|
||||||
|
|
@ -81,6 +84,7 @@ public class TestVehicleFleetManagerImpl extends TestCase{
|
||||||
assertEquals(1, vehicles.size());
|
assertEquals(1, vehicles.size());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
public void testUnlock(){
|
public void testUnlock(){
|
||||||
fleetManager.lock(v1);
|
fleetManager.lock(v1);
|
||||||
Collection<Vehicle> vehicles = fleetManager.getAvailableVehicles();
|
Collection<Vehicle> vehicles = fleetManager.getAvailableVehicles();
|
||||||
|
|
@ -90,6 +94,7 @@ public class TestVehicleFleetManagerImpl extends TestCase{
|
||||||
assertEquals(2, vehicles_.size());
|
assertEquals(2, vehicles_.size());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
public void testWithPenalty_whenHavingOneRegularVehicleAvailable_noPenaltyVehicleIsReturn(){
|
public void testWithPenalty_whenHavingOneRegularVehicleAvailable_noPenaltyVehicleIsReturn(){
|
||||||
Vehicle penalty4standard = VehicleImpl.Builder.newInstance("standard_penalty").setStartLocationId("loc").
|
Vehicle penalty4standard = VehicleImpl.Builder.newInstance("standard_penalty").setStartLocationId("loc").
|
||||||
setType(VehicleTypeImpl.Builder.newInstance("standard").build()).build();
|
setType(VehicleTypeImpl.Builder.newInstance("standard").build()).build();
|
||||||
|
|
@ -104,6 +109,7 @@ public class TestVehicleFleetManagerImpl extends TestCase{
|
||||||
assertEquals(2, availableVehicles.size());
|
assertEquals(2, availableVehicles.size());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
public void testWithPenalty_whenHavingTwoRegularVehicleAvailablePlusOnePenaltyVehicle_andOneIsLocked_returnTheOtherRegularVehicle(){
|
public void testWithPenalty_whenHavingTwoRegularVehicleAvailablePlusOnePenaltyVehicle_andOneIsLocked_returnTheOtherRegularVehicle(){
|
||||||
VehicleTypeImpl penaltyType = VehicleTypeImpl.Builder.newInstance("standard").build();
|
VehicleTypeImpl penaltyType = VehicleTypeImpl.Builder.newInstance("standard").build();
|
||||||
PenaltyVehicleType penaltyVehicleType = new PenaltyVehicleType(penaltyType);
|
PenaltyVehicleType penaltyVehicleType = new PenaltyVehicleType(penaltyType);
|
||||||
|
|
@ -127,6 +133,7 @@ public class TestVehicleFleetManagerImpl extends TestCase{
|
||||||
assertEquals(v3, availableVehicles.iterator().next());
|
assertEquals(v3, availableVehicles.iterator().next());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
public void testWithPenalty_whenHavingNoRegularVehicleAvailable_penaltyVehicleIsReturned(){
|
public void testWithPenalty_whenHavingNoRegularVehicleAvailable_penaltyVehicleIsReturned(){
|
||||||
VehicleTypeImpl penaltyType = VehicleTypeImpl.Builder.newInstance("standard").build();
|
VehicleTypeImpl penaltyType = VehicleTypeImpl.Builder.newInstance("standard").build();
|
||||||
|
|
||||||
|
|
@ -143,4 +150,106 @@ public class TestVehicleFleetManagerImpl extends TestCase{
|
||||||
Collection<Vehicle> availableVehicles = fleetManager.getAvailableVehicles();
|
Collection<Vehicle> availableVehicles = fleetManager.getAvailableVehicles();
|
||||||
assertEquals(penalty4standard, availableVehicles.iterator().next());
|
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;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue