lbs/lbsclient/src/ctlbsclientpostp76.cpp
branchSymbian2
changeset 1 8758140453c0
child 6 c108117318cb
--- /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 <badesca.h>
+#include <EPos_CPosModules.h>
+#include <EPos_CPosModuleUpdate.h>
+#include <EPos_CPosModuleIdList.h>
+
+// 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);
+		}
+    }