/* * Copyright (C) 2015 University of South Florida (sjbarbeau@gmail.com) * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.onebusaway.android.io.test; import org.onebusaway.android.UriAssert; import org.onebusaway.android.app.Application; import org.onebusaway.android.io.elements.ObaRegion; import org.onebusaway.android.io.elements.ObaTripDetails; import org.onebusaway.android.io.request.ObaTripsForRouteRequest; import org.onebusaway.android.io.request.ObaTripsForRouteResponse; import org.onebusaway.android.mock.MockRegion; import java.util.HashMap; @SuppressWarnings("serial") public class TripsForRouteRequestTest extends ObaTestCase { protected final String TEST_ROUTE_ID = "Hillsborough Area Regional Transit_5"; public void testHARTTripsForRouteRequest() { // Test by setting API directly Application.get().setCustomApiUrl("api.tampa.onebusaway.org/api"); callHARTTripsForRouteRequest(); Application.get().setCustomApiUrl(null); // Test by setting region ObaRegion tampa = MockRegion.getTampa(getContext()); assertNotNull(tampa); Application.get().setCurrentRegion(tampa); callHARTTripsForRouteRequest(); Application.get().setCurrentRegion(null); } private void callHARTTripsForRouteRequest() { ObaTripsForRouteRequest.Builder builder = new ObaTripsForRouteRequest.Builder(getContext(), TEST_ROUTE_ID); ObaTripsForRouteRequest request = builder.build(); UriAssert.assertUriMatch( "http://api.tampa.onebusaway.org/api/api/where/trips-for-route/" + TEST_ROUTE_ID + ".json", new HashMap<String, String>() {{ put("key", "*"); put("version", "2"); }}, request ); } public void testHARTTripsForRouteResponse() throws Exception { // Test by setting region ObaRegion tampa = MockRegion.getTampa(getContext()); assertNotNull(tampa); Application.get().setCurrentRegion(tampa); // No trip status included ObaTripsForRouteResponse response = new ObaTripsForRouteRequest.Builder(getContext(), TEST_ROUTE_ID) .build() .call(); assertOK(response); ObaTripDetails[] trips = response.getTrips(); assertEquals("Hillsborough Area Regional Transit_98682", trips[0].getId()); assertNull(trips[0].getStatus()); // Include vehicles status response = new ObaTripsForRouteRequest.Builder(getContext(), TEST_ROUTE_ID) .setIncludeStatus(true) .build() .call(); assertOK(response); trips = response.getTrips(); assertEquals("Hillsborough Area Regional Transit_101446", trips[0].getId()); assertEquals(1444073087126L, trips[0].getStatus().getLastUpdateTime()); assertEquals("Hillsborough Area Regional Transit_2415", trips[0].getStatus().getVehicleId()); assertEquals("Hillsborough Area Regional Transit_4707", trips[0].getStatus().getNextStop()); assertEquals(420, trips[0].getStatus().getScheduleDeviation()); // Potentially interpolated position assertEquals(28.063130557136404, trips[0].getStatus().getPosition().getLatitude()); assertEquals(-82.43457, trips[0].getStatus().getPosition().getLongitude()); // Last known location assertEquals(28.065561294555664, trips[0].getStatus().getLastKnownLocation().getLatitude()); assertEquals(-82.4344711303711, trips[0].getStatus().getLastKnownLocation().getLongitude()); assertEquals(0, trips[0].getStatus().getLastLocationUpdateTime()); } public void testNewRequest() { // Test by setting API directly Application.get().setCustomApiUrl("api.tampa.onebusaway.org/api"); callNewRequest(); Application.get().setCustomApiUrl(null); // Test by setting region ObaRegion tampa = MockRegion.getTampa(getContext()); assertNotNull(tampa); Application.get().setCurrentRegion(tampa); callNewRequest(); Application.get().setCurrentRegion(null); } private void callNewRequest() { // This is just to make sure we copy and call newRequest() at least once ObaTripsForRouteRequest request = ObaTripsForRouteRequest .newRequest(getContext(), TEST_ROUTE_ID); UriAssert.assertUriMatch( "http://api.tampa.onebusaway.org/api/api/where/trips-for-route/" + TEST_ROUTE_ID + ".json", new HashMap<String, String>() {{ put("key", "*"); put("version", "2"); }}, request ); } }