blob: 1e0258c2959715d933e7feb434df61e45232d28f [file] [log] [blame]
/*
* Copyright (C) 2011 The Android Open Source Project
*
* 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 com.android.emulator.smoketests.gps;
import android.content.Context;
import android.location.Location;
import android.location.LocationListener;
import android.location.LocationManager;
import android.os.Bundle;
import android.os.HandlerThread;
import android.test.AndroidTestCase;
import junit.framework.Assert;
/**
* GPS Location Test
*
* Test the GPS API by verifying the previously set location
*/
public class GpsLocationTest extends AndroidTestCase implements LocationListener {
private LocationManager locationManager;
private Location mLocation;
/**
* Prior to running this test the GPS location must be set to the following
* longitude and latitude coordinates via the geo fix command
*/
private static final double LONGITUDE = -122.08345770835876;
private static final double LATITUDE = 37.41991859119417;
private static final int TIMEOUT = 5000;
@Override
protected void setUp() throws Exception {
locationManager = (LocationManager) getContext().
getSystemService(Context.LOCATION_SERVICE);
assertNotNull(locationManager);
}
/**
* verify that the last location equals to the location set
* via geo fix command
*/
public void testCurrentLocationGivenLocation(){
try{
synchronized ( this ){
HandlerThread handlerThread = new HandlerThread("testLocationUpdates");
handlerThread.start();
locationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER, 0, 0, this,
handlerThread.getLooper());
this.wait(TIMEOUT);
}
}catch ( InterruptedException ie){
ie.printStackTrace();
Assert.fail();
}
assertNotNull(mLocation);
assertEquals(new Float(LONGITUDE), new Float(mLocation.getLongitude()));
assertEquals(new Float(LATITUDE), new Float(mLocation.getLatitude()));
locationManager.removeUpdates(this);
}
public void onLocationChanged(Location location) {
synchronized ( this ){
mLocation=location;
this.notify();
}
}
public void onProviderDisabled(String arg0) {
}
public void onProviderEnabled(String arg0) {
}
public void onStatusChanged(String arg0, int arg1, Bundle arg2) {
}
}