package edu.usf.cutr.opentripplanner.android.tasks; import android.content.Context; import android.content.res.Resources; import android.test.ActivityTestCase; import android.text.format.DateFormat; import com.fasterxml.jackson.databind.ObjectMapper; import junit.framework.Assert; import org.opentripplanner.api.model.Leg; import org.opentripplanner.api.model.Place; import org.opentripplanner.api.model.TripPlan; import org.opentripplanner.api.model.WalkStep; import org.opentripplanner.api.ws.Request; import org.opentripplanner.api.model.Itinerary; import org.opentripplanner.api.ws.Response; import org.opentripplanner.routing.core.OptimizeType; import org.opentripplanner.routing.core.TraverseMode; import org.opentripplanner.routing.core.TraverseModeSet; import java.io.File; import java.io.InputStream; import java.io.UnsupportedEncodingException; import java.net.URLEncoder; import java.util.Calendar; import java.util.Date; import java.util.TimeZone; import edu.usf.cutr.opentripplanner.android.OTPApp; import edu.usf.cutr.opentripplanner.android.R; import edu.usf.cutr.opentripplanner.android.util.JacksonConfig; public class TripRequestTest extends ActivityTestCase { public void testGetErrorMessage() throws Exception { } //TODO make test case less exhaustive and run with all servers // public void testRequestPlan() throws Exception { // Context context = getInstrumentation().getTargetContext(); // Resources resources = context.getResources(); // InputStream inputStream = resources.openRawResource(R.raw.test_trip_response_corunha); // Response savedResponse = JacksonConfig.getObjectReaderInstance().readValue(inputStream); // String baseURL = "http://galadriel.dc.fi.udc.es:8080/otp"; // Request request = new Request(); // double startLatitude = 43.3527384041191, startLlongitude = -8.409261703491211; // double endLatitude = 43.33304453039103, endLongitude = -8.411107063293457; // boolean arriveBy = false; // TraverseModeSet modes = new TraverseModeSet(TraverseMode.RAIL, TraverseMode.BUS, TraverseMode.WALK); // OptimizeType optimization = OptimizeType.QUICK; // String startLocation = startLatitude + "," + startLlongitude; // String endLocation = endLatitude + "," + endLongitude; // // try { // request.setFrom(URLEncoder.encode(startLocation, OTPApp.URL_ENCODING)); // request.setTo(URLEncoder.encode(endLocation, OTPApp.URL_ENCODING)); // } catch (UnsupportedEncodingException e1) { // e1.printStackTrace(); // } // request.setOptimize(optimization); // request.setModes(modes); // Date requestTripDate; // Calendar calendar = Calendar.getInstance(); // calendar.set(2014, Calendar.SEPTEMBER, 4, 16, 49); // requestTripDate = calendar.getTime(); // request.setDateTime( // DateFormat.format(OTPApp.FORMAT_OTP_SERVER_DATE_QUERY, // requestTripDate.getTime()).toString(), // DateFormat // .format(OTPApp.FORMAT_OTP_SERVER_TIME_QUERY, requestTripDate.getTime()) // .toString()); // TripRequest tripRequest = new TripRequest(null, getActivity(), resources, null, null); // Response newResponse = tripRequest.requestPlan(request, OTPApp.FOLDER_STRUCTURE_PREFIX_NEW, baseURL); // TripPlan oldTripPlan = savedResponse.getPlan(); // TripPlan newTripPlan = newResponse.getPlan(); // ObjectMapper mapper = new ObjectMapper(); // File file = new File(context.getFilesDir(), "test_trip_request_corunha.json"); // mapper.writeValue(file, request); // if (newTripPlan != null && newTripPlan.getItinerary() != null){ // Assert.assertEquals(oldTripPlan.getItinerary().size(),newTripPlan.getItinerary().size()); // for (int i = 0; i < newTripPlan.getItinerary().size(); i++){ // Itinerary oldItinerary = oldTripPlan.getItinerary().get(i); // Itinerary newItinerary = newTripPlan.getItinerary().get(i); // Assert.assertEquals(newItinerary.legs.size(), oldItinerary.legs.size()); // for (int j = 0; j < newItinerary.legs.size(); j++){ // Leg oldLeg = oldItinerary.legs.get(j); // Leg newLeg = newItinerary.legs.get(j); // Assert.assertEquals(newLeg.from.getLat(), oldLeg.from.getLat()); // Assert.assertEquals(newLeg.from.getLon(), oldLeg.from.getLon()); // Assert.assertEquals(newLeg.to.getLat(), oldLeg.to.getLat()); // Assert.assertEquals(newLeg.to.getLon(), oldLeg.to.getLon()); // if (oldLeg.getSteps() != null && newLeg.getSteps() != null){ // Assert.assertEquals(newLeg.getSteps().size(), oldLeg.getSteps().size()); // for (int k = 0; k < newLeg.getSteps().size(); k++){ // WalkStep oldWalkStep = oldLeg.getSteps().get(k); // WalkStep newWalkStep = newLeg.getSteps().get(k); // Assert.assertEquals(oldWalkStep.getLat(),newWalkStep.getLat()); // Assert.assertEquals(oldWalkStep.getLon(),newWalkStep.getLon()); // } // } // else if (!(oldLeg.getSteps() == null && newLeg.getSteps() == null)){ // fail(); // } // if (oldLeg.getIntermediateStops() != null && newLeg.getIntermediateStops() != null){ // Assert.assertEquals(newLeg.getIntermediateStops().size(), oldLeg.getIntermediateStops().size()); // for (int k = 0; k < newLeg.getSteps().size(); k++){ // Place oldPlace = oldLeg.getIntermediateStops().get(k); // Place newPlace = newLeg.getIntermediateStops().get(k); // Assert.assertEquals(oldPlace.getLat(),newPlace.getLat()); // Assert.assertEquals(oldPlace.getLon(),newPlace.getLon()); // } // } // else if (!(oldLeg.getIntermediateStops() == null && newLeg.getIntermediateStops() == null)){ // fail(); // } // // } // } // } // else{ // fail("Empty trip plan or itineraries"); // } // } }