diff -r e8c1ea2c6496 -r 8758140453c0 lbs/lbsclient/src/ctlbsclientpostp76.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/lbs/lbsclient/src/ctlbsclientpostp76.cpp Thu Jan 21 12:53:44 2010 +0000 @@ -0,0 +1,261 @@ +// Copyright (c) 2001-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: +// + + + + +// INCLUDES +#include "ctlbsclientpostp76.h" +#include +#include +#include +#include + +// CONSTANTS + +// ================= MEMBER FUNCTIONS ======================= + +// --------------------------------------------------------- +// Constructor. +// --------------------------------------------------------- +CT_LbsClientPosTp76::CT_LbsClientPosTp76(CT_LbsServer& aParent): CT_LbsPortedStepBase(aParent) + { + _LIT(KTestName,"TP76 - Get module data"); + SetTestStepName(KTestName); + } + +// --------------------------------------------------------- +// Destructor. +// --------------------------------------------------------- +CT_LbsClientPosTp76::~CT_LbsClientPosTp76() + { + } + +// --------------------------------------------------------- +// CT_LbsClientPosTp76::StartL +// +// (other items were commented in a header). +// --------------------------------------------------------- +// +void CT_LbsClientPosTp76::StartL() + { + // Open connection to Epos + RPositionServer posServer; + CleanupClosePushL(posServer); + TInt err = posServer.Connect(); + _LIT(KConnectError, "TP76. Unable to open connection to Epos, return code %d"); + AssertTrueSecL(err == KErrNone, KConnectError, err); + + // Set priority for those psys that will be used in this tp. + // The order will be testpsy1(externalgps),testpsy2,testpsy3 + TUid uidPsy1 = iUidTestPsy1; + TUid uidPsy2 = iUidTestPsy2; + TUid uidPsy3 = iUidTestPsy3; + + SetupPsyL(uidPsy1); // will disable all except uidPsy1 + + CPosModules* db = CPosModules::OpenL(); + CleanupStack::PushL(db); + + // Enable the PSY test psys + CPosModuleUpdate* moduleUpdate = CPosModuleUpdate::NewLC(); + moduleUpdate -> SetUpdateAvailability(ETrue); + db->SetModulePriorityL(uidPsy1, 0); + db->SetModulePriorityL(uidPsy2, 1); + db->SetModulePriorityL(uidPsy3, 1); + db->UpdateModuleL(uidPsy1, *moduleUpdate); + db->UpdateModuleL(uidPsy2, *moduleUpdate); + db->UpdateModuleL(uidPsy3, *moduleUpdate); + CleanupStack::PopAndDestroy(moduleUpdate); + + // Setup the PSY:s in the correct order + CPosModuleIdList* prioList = db->ModuleIdListLC(); + TInt numModules = prioList->Count(); + TPositionModuleInfo modInfoPsy2; //used to comapre that the same result is returned. + db -> GetModuleInfoL(uidPsy2, modInfoPsy2); + CleanupStack::PopAndDestroy(2); // db, prioList + + // Get default positioning module info. (testpsy1 or externalgps) + TPositionModuleInfo modInfo; + TPositionModuleId defaultId; + err = posServer.GetDefaultModuleId(defaultId); + _LIT(KDefaultModuleId, "Not possible to get default module id"); + AssertTrueSecL(err == KErrNone, KDefaultModuleId, err); + // Check that the correct id was returned. + if (defaultId != uidPsy1) + { + _LIT(KErrorWrongModule, "Default module was not returned in GetDefaultModuleId()"); + LogErrorAndLeaveL(KErrorWrongModule); + } + + // Get default module info by using the id returned. + err = posServer.GetModuleInfoById(defaultId, modInfo); + _LIT(KGetDefPosModInfoError, + "TP76. Error occured at GetModuleInfoById, return code %d"); + AssertTrueSecL(err == KErrNone, KGetDefPosModInfoError, err); + // Check if the received psy is the right one + _LIT(KIncorrectPsyError, + "TP76. Incorrect PSY returned from Epos."); + AssertTrueL(uidPsy1 == modInfo.ModuleId(), KIncorrectPsyError); + /////END TEST DEFAULT///// + + ///////////////////////////////// + ///// TestGetModuleInfoById ///// + ///////////////////////////////// + + // Get info from specific psy (testpsy2) + _LIT(KGetPosModInfoError, "Wrong data received from Epos"); + err = posServer.GetModuleInfoById(uidPsy2, modInfo); + AssertTrueSecL(err == 0, KGetPosModInfoError, err); + AssertTrueL(modInfo.ModuleId() == uidPsy2, KGetPosModInfoError); + CheckModuleInfoL(modInfoPsy2, modInfo); + /////END TEST GetModuleInfoById///// + + ///////////////////////////////////// + ///// Test GetModuleInfoByIndex ///// + ///////////////////////////////////// + + // Get info from the testpsys (testpsy1, testpsy2, testpsy3) + TPositionModuleId id1; + TPositionModuleId id2; + TPositionModuleId id3; + TUint count; + err = posServer.GetNumModules(count); + _LIT(KNumPosModInfoError, + "TP76. Error occured at GetNumModules error code returned, return code %d"); + AssertTrueSecL(err == 0,KNumPosModInfoError,err); + _LIT(KIncorrectNoOfModules, + "TP76. Incorrect number of modules."); + TUint no = (TUint) numModules; //Bad API implementation + AssertTrueL(count == no, KIncorrectNoOfModules); + + err = posServer.GetModuleInfoByIndex(0, modInfo); + AssertTrueSecL(err == KErrNone, KGetDefPosModInfoError, err); + id1 = modInfo.ModuleId(); + if (!(id1 == uidPsy1 || + id1 == uidPsy2 || + id1 == uidPsy3)) + { + LogErrorAndLeaveL(KGetPosModInfoError); + } + + err = posServer.GetModuleInfoByIndex(1, modInfo); + AssertTrueSecL(err == 0, KGetDefPosModInfoError, err); + id2 = modInfo.ModuleId(); + if (!(id2 == uidPsy1 || + id2 == uidPsy2 || + id2 == uidPsy3)) + { + LogErrorAndLeaveL(KGetPosModInfoError); + } + + err = posServer.GetModuleInfoByIndex(2, modInfo); + AssertTrueSecL(err == 0, KGetDefPosModInfoError, err); + id3 = modInfo.ModuleId(); + if (!(id3 == uidPsy1 || + id3 == uidPsy2 || + id3 == uidPsy3)) + { + LogErrorAndLeaveL(KGetPosModInfoError); + } + + // Assuming that only 3 PSYs are installed + err = posServer.GetModuleInfoByIndex(3, modInfo); + AssertTrueSecL(err == 0, KGetDefPosModInfoError, err); + + ///// END TEST GetModuleInfoByIndex ///// + + CleanupStack::PopAndDestroy(); //posServer + } + +// --------------------------------------------------------- +// CT_LbsClientPosTp76::CheckModuleInfoL +// +// (other items were commented in a header). +// --------------------------------------------------------- +// +void CT_LbsClientPosTp76::CheckModuleInfoL(const TPositionModuleInfo& dbInfo, + const TPositionModuleInfo& clientInfo) + { + _LIT(KNotSame, "Module Info from settings is not the same as when read by GetModuleInfoById"); + if (dbInfo.IsAvailable() != clientInfo.IsAvailable() || + dbInfo.ModuleId() != clientInfo.ModuleId() || + dbInfo.DeviceLocation() != clientInfo.DeviceLocation() || + dbInfo.Capabilities() != clientInfo.Capabilities() || + dbInfo.TechnologyType() != clientInfo.TechnologyType() || + dbInfo.Version().iBuild != clientInfo.Version().iBuild || + dbInfo.Version().iMajor != clientInfo.Version().iMajor || + dbInfo.Version().iMinor != clientInfo.Version().iMinor || + dbInfo.Version().Name() != clientInfo.Version().Name() || + dbInfo.ClassesSupported(EPositionInfoFamily) != clientInfo.ClassesSupported(EPositionInfoFamily)) + { + LogErrorAndLeaveL(KNotSame); + } + TPositionQuality dbQuality; + TPositionQuality clientQuality; + dbInfo.GetPositionQuality(dbQuality); + clientInfo.GetPositionQuality(clientQuality); + if (dbQuality.TimeToFirstFix() != clientQuality.TimeToFirstFix() || + dbQuality.TimeToNextFix() != clientQuality.TimeToNextFix() || + dbQuality.HorizontalAccuracy() != clientQuality.HorizontalAccuracy() || + dbQuality.VerticalAccuracy() != clientQuality.VerticalAccuracy() || + dbQuality.CostIndicator() != clientQuality.CostIndicator() || + dbQuality.PowerConsumption() != clientQuality.PowerConsumption() ) + { + LogErrorAndLeaveL(KNotSame); + } + + + TBuf<30> name1; + TBuf<30> name2; + dbInfo.GetModuleName(name1); + clientInfo.GetModuleName(name2); + if (name1 != name2) + { + LogErrorAndLeaveL(KNotSame); + } + } + + +// --------------------------------------------------------- +// CT_LbsClientPosTp76::AssertTrueL +// +// (other items were commented in a header). +// --------------------------------------------------------- +// +void CT_LbsClientPosTp76::AssertTrueL(TBool aCondition, const TDesC& aErrorMsg) + { + if (!aCondition) + { + LogErrorAndLeaveL(aErrorMsg); + } + } + + +// --------------------------------------------------------- +// CT_LbsClientPosTp76::AssertTrueSecL +// +// (other items were commented in a header). +// --------------------------------------------------------- +// +void CT_LbsClientPosTp76::AssertTrueSecL(TBool aCondition, const TDesC& aErrorMsg, TInt aErrorCode) + { + if (!aCondition) + { + TBuf<100> buf; + buf.Format(aErrorMsg, aErrorCode); + LogErrorAndLeaveL(buf); + } + }