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;
|
||||
|
||||
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;
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue