package org.croudtrip.closestpair;
import com.google.common.collect.Lists;
import org.croudtrip.api.account.User;
import org.croudtrip.api.directions.NavigationResult;
import org.croudtrip.api.directions.Route;
import org.croudtrip.api.directions.RouteLocation;
import org.croudtrip.logs.LogManager;
import org.junit.Assert;
import org.junit.Before;
import org.junit.Test;
import org.junit.runner.RunWith;
import java.util.List;
import mockit.Expectations;
import mockit.Mocked;
import mockit.integration.junit4.JMockit;
@RunWith(JMockit.class)
public class ClosestPairTest {
@Mocked Route pR;
@Mocked Route dR;
@Mocked LogManager logManager;
private ClosestPair closestPair;
private User p = new User.Builder().setId(0).build();
@Before()
public void setupClosestPair() {
closestPair = new ClosestPair(logManager);
}
@Test
public void simpleClosestPairTest() {
final List<RouteLocation> pickUpRoutePoints = Lists.newArrayList(
new RouteLocation( 0, 0 ),
new RouteLocation( 1, 1),
new RouteLocation( 5, 5)
);
final List<RouteLocation> dropRoutePoints = Lists.newArrayList(
new RouteLocation( 9, 9 ),
new RouteLocation( 6, 6),
new RouteLocation( 6, 8)
);
new Expectations(){
{
pR.getPolylineWaypointsForUser( p, null );
result = pickUpRoutePoints;
dR.getPolylineWaypointsForUser(p, null);
result = dropRoutePoints;
}
};
ClosestPairResult result = closestPair.findClosestPair(p, new NavigationResult(pR, null), new NavigationResult(dR, null));
Assert.assertNotNull(result);
Assert.assertNotNull( result.getDropLocation() );
Assert.assertNotNull( result.getPickupLocation() );
Assert.assertEquals( new RouteLocation(5,5), result.getPickupLocation() );
Assert.assertEquals( new RouteLocation(6,6), result.getDropLocation() );
}
}