diff -r 0fd27995241b -r 9ac0a0a7da70 javaextensions/location/tsrc/vipertest/src/GetLocationTest.java --- a/javaextensions/location/tsrc/vipertest/src/GetLocationTest.java Tue May 11 16:07:20 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,316 +0,0 @@ -/* -* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies). -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "Eclipse Public License v1.0" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: -* -*/ -import javax.microedition.location.*; - -class GetLocationTest extends ViperUnitTest -{ - private Location iLoc; - - GetLocationTest() - { - super("GetLocationTest"); - } - - protected void runTest() throws Throwable - { - testBadArguments(); - testGetLocation(); - testAltitudeData(); - testSpeedData(); - testAddressInfo(); - testGetLocationTimeout(); - testReset(); - testGetLatest(); - testGetLocationOutOfService(); - } - - void testBadArguments() throws Exception - { - setCurrentTest("testBadArguments()"); - providerSetUp(null); - assertTrue(iLP != null, "LocationProvider is null"); - - assertBad(0); - assertBad(-2); - assertBad(-12345); // Sanity check - assertBad(Integer.MIN_VALUE); - } - - void testGetLocation() throws Exception - { - setCurrentTest("testGetLocation()"); - providerSetUp(null); - assertTrue(iLP != null, "LocationProvider is null"); - simpleGetLocation(); - } - - void testAltitudeData() throws Exception - { - setCurrentTest("testAltitudeData()"); - - Criteria criteria = new Criteria(); - criteria.setAltitudeRequired(true); - criteria.setPreferredResponseTime(100); // 100 ms - - providerSetUp(criteria); - assertTrue(iLP != null, "LocationProvider is null"); - simpleGetLocation(); - - QualifiedCoordinates coords = iLoc.getQualifiedCoordinates(); - float altitude = coords.getAltitude(); - assertTrue(!Float.isNaN(altitude), "No altitude included"); - // echo("Altitude = " + altitude); - } - - void testSpeedData() throws Exception - { - setCurrentTest("testSpeedData()"); - - Criteria criteria = new Criteria(); - criteria.setPreferredResponseTime(100); // 100 ms - criteria.setSpeedAndCourseRequired(true); - - providerSetUp(criteria); - assertTrue(iLP != null, "LocationProvider is null"); - simpleGetLocation(); - - float speed = iLoc.getSpeed(); - assertTrue(!Float.isNaN(speed), "No speed included"); - float course = iLoc.getCourse(); - assertTrue(!Float.isNaN(course), "No course included"); - // echo("Speed = " + speed + ", Course = " + course); - } - - void testAddressInfo() throws Exception - { - setCurrentTest("testAddressInfo()"); - - Criteria criteria = new Criteria(); - criteria.setPreferredResponseTime(100); // 100 ms - criteria.setAddressInfoRequired(true); - - providerSetUp(criteria); - if (iLP != null) - { - assertTrue(iLP != null, "LocationProvider is null"); - simpleGetLocation(); - - AddressInfo addr = iLoc.getAddressInfo(); - if (addr != null) - { - boolean hasNonNullField = false; - for (int i = 1; i <= 17; ++i) - { - String field = addr.getField(i); - if (field != null) - { - hasNonNullField = true; - // echo("Field #" + i + ": " + field); - } - } - assertTrue(hasNonNullField, "All AddressInfo fields are null"); - } - } - } - - void testGetLocationTimeout() throws Exception - { - setCurrentTest("testGetLocationTimeout()"); - - Criteria criteria = new Criteria(); - criteria.setCostAllowed(false); // This will select the right provider - providerSetUp(criteria); - assertTrue(iLP != null, "LocationProvider is null"); - iLoc = null; - - try - { - int TIMEOUT = 1; // seconds - iLoc = iLP.getLocation(TIMEOUT); - assertTrue(false, "No timeout for getLocation"); - } - catch (LocationException le) - { - // Timed out correctly - } - - // Sanity check - test that normal request works ok - simpleGetLocation(); - - try - { - int TIMEOUT = 10; // seconds - long startTime = System.currentTimeMillis(); - iLoc = iLP.getLocation(TIMEOUT); - long duration = System.currentTimeMillis() - startTime; - assertTrue(duration <= TIMEOUT * 1000, "GetLocation took too long"); - checkLocationData(iLoc); - } - catch (LocationException le) - { - assertTrue(false, "Illegal timeout"); - } - } - - void testReset() throws Exception - { - setCurrentTest("testReset()"); - - Criteria criteria = new Criteria(); - criteria.setCostAllowed(false); // This will select the right provider - providerSetUp(criteria); - assertTrue(iLP != null, "LocationProvider is null"); - - LocThread t1 = new LocThread(iLP); - LocThread t2 = new LocThread(iLP); - - t1.start(); - t2.start(); - - try - { - // Sleep to let LocThreads get a chance to call getLocation - Thread.sleep(1000); - // Reset should cancel all getLocation calls - iLP.reset(); - t1.join(); - t2.join(); - } - finally - { - assertTrue(!t1.iGotPosition, "Thread1 got a position"); - assertTrue(!t2.iGotPosition, "Thread2 got a position"); - assertTrue(t1.iGotReset, "Thread1 was never reset"); - assertTrue(t2.iGotReset, "Thread2 was never reset"); - } - } - - void testGetLatest() - { - setCurrentTest("testGetLatest()"); - - iLP = null; - iLoc = null; - - // Get the last known location - iLoc = LocationProvider.getLastKnownLocation(); - } - - void testGetLocationOutOfService() throws Exception - { - setCurrentTest("testGetLocationOutOfService()"); - - Criteria criteria = new Criteria(); - criteria.setCostAllowed(false); // This will select the right provider - providerSetUp(criteria); - - assertTrue(iLP != null, "LocationProvider is null"); - - simpleGetLocation(); - - userMessage("Disable all PSYs"); - - // now we get the last known Location: - Location lastKnownLocation = LocationProvider.getLastKnownLocation(); - checkLocationData(lastKnownLocation); - - assertTrue(lastKnownLocation.getTimestamp() == iLoc.getTimestamp(), - "Not the last known location returned"); - - long start = System.currentTimeMillis(); - long end = 0; - try - { - iLoc = iLP.getLocation(-1); - assertTrue(false, "No exception thrown for getLocation"); - } - catch (LocationException le) - { - // Exception thrown correctly - end = System.currentTimeMillis(); - } - assertTrue(end - start < 500, "Expected LocationException immediately"); - - userMessage("Test passed. Enable PSYs again"); - } - - // ------------------------ Helper methods ----------------------- - - void simpleGetLocation() throws Exception - { - iLoc = null; - - try - { - iLoc = iLP.getLocation(-1); - checkLocationData(iLoc); - } - catch (LocationException le) - { - assertTrue(false, "Could not get location: " + le); - } - } - - void assertBad(int aBadParam) throws Exception - { - try - { - iLoc = iLP.getLocation(aBadParam); - assertTrue(false, "IllegalArgumentException was not thrown for: " - + aBadParam); - } - catch (IllegalArgumentException iae) - { - // Exception thrown correctly - } - } - - // ------------------------ Helper class ----------------------- - - private class LocThread extends Thread - { - private LocationProvider iLP; - - boolean iGotReset = false; - - boolean iGotPosition = false; - - LocThread(LocationProvider aLP) - { - iLP = aLP; - } - - public void run() - { - try - { - int TIMEOUT = 10; // seconds - Location l = iLP.getLocation(TIMEOUT); - iGotPosition = true; - } - catch (InterruptedException ie) - { - iGotReset = true; - } - catch (Exception e) - { - echo("Unexpected exception thrown: " + e); - } - } - } - -}