19066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project/* 29066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Copyright (C) 2006 The Android Open Source Project 39066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * 49066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Licensed under the Apache License, Version 2.0 (the "License"); 59066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * you may not use this file except in compliance with the License. 69066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * You may obtain a copy of the License at 79066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * 89066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * http://www.apache.org/licenses/LICENSE-2.0 99066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * 109066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Unless required by applicable law or agreed to in writing, software 119066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * distributed under the License is distributed on an "AS IS" BASIS, 129066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 139066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * See the License for the specific language governing permissions and 149066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * limitations under the License. 159066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 169066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 171a44d5dcabc18cd5ef111f732ccff91683a1a093Neal Nguyenpackage android.location; 189066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 199066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectimport android.content.Context; 209066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectimport android.location.Criteria; 219066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectimport android.location.Location; 229066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectimport android.location.LocationManager; 239066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectimport android.location.LocationProvider; 249066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectimport android.test.AndroidTestCase; 259066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectimport android.test.suitebuilder.annotation.Suppress; 269066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectimport android.util.Log; 279066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 289066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project@Suppress 299066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectpublic class LocationManagerTest extends AndroidTestCase { 309066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project private static final String LOG_TAG = "LocationManagerTest"; 319066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 329066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project private LocationManager manager; 339066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 349066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project @Override 359066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public void setUp() throws Exception { 369066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project super.setUp(); 379066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project manager = (LocationManager) mContext.getSystemService(Context.LOCATION_SERVICE); 389066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project assertNotNull(manager); 399066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 409066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 419066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public void testGetBogusProvider() { 429066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project LocationProvider p = manager.getProvider("bogus"); 439066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project assertNull(p); 449066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 459066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 469066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public void testGetNetworkProvider() { 479066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project LocationProvider p = manager.getProvider("network"); 489066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project assertNotNull(p); 499066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 509066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 519066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public void testGetGpsProvider() { 529066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project LocationProvider p = manager.getProvider("gps"); 539066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project assertNotNull(p); 549066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 559066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 569066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public void testGetBestProviderEmptyCriteria() { 579066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project String p = manager.getBestProvider(new Criteria(), true); 589066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project assertNotNull(p); 599066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 609066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 619066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public void testGetBestProviderPowerCriteria() { 629066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project Criteria c = new Criteria(); 639066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project c.setPowerRequirement(Criteria.POWER_HIGH); 649066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project String p = manager.getBestProvider(c, true); 659066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project assertNotNull(p); 669066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 679066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project c.setPowerRequirement(Criteria.POWER_MEDIUM); 689066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project p = manager.getBestProvider(c, true); 699066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project assertNotNull(p); 709066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 719066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project c.setPowerRequirement(Criteria.POWER_LOW); 729066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project p = manager.getBestProvider(c, true); 739066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project assertNotNull(p); 749066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 759066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project c.setPowerRequirement(Criteria.NO_REQUIREMENT); 769066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project p = manager.getBestProvider(c, true); 779066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project assertNotNull(p); 789066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 799066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 809066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public void testGpsTracklog() { 819066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project LocationProvider p = manager.getProvider("gps"); 829066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project assertNotNull(p); 839066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 849066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project // TODO: test requestUpdates method 859066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 869066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 879066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public void testLocationConversions() { 889066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project String loc1 = Location.convert(-80.075, Location.FORMAT_DEGREES); 899066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project Log.i(LOG_TAG, "Input = " + (-80.075) + ", output = " + loc1); 909066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project assertEquals("-80.075", loc1); 919066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 929066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project String loc1b = Location.convert(-80.0, Location.FORMAT_DEGREES); 939066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project Log.i(LOG_TAG, "Input = " + (-80.0) + ", output = " + loc1b); 949066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project assertEquals("-80", loc1b); 959066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 969066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project String loc2 = Location.convert(-80.085, Location.FORMAT_DEGREES); 979066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project Log.i(LOG_TAG, "Input = " + (-80.085) + ", output = " + loc2); 989066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project assertEquals("-80.085", loc2); 999066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 1009066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project String loc3 = Location.convert(-80.085, Location.FORMAT_MINUTES); 1019066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project Log.i(LOG_TAG, "Input = " + (-80.085) + ", output = " + loc3); 1029066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project assertEquals("-80:5.1", loc3); 1039066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 1049066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project String loc4 = Location.convert(-80.085, Location.FORMAT_SECONDS); 1059066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project Log.i(LOG_TAG, "Input = " + (-80.085) + ", output = " + loc4); 1069066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project assertEquals("-80:5:6", loc4); 1079066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 1089066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project String loc5 = Location.convert(5 + 0.5f / 60.0f, Location.FORMAT_MINUTES); 1099066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project Log.i(LOG_TAG, "Input = 5:0.5, output = " + loc5); 1109066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project int index = loc5.indexOf(':'); 1119066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project String loc5a = loc5.substring(0, index); 1129066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project Log.i(LOG_TAG, "loc5a = " + loc5a); 1139066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project assertTrue(loc5a.equals("5")); 1149066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project String loc5b = loc5.substring(index + 1); 1159066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project Log.i(LOG_TAG, "loc5b = " + loc5b); 1169066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project double minutes = Double.parseDouble(loc5b); 1179066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project Log.i(LOG_TAG, "minutes = " + minutes); 1189066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project assertTrue(Math.abs(minutes - 0.5) < 0.0001); 1199066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 1209066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project String loc6 = Location.convert(0.1, Location.FORMAT_DEGREES); 1219066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project Log.i(LOG_TAG, "loc6 = " + loc6); 1229066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project assertEquals(loc6, "0.1"); 1239066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 1249066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project String loc7 = Location.convert(0.1, Location.FORMAT_MINUTES); 1259066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project Log.i(LOG_TAG, "loc7 = " + loc7); 1269066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project assertEquals(loc7, "0:6"); 1279066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 1289066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project String loc8 = Location.convert(0.1, Location.FORMAT_SECONDS); 1299066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project Log.i(LOG_TAG, "loc8 = " + loc8); 1309066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project assertEquals(loc8, "0:6:0"); 1319066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 1329066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project} 133