Package jsprit.core.problem.solution.route.activity

Source Code of jsprit.core.problem.solution.route.activity.TestTourActivities

/*******************************************************************************
* 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.solution.route.activity;

import jsprit.core.problem.job.Service;
import jsprit.core.problem.job.Shipment;
import org.junit.Before;
import org.junit.Test;

import static org.junit.Assert.*;



public class TestTourActivities {
 
  private Service service;
  private ServiceActivity act;
  private TourActivities tour;

  @Before
  public void doBefore(){
    service = Service.Builder.newInstance("yo").addSizeDimension(0, 10).setLocationId("loc").build();
    act = ServiceActivity.newInstance(service);
    tour = new TourActivities();
  }
 
  @Test
  public void whenAddingServiceAct_serviceActIsAdded(){
    assertFalse(tour.servesJob(service));
    tour.addActivity(act);
    assertTrue(tour.servesJob(service));
  }
 
  @Test(expected=IllegalStateException.class)
  public void whenAddingServiceActTwice_anExceptionIsThrown(){
    assertFalse(tour.servesJob(service));
    tour.addActivity(act);
    tour.addActivity(act);
  }
 
  @Test
  public void whenAddingServiceAndRemovingItImmediately_tourShouldNotServeServiceAnymore(){
    assertFalse(tour.servesJob(service));
    tour.addActivity(act);
    assertTrue(tour.servesJob(service));
    tour.removeJob(service);
    assertFalse(tour.servesJob(service));
  }
 
  @Test
  public void whenAddingAServiceAndThenRemovingTheServiceAgain_tourShouldNotServeItAnymore(){
    assertEquals(0, tour.getActivities().size());
    tour.addActivity(act);
    assertEquals(1, tour.getActivities().size());
    Service anotherServiceInstance = Service.Builder.newInstance("yo").addSizeDimension(0, 10).setLocationId("loc").build();
    assertTrue(service.equals(anotherServiceInstance));
    boolean removed = tour.removeJob(anotherServiceInstance);
    assertTrue(removed);
    assertEquals(0, tour.getActivities().size());
  }
 
  @Test
  public void whenAddingAShipmentActivity_tourShouldServeShipment(){
    Shipment s = Shipment.Builder.newInstance("s").addSizeDimension(0, 1).setDeliveryLocationId("delLoc").setPickupLocationId("pickLoc").build();
    TourShipmentActivityFactory fac = new DefaultShipmentActivityFactory();
    TourActivity pickupShipment = fac.createPickup(s);
    TourActivity deliverShipment = fac.createDelivery(s);
    tour.addActivity(pickupShipment);
    tour.addActivity(deliverShipment);
    assertTrue(tour.servesJob(s));
    assertEquals(2,tour.getActivities().size());
  }
 
 
 
  @Test
  public void whenRemovingShipment_tourShouldNotServiceItAnymore(){
    Shipment s = Shipment.Builder.newInstance("s").addSizeDimension(0, 1).setDeliveryLocationId("delLoc").setPickupLocationId("pickLoc").build();
    TourShipmentActivityFactory fac = new DefaultShipmentActivityFactory();
    TourActivity pickupShipment = fac.createPickup(s);
    TourActivity deliverShipment = fac.createDelivery(s);
    tour.addActivity(pickupShipment);
    tour.addActivity(deliverShipment);
   
    tour.removeJob(s);
    assertFalse(tour.servesJob(s));
  }

 
  @Test
  public void whenRemovingShipment_theirCorrespondingActivitiesShouldBeRemoved(){
    Shipment s = Shipment.Builder.newInstance("s").addSizeDimension(0, 1).setDeliveryLocationId("delLoc").setPickupLocationId("pickLoc").build();
    TourShipmentActivityFactory fac = new DefaultShipmentActivityFactory();
    TourActivity pickupShipment = fac.createPickup(s);
    TourActivity deliverShipment = fac.createDelivery(s);
    tour.addActivity(pickupShipment);
    tour.addActivity(deliverShipment);

    assertEquals(2, tour.getActivities().size());
    tour.removeJob(s);
    assertEquals(0, tour.getActivities().size());
  }

    @Test
    public void removingActivityShouldWork(){
        tour.addActivity(act);
        assertTrue(tour.servesJob(service));
        assertTrue(tour.hasActivity(act));

        tour.removeActivity(act);

        assertTrue(tour.isEmpty());
        assertFalse(tour.hasActivity(act));
        assertFalse(tour.servesJob(service));
        assertEquals(0,tour.jobSize());
    }

    @Test
    public void copyingSeqShouldWork(){
        tour.addActivity(act);

        assertTrue(tour.servesJob(service));
        assertTrue(tour.hasActivity(act));

        TourActivities acts = TourActivities.copyOf(tour);

        assertTrue(acts.servesJob(service));
        assertTrue(acts.hasActivity(act));
    }

    @Test
    public void removingShipmentActivityShouldWork(){
        Shipment s = Shipment.Builder.newInstance("s").addSizeDimension(0, 1).setDeliveryLocationId("delLoc").setPickupLocationId("pickLoc").build();
        TourShipmentActivityFactory fac = new DefaultShipmentActivityFactory();
        TourActivity pickupShipment = fac.createPickup(s);
        TourActivity deliverShipment = fac.createDelivery(s);
        tour.addActivity(pickupShipment);
        tour.addActivity(deliverShipment);

        assertEquals(1,tour.jobSize());
        assertEquals(2,tour.getActivities().size());
        assertTrue(tour.getActivities().contains(pickupShipment));
        assertTrue(tour.hasActivity(pickupShipment));
        assertTrue(tour.hasActivity(deliverShipment));

        tour.removeActivity(pickupShipment);

        assertEquals(1,tour.jobSize());
        assertEquals(1, tour.getActivities().size());
        assertTrue(tour.hasActivity(deliverShipment));
        assertFalse(tour.hasActivity(pickupShipment));
        assertFalse(tour.getActivities().contains(pickupShipment));

    }

    @Test
    public void whenCopyingShipmentActivitySeq_jobSizeShouldBeCorrect(){
        Shipment s = Shipment.Builder.newInstance("s").addSizeDimension(0, 1).setDeliveryLocationId("delLoc").setPickupLocationId("pickLoc").build();
        TourShipmentActivityFactory fac = new DefaultShipmentActivityFactory();
        TourActivity pickupShipment = fac.createPickup(s);
        TourActivity deliverShipment = fac.createDelivery(s);
        tour.addActivity(pickupShipment);
        tour.addActivity(deliverShipment);

        assertEquals(1,tour.jobSize());
        assertEquals(2,tour.getActivities().size());
        assertTrue(tour.getActivities().contains(pickupShipment));
        assertTrue(tour.hasActivity(pickupShipment));
        assertTrue(tour.hasActivity(deliverShipment));

        TourActivities copiedTour = TourActivities.copyOf(tour);

        assertEquals(1,copiedTour.jobSize());
    }

    @Test
    public void whenCopyingShipmentActivitySeq_noActivitiesShouldBeCorrect(){
        Shipment s = Shipment.Builder.newInstance("s").addSizeDimension(0, 1).setDeliveryLocationId("delLoc").setPickupLocationId("pickLoc").build();
        TourShipmentActivityFactory fac = new DefaultShipmentActivityFactory();
        TourActivity pickupShipment = fac.createPickup(s);
        TourActivity deliverShipment = fac.createDelivery(s);
        tour.addActivity(pickupShipment);
        tour.addActivity(deliverShipment);

        assertEquals(1,tour.jobSize());
        assertEquals(2,tour.getActivities().size());
        assertTrue(tour.getActivities().contains(pickupShipment));
        assertTrue(tour.hasActivity(pickupShipment));
        assertTrue(tour.hasActivity(deliverShipment));

        TourActivities copiedTour = TourActivities.copyOf(tour);

        assertEquals(2,copiedTour.getActivities().size());
    }

    @Test
    public void whenCopyingShipmentActivitySeq_itShouldContaintPickupAct(){
        Shipment s = Shipment.Builder.newInstance("s").addSizeDimension(0, 1).setDeliveryLocationId("delLoc").setPickupLocationId("pickLoc").build();
        TourShipmentActivityFactory fac = new DefaultShipmentActivityFactory();
        TourActivity pickupShipment = fac.createPickup(s);
        TourActivity deliverShipment = fac.createDelivery(s);
        tour.addActivity(pickupShipment);
        tour.addActivity(deliverShipment);

        assertEquals(1,tour.jobSize());
        assertEquals(2,tour.getActivities().size());
        assertTrue(tour.getActivities().contains(pickupShipment));
        assertTrue(tour.hasActivity(pickupShipment));
        assertTrue(tour.hasActivity(deliverShipment));

        TourActivities copiedTour = TourActivities.copyOf(tour);

        assertTrue(copiedTour.servesJob(s));
    }
 
}
TOP

Related Classes of jsprit.core.problem.solution.route.activity.TestTourActivities

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.