/**
*
*/
package vroom.optimization.online.jmsa.vrp.vrpsd;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertFalse;
import static org.junit.Assert.assertTrue;
import static org.junit.Assert.fail;
import org.junit.Before;
import org.junit.Test;
import umontreal.iro.lecuyer.probdist.NormalDist;
import vroom.common.modeling.dataModel.Node;
import vroom.common.modeling.dataModel.NodeVisit;
import vroom.common.modeling.dataModel.Request;
import vroom.common.modeling.dataModel.attributes.PointLocation;
import vroom.common.modeling.dataModel.attributes.RequestAttributeKey;
import vroom.common.modeling.dataModel.attributes.StochasticDemand;
/**
* <code>VRPSDActualRequestTest</code> is a test case for
* {@link VRPSDActualRequest}
* <p>
* Creation date: May 5, 2010 - 10:37:37 AM
*
* @author Victor Pillac, <a href="http://uniandes.edu.co">Universidad de Los
* Andes</a>-<a href="http://copa.uniandes.edu.co">Copa</a> <a
* href="http://www.emn.fr">Ecole des Mines de Nantes</a>-<a
* href="http://www.irccyn.ec-nantes.fr/irccyn/d/en/equipes/Slp">SLP</a>
* @version 1.0
*/
public class VRPSDActualRequestTest {
VRPSDActualRequest vrpReq;
double mu = 6, sigma = 2, dem = 8;
@Before
public void setUp() throws Exception {
Request req = new Request(0, new Node(0, new PointLocation(0, 0)));
req.setAttribute(RequestAttributeKey.DEMAND, new StochasticDemand(
new NormalDist(mu, sigma)));
vrpReq = new VRPSDActualRequest(NodeVisit.createNodeVisits(req)[0]);
System.out.println("Generated request:");
System.out.println(vrpReq);
}
/**
* Test method for
* {@link vroom.optimization.online.jmsa.vrp.vrpsd.VRPSDActualRequest#setActualDemands(double[])}
* .
*/
@Test
public void testSetActualDemand() {
System.out.println("-------------------------------");
System.out.println(" testSetActualDemand");
System.out.println("-------------------------------");
try {
vrpReq.setActualDemands(dem);
} catch (Exception e) {
fail(e.getMessage());
}
try {
vrpReq.setActualDemands(dem, 1);
fail("Setting more demands than the number of product should raise an exception");
} catch (IllegalArgumentException ia) {
// Ok
} catch (Exception e) {
fail(e.getMessage());
}
}
/**
* Test method for
* {@link vroom.optimization.online.jmsa.vrp.vrpsd.VRPSDActualRequest#getDemand(int)}
* .
*/
@Test
public void testGetDemandInt() {
System.out.println("-------------------------------");
System.out.println(" testGetDemandInt");
System.out.println("-------------------------------");
assertEquals(mu, vrpReq.getDemand(), 0.00001);
assertEquals(mu, vrpReq.getDemand(0), 0.00001);
System.out.println("Setting the actual demand to " + dem);
vrpReq.setActualDemands(dem);
System.out.println("Resulting request: \n" + vrpReq);
assertEquals(dem, vrpReq.getDemand(), 0.00001);
assertEquals(dem, vrpReq.getDemand(0), 0.00001);
}
/**
* Test method for
* {@link vroom.optimization.online.jmsa.vrp.vrpsd.VRPSDActualRequest#isDemandKnown(int)}
* .
*/
@Test
public void testIsDemandKnown() {
System.out.println("-------------------------------");
System.out.println(" testIsDemandKnown");
System.out.println("-------------------------------");
assertFalse(vrpReq.isDemandKnown(0));
System.out.println("Setting the actual demand to " + dem);
vrpReq.setActualDemands(dem);
System.out.println("Resulting request: \n" + vrpReq);
assertTrue(vrpReq.isDemandKnown(0));
}
}