Package jsprit.core.problem.io

Source Code of jsprit.core.problem.io.VrpXMLReaderTest

/*******************************************************************************
* 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.io;

import jsprit.core.problem.VehicleRoutingProblem;
import jsprit.core.problem.VehicleRoutingProblem.FleetSize;
import jsprit.core.problem.job.Job;
import jsprit.core.problem.job.Service;
import jsprit.core.problem.job.Shipment;
import jsprit.core.problem.solution.VehicleRoutingProblemSolution;
import jsprit.core.problem.solution.route.activity.DeliverShipment;
import jsprit.core.problem.solution.route.activity.PickupService;
import jsprit.core.problem.solution.route.activity.PickupShipment;
import jsprit.core.problem.solution.route.activity.TourActivity;
import jsprit.core.problem.vehicle.Vehicle;
import jsprit.core.util.Solutions;
import org.junit.Before;
import org.junit.Test;

import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collection;
import java.util.List;

import static org.junit.Assert.*;


public class VrpXMLReaderTest {
 
  private String inFileName;
 
  @Before
  public void doBefore(){
    inFileName = "src/test/resources/finiteVrpForReaderTest.xml";
  }

    @Test
    public void shouldReadNameOfService(){
        VehicleRoutingProblem.Builder builder = VehicleRoutingProblem.Builder.newInstance();
        new VrpXMLReader(builder, null).read(inFileName);
        VehicleRoutingProblem vrp = builder.build();
        Service s = (Service) vrp.getJobs().get("1");
        assertTrue(s.getName().equals("cleaning"));
    }

    @Test
    public void shouldReadNameOfShipment(){
        VehicleRoutingProblem.Builder builder = VehicleRoutingProblem.Builder.newInstance();
        new VrpXMLReader(builder, null).read(inFileName);
        VehicleRoutingProblem vrp = builder.build();
        Shipment s = (Shipment) vrp.getJobs().get("3");
        assertTrue(s.getName().equals("deliver-smth"));
    }

  @Test
  public void whenReadingVrp_problemTypeIsReadCorrectly(){
    VehicleRoutingProblem.Builder builder = VehicleRoutingProblem.Builder.newInstance();
    new VrpXMLReader(builder, null).read(inFileName);
    VehicleRoutingProblem vrp = builder.build();
    assertEquals(FleetSize.FINITE,vrp.getFleetSize());
  }
 
  @Test
  public void whenReadingVrp_vehiclesAreReadCorrectly(){
    VehicleRoutingProblem.Builder builder = VehicleRoutingProblem.Builder.newInstance();
    new VrpXMLReader(builder, null).read(inFileName);
    VehicleRoutingProblem vrp = builder.build();
    assertEquals(5,vrp.getVehicles().size());
    assertTrue(idsInCollection(Arrays.asList("v1","v2"),vrp.getVehicles()));
  }
 
  @Test
  public void whenReadingVrp_vehiclesAreReadCorrectly2(){
    VehicleRoutingProblem.Builder builder = VehicleRoutingProblem.Builder.newInstance();
    new VrpXMLReader(builder, null).read(inFileName);
    VehicleRoutingProblem vrp = builder.build();
    Vehicle v1 = getVehicle("v1",vrp.getVehicles());
    assertEquals(20,v1.getType().getCapacityDimensions().get(0));
    assertEquals(100.0,v1.getStartLocationCoordinate().getX(),0.01);
    assertEquals(0.0,v1.getEarliestDeparture(),0.01);
    assertEquals("depotLoc2",v1.getStartLocationId());
    assertNotNull(v1.getType());
    assertEquals("vehType", v1.getType().getTypeId());
    assertEquals(1000.0,v1.getLatestArrival(),0.01);
  }

    @Test
    public void whenReadingVehicles_skill1ShouldBeAssigned(){
        VehicleRoutingProblem.Builder builder = VehicleRoutingProblem.Builder.newInstance();
        new VrpXMLReader(builder, null).read(inFileName);
        VehicleRoutingProblem vrp = builder.build();
        Vehicle v1 = getVehicle("v1",vrp.getVehicles());
        assertTrue(v1.getSkills().containsSkill("skill1"));
    }

    @Test
    public void whenReadingVehicles_skill2ShouldBeAssigned(){
        VehicleRoutingProblem.Builder builder = VehicleRoutingProblem.Builder.newInstance();
        new VrpXMLReader(builder, null).read(inFileName);
        VehicleRoutingProblem vrp = builder.build();
        Vehicle v1 = getVehicle("v1",vrp.getVehicles());
        assertTrue(v1.getSkills().containsSkill("skill2"));
    }

    @Test
    public void whenReadingVehicles_nuSkillsShouldBeCorrect(){
        VehicleRoutingProblem.Builder builder = VehicleRoutingProblem.Builder.newInstance();
        new VrpXMLReader(builder, null).read(inFileName);
        VehicleRoutingProblem vrp = builder.build();
        Vehicle v1 = getVehicle("v1",vrp.getVehicles());
        assertEquals(2, v1.getSkills().values().size());
    }

    @Test
    public void whenReadingVehicles_nuSkillsOfV2ShouldBeCorrect(){
        VehicleRoutingProblem.Builder builder = VehicleRoutingProblem.Builder.newInstance();
        new VrpXMLReader(builder, null).read(inFileName);
        VehicleRoutingProblem vrp = builder.build();
        Vehicle v = getVehicle("v2",vrp.getVehicles());
        assertEquals(0, v.getSkills().values().size());
    }
 
  private Vehicle getVehicle(String string, Collection<Vehicle> vehicles) {
    for(Vehicle v : vehicles) if(string.equals(v.getId())) return v;
    return null;
  }

  private boolean idsInCollection(List<String> asList, Collection<Vehicle> vehicles) {
    List<String> ids = new ArrayList<String>(asList);
    for(Vehicle v : vehicles){
      if(ids.contains(v.getId())) ids.remove(v.getId());
    }
    return ids.isEmpty();
  }

  @Test
  public void whenReadingVrp_vehicleTypesAreReadCorrectly(){
    VehicleRoutingProblem.Builder builder = VehicleRoutingProblem.Builder.newInstance();
    new VrpXMLReader(builder, null).read(inFileName);
    VehicleRoutingProblem vrp = builder.build();
    assertEquals(3,vrp.getTypes().size());
  }
 
  @Test
  public void whenReadingVrpWithInfiniteSize_itReadsCorrectly(){
    VehicleRoutingProblem.Builder builder = VehicleRoutingProblem.Builder.newInstance();
    new VrpXMLReader(builder, null).read(inFileName);
    VehicleRoutingProblem vrp = builder.build();
    assertEquals(FleetSize.FINITE,vrp.getFleetSize());
  }
 
  @Test
  public void whenReadingJobs_nuOfJobsIsReadThemCorrectly(){
    VehicleRoutingProblem.Builder builder = VehicleRoutingProblem.Builder.newInstance();
    new VrpXMLReader(builder, null).read(inFileName);
    VehicleRoutingProblem vrp = builder.build();
    assertEquals(4, vrp.getJobs().size());
  }
 
  @Test
  public void whenReadingServices_itReadsThemCorrectly(){
    VehicleRoutingProblem.Builder builder = VehicleRoutingProblem.Builder.newInstance();
    new VrpXMLReader(builder, null).read(inFileName);
    VehicleRoutingProblem vrp = builder.build();
    int servCounter = 0;
    for(Job j : vrp.getJobs().values()){
      if(j instanceof Service) servCounter++;
    }
    assertEquals(2,servCounter);
  }

    @Test
    public void whenReadingService1_skill1ShouldBeAssigned(){
        VehicleRoutingProblem.Builder builder = VehicleRoutingProblem.Builder.newInstance();
        new VrpXMLReader(builder, null).read(inFileName);
        VehicleRoutingProblem vrp = builder.build();
        Service s = (Service) vrp.getJobs().get("1");
        assertTrue(s.getRequiredSkills().containsSkill("skill1"));
    }

    @Test
    public void whenReadingService1_skill2ShouldBeAssigned(){
        VehicleRoutingProblem.Builder builder = VehicleRoutingProblem.Builder.newInstance();
        new VrpXMLReader(builder, null).read(inFileName);
        VehicleRoutingProblem vrp = builder.build();
        Service s = (Service) vrp.getJobs().get("1");
        assertTrue(s.getRequiredSkills().containsSkill("skill2"));
    }

    @Test
    public void whenReadingService1_nuSkillsShouldBeCorrect(){
        VehicleRoutingProblem.Builder builder = VehicleRoutingProblem.Builder.newInstance();
        new VrpXMLReader(builder, null).read(inFileName);
        VehicleRoutingProblem vrp = builder.build();
        Service s = (Service) vrp.getJobs().get("1");
        assertEquals(2,s.getRequiredSkills().values().size());
    }

    @Test
    public void whenReadingService2_nuSkillsOfV2ShouldBeCorrect(){
        VehicleRoutingProblem.Builder builder = VehicleRoutingProblem.Builder.newInstance();
        new VrpXMLReader(builder, null).read(inFileName);
        VehicleRoutingProblem vrp = builder.build();
        Service s = (Service) vrp.getJobs().get("2");
        assertEquals(0,s.getRequiredSkills().values().size());
    }
 
  @Test
  public void whenReadingShipments_itReadsThemCorrectly(){
    VehicleRoutingProblem.Builder builder = VehicleRoutingProblem.Builder.newInstance();
    new VrpXMLReader(builder, null).read(inFileName);
    VehicleRoutingProblem vrp = builder.build();
    int shipCounter = 0;
    for(Job j : vrp.getJobs().values()){
      if(j instanceof Shipment) shipCounter++;
    }
    assertEquals(2,shipCounter);
  }

    @Test
    public void whenReadingShipment3_skill1ShouldBeAssigned(){
        VehicleRoutingProblem.Builder builder = VehicleRoutingProblem.Builder.newInstance();
        new VrpXMLReader(builder, null).read(inFileName);
        VehicleRoutingProblem vrp = builder.build();
        Shipment s = (Shipment) vrp.getJobs().get("3");
        assertTrue(s.getRequiredSkills().containsSkill("skill1"));
    }

    @Test
    public void whenReadingShipment3_skill2ShouldBeAssigned(){
        VehicleRoutingProblem.Builder builder = VehicleRoutingProblem.Builder.newInstance();
        new VrpXMLReader(builder, null).read(inFileName);
        VehicleRoutingProblem vrp = builder.build();
        Shipment s = (Shipment) vrp.getJobs().get("3");
        assertTrue(s.getRequiredSkills().containsSkill("skill2"));
    }

    @Test
    public void whenReadingShipment3_nuSkillsShouldBeCorrect(){
        VehicleRoutingProblem.Builder builder = VehicleRoutingProblem.Builder.newInstance();
        new VrpXMLReader(builder, null).read(inFileName);
        VehicleRoutingProblem vrp = builder.build();
        Shipment s = (Shipment) vrp.getJobs().get("3");
        assertEquals(2,s.getRequiredSkills().values().size());
    }

    @Test
    public void whenReadingShipment4_nuSkillsOfV2ShouldBeCorrect(){
        VehicleRoutingProblem.Builder builder = VehicleRoutingProblem.Builder.newInstance();
        new VrpXMLReader(builder, null).read(inFileName);
        VehicleRoutingProblem vrp = builder.build();
        Shipment s = (Shipment) vrp.getJobs().get("4");
        assertEquals(0,s.getRequiredSkills().values().size());
    }
 
  @Test
  public void whenReadingServices_capOfService1IsReadCorrectly(){
    VehicleRoutingProblem.Builder builder = VehicleRoutingProblem.Builder.newInstance();
    new VrpXMLReader(builder, null).read(inFileName);
    VehicleRoutingProblem vrp = builder.build();
    Service s1 = (Service) vrp.getJobs().get("1");
    assertEquals(1,s1.getSize().get(0));
  }
 
  @Test
  public void whenReadingServices_durationOfService1IsReadCorrectly(){
    VehicleRoutingProblem.Builder builder = VehicleRoutingProblem.Builder.newInstance();
    new VrpXMLReader(builder, null).read(inFileName);
    VehicleRoutingProblem vrp = builder.build();
    Service s1 = (Service) vrp.getJobs().get("1");
    assertEquals(10.0,s1.getServiceDuration(),0.01);
  }
 
  @Test
  public void whenReadingServices_twOfService1IsReadCorrectly(){
    VehicleRoutingProblem.Builder builder = VehicleRoutingProblem.Builder.newInstance();
    new VrpXMLReader(builder, null).read(inFileName);
    VehicleRoutingProblem vrp = builder.build();
    Service s1 = (Service) vrp.getJobs().get("1");
    assertEquals(0.0,s1.getTimeWindow().getStart(),0.01);
    assertEquals(4000.0,s1.getTimeWindow().getEnd(),0.01);
  }
 
  @Test
  public void whenReadingServices_typeOfService1IsReadCorrectly(){
    VehicleRoutingProblem.Builder builder = VehicleRoutingProblem.Builder.newInstance();
    new VrpXMLReader(builder, null).read(inFileName);
    VehicleRoutingProblem vrp = builder.build();
    Service s1 = (Service) vrp.getJobs().get("1");
    assertEquals("service",s1.getType());
  }
 
  @Test
  public void whenReadingFile_v2MustNotReturnToDepot(){
    VehicleRoutingProblem.Builder builder = VehicleRoutingProblem.Builder.newInstance();
    new VrpXMLReader(builder, null).read(inFileName);
    VehicleRoutingProblem vrp = builder.build();
    Vehicle v = getVehicle("v2",vrp.getVehicles());
    assertFalse(v.isReturnToDepot());
  }
 
  @Test
  public void whenReadingFile_v3HasTheCorrectStartLocation(){
    VehicleRoutingProblem.Builder builder = VehicleRoutingProblem.Builder.newInstance();
    new VrpXMLReader(builder, null).read(inFileName);
    VehicleRoutingProblem vrp = builder.build();
    Vehicle v3 = getVehicle("v3",vrp.getVehicles());
    assertEquals("startLoc",v3.getStartLocationId());
  }
 
  @Test
  public void whenReadingFile_v3HasTheCorrectEndLocation(){
    VehicleRoutingProblem.Builder builder = VehicleRoutingProblem.Builder.newInstance();
    new VrpXMLReader(builder, null).read(inFileName);
    VehicleRoutingProblem vrp = builder.build();
    Vehicle v3 = getVehicle("v3",vrp.getVehicles());
    assertEquals("endLoc",v3.getEndLocationId());
  }
 
  @Test
  public void whenReadingFile_v3HasTheCorrectEndLocationCoordinate(){
    VehicleRoutingProblem.Builder builder = VehicleRoutingProblem.Builder.newInstance();
    new VrpXMLReader(builder, null).read(inFileName);
    VehicleRoutingProblem vrp = builder.build();
    Vehicle v3 = getVehicle("v3",vrp.getVehicles());
    assertEquals(1000.0,v3.getEndLocationCoordinate().getX(),0.01);
    assertEquals(2000.0,v3.getEndLocationCoordinate().getY(),0.01);
  }
 
  @Test
  public void whenReadingFile_v3HasTheCorrectStartLocationCoordinate(){
    VehicleRoutingProblem.Builder builder = VehicleRoutingProblem.Builder.newInstance();
    new VrpXMLReader(builder, null).read(inFileName);
    VehicleRoutingProblem vrp = builder.build();
    Vehicle v3 = getVehicle("v3",vrp.getVehicles());
    assertEquals(10.0,v3.getStartLocationCoordinate().getX(),0.01);
    assertEquals(100.0,v3.getStartLocationCoordinate().getY(),0.01);
  }
 
  @Test
  public void whenReadingFile_v3HasTheCorrectLocationCoordinate(){
    VehicleRoutingProblem.Builder builder = VehicleRoutingProblem.Builder.newInstance();
    new VrpXMLReader(builder, null).read(inFileName);
    VehicleRoutingProblem vrp = builder.build();
    Vehicle v3 = getVehicle("v3",vrp.getVehicles());
    assertEquals(10.0,v3.getStartLocationCoordinate().getX(),0.01);
    assertEquals(100.0,v3.getStartLocationCoordinate().getY(),0.01);
  }
 
  @Test
  public void whenReadingFile_v3HasTheCorrectLocationId(){
    VehicleRoutingProblem.Builder builder = VehicleRoutingProblem.Builder.newInstance();
    new VrpXMLReader(builder, null).read(inFileName);
    VehicleRoutingProblem vrp = builder.build();
    Vehicle v3 = getVehicle("v3",vrp.getVehicles());
    assertEquals("startLoc",v3.getStartLocationId());
  }
 
  @Test
  public void whenReadingFile_v4HasTheCorrectStartLocation(){
    VehicleRoutingProblem.Builder builder = VehicleRoutingProblem.Builder.newInstance();
    new VrpXMLReader(builder, null).read(inFileName);
    VehicleRoutingProblem vrp = builder.build();
    Vehicle v = getVehicle("v4",vrp.getVehicles());
    assertEquals("startLoc",v.getStartLocationId());
  }
 
  @Test
  public void whenReadingFile_v4HasTheCorrectEndLocation(){
    VehicleRoutingProblem.Builder builder = VehicleRoutingProblem.Builder.newInstance();
    new VrpXMLReader(builder, null).read(inFileName);
    VehicleRoutingProblem vrp = builder.build();
    Vehicle v = getVehicle("v4",vrp.getVehicles());
    assertEquals("endLoc",v.getEndLocationId());
  }
 
  @Test
  public void whenReadingFile_v4HasTheCorrectEndLocationCoordinate(){
    VehicleRoutingProblem.Builder builder = VehicleRoutingProblem.Builder.newInstance();
    new VrpXMLReader(builder, null).read(inFileName);
    VehicleRoutingProblem vrp = builder.build();
    Vehicle v = getVehicle("v4",vrp.getVehicles());
    assertEquals(1000.0,v.getEndLocationCoordinate().getX(),0.01);
    assertEquals(2000.0,v.getEndLocationCoordinate().getY(),0.01);
  }
 
  @Test
  public void whenReadingFile_v4HasTheCorrectStartLocationCoordinate(){
    VehicleRoutingProblem.Builder builder = VehicleRoutingProblem.Builder.newInstance();
    new VrpXMLReader(builder, null).read(inFileName);
    VehicleRoutingProblem vrp = builder.build();
    Vehicle v = getVehicle("v4",vrp.getVehicles());
    assertEquals(10.0,v.getStartLocationCoordinate().getX(),0.01);
    assertEquals(100.0,v.getStartLocationCoordinate().getY(),0.01);
  }
 
  @Test
  public void whenReadingFile_v4HasTheCorrectLocationCoordinate(){
    VehicleRoutingProblem.Builder builder = VehicleRoutingProblem.Builder.newInstance();
    new VrpXMLReader(builder, null).read(inFileName);
    VehicleRoutingProblem vrp = builder.build();
    Vehicle v = getVehicle("v4",vrp.getVehicles());
    assertEquals(10.0,v.getStartLocationCoordinate().getX(),0.01);
    assertEquals(100.0,v.getStartLocationCoordinate().getY(),0.01);
  }
 
  @Test
  public void whenReadingFile_v4HasTheCorrectLocationId(){
    VehicleRoutingProblem.Builder builder = VehicleRoutingProblem.Builder.newInstance();
    new VrpXMLReader(builder, null).read(inFileName);
    VehicleRoutingProblem vrp = builder.build();
    Vehicle v = getVehicle("v4",vrp.getVehicles());
    assertEquals("startLoc",v.getStartLocationId());
  }
 
  @Test
  public void whenReadingJobs_capOfShipment3IsReadCorrectly(){
    VehicleRoutingProblem.Builder builder = VehicleRoutingProblem.Builder.newInstance();
    new VrpXMLReader(builder, null).read(inFileName);
    VehicleRoutingProblem vrp = builder.build();
    Shipment s = (Shipment) vrp.getJobs().get("3");
    assertEquals(10,s.getSize().get(0));
  }
 
  @Test
  public void whenReadingJobs_pickupServiceTimeOfShipment3IsReadCorrectly(){
    VehicleRoutingProblem.Builder builder = VehicleRoutingProblem.Builder.newInstance();
    new VrpXMLReader(builder, null).read(inFileName);
    VehicleRoutingProblem vrp = builder.build();
    Shipment s = (Shipment) vrp.getJobs().get("3");
    assertEquals(10.0,s.getPickupServiceTime(),0.01);
  }
 
  @Test
  public void whenReadingJobs_pickupTimeWindowOfShipment3IsReadCorrectly(){
    VehicleRoutingProblem.Builder builder = VehicleRoutingProblem.Builder.newInstance();
    new VrpXMLReader(builder, null).read(inFileName);
    VehicleRoutingProblem vrp = builder.build();
    Shipment s = (Shipment) vrp.getJobs().get("3");
    assertEquals(1000.0,s.getPickupTimeWindow().getStart(),0.01);
    assertEquals(4000.0,s.getPickupTimeWindow().getEnd(),0.01);
  }
 
  @Test
  public void whenReadingJobs_deliveryTimeWindowOfShipment3IsReadCorrectly(){
    VehicleRoutingProblem.Builder builder = VehicleRoutingProblem.Builder.newInstance();
    new VrpXMLReader(builder, null).read(inFileName);
    VehicleRoutingProblem vrp = builder.build();
    Shipment s = (Shipment) vrp.getJobs().get("3");
    assertEquals(6000.0,s.getDeliveryTimeWindow().getStart(),0.01);
    assertEquals(10000.0,s.getDeliveryTimeWindow().getEnd(),0.01);
  }
 
  @Test
  public void whenReadingJobs_deliveryServiceTimeOfShipment3IsReadCorrectly(){
    VehicleRoutingProblem.Builder builder = VehicleRoutingProblem.Builder.newInstance();
    new VrpXMLReader(builder, null).read(inFileName);
    VehicleRoutingProblem vrp = builder.build();
    Shipment s = (Shipment) vrp.getJobs().get("3");
    assertEquals(100.0,s.getDeliveryServiceTime(),0.01);
  }
 
  @Test
  public void whenReadingJobs_deliveryCoordShipment3IsReadCorrectly(){
    VehicleRoutingProblem.Builder builder = VehicleRoutingProblem.Builder.newInstance();
    new VrpXMLReader(builder, null).read(inFileName);
    VehicleRoutingProblem vrp = builder.build();
    Shipment s = (Shipment) vrp.getJobs().get("3");
    assertEquals(10.0,s.getDeliveryCoord().getX(),0.01);
    assertEquals(0.0,s.getDeliveryCoord().getY(),0.01);
  }
 
  @Test
  public void whenReadingJobs_pickupCoordShipment3IsReadCorrectly(){
    VehicleRoutingProblem.Builder builder = VehicleRoutingProblem.Builder.newInstance();
    new VrpXMLReader(builder, null).read(inFileName);
    VehicleRoutingProblem vrp = builder.build();
    Shipment s = (Shipment) vrp.getJobs().get("3");
    assertEquals(10.0,s.getPickupCoord().getX(),0.01);
    assertEquals(10.0,s.getPickupCoord().getY(),0.01);
  }
 
  @Test
  public void whenReadingJobs_deliveryIdShipment3IsReadCorrectly(){
    VehicleRoutingProblem.Builder builder = VehicleRoutingProblem.Builder.newInstance();
    new VrpXMLReader(builder, null).read(inFileName);
    VehicleRoutingProblem vrp = builder.build();
    Shipment s = (Shipment) vrp.getJobs().get("3");
    assertEquals("i(9,9)",s.getDeliveryLocationId());
  }
 
  @Test
  public void whenReadingJobs_pickupIdShipment3IsReadCorrectly(){
    VehicleRoutingProblem.Builder builder = VehicleRoutingProblem.Builder.newInstance();
    new VrpXMLReader(builder, null).read(inFileName);
    VehicleRoutingProblem vrp = builder.build();
    Shipment s = (Shipment) vrp.getJobs().get("3");
    assertEquals("i(3,9)",s.getPickupLocationId());
  }
 
  @Test
  public void whenReadingJobs_pickupLocationIdShipment4IsReadCorrectly(){
    VehicleRoutingProblem.Builder builder = VehicleRoutingProblem.Builder.newInstance();
    new VrpXMLReader(builder, null).read(inFileName);
    VehicleRoutingProblem vrp = builder.build();
    Shipment s = (Shipment) vrp.getJobs().get("4");
    assertEquals("[x=10.0][y=10.0]",s.getPickupLocationId());
  }
 
  @Test
  public void whenReadingJobs_deliveryLocationIdShipment4IsReadCorrectly(){
    VehicleRoutingProblem.Builder builder = VehicleRoutingProblem.Builder.newInstance();
    new VrpXMLReader(builder, null).read(inFileName);
    VehicleRoutingProblem vrp = builder.build();
    Shipment s = (Shipment) vrp.getJobs().get("4");
    assertEquals("[x=10.0][y=0.0]",s.getDeliveryLocationId());
  }
 
  @Test
  public void whenReadingJobs_pickupServiceTimeOfShipment4IsReadCorrectly(){
    VehicleRoutingProblem.Builder builder = VehicleRoutingProblem.Builder.newInstance();
    new VrpXMLReader(builder, null).read(inFileName);
    VehicleRoutingProblem vrp = builder.build();
    Shipment s = (Shipment) vrp.getJobs().get("4");
    assertEquals(0.0,s.getPickupServiceTime(),0.01);
  }
 
  @Test
  public void whenReadingJobs_deliveryServiceTimeOfShipment4IsReadCorrectly(){
    VehicleRoutingProblem.Builder builder = VehicleRoutingProblem.Builder.newInstance();
    new VrpXMLReader(builder, null).read(inFileName);
    VehicleRoutingProblem vrp = builder.build();
    Shipment s = (Shipment) vrp.getJobs().get("4");
    assertEquals(100.0,s.getDeliveryServiceTime(),0.01);
  }
 
  @Test
  public void whenReadingFile_v5AndItsTypeHasTheCorrectCapacityDimensionValues(){
    VehicleRoutingProblem.Builder builder = VehicleRoutingProblem.Builder.newInstance();
    new VrpXMLReader(builder, null).read(inFileName);
    VehicleRoutingProblem vrp = builder.build();
    Vehicle v = getVehicle("v5",vrp.getVehicles());
    assertEquals(100, v.getType().getCapacityDimensions().get(0));
    assertEquals(1000, v.getType().getCapacityDimensions().get(1));
    assertEquals(10000, v.getType().getCapacityDimensions().get(2));
    assertEquals(0, v.getType().getCapacityDimensions().get(3));
    assertEquals(0, v.getType().getCapacityDimensions().get(5));
    assertEquals(100000, v.getType().getCapacityDimensions().get(10));   
  }
 
  @Test
  public void whenReadingInitialRouteWithShipment4_thisShipmentShouldNotAppearInJobMap(){ //since it is not part of the problem anymore
    VehicleRoutingProblem.Builder builder = VehicleRoutingProblem.Builder.newInstance();
    new VrpXMLReader(builder).read("src/test/resources/finiteVrpWithInitialSolutionForReaderTest.xml");
    VehicleRoutingProblem vrp = builder.build();
    assertFalse(vrp.getJobs().containsKey("4"));
  }
 
  @Test
  public void whenReadingInitialRouteWithDepTime10_departureTimeOfRouteShouldBeReadCorrectly(){
    VehicleRoutingProblem.Builder builder = VehicleRoutingProblem.Builder.newInstance();
    new VrpXMLReader(builder).read("src/test/resources/finiteVrpWithInitialSolutionForReaderTest.xml");
    VehicleRoutingProblem vrp = builder.build();
    assertEquals(10.,vrp.getInitialVehicleRoutes().iterator().next().getDepartureTime(),0.01);
  }
 
  @Test
  public void whenReadingInitialRoute_nuInitialRoutesShouldBeCorrect(){
    VehicleRoutingProblem.Builder builder = VehicleRoutingProblem.Builder.newInstance();
    new VrpXMLReader(builder, null).read("src/test/resources/finiteVrpWithInitialSolutionForReaderTest.xml");
    VehicleRoutingProblem vrp = builder.build();
    assertEquals(1,vrp.getInitialVehicleRoutes().size());
  }
 
  @Test
  public void whenReadingInitialRoute_nuActivitiesShouldBeCorrect(){
    VehicleRoutingProblem.Builder builder = VehicleRoutingProblem.Builder.newInstance();
    new VrpXMLReader(builder, null).read("src/test/resources/finiteVrpWithInitialSolutionForReaderTest.xml");
    VehicleRoutingProblem vrp = builder.build();
    assertEquals(2,vrp.getInitialVehicleRoutes().iterator().next().getActivities().size());
  }

    @Test
    public void testRead_ifReaderIsCalled_itReadsSuccessfullyV2(){
        VehicleRoutingProblem.Builder vrpBuilder = VehicleRoutingProblem.Builder.newInstance();
        ArrayList<VehicleRoutingProblemSolution> solutions = new ArrayList<VehicleRoutingProblemSolution>();
        new VrpXMLReader(vrpBuilder, solutions).read("src/test/resources/finiteVrpWithShipmentsAndSolution.xml");
        VehicleRoutingProblem vrp = vrpBuilder.build();
        assertEquals(4,vrp.getJobs().size());
        assertEquals(1,solutions.size());

        assertEquals(1,solutions.get(0).getRoutes().size());
        List<TourActivity> activities = solutions.get(0).getRoutes().iterator().next().getTourActivities().getActivities();
        assertEquals(4,activities.size());
        assertTrue(activities.get(0) instanceof PickupService);
        assertTrue(activities.get(1) instanceof PickupService);
        assertTrue(activities.get(2) instanceof PickupShipment);
        assertTrue(activities.get(3) instanceof DeliverShipment);
    }

    @Test
    public void testRead_ifReaderIsCalled_itReadsSuccessfully(){
        new VrpXMLReader(VehicleRoutingProblem.Builder.newInstance(), new ArrayList<VehicleRoutingProblemSolution>()).read("src/test/resources/lui-shen-solution.xml");
        assertTrue(true);
    }


    @Test
    public void unassignedJobShouldBeRead(){
        VehicleRoutingProblem.Builder vrpBuilder = VehicleRoutingProblem.Builder.newInstance();
        ArrayList<VehicleRoutingProblemSolution> solutions = new ArrayList<VehicleRoutingProblemSolution>();
        new VrpXMLReader(vrpBuilder, solutions).read("src/test/resources/finiteVrpWithShipmentsAndSolution.xml");

        VehicleRoutingProblemSolution solution = Solutions.bestOf(solutions);
        assertEquals(1,solution.getUnassignedJobs().size());
        assertEquals("4",solution.getUnassignedJobs().iterator().next().getId());
    }

//    @Test
//    public void solutionListShouldBeEmpty(){
//        VehicleRoutingProblem.Builder vrpBuilder = VehicleRoutingProblem.Builder.newInstance();
//        ArrayList<VehicleRoutingProblemSolution> solutions = new ArrayList<VehicleRoutingProblemSolution>();
//        new VrpXMLReader(vrpBuilder, solutions).read("src/test/resources/finiteVrpforReaderTest.xml");
//        assertTrue(solutions.isEmpty());
//    }
}
TOP

Related Classes of jsprit.core.problem.io.VrpXMLReaderTest

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.