--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/lbs/lbsclient/src/ctlbsclientsteplastknownpos.cpp Thu Jan 21 12:53:44 2010 +0000
@@ -0,0 +1,728 @@
+// Copyright (c) 2006-2009 Nokia Corporation and/or its subsidiary(-ies).
+// All rights reserved.
+// This component and the accompanying materials are made available
+// under the terms of the License "Symbian Foundation License v1.0"
+// which accompanies this distribution, and is available
+// at the URL "http://www.symbianfoundation.org/legal/sfl-v10.html".
+//
+// Initial Contributors:
+// Nokia Corporation - initial contribution.
+//
+// Contributors:
+//
+// Description:
+// @file ctlbsclientstep_lastknownpos.cpp
+// This is the class implementation for the Last Known Position Tests
+//
+//
+
+#include "ctlbsclientsteplastknownpos.h"
+
+#include <lbs.h>
+#include "lbsadmin.h"
+#include "lbssatellite.h"
+#include "tlbsutils.h"
+#include "ctlbsasyncwaiter.h"
+
+/**
+ * Destructor
+ */
+CT_LbsClientStep_LastKnownPos::~CT_LbsClientStep_LastKnownPos()
+ {
+ }
+
+
+/**
+ * Constructor
+ */
+CT_LbsClientStep_LastKnownPos::CT_LbsClientStep_LastKnownPos(CT_LbsClientServer& aParent) : CT_LbsClientStep(aParent)
+ {
+ SetTestStepName(KLbsClientStep_LastKnownPos);
+ }
+
+
+/**
+Static Constructor
+*/
+CT_LbsClientStep_LastKnownPos* CT_LbsClientStep_LastKnownPos::New(CT_LbsClientServer& aParent)
+ {
+ return new CT_LbsClientStep_LastKnownPos(aParent);
+ // Note the lack of ELeave.
+ // This means that having insufficient memory will return NULL;
+ }
+
+
+void CT_LbsClientStep_LastKnownPos::SwitchOnselfLocateAPIL()
+ {
+ CLbsAdmin* adminApi = CLbsAdmin::NewL();
+ CleanupStack::PushL(adminApi);
+ adminApi->Set(KLbsSettingHomeSelfLocate, CLbsAdmin::ESelfLocateOn);
+ CleanupStack::PopAndDestroy(adminApi);
+ }
+
+
+/**
+ * @return - TVerdict code
+ * Override of base class pure virtual
+ * Our implementation only gets called if the base class doTestStepPreambleL() did
+ * not leave. That being the case, the current test result value will be EPass.
+ */
+TVerdict CT_LbsClientStep_LastKnownPos::doTestStepL()
+ {
+ // Generic test step used to test the LBS Client Notify position update API.
+ INFO_PRINTF1(_L(">>CT_LbsClientStep_LastKnownPos::doTestStepL()"));
+
+ if (TestStepResult() == EPass)
+ {
+ TInt err = KErrNone;
+
+ // Wait for server to cease to be - thus ensuring cache is empty
+ //User::After(10000000); //Not needed
+
+ // Carryout unique test actions.
+ TInt testCaseId;
+ if (GetIntFromConfig(ConfigSection(), KTestCaseId, testCaseId))
+ {
+ if(testCaseId == 2)
+ {
+ //The delay below is to make sure that there is no request to server for at least 200 seconds
+ //so that it will shutdown and clear cache.
+
+ User::After(3*1000*1000);
+ }
+
+ // Connect to self locate server.
+ User::LeaveIfError(iServer.Connect());
+ CleanupClosePushL(iServer);
+
+ switch (testCaseId)
+ {
+ // Test case LBS-LastKnownPos-0001
+ case 1:
+ // Test case LBS-LastKnownPos-0101
+ case 101:
+ {
+ T_LbsUtils utils;
+ // Open positioner.
+ User::LeaveIfError(iPositioner.Open(iServer));
+ CleanupClosePushL(iPositioner);
+ if(testCaseId==101)
+ {
+ // For this test an additional reference position will be returned.
+
+ // Setup netsim.
+ User::LeaveIfError(OpenNetSim());
+
+ // Request notify for the expected reference position.
+ TPositionInfo actualRefPosInfo;
+
+ err = DoNotifyUpdateL(actualRefPosInfo);
+ if (err)
+ {
+ INFO_PRINTF2(_L("Failed test, reference position request returned err %d."), err);
+ SetTestStepResult(EFail);
+ }
+
+ // Verify reference position.
+ TPositionInfo verifyRefPosInfo;
+
+ verifyRefPosInfo.SetPosition(iRefPos);
+ if (!utils.Compare_PosInfo(verifyRefPosInfo, actualRefPosInfo))
+ {
+ INFO_PRINTF1(_L("Failed test, reference position incorrect."));
+ SetTestStepResult(EFail);
+ }
+ }
+
+
+ TPosition pos; // original position
+ TTime timeStamp; // timestamp inside original received position
+
+ // Carry out a notify update to ensure last known cache is filled.
+ TPositionInfo notifyPosInfo;
+ User::LeaveIfError(DoNotifyUpdateL(notifyPosInfo));
+
+ // get the position data:
+ notifyPosInfo.GetPosition(pos);
+
+ timeStamp = pos.Time();
+ INFO_PRINTF1(_L("Original position timeStamp: "));
+ INFO_PRINTF4(_L("%d/%d/%d"), timeStamp.DateTime().Day() + 1, timeStamp.DateTime().Month() + 1, timeStamp.DateTime().Year());
+ INFO_PRINTF5(_L("at %d :%d :%d :%d"), timeStamp.DateTime().Hour(), timeStamp.DateTime().Minute(), timeStamp.DateTime().Second(), timeStamp.DateTime().Second());
+
+ // Create a posinfo and store in our shared array for later verification.
+ RPointerArray<TAny>& posInfoArr = iParent.iSharedData->iCurrentPosInfoArr;
+ TPositionInfo* posInfo = new(ELeave) TPositionInfo();
+
+ utils.ResetAndDestroy_PosInfoArr(posInfoArr); // Clear previous entries before new entry is appended.
+
+ posInfoArr.Append(posInfo);
+
+ // Get the last known position
+ err = DoLastKnownPosL(*posInfo);
+ if (KErrNone != err)
+ {
+ SetTestStepResult(EFail);
+ }
+ else
+ {
+ TTime timeStamp_cached;
+ posInfo->GetPosition(pos);
+ timeStamp_cached = pos.Time();
+
+ timeStamp = pos.Time();
+ INFO_PRINTF1(_L("Cached position timeStamp: "));
+ INFO_PRINTF4(_L("%d/%d/%d"), timeStamp_cached.DateTime().Day() + 1, timeStamp_cached.DateTime().Month() + 1, timeStamp_cached.DateTime().Year());
+ INFO_PRINTF5(_L("at %d :%d :%d :%d"), timeStamp_cached.DateTime().Hour(), timeStamp_cached.DateTime().Minute(), timeStamp_cached.DateTime().Second(), timeStamp_cached.DateTime().Second());
+
+ // verify that the timestamp matches the original one:
+ if(timeStamp_cached != timeStamp)
+ {
+ SetTestStepResult(EFail);
+ }
+
+ }
+ CleanupStack::PopAndDestroy(&iPositioner);
+ if (testCaseId == 101)
+ {
+ CloseNetSim();
+ }
+ break;
+ }
+
+ // NEGATIVE TEST
+ // Test case LBS-LastKnownPos-0002
+ case 2:
+ {
+ // Open positioner.
+ User::LeaveIfError(iPositioner.Open(iServer));
+ CleanupClosePushL(iPositioner);
+
+ // DONT carry out a notify update to ensure last known cache is filled.
+
+ // Create a posinfo to store position info from LastKnownPosition method.
+ TPositionInfo posInfo;
+
+ // Get the last known position
+ err = DoLastKnownPosL(posInfo);
+ if (KErrUnknown != err)
+ {
+ INFO_PRINTF2(_L("Failed with error %d when expecting error KErrUnknown, indicating no position in cache"), err);
+ SetTestStepResult(EFail);
+ }
+
+ // Wait for a time period and verify that location info is not published.
+ // 10seconds
+ User::After(10000000);
+
+ // Get the last known position
+ err = DoLastKnownPosL(posInfo);
+ if (KErrUnknown != err)
+ {
+ INFO_PRINTF2(_L("Failed with error %d when expecting error KErrUnknown, indicating no position in cache"), err);
+ SetTestStepResult(EFail);
+ }
+
+ CleanupStack::PopAndDestroy(&iPositioner);
+ break;
+ }
+
+
+ // NEGATIVE TEST
+ // Test case LBS-LastKnownPos-0004
+ case 4:
+ {
+ T_LbsUtils utils;
+ TPositionModuleId networkModuleId = utils.GetNetworkModuleIdL(iServer);
+ // Open positioner.
+ User::LeaveIfError(iPositioner.Open(iServer, networkModuleId));
+ CleanupClosePushL(iPositioner);
+
+ // Setup netsim.
+ User::LeaveIfError(OpenNetSim());
+
+ // Carry out a notify update to ensure last known cache is filled.
+ TPositionInfo actualRefPosInfo;
+
+ err = DoNotifyUpdateL(actualRefPosInfo);
+
+ if (err)
+ {
+ INFO_PRINTF2(_L("Failed test, reference position request returned err %d."), err);
+ SetTestStepResult(EFail);
+ }
+
+ // Verify reference position.
+ TPositionInfo verifyRefPosInfo;
+ verifyRefPosInfo.SetPosition(iRefPos);
+ if (!utils.Compare_PosInfo(verifyRefPosInfo, actualRefPosInfo))
+ {
+ INFO_PRINTF1(_L("Failed test, reference position incorrect."));
+ SetTestStepResult(EFail);
+ }
+
+ // ** Create a position info which is not supported by the network module **
+ TPositionSatelliteInfo positionSatelliteInfo;
+
+ // Get the last known position
+ err = DoLastKnownPosL(positionSatelliteInfo);
+ if (KErrArgument != err)
+ {
+ SetTestStepResult(EFail);
+ }
+
+ CleanupStack::PopAndDestroy(&iPositioner);
+ // Close netsim.
+ CloseNetSim();
+ break;
+ }
+
+ // Test case LBS-LastKnownPos-0006
+ case 6:
+ {
+ // Open positioner.
+ User::LeaveIfError(iPositioner.Open(iServer));
+ CleanupClosePushL(iPositioner);
+
+ CLbsAdmin* adminApi = CLbsAdmin::NewL();
+ CleanupStack::PushL(adminApi);
+
+ adminApi->Set(KLbsSettingHomeSelfLocate, CLbsAdmin::ESelfLocateOff);
+
+ TPositionInfo posInfo;
+
+ // Get the last known position
+ err = DoLastKnownPosL(posInfo);
+ if (KErrAccessDenied != err)
+ {
+ SetTestStepResult(EFail);
+ }
+
+ CleanupStack::PopAndDestroy(adminApi);
+ CleanupStack::PopAndDestroy(&iPositioner);
+
+ SwitchOnselfLocateAPIL();
+
+ break;
+ }
+
+ // Test case LBS-LastKnownPos-0007
+ case 7:
+ // Test case LBS-LastKnownPos-0102
+ case 102:
+ {
+ T_LbsUtils utils;
+ // Open positioner.
+ User::LeaveIfError(iPositioner.Open(iServer));
+ CleanupClosePushL(iPositioner);
+ if(testCaseId==102)
+ {
+ // For this test an additional reference position will be returned.
+
+ // Setup netsim.
+ User::LeaveIfError(OpenNetSim());
+
+ // Request notify for the expected reference position.
+ TPositionInfo actualRefPosInfo;
+
+ err = DoNotifyUpdateL(actualRefPosInfo);
+ if (err)
+ {
+ INFO_PRINTF2(_L("Failed test, reference position request returned err %d."), err);
+ SetTestStepResult(EFail);
+ }
+
+ // Verify reference position.
+ TPositionInfo verifyRefPosInfo;
+
+ verifyRefPosInfo.SetPosition(iRefPos);
+ if (!utils.Compare_PosInfo(verifyRefPosInfo, actualRefPosInfo))
+ {
+ INFO_PRINTF1(_L("Failed test, reference position incorrect."));
+ SetTestStepResult(EFail);
+ }
+ }
+
+ // Carry out a notify update to ensure last known cache is filled.
+ TPositionInfo notifyPosInfo;
+ TInt err = DoNotifyUpdateL(notifyPosInfo);
+ User::LeaveIfError(err);
+
+ // Create a posinfo and store in our shared array for later verification.
+ RPointerArray<TAny>& posInfoArr = iParent.iSharedData->iCurrentPosInfoArr;
+ TPositionInfo* posInfo = new(ELeave) TPositionInfo();
+
+
+ utils.ResetAndDestroy_PosInfoArr(posInfoArr); // Clear previous entries before new entry is appended.
+
+ posInfoArr.Append(posInfo);
+
+ // Get the last known position
+ CT_LbsAsyncWaiter* waiter = CT_LbsAsyncWaiter::NewL();
+ CleanupStack::PushL(waiter);
+
+ User::LeaveIfError(iPositioner.SetRequestor( CRequestor::ERequestorService,
+ CRequestor::EFormatApplication,
+ _L("Tom Tom")));
+
+ iPositioner.GetLastKnownPosition(*posInfo, waiter->iStatus);
+
+ TInt errCancel = iPositioner.CancelRequest(EPositionerGetLastKnownPosition);
+
+ waiter->StartAndWait();
+
+ TInt errLkp = waiter->Result();
+
+ CleanupStack::PopAndDestroy(waiter);
+
+ // Sync Cancel() call returns either KErrNone or KErrNotFound.
+ if ( errCancel != KErrNone && errCancel != KErrNotFound )
+ {
+ INFO_PRINTF1(_L("<FONT><B>Cancel must return KErrNone or KErrNotFound</B></FONT>"));
+ SetTestStepResult(EFail);
+ }
+ // If Cancel() returns KErrNone, then the original request may complete with KErrCancel.
+ if (errCancel != KErrNone && (errLkp != KErrCancel && errLkp != KErrNone ) )
+ {
+ INFO_PRINTF1(_L("<FONT><B>Cancel must return KErrCancel or KErrNone</B></FONT>"));
+ SetTestStepResult(EFail);
+ }
+
+
+ CleanupStack::PopAndDestroy(&iPositioner);
+ if (testCaseId == 102)
+ {
+ CloseNetSim();
+ }
+ break;
+ }
+
+ // Test case LBS-LastKnownPos-0008
+ case 8:
+ {
+ // Open positioner.
+ User::LeaveIfError(iPositioner.Open(iServer));
+ CleanupClosePushL(iPositioner);
+
+ // DONT get the last known position, but DO cancel
+ err = iPositioner.CancelRequest(EPositionerNotifyPositionUpdate);
+
+ if (KErrNotFound != err)
+ {
+ //Didnt cancel or complete successfully.
+ SetTestStepResult(EFail);
+ }
+
+ CleanupStack::PopAndDestroy(&iPositioner);
+
+ break;
+ }
+
+
+ // Test case LBS-LastKnownPos-0009
+ case 9:
+ {
+ //DONT open connection to Position Server
+
+ TPositionInfo posInfo;
+
+ // Get the last known position, THIS SHOULD PANIC WITH EPositionServerBadHandle
+ TRequestStatus status;
+ iPositioner.GetLastKnownPosition(posInfo, status);
+ err = iPositioner.CancelRequest(EPositionerNotifyPositionUpdate);
+
+ if (KErrNone == err)
+ {
+ //Completed Successfully.
+ SetTestStepResult(EFail);
+ }
+
+ CleanupStack::PopAndDestroy(&iPositioner);
+
+ SwitchOnselfLocateAPIL();
+
+ break;
+ }
+
+
+ // Test case LBS-LastKnownPos-0012
+ case 12:
+ {
+ // Open positioner.
+ User::LeaveIfError(iPositioner.Open(iServer));
+ CleanupClosePushL(iPositioner);
+
+ // Carry out a notify update to ensure last known cache is filled.
+ TPositionInfo notifyPosInfo;
+ User::LeaveIfError(DoNotifyUpdateL(notifyPosInfo));
+
+ TPositionInfo posInfo;
+
+ // Get the last known position while self Locate Server is busy
+ err = DoLastKnownPosL(posInfo);
+
+ if (KErrServerBusy != err)
+ {
+ // Completed successfully.
+ INFO_PRINTF1(_L("<FONT><B>**Test should pass if GetLastKnownPosition() fails with KErrServerBusy **</B></FONT>"));
+ SetTestStepResult(EFail);
+ }
+ CleanupStack::PopAndDestroy(&iPositioner);
+ break;
+ }
+
+
+ // Test case LBS-LastKnownPos-0014
+ case 14:
+ {
+ // Testcase placeholder
+ // Request multiples LKPs from different clients concurrently
+ SetTestStepResult(EFail);
+ break;
+ }
+
+
+ // Test case LBS-LastKnownPos-0015
+ case 15:
+ // Test case LBS-LastKnownPos-0103
+ case 103:
+ {
+ T_LbsUtils utils;
+ // Open positioner.
+ User::LeaveIfError(iPositioner.Open(iServer));
+ CleanupClosePushL(iPositioner);
+ if(testCaseId==103)
+ {
+ // For this test an additional reference position will be returned.
+
+ // Setup netsim.
+ User::LeaveIfError(OpenNetSim());
+
+ // Request notify for the expected reference position.
+ TPositionInfo actualRefPosInfo;
+
+ err = DoNotifyUpdateL(actualRefPosInfo);
+ if (err)
+ {
+ INFO_PRINTF2(_L("Failed test, reference position request returned err %d."), err);
+ SetTestStepResult(EFail);
+ }
+
+ // Verify reference position.
+ TPositionInfo verifyRefPosInfo;
+
+ verifyRefPosInfo.SetPosition(iRefPos);
+ if (!utils.Compare_PosInfo(verifyRefPosInfo, actualRefPosInfo))
+ {
+ INFO_PRINTF1(_L("Failed test, reference position incorrect."));
+ SetTestStepResult(EFail);
+ }
+ }
+
+ // Carry out a notify update to ensure last known cache is filled.
+ TPositionInfo notifyPosInfo;
+ TInt err = DoNotifyUpdateL(notifyPosInfo);
+ User::LeaveIfError(err);
+
+ // Create a posinfo and store in our shared array for later verification.
+ RPointerArray<TAny>& posInfoArr = iParent.iSharedData->iCurrentPosInfoArr;
+
+
+ utils.ResetAndDestroy_PosInfoArr(posInfoArr); // Clear previous entries before new entry is appended.
+
+ CT_LbsAsyncWaiter* waiter = CT_LbsAsyncWaiter::NewL();
+ CleanupStack::PushL(waiter);
+
+ TInt numpositions = iParent.iSharedData->iVerifyPosInfoArr.Count();
+ while(numpositions--)
+ {
+ RPositioner positioner;
+ // Open positioner.
+ User::LeaveIfError(positioner.Open(iServer));
+ CleanupClosePushL(positioner);
+
+ TPositionInfo* posInfo = new(ELeave) TPositionInfo();
+ posInfoArr.Append(posInfo);
+
+ // LastKnownPosition from multiple sub sessions
+
+ User::LeaveIfError(positioner.SetRequestor( CRequestor::ERequestorService,
+ CRequestor::EFormatApplication,
+ _L("Tom Tom")));
+
+ positioner.GetLastKnownPosition(*posInfo, waiter->iStatus);
+ waiter->StartAndWait();
+ TInt res = waiter->Result();
+
+ if(KErrNone != res)
+ {
+ //One of the LKPs failed, so test fails.
+ SetTestStepResult(EFail);
+ }
+ CleanupStack::PopAndDestroy(&positioner);
+ }
+
+ CleanupStack::PopAndDestroy(waiter);
+ CleanupStack::PopAndDestroy(&iPositioner);
+ if (testCaseId == 103)
+ {
+ CloseNetSim();
+ }
+ break;
+ }
+ // Test case LBS-LastKnownPos-0016
+ case 16:
+ // Test case LBS-LastKnownPos-0104
+ case 104:
+ {
+ T_LbsUtils utils;
+ // Open positioner.
+ User::LeaveIfError(iPositioner.Open(iServer));
+ CleanupClosePushL(iPositioner);
+ if(testCaseId==104)
+ {
+ // For this test an additional reference position will be returned.
+
+ // Setup netsim.
+ User::LeaveIfError(OpenNetSim());
+
+ // Request notify for the expected reference position.
+ TPositionInfo actualRefPosInfo;
+
+ err = DoNotifyUpdateL(actualRefPosInfo);
+ if (err)
+ {
+ INFO_PRINTF2(_L("Failed test, reference position request returned err %d."), err);
+ SetTestStepResult(EFail);
+ }
+
+ // Verify reference position.
+ TPositionInfo verifyRefPosInfo;
+
+ verifyRefPosInfo.SetPosition(iRefPos);
+ if (!utils.Compare_PosInfo(verifyRefPosInfo, actualRefPosInfo))
+ {
+ INFO_PRINTF1(_L("Failed test, reference position incorrect."));
+ SetTestStepResult(EFail);
+ }
+ }
+
+ // Carry out a notify update to ensure last known cache is filled.
+ TPositionInfo notifyPosInfo;
+ User::LeaveIfError(DoNotifyUpdateL(notifyPosInfo));
+
+ // Create a posinfo and store in our shared array for later verification.
+ RPointerArray<TAny>& posInfoArr = iParent.iSharedData->iCurrentPosInfoArr;
+
+
+ utils.ResetAndDestroy_PosInfoArr(posInfoArr); // Clear previous entries before new entry is appended.
+
+ TInt numPositions = iParent.iSharedData->iVerifyPosInfoArr.Count();
+ while(numPositions--)
+ {
+ TPositionInfo* posInfo = new(ELeave) TPositionInfo();
+ posInfoArr.Append(posInfo);
+
+ err = DoLastKnownPosL(*posInfo);
+ if (KErrNone != err)
+ {
+ SetTestStepResult(EFail);
+ }
+ }
+
+ CleanupStack::PopAndDestroy(&iPositioner);
+ if (testCaseId == 104)
+ {
+ CloseNetSim();
+ }
+ break;
+ }
+ // Test case LBS-LastKnownPos-0105
+ case 105:
+ {
+ T_LbsUtils utils;
+ TPositionModuleId networkModuleId = utils.GetNetworkModuleIdL(iServer);
+ // Open positioner.
+ User::LeaveIfError(iPositioner.Open(iServer, networkModuleId));
+ CleanupClosePushL(iPositioner);
+
+ // Setup netsim.
+ User::LeaveIfError(OpenNetSim());
+
+ TPosition pos; // original position
+ TTime timeStamp; // timestamp inside original received position
+
+ // Carry out a notify update to ensure last known cache is filled.
+ TPositionInfo actualRefPosInfo;
+
+ err = DoNotifyUpdateL(actualRefPosInfo);
+
+ if (err)
+ {
+ INFO_PRINTF2(_L("Failed test, reference position request returned err %d."), err);
+ SetTestStepResult(EFail);
+ }
+
+ // get the position data:
+ actualRefPosInfo.GetPosition(pos);
+
+ timeStamp = pos.Time();
+ INFO_PRINTF1(_L("Original position timeStamp: "));
+ INFO_PRINTF4(_L("%d/%d/%d"), timeStamp.DateTime().Day() + 1, timeStamp.DateTime().Month() + 1, timeStamp.DateTime().Year());
+ INFO_PRINTF5(_L("at %d :%d :%d :%d"), timeStamp.DateTime().Hour(), timeStamp.DateTime().Minute(), timeStamp.DateTime().Second(), timeStamp.DateTime().Second());
+
+ // Create a posinfo and store in our shared array for later verification.
+ RPointerArray<TAny>& posInfoArr = iParent.iSharedData->iCurrentPosInfoArr;
+ TPositionInfo* posInfo = new(ELeave) TPositionInfo();
+
+ utils.ResetAndDestroy_PosInfoArr(posInfoArr); // Clear previous entries before new entry is appended.
+
+ posInfoArr.Append(posInfo);
+
+ // Get the last known position
+ err = DoLastKnownPosL(*posInfo);
+ if (KErrNone != err)
+ {
+ SetTestStepResult(EFail);
+ }
+ else
+ {
+ TTime timeStamp_cached;
+ posInfo->GetPosition(pos);
+ timeStamp_cached = pos.Time();
+
+ timeStamp = pos.Time();
+ INFO_PRINTF1(_L("Cached position timeStamp: "));
+ INFO_PRINTF4(_L("%d/%d/%d"), timeStamp_cached.DateTime().Day() + 1, timeStamp_cached.DateTime().Month() + 1, timeStamp_cached.DateTime().Year());
+ INFO_PRINTF5(_L("at %d :%d :%d :%d"), timeStamp_cached.DateTime().Hour(), timeStamp_cached.DateTime().Minute(), timeStamp_cached.DateTime().Second(), timeStamp_cached.DateTime().Second());
+
+ // verify that the timestamp matches the original one:
+ if(timeStamp_cached != timeStamp)
+ {
+ SetTestStepResult(EFail);
+ }
+
+ }
+
+ CleanupStack::PopAndDestroy(&iPositioner);
+ // Close netsim.
+ CloseNetSim();
+ break;
+ }
+
+ default:
+ {
+ User::Leave(KErrArgument);
+ }
+ }
+ }
+
+ // All done, clean up.
+
+ CleanupStack::PopAndDestroy(&iServer);
+ }
+
+ INFO_PRINTF1(_L("<<CT_LbsClientStep_LastKnownPos::doTestStepL()"));
+
+ return TestStepResult();
+ }