telephonyutils/etel3rdpartyapi/Test/te_etelIsv/TE_EtelIsvPhoneSettings.cpp
branchopencode
changeset 24 6638e7f4bd8f
parent 0 3553901f7fa8
--- a/telephonyutils/etel3rdpartyapi/Test/te_etelIsv/TE_EtelIsvPhoneSettings.cpp	Mon May 03 13:37:20 2010 +0300
+++ b/telephonyutils/etel3rdpartyapi/Test/te_etelIsv/TE_EtelIsvPhoneSettings.cpp	Thu May 06 15:10:38 2010 +0100
@@ -1,1483 +1,1483 @@
-// Copyright (c) 2003-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:
-// Tests for ETL 3rd Party Phone APIs  
-// 
-//
-
-/**
- @file
-*/
-
-#include "TE_EtelIsvbase.h"
-#include "TE_EtelIsvPhoneSettings.h"
-#include "TE_EtelIsvCallFunc.h"
-
- 
-
-CTestGetPhoneId::CTestGetPhoneId()
-/** Each test step initialises it's own name
-*/
-{
-	// store the name of this test case
-	// this is the name that is used by the script file
-	SetTestStepName(_L("TestGetPhoneId"));
-}
-
-/**
-*
-@SYMTestCaseID Etel3rdParty 1.1
-@SYMTestCaseDesc Test GetPhoneId 3rd party API
-@SYMFssID SGL.GT0166.054 v1.3 A2_Telephony_Functional_Specification.doc, REQ 2116.1.1
-*/ 
-
-TVerdict CTestGetPhoneId::doTestStepL()
-{
-	SetTestNumber(0);
-
-	//expected data
-	_LIT16(manufacturerid, "PSION");
-	_LIT16(modelid, "666");
-	_LIT16(serialid, "1234567890");
-	CTelephony::TPhoneIdV1 ExpectedPhoneId;
-	ExpectedPhoneId.iManufacturer=manufacturerid;
-	ExpectedPhoneId.iModel=modelid;
-	ExpectedPhoneId.iSerialNumber=serialid;
-	TRequestStatus expStat=KErrNone;
-	CTelephony::TPhoneIdV1Pckg ExpectedPhoneIdPckg(ExpectedPhoneId);
-	
-	CTestGetPhoneIdAct* GetPhoneIdAct = CTestGetPhoneIdAct::NewLC(this, iTelephony);
-
-	#if defined(_DEBUG)
-	//Test OOM
-		INFO_PRINTF1(_L("Test OOM for GetPhoneId"));
-		expStat=KErrNoMemory;
-		__UHEAP_FAILNEXT(1);
-		GetPhoneIdAct->GetPhoneId(ExpectedPhoneIdPckg, expStat);
-		CActiveScheduler::Start();
-		__UHEAP_RESET;
-	#endif
-	
-	//Start GetPhoneID AO	
-	INFO_PRINTF1(_L("Test GetPhoneId"));
-	expStat=KErrNone;
-	GetPhoneIdAct->GetPhoneId(ExpectedPhoneIdPckg, expStat, ETrue);
-	CActiveScheduler::Start();	
-	
-	//Test cancel
-	INFO_PRINTF1(_L("Test Cancel for GetPhoneId"));
-	TInt cancelerr = iTelephony->CancelAsync(CTelephony::EGetPhoneIdCancel);
-	TEST1(cancelerr == KErrNotFound, ETrue);
-	GetPhoneIdAct->GetPhoneId(ExpectedPhoneIdPckg, expStat);	
-	CTestCanceller* canceller = GetPhoneIdAct->RetrieveCanceller();
-	canceller->Call();
-	CActiveScheduler::Start();	
-	TEST1(GetPhoneIdAct->iStatus.Int() == KErrCancel || GetPhoneIdAct->iStatus.Int() == KErrNone, ETrue);
-
-	CleanupStack::PopAndDestroy(); //GetPhoneIdAct
-
-	return TestStepResult();
-}
-
-CTestGetPhoneIdError::CTestGetPhoneIdError()
-/** Each test step initialises it's own name
-*/
-{
-	// store the name of this test case
-	// this is the name that is used by the script file
-	SetTestStepName(_L("TestGetPhoneIdError"));
-}
-
-/**
-*
-@SYMTestCaseID Etel3rdParty 1.2
-@SYMTestCaseDesc Test GetPhoneId 3rd party API - Error scenario
-@SYMFssID SGL.GT0166.054 v1.3 A2_Telephony_Functional_Specification.doc,  REQ 2116.1.1
-*/
-
-TVerdict CTestGetPhoneIdError::doTestStepL()
-{
-	INFO_PRINTF1(_L("Test GetPhoneId with error"));
-	SetTestNumber(1);
-	CTelephony::TPhoneIdV1 ExpectedPhoneId;
-	CTelephony::TPhoneIdV1Pckg ExpectedPhoneIdPckg(ExpectedPhoneId);
-	TRequestStatus expStat=KErrNotFound;
-
-	//Start GetPhoneID AO
-	CTestGetPhoneIdAct* GetPhoneIdAct = CTestGetPhoneIdAct::NewLC(this, iTelephony);
-	GetPhoneIdAct->GetPhoneId(ExpectedPhoneIdPckg, expStat);
-
-	CActiveScheduler::Start();
-	
-	CleanupStack::PopAndDestroy(); //GetPhoneIdAct
-	return TestStepResult();
-}
-
-//=====================================================
-//
-//	Class to get phone ID active object
-//
-//=====================================================
-
-CTestGetPhoneIdAct* CTestGetPhoneIdAct::NewLC(CEtelIsvTestStep* aTestStep, CTelephony* aTelephony, TBool aUseMacros)
-//Factory constructor
-	{
-	CTestGetPhoneIdAct* obj = new(ELeave) CTestGetPhoneIdAct(aTestStep, aTelephony, aUseMacros);
-	CleanupStack::PushL(obj);
-	obj->ConstructL();
-	return obj;
-	}
-CTestGetPhoneIdAct::CTestGetPhoneIdAct(CEtelIsvTestStep* aTestStep, CTelephony* aTelephony, TBool aUseMacros = ETrue)
-	: CEtelIsvActBase(aTestStep, aTelephony), 
-	iUseMacros(aUseMacros),
-	iPhoneIdBuff(iPhoneId),
-	iPhoneIdPckg(iPhoneId)
-	{  
-	}
-
-void CTestGetPhoneIdAct::ConstructL()
-	{  
-	iCanceller = new(ELeave) CTestCanceller(this);
-	CActiveScheduler::Add(this);
-	}
-
-CTestGetPhoneIdAct::~CTestGetPhoneIdAct()
-	{  
-	Cancel();	// if any Req outstanding, calls DoCancel() to cleanup.
-	delete iCanceller;
-	}
-
-void CTestGetPhoneIdAct::DoCancel()
-	{
-	iTelephony->CancelAsync(CTelephony::EGetPhoneIdCancel);
-	}
-	
-void CTestGetPhoneIdAct::GetPhoneId(TDes8& aExpectedPhoneIdPckg, TRequestStatus aExpStat, TBool aCheckConcurrency)
-	{
-	iExpectedPhoneIdPckg=&aExpectedPhoneIdPckg;
-	iExpStat=aExpStat;
-	
-	TDes8* data;
-	if (iTestStep->iBufferMode)
-		{
-		data = &iPhoneIdBuff;
-		}
-	else
-		{
-		data = &iPhoneIdPckg;
-		}
-	
-	iTelephony->GetPhoneId(iStatus, *data);
-	
-	if(aCheckConcurrency)
-		{
-		TRequestStatus tmpStatus;
-		iTelephony->GetPhoneId(tmpStatus, *data);
-		User::WaitForRequest(tmpStatus);
-		iTestStep->TEST1(tmpStatus.Int() == KErrInUse, ETrue);
-		}		
-	SetActive();
-	}
-
-void CTestGetPhoneIdAct::RunL()
-	{ 
-	// ActiveScheduler will have set status to KRequestComplete, just before
-	// calling this RunL().
-	CTelephony::TPhoneIdV1Pckg& GetPhoneIdV1Pckg = REINTERPRET_CAST(CTelephony::TPhoneIdV1Pckg&, *iExpectedPhoneIdPckg);
-	
-	//only supports V1 at present
-	CTelephony::TPhoneIdV1& expectedPhoneId = (GetPhoneIdV1Pckg)();	 
-	
-	if(iUseMacros)
-		{	
-		iTestStep->TEST1(iStatus.Int() == iExpStat.Int(), ETrue);
-		}
-
-	if(iStatus.Int() == KErrNone)
-		{
-		if(iUseMacros)
-			{	
-			const CTelephony::TPhoneIdV1* data;
-			if (iTestStep->iBufferMode)
-				{
-				data = reinterpret_cast<const CTelephony::TPhoneIdV1*> ( &iPhoneIdBuff() );
-				}
-			else
-				{
-				data = reinterpret_cast<const CTelephony::TPhoneIdV1*> ( &iPhoneIdPckg() );
-				}
-		    
-			iTestStep->TEST1(data->iManufacturer == expectedPhoneId.iManufacturer, ETrue);
-			iTestStep->TEST1(data->iModel == expectedPhoneId.iModel, ETrue);
-			iTestStep->TEST1(data->iSerialNumber == expectedPhoneId.iSerialNumber, ETrue);		
-			
-			iTestStep->INFO_PRINTF2(_L("Phone manufacturer: %S"), &(data->iManufacturer) );
-			iTestStep->INFO_PRINTF2(_L("Phone model: %S"), &(data->iModel) );
-			iTestStep->INFO_PRINTF2(_L("Phone serial number: %S"), &(data->iSerialNumber) );
-			}
-		}
-	else
-		{
-		if(iUseMacros)
-			{
-			iTestStep->INFO_PRINTF2(_L("Error for GetPhoneId: %d"), iStatus.Int() );
-			}
-		}
-
-	CActiveScheduler::Stop();
-	}
-
-CTestGetSubscriberId::CTestGetSubscriberId()
-/** Each test step initialises it's own name
-*/
-{
-	// store the name of this test case
-	// this is the name that is used by the script file
-	SetTestStepName(_L("TestGetSubscriberId"));
-}
-
- 
- 
- 
-/**
-*
-@SYMTestCaseID Etel3rdParty 2.1
-@SYMTestCaseDesc Test GetSubscriberId 3rd party API
-@SYMFssID SGL.GT0166.054 v1.3 A2_Telephony_Functional_Specification.doc, REQ 2116.1.2
-*
-*/ 
-
-TVerdict CTestGetSubscriberId::doTestStepL()
-	{
-	//Set test number
-	SetTestNumber(2);
-	
-	//Set expected IMSI value
-	_LIT16(SubscriberId, "56789012345678");
-	CTelephony::TSubscriberIdV1 ExpSubscriberId ;
-	ExpSubscriberId.iSubscriberId=SubscriberId;
-	CTelephony::TSubscriberIdV1Pckg expSubscriberIdPckg(ExpSubscriberId);
-	TRequestStatus expStat=KErrNone;
-	
-	CTestGetSubscriberIdAct* GetSubscriberIdAct = CTestGetSubscriberIdAct::NewLC(this, iTelephony);
-
-	#if defined(_DEBUG)
-	//Test OOM
-		INFO_PRINTF1(_L("Test OOM for GetSubscriberId"));
-		expStat=KErrNoMemory;
-		__UHEAP_FAILNEXT(1);
-		GetSubscriberIdAct->GetSubscriberId(expSubscriberIdPckg, expStat);	
-		CActiveScheduler::Start();
-		__UHEAP_RESET;
-	#endif
-	
-	//Start GetSubscriberID AO
-	INFO_PRINTF1(_L("Test GetSubscriberId"));
-	expStat=KErrNone;
-	GetSubscriberIdAct->GetSubscriberId(expSubscriberIdPckg, expStat, ETrue);	
-	CActiveScheduler::Start();
-
-	//Test cancel
-	INFO_PRINTF1(_L("Test Cancel for GetSubscriberId"));
-	TInt cancelerr = iTelephony->CancelAsync(CTelephony::EGetSubscriberIdCancel);
-	TEST1(cancelerr == KErrNotFound, ETrue);
-	CTestCanceller* canceller = GetSubscriberIdAct->RetrieveCanceller();
-	GetSubscriberIdAct->GetSubscriberId(expSubscriberIdPckg, expStat);	
-	canceller->Call();
-	CActiveScheduler::Start();	
-	TEST1(GetSubscriberIdAct->iStatus.Int() == KErrCancel || GetSubscriberIdAct->iStatus.Int() == KErrNone, ETrue);
-
-	CleanupStack::PopAndDestroy(); //GetSubscriberIdAct
-	return TestStepResult();
-}
-
-CTestGetSubscriberIdError::CTestGetSubscriberIdError()
-/** Each test step initialises it's own name
-*/
-{
-	// store the name of this test case
-	// this is the name that is used by the script file
-	SetTestStepName(_L("TestGetSubscriberIdError"));
-}
-
-/**
-*
-@SYMTestCaseID Etel3rdParty 2.2
-@SYMTestCaseDesc Test GetSubscriberId 3rd party API - Error scenario
-@SYMFssID SGL.GT0166.054 v1.3 A2_Telephony_Functional_Specification.doc, REQ 2116.1.2
-*
-*/ 
-
-TVerdict CTestGetSubscriberIdError::doTestStepL()
-	{
-	INFO_PRINTF1(_L("Test Cancel for GetSubscriberId with error."));
-
-	//Set test number
-	SetTestNumber(3);
-
-	//Set expected IMSI value
-	_LIT16(SubscriberId, "01234567890123");
-	CTelephony::TSubscriberIdV1 ExpSubscriberId ;
-	ExpSubscriberId.iSubscriberId=SubscriberId;
-	CTelephony::TSubscriberIdV1Pckg expSubscriberIdPckg(ExpSubscriberId);
-
-	//Start GetSubscriberID AO
-	TRequestStatus expStat=KErrNotSupported;
-	CTestGetSubscriberIdAct* GetSubscriberIdAct = CTestGetSubscriberIdAct::NewLC(this, iTelephony);
-	GetSubscriberIdAct->GetSubscriberId(expSubscriberIdPckg, expStat);
-	
-	CActiveScheduler::Start();
-
-	CleanupStack::PopAndDestroy(); //GetSubscriberIdAct
-	return TestStepResult() ;
-}
-
-//=====================================================
-//
-//	Class to get subscriber ID active object
-//
-//=====================================================
-
-CTestGetSubscriberIdAct* CTestGetSubscriberIdAct::NewLC(CEtelIsvTestStep* aTestStep, CTelephony* aTelephony)
-//Factory constructor
-	{
-	CTestGetSubscriberIdAct* obj = new(ELeave) CTestGetSubscriberIdAct(aTestStep, aTelephony);
-	CleanupStack::PushL(obj);
-	obj->ConstructL();
-	return obj;
-	}
-
-CTestGetSubscriberIdAct::CTestGetSubscriberIdAct(CEtelIsvTestStep* aTestStep, CTelephony* aTelephony)
-	: CEtelIsvActBase(aTestStep, aTelephony),
-	iSubscriberIdBuff(iSubscriberId),
-	iSubscriberIdPckg(iSubscriberId)
-	{  
-	}
-
-void CTestGetSubscriberIdAct::ConstructL()
-	{  
-	iCanceller = new(ELeave) CTestCanceller(this);
-	CActiveScheduler::Add(this);
-	}
-
-CTestGetSubscriberIdAct::~CTestGetSubscriberIdAct()
-	{ 
-	Cancel();	// if any Req outstanding, calls DoCancel() to cleanup.
-	delete iCanceller;
-	}
-
-void CTestGetSubscriberIdAct::DoCancel()
-	{
-	iTelephony->CancelAsync(CTelephony::EGetSubscriberIdCancel);
-	}
-
-void CTestGetSubscriberIdAct::GetSubscriberId(TDes8& aExpSubscriberIdPckg, TRequestStatus aExpStat, TBool aCheckConcurrency)
-	{
-	iExpStat = aExpStat;
-	iExpSubscriberIdPckg=&aExpSubscriberIdPckg;
-	
-	TDes8* data;
-	if (iTestStep->iBufferMode)
-		{
-		data = &iSubscriberIdBuff;
-		}
-	else
-		{
-		data = &iSubscriberIdPckg;
-		}
-
-	iTelephony->GetSubscriberId(iStatus, *data);
-	
-	if(aCheckConcurrency)
-		{
-		TRequestStatus tmpStatus;
-		iTelephony->GetSubscriberId(tmpStatus, *data);
-		User::WaitForRequest(tmpStatus);
-		iTestStep->TEST1(tmpStatus.Int() == KErrInUse, ETrue);
-		}	
-	
-	SetActive();
-	}
-
-void CTestGetSubscriberIdAct::RunL()
-	{ 
-	// ActiveScheduler will have set status to KRequestComplete, just before
-	// calling this RunL().
-	CTelephony::TSubscriberIdV1Pckg& expSubscriberIdPckg = REINTERPRET_CAST(CTelephony::TSubscriberIdV1Pckg&, *iExpSubscriberIdPckg);
-	
-	//only supports V1 at present
-	CTelephony::TSubscriberIdV1& expSubscriberId = (expSubscriberIdPckg)();	
-	
-	iTestStep->TEST1(iStatus.Int() == iExpStat.Int(), ETrue);
-
-	if(iStatus.Int() == KErrNone)
-		{
-		CTelephony::TSubscriberIdV1* data;
-		if (iTestStep->iBufferMode)
-			{
-			data = reinterpret_cast<CTelephony::TSubscriberIdV1*> ( &iSubscriberIdBuff() );
-			}
-		else
-			{
-			data = reinterpret_cast<CTelephony::TSubscriberIdV1*> ( &iSubscriberIdPckg() );
-			}		
-	        
-		iTestStep->TEST1(data->iSubscriberId == expSubscriberId.iSubscriberId, ETrue);		
-		iTestStep->INFO_PRINTF2(_L("SubscriberId: %S"), &(data->iSubscriberId) );
-		}
-	else
-		{
-		iTestStep->INFO_PRINTF2(_L("Error for GeSubscriberId: %d"), iStatus.Int() );
-		}
-
-	CActiveScheduler::Stop();
-	}
-
-CTestGetIndicator::CTestGetIndicator()
-/** Each test step initialises it's own name
-*/
-{
-	// store the name of this test case
-	// this is the name that is used by the script file
-	SetTestStepName(_L("TestGetIndicator"));
-}
-
-/**
-*
-@SYMTestCaseID Etel3rdParty 4.1
-@SYMTestCaseDesc Test GetIndicator 3rd party API
-@SYMFssID SGL.GT0166.054 v1.3 A2_Telephony_Functional_Specification.doc, REQ 2116.1.4
-*
-*/ 
-
-TVerdict CTestGetIndicator::doTestStepL()
-	{
-	//Set test number
-	SetTestNumber(4);
-
-	//Set expected return values
-	TUint32 expIndCaps = CTelephony::KIndChargerConnected | CTelephony::KIndNetworkAvailable | CTelephony::KIndCallInProgress;
-	TUint32 expInd = CTelephony::KIndChargerConnected;
-	TRequestStatus expStat=KErrNone;
-	
-	CTestGetIndicatorAct* GetIndicatorAct = CTestGetIndicatorAct::NewLC(this, iTelephony);
-
-	#if defined(_DEBUG)
-	//test OOM
-		INFO_PRINTF1(_L("Test OOM for GetIndicator"));
-		expStat = KErrNoMemory;
-		__UHEAP_FAILNEXT(1);
-		GetIndicatorAct->GetPhoneIndicator(expIndCaps, expInd, expStat);
-		CActiveScheduler::Start();
-		__UHEAP_RESET;
-	#endif
-
-	//Start GetIndicator AO
-	 expStat=KErrNone;
-	INFO_PRINTF1(_L("Test GetIndicator"));	
-	GetIndicatorAct->GetPhoneIndicator(expIndCaps, expInd, expStat, ETrue);
-	CActiveScheduler::Start();
-
-	//Test cancel
-	TInt cancelerr = iTelephony->CancelAsync(CTelephony::EGetIndicatorCancel);
-	TEST1(cancelerr == KErrNotFound, ETrue);
-	GetIndicatorAct->GetPhoneIndicator(expIndCaps, expInd, expStat);
-	CTestCanceller* canceller = GetIndicatorAct->RetrieveCanceller();
-	canceller->Call();
-	CActiveScheduler::Start();	
-	TEST1(GetIndicatorAct->iStatus.Int() == KErrCancel || GetIndicatorAct->iStatus.Int() == KErrNone, ETrue);
-
-	CleanupStack::PopAndDestroy(); //GetIndicatorAct
-	return TestStepResult() ;
-}
-
-//=====================================================
-//
-//	Class to get phone indicator active object
-//
-//=====================================================
-
-CTestGetIndicatorAct* CTestGetIndicatorAct::NewLC(CEtelIsvTestStep* aTestStep, CTelephony* aTelephony)
-//Factory constructor
-	{
-	CTestGetIndicatorAct* obj = new(ELeave) CTestGetIndicatorAct(aTestStep, aTelephony);
-	CleanupStack::PushL(obj);
-	obj->ConstructL();
-	return obj;
-	}
-
-CTestGetIndicatorAct::CTestGetIndicatorAct(CEtelIsvTestStep* aTestStep, CTelephony* aTelephony)
-	: CEtelIsvActBase(aTestStep, aTelephony),
-	iIndicatorBuff(iIndicator),
-	iIndicatorPckg(iIndicator)
-	{  
-	}
-
-void CTestGetIndicatorAct::ConstructL()
-	{ 
-	iCanceller = new(ELeave) CTestCanceller(this);
-	CActiveScheduler::Add(this);
-	}
-
-CTestGetIndicatorAct::~CTestGetIndicatorAct()
-	{  
-	Cancel();	// if any Req outstanding, calls DoCancel() to cleanup.
-	delete iCanceller;
-	}
-
-void CTestGetIndicatorAct::DoCancel()
-	{
-	iTelephony->CancelAsync(CTelephony::EGetIndicatorCancel);
-	}
-
-void CTestGetIndicatorAct::GetPhoneIndicator(TUint32 aExpIndCaps, TUint32 aExpInd,TRequestStatus aExpStat, TBool aCheckConcurrency)
-	{
-	iExpIndCaps = aExpIndCaps;
-	iExpInd = aExpInd;
-	iExpStat = aExpStat;
-	
-	TDes8* data;
-	if (iTestStep->iBufferMode)
-		{
-		data = &iIndicatorBuff;
-		}
-	else
-		{
-		data = &iIndicatorPckg;
-		}
-	
-	iTelephony->GetIndicator(iStatus, *data);
-	
-	if(aCheckConcurrency)
-		{
-		TRequestStatus tmpStatus;
-		iTelephony->GetIndicator(tmpStatus, *data);
-		User::WaitForRequest(tmpStatus);
-		iTestStep->TEST1(tmpStatus.Int() == KErrInUse, ETrue);
-		}	
-		
-	SetActive();
-	}
-
-void CTestGetIndicatorAct::RunL()
-	{ 
-	// ActiveScheduler will have set status to KRequestComplete, just before
-	// calling this RunL().
-
-	iTestStep->TEST1(iStatus.Int() == iExpStat.Int(), ETrue);
-	
-	if(iStatus.Int() == KErrNone)
-		{
-		CTelephony::TIndicatorV1* data;
-		if (iTestStep->iBufferMode)
-			{
-			data = reinterpret_cast<CTelephony::TIndicatorV1*> ( &iIndicatorBuff() );
-			}
-		else
-			{
-			data = reinterpret_cast<CTelephony::TIndicatorV1*> ( &iIndicatorPckg() );
-			}
-		
-		iTestStep->TEST1(iExpIndCaps == data->iCapabilities, ETrue);
-		iTestStep->TEST1(iExpInd == data->iIndicator, ETrue);
-		iTestStep->PrintIndicatorValues(data->iIndicator, data->iCapabilities);
-		}
-	else
-		{
-		iTestStep->INFO_PRINTF2(_L("Error for GetIndicators: %d"), iStatus.Int() );
-		}
-
-	CActiveScheduler::Stop();
-	}
-
-CTestGetBatteryInfo::CTestGetBatteryInfo()
-/** Each test step initialises it's own name
-*/
-{
-	// store the name of this test case
-	// this is the name that is used by the script file
-	SetTestStepName(_L("TestGetBatteryInfo"));
-}
-
-/**
-*
-@SYMTestCaseID Etel3rdParty 5.1
-@SYMTestCaseDesc Test GetBatteryInfo 3rd party API
-@SYMFssID SGL.GT0166.054 v1.3 A2_Telephony_Functional_Specification.doc, REQ 2116.1.3
-*
-*/ 
-
-TVerdict CTestGetBatteryInfo::doTestStepL()
-	{
-	INFO_PRINTF1(_L("Test retrieval of battery information status"));
-
-	//Set test number
-	SetTestNumber(5);
-	
-	//Set expected result data
-	TRequestStatus expStat=KErrNone;
-	CTelephony::TBatteryInfoV1 BatteryExpInfo;
-	BatteryExpInfo.iStatus=CTelephony::EPowerStatusUnknown;
-	BatteryExpInfo.iChargeLevel=0;
-	CTelephony::TBatteryInfoV1Pckg batteryExpInfoPckg(BatteryExpInfo);
-	CTestGetBatteryInfoAct* GetBatteryInfoAct = CTestGetBatteryInfoAct::NewLC(this, iTelephony);
-	
-	#if defined(_DEBUG)
-	//test OOM
-		INFO_PRINTF1(_L("Test OOM for GetBatteryInfo"));
-		expStat=KErrNoMemory;
-		__UHEAP_FAILNEXT(1);
-		GetBatteryInfoAct->GetBatteryInfo(batteryExpInfoPckg, expStat);	
-		CActiveScheduler::Start();
-		__UHEAP_RESET;
-	#endif
-	
-	//test GetBatteryInfo
-	INFO_PRINTF1(_L("Test GetBatteryInfo"));
-	expStat=KErrNone;
-	GetBatteryInfoAct->GetBatteryInfo(batteryExpInfoPckg, expStat, ETrue);
-	CActiveScheduler::Start();
-		
-	//wait for 3 secs then re-test.  State should have changed.	
-	User::After(3000000);
-
-	expStat=KErrNone;
-	BatteryExpInfo.iStatus=CTelephony::EPoweredByBattery;
-	BatteryExpInfo.iChargeLevel=2;
-	GetBatteryInfoAct->GetBatteryInfo(batteryExpInfoPckg, expStat);	
-	CActiveScheduler::Start();
-	
-	//wait for 3 secs then re-test.  State should have changed.
-	User::After(3000000);
-
-	expStat=KErrGeneral;
-	BatteryExpInfo.iStatus=CTelephony::EPoweredByBattery;
-	BatteryExpInfo.iChargeLevel=20;
-	GetBatteryInfoAct->GetBatteryInfo(batteryExpInfoPckg, expStat);	
-	CActiveScheduler::Start();
-	
-	//Test cancel
-	User::After(3000000);
-	TInt cancelerr = iTelephony->CancelAsync(CTelephony::EGetBatteryInfoCancel);
-	TEST1(cancelerr == KErrNotFound, ETrue);
-	INFO_PRINTF1(_L("Test Cancel for GetBatteryInfo"));
-	GetBatteryInfoAct->GetBatteryInfo(batteryExpInfoPckg, expStat);
-	CTestCanceller* canceller = GetBatteryInfoAct->RetrieveCanceller();
-	canceller->Call();
-	CActiveScheduler::Start();	
-	TEST1(GetBatteryInfoAct->iStatus.Int() == KErrCancel || GetBatteryInfoAct->iStatus.Int() == KErrNone, ETrue);
-
-	CleanupStack::PopAndDestroy(); // GetBatteryInfoAct
-	return TestStepResult() ;
-}
-
-//=====================================================
-//
-//	Class to get battery info active object
-//
-//=====================================================
-
-CTestGetBatteryInfoAct* CTestGetBatteryInfoAct::NewLC(CEtelIsvTestStep* aTestStep, CTelephony* aTelephony)
-//Factory constructor
-	{
-	CTestGetBatteryInfoAct* obj = new(ELeave) CTestGetBatteryInfoAct(aTestStep, aTelephony);
-	CleanupStack::PushL(obj);
-	obj->ConstructL();
-	return obj;
-	}
-
-CTestGetBatteryInfoAct::CTestGetBatteryInfoAct(CEtelIsvTestStep* aTestStep, CTelephony* aTelephony)
-	: CEtelIsvActBase(aTestStep, aTelephony),
-	  iBatteryInfoBuff(iBatteryInfo),
-	  iBatteryInfoPckg(iBatteryInfo)
-	{  
-	}
-
-void CTestGetBatteryInfoAct::ConstructL()
-	{
-	iCanceller = new(ELeave) CTestCanceller(this);
-	CActiveScheduler::Add(this);
-	}
-
-CTestGetBatteryInfoAct::~CTestGetBatteryInfoAct()
-	{  
-	Cancel();	// if any Req outstanding, calls DoCancel() to cleanup.
-	delete iCanceller;
-	}
-
-void CTestGetBatteryInfoAct::DoCancel()
-	{
-	iTelephony->CancelAsync(CTelephony::EGetBatteryInfoCancel);
-	}
-
-void CTestGetBatteryInfoAct::GetBatteryInfo(TDes8& aBatteryExpInfoPckg, TRequestStatus aExpStat, TBool aCheckConcurrency)
-	{
-	iBatteryExpInfoPckg=&aBatteryExpInfoPckg;
-	iExpStat = aExpStat;
-	
-	TDes8* data;
-	if (iTestStep->iBufferMode)
-		{
-		data = &iBatteryInfoBuff;
-		}
-	else
-		{
-		data = &iBatteryInfoPckg;
-		}
-	
-	iTelephony->GetBatteryInfo(iStatus, *data);
-	
-	if(aCheckConcurrency)
-		{
-		TRequestStatus tmpStatus;
-		iTelephony->GetBatteryInfo(tmpStatus, *data);
-		User::WaitForRequest(tmpStatus);
-		iTestStep->TEST1(tmpStatus.Int() == KErrInUse, ETrue);
-		}
-		
-	SetActive();
-	}
-
-void CTestGetBatteryInfoAct::RunL()
-	{ 
-	// ActiveScheduler will have set status to KRequestComplete, just before
-	// calling this RunL().
-	CTelephony::TBatteryInfoV1Pckg& batteryExpInfoPckg = REINTERPRET_CAST(CTelephony::TBatteryInfoV1Pckg&, *iBatteryExpInfoPckg);
-	
-	//only supports V1 at present
-	CTelephony::TBatteryInfoV1& batteryExpInfo = (batteryExpInfoPckg)();	
-
-	iTestStep->TEST1(iStatus.Int()==iExpStat.Int(), ETrue);
-	
-	if(iStatus.Int() == KErrNone)
-		{
-		CTelephony::TBatteryInfoV1* data;
-		if (iTestStep->iBufferMode)
-			{
-			data = reinterpret_cast<CTelephony::TBatteryInfoV1*> ( &iBatteryInfoBuff() );
-			}
-		else
-			{
-			data = reinterpret_cast<CTelephony::TBatteryInfoV1*> ( &iBatteryInfoPckg() );
-			}
-		    
-		iTestStep->TEST1(data->iStatus==batteryExpInfo.iStatus, ETrue);
-		iTestStep->TEST1(data->iChargeLevel==batteryExpInfo.iChargeLevel, ETrue);
-		iTestStep->PrintBatteryInfo(*data);
-		}
-	else
-		{
-		iTestStep->INFO_PRINTF2(_L("Error for GetBatteryInfo: %d"), iStatus.Int() );
-		}
-
-	iTestStep->INFO_PRINTF1(_L(""));
-	CActiveScheduler::Stop();
-	}
-
-CTestGetSignalStrength::CTestGetSignalStrength()
-/** Each test step initialises it's own name
-*/
-{
-	// store the name of this test case
-	// this is the name that is used by the script file
-	SetTestStepName(_L("TestGetSignalStrength"));
-}
-
-/**
-*
-@SYMTestCaseID Etel3rdParty 6.1
-@SYMTestCaseDesc Test GetSignalStrength 3rd party API
-@SYMFssID SGL.GT0166.054 v1.3 A2_Telephony_Functional_Specification.doc, REQ 2116.??
-*
-*/ 
-
-TVerdict CTestGetSignalStrength::doTestStepL()
-	{
-	INFO_PRINTF1(_L("Test retrieval of Signal Strength information "));
-
-	//Set test number
-	SetTestNumber(6);
-	//Set expected result values
-	TRequestStatus expStat=KErrNone;
-	CTelephony::TSignalStrengthV1 ExpSignalStrength;
-	ExpSignalStrength.iBar=3;
-	ExpSignalStrength.iSignalStrength=-51;
-	CTelephony::TSignalStrengthV1Pckg expSignalStrengthPckg(ExpSignalStrength);
-	CTestGetSignalStrengthAct* GetSignalStrengthAct = CTestGetSignalStrengthAct::NewLC(this, iTelephony);
-
-	#if defined(_DEBUG)
-	//test OOM
-		INFO_PRINTF1(_L("Test OOM for GetSignalStrength"));
-		expStat=KErrNoMemory;
-		__UHEAP_FAILNEXT(1);
-		GetSignalStrengthAct->GetSignalStrength(expSignalStrengthPckg, expStat);	
-		CActiveScheduler::Start();
-		__UHEAP_RESET;
-	#endif
-
-	//Start GetSignalStrength AO
-	INFO_PRINTF1(_L("Test GetSignalStrength"));
-	expStat=KErrNone;
-	GetSignalStrengthAct->GetSignalStrength(expSignalStrengthPckg, expStat, ETrue);	
-	CActiveScheduler::Start();
-
-	User::After(3000000);
-	//wait for 3 secs and re-test
-	expStat=KErrNotSupported;
-	GetSignalStrengthAct->GetSignalStrength(expSignalStrengthPckg, expStat);	
-	CActiveScheduler::Start();
-	
-	//Test cancel
-	User::After(3000000);
-	TInt cancelerr = iTelephony->CancelAsync(CTelephony::EGetSignalStrengthCancel);
-	TEST1(cancelerr == KErrNotFound, ETrue);
-	INFO_PRINTF1(_L("Test Cancel for GetSignalStrength"));
-	GetSignalStrengthAct->GetSignalStrength(expSignalStrengthPckg, expStat);
-	CTestCanceller* canceller = GetSignalStrengthAct->RetrieveCanceller();
-	canceller->Call();
-	CActiveScheduler::Start();	
-	TEST1(GetSignalStrengthAct->iStatus.Int() == KErrCancel || GetSignalStrengthAct->iStatus.Int() == KErrNone, ETrue);
-
-	CleanupStack::PopAndDestroy(); //GetSignalStrengthAct 
-	return TestStepResult() ;
-}
-
-//=====================================================
-//
-//	Class to get signal strength active object
-//
-//=====================================================
-CTestGetSignalStrengthAct* CTestGetSignalStrengthAct::NewLC(CEtelIsvTestStep* aTestStep, CTelephony* aTelephony, TBool aUseMacros)
-//Factory constructor
-	{
-	CTestGetSignalStrengthAct* obj = new(ELeave) CTestGetSignalStrengthAct(aTestStep, aTelephony, aUseMacros);
-	CleanupStack::PushL(obj);
-	obj->ConstructL();
-	return obj;
-	}
-	
-CTestGetSignalStrengthAct::CTestGetSignalStrengthAct(CEtelIsvTestStep* aTestStep, CTelephony* aTelephony, TBool aUseMacros)
-	: CEtelIsvActBase(aTestStep, aTelephony),
-	iUseMacros(aUseMacros),
-	iSignalStrengthBuff(iSignalStrength),
-	iSignalStrengthPckg(iSignalStrength)
-	{  
-	}
-
-void CTestGetSignalStrengthAct::ConstructL()
-	{ 
-	iCanceller = new(ELeave) CTestCanceller(this);
-	CActiveScheduler::Add(this);
-	}
-
-CTestGetSignalStrengthAct::~CTestGetSignalStrengthAct()
-	{  
-	Cancel();	// if any Req outstanding, calls DoCancel() to cleanup.
-	delete iCanceller;
-	}
-
-void CTestGetSignalStrengthAct::DoCancel()
-	{
-	iTelephony->CancelAsync(CTelephony::EGetSignalStrengthCancel);
-	}
-
-void CTestGetSignalStrengthAct::GetSignalStrength(TDes8& aExpSignalStrengthPckg, TRequestStatus aExpStat, TBool aCheckConcurrency)
-	{
-	iExpStat = aExpStat;
-	iExpSignalStrengthPckg=&aExpSignalStrengthPckg;
-	
-	TDes8* data;
-	if (iTestStep->iBufferMode)
-		{
-		data = &iSignalStrengthBuff;
-		}
-	else
-		{
-		data = &iSignalStrengthPckg;
-		}
-	
-	iTelephony->GetSignalStrength(iStatus, *data);
-	
-	if(aCheckConcurrency)
-		{
-		TRequestStatus tmpStatus;
-		iTelephony->GetSignalStrength(tmpStatus, *data);
-		User::WaitForRequest(tmpStatus);
-		iTestStep->TEST1(tmpStatus.Int() == KErrInUse, ETrue);
-		}		
-		
-	SetActive();
-	}
-
-void CTestGetSignalStrengthAct::RunL()
-	{ 
-	// ActiveScheduler will have set status to KRequestComplete, just before
-	// calling this RunL().
-	CTelephony::TSignalStrengthV1Pckg& expSignalStrengthPckg = REINTERPRET_CAST(CTelephony::TSignalStrengthV1Pckg&, *iExpSignalStrengthPckg);
-	
-	//only supports V1 at present
-	CTelephony::TSignalStrengthV1& expSignalStrength = (expSignalStrengthPckg)();	
-
-	if(iUseMacros)
-		{
-		iTestStep->TEST1(iStatus.Int()==iExpStat.Int(), ETrue);
-		}
-	
-	if(iStatus.Int() == KErrNone)
-		{
-		if(iUseMacros)
-			{
-			CTelephony::TSignalStrengthV1* data;
-			if (iTestStep->iBufferMode)
-				{
-				data = reinterpret_cast<CTelephony::TSignalStrengthV1*> ( &iSignalStrengthBuff() );
-				}
-			else
-				{
-				data = reinterpret_cast<CTelephony::TSignalStrengthV1*> ( &iSignalStrengthPckg() );
-				}
-			    
-			iTestStep->TEST1(data->iBar==expSignalStrength.iBar, ETrue);
-			iTestStep->TEST1(data->iSignalStrength==expSignalStrength.iSignalStrength, ETrue);
-			iTestStep->INFO_PRINTF2(_L("Signal strength (in display bars) : %d"), expSignalStrength.iBar);
-			iTestStep->INFO_PRINTF2(_L("Signal strength (in dBm) : %d"), expSignalStrength.iSignalStrength);
-			}
-		}
-	else
-		{
-		if(iUseMacros)
-			{
-			iTestStep->INFO_PRINTF2(_L("Error for GetSignalStrength: %d"), iStatus.Int() );
-			}
-		}
-
-	CActiveScheduler::Stop();
-	if(iUseMacros)
-		{
-		iTestStep->INFO_PRINTF1(_L(""));
-		}
-	}
-
-CTestGetLockInfo::CTestGetLockInfo()
-/** Each test step initialises it's own name
-*/
-{
-	// store the name of this test case
-	// this is the name that is used by the script file
-	SetTestStepName(_L("TestGetLockInfo"));
-}
-
-/**
-*
-@SYMTestCaseID Etel3rdParty 7.1
-@SYMTestCaseDesc Test GetLockInfo 3rd party API
-@SYMFssID SGL.GT0166.054 v1.3 A2_Telephony_Functional_Specification.doc, REQ 2116.1.8
-*
-*/ 
-
-TVerdict CTestGetLockInfo::doTestStepL()
-	{
-	INFO_PRINTF1(_L("Test retrieval of current status of PIN1/PIN2 "));
-	//Set test number
-	SetTestNumber(7);
-	
-	//Set expected result values
-	TRequestStatus expStat=KErrNone;
-	CTelephony::TIccLockInfoV1 ExpLockInfo;
-	ExpLockInfo.iSetting = CTelephony::ELockSetDisabled;
-	ExpLockInfo.iStatus = CTelephony::EStatusUnlocked;
-	CTelephony::TIccLockInfoV1Pckg expLockInfoPckg(ExpLockInfo);
-	CTestGetLockInfoAct* GetLockInfoAct = CTestGetLockInfoAct::NewLC(this, iTelephony);
-
-	CTelephony::TIccLock Lock;
-	#if defined(_DEBUG)
-	//test OOM
-		INFO_PRINTF1(_L("Test OOM for GetLockInfo"));
-		expStat=KErrNoMemory;
-		Lock=CTelephony::ELockPin1;
-		__UHEAP_FAILNEXT(1);
-		GetLockInfoAct->GetLockInfo(Lock, expLockInfoPckg, expStat);
-		CActiveScheduler::Start();
-		__UHEAP_RESET;
-	#endif
-	
-	//Start GetLockinfo AO for pin1
-	expStat=KErrNone;
-	INFO_PRINTF1(_L("Test GetLockInfo"));
-	Lock=CTelephony::ELockPin1;
-	INFO_PRINTF1(_L("current status of PIN1 "));
-	GetLockInfoAct->GetLockInfo(Lock, expLockInfoPckg, expStat, ETrue);
-	CActiveScheduler::Start();
-
-	//Start GetLockinfo AO for pin2
-	Lock=CTelephony::ELockPin2;
-	INFO_PRINTF1(_L("current status of PIN2 "));
-	ExpLockInfo.iSetting = CTelephony::ELockSetEnabled;
-	ExpLockInfo.iStatus = CTelephony::EStatusLocked;
-	GetLockInfoAct->GetLockInfo(Lock, expLockInfoPckg, expStat);
-	CActiveScheduler::Start();
-	
-	//Test cancel
-	INFO_PRINTF1(_L("Test Cancel for GetLockInfo"));
-	TInt cancelerr = iTelephony->CancelAsync(CTelephony::EGetLockInfoCancel);
-	TEST1(cancelerr == KErrNotFound, ETrue);
-	GetLockInfoAct->GetLockInfo(Lock, expLockInfoPckg, expStat);
-	CTestCanceller* canceller = GetLockInfoAct->RetrieveCanceller();
-	canceller->Call();
-	CActiveScheduler::Start();
-	TEST1(GetLockInfoAct->iStatus.Int() == KErrCancel || GetLockInfoAct->iStatus.Int() == KErrNone, ETrue);
-
-	CleanupStack::PopAndDestroy(); //GetLockInfoAct 
-	return TestStepResult() ;
-}
-
-//=====================================================
-//
-//	Class to get lock info active object
-//
-//=====================================================
-CTestGetLockInfoAct* CTestGetLockInfoAct::NewLC(CEtelIsvTestStep* aTestStep, CTelephony* aTelephony)
-//Factory constructor
-	{
-	CTestGetLockInfoAct* obj = new(ELeave) CTestGetLockInfoAct(aTestStep, aTelephony);
-	CleanupStack::PushL(obj);
-	obj->ConstructL();
-	return obj;
-	}
-	
-CTestGetLockInfoAct::CTestGetLockInfoAct(CEtelIsvTestStep* aTestStep, CTelephony* aTelephony)
-	: CEtelIsvActBase(aTestStep, aTelephony),
-	iLockInfoBuff(iLockInfo),
-	iLockInfoPckg(iLockInfo)
-	{  
-	}
-
-void CTestGetLockInfoAct::ConstructL()
-	{  
-	iCanceller = new(ELeave) CTestCanceller(this);
-	CActiveScheduler::Add(this);
-	}
-
-CTestGetLockInfoAct::~CTestGetLockInfoAct()
-	{  
-	Cancel();	// if any Req outstanding, calls DoCancel() to cleanup.
-	delete iCanceller;
-	}
-
-void CTestGetLockInfoAct::DoCancel()
-	{
-	iTelephony->CancelAsync(CTelephony::EGetLockInfoCancel);
-	}
-
-void CTestGetLockInfoAct::GetLockInfo(CTelephony::TIccLock aLock, TDes8& aExpLockInfoPckg, TRequestStatus aExpStat, TBool aCheckConcurrency)
-	{
-	iExpStat = aExpStat;
-	iExpLockInfoPckg=&aExpLockInfoPckg;
-	iLock = aLock;
-
-	TDes8* data;
-	if (iTestStep->iBufferMode)
-		{
-		data = &iLockInfoBuff;
-		}
-	else
-		{
-		data = &iLockInfoPckg;
-		}
-
-	iTelephony->GetLockInfo(iStatus ,aLock ,*data);
-	
-	if(aCheckConcurrency)
-		{
-		TRequestStatus tmpStatus;
-		iTelephony->GetLockInfo(tmpStatus ,aLock ,*data);
-		User::WaitForRequest(tmpStatus);
-		iTestStep->TEST1(tmpStatus.Int() == KErrInUse, ETrue);
-		}
-		
-	SetActive();
-	}
-
-void CTestGetLockInfoAct::RunL()
-	{ 
-	// ActiveScheduler will have set status to KRequestComplete, just before
-	// calling this RunL().
-	CTelephony::TIccLockInfoV1Pckg& expLockInfoPckg = REINTERPRET_CAST(CTelephony::TIccLockInfoV1Pckg&, *iExpLockInfoPckg);
-	
-	//only supports V1 at present
-	CTelephony::TIccLockInfoV1& expLockInfo = (expLockInfoPckg)();	
-
-	iTestStep->TEST1(iStatus.Int()==iExpStat.Int(),1);
-	
-	if(iStatus.Int() == KErrNone)
-		{
-		CTelephony::TIccLockInfoV1* data;
-		if (iTestStep->iBufferMode)
-			{
-			data = reinterpret_cast<CTelephony::TIccLockInfoV1*> ( &iLockInfoBuff() );
-			}
-		else
-			{
-			data = reinterpret_cast<CTelephony::TIccLockInfoV1*> ( &iLockInfoPckg() );
-			}
-		    
-		iTestStep->TEST1(data->iSetting==expLockInfo.iSetting,1);
-		iTestStep->TEST1(data->iStatus==expLockInfo.iStatus,1);
-		iTestStep->PrintLockInfo(iLock, data->iSetting, data->iStatus);
-		}
-	else
-		{
-		iTestStep->INFO_PRINTF2(_L("Error for GetLockInfo: %d"), iStatus.Int() );
-		}
-
-	CActiveScheduler::Stop();
-	iTestStep->INFO_PRINTF1(_L(""));
-	}
-
-CTestSendDTMFTones::CTestSendDTMFTones()
-/** Each test step initialises it's own name
-*/
-{
-	// store the name of this test case
-	// this is the name that is used by the script file
-	SetTestStepName(_L("TestSendDTMFTones"));
-}
-
-/**
-*
-@SYMTestCaseID Etel3rdParty 8.1
-@SYMTestCaseDesc Test SendDTMFTones 3rd party API
-@SYMFssID SGL.GT0166.054 v1.3 A2_Telephony_Functional_Specification.doc, REQ 2116.1.9
-*
-*/ 
-
-
-TVerdict CTestSendDTMFTones::doTestStepL()
-	{
-	SetTestNumber(8);
-
-	INFO_PRINTF1(_L("Test sending of DTMF tones "));
-	
-	//set test data to transmit
-	_LIT(KDtmfString0,"45p6789A");
-	
-	//make a call to send the DTMF through
-	
-	_LIT(KGoodNumber,"1789");	
-	//Set the call parameters for call 
-	CTelephony::TCallParamsV1 callParams1;
-	callParams1.iIdRestrict = CTelephony::ESendMyId;
-	CTelephony::TCallParamsV1Pckg callParamsPckg1(callParams1);	
-	
-	TTestCallParams testCallParams;
-	testCallParams.iLine = CTelephony::EVoiceLine;
-	testCallParams.iCallParamsV1Pckg = &callParamsPckg1;
-	testCallParams.iTelAddress.iTelNumber = KGoodNumber;
-	testCallParams.iExpStat = KErrNone;
-		
-	//make the call
-	CTestDialNewCallAct* testDialNewCallAct = CTestDialNewCallAct::NewLC(this, iTelephony);	
-	testCallParams.iCallId = CTelephony::EISVMaxNumOfCalls;
-	testDialNewCallAct->TestDialNewCall(testCallParams);
-	CActiveScheduler::Start();
-	CleanupStack::PopAndDestroy(testDialNewCallAct);	
-	
-	//wait for call status to be connected
-	CTelephony::TCallStatusV1 CallStatusV1;
-	CTelephony::TCallStatusV1Pckg CallStatusPckg(CallStatusV1);
-	iTelephony->GetCallStatus(testCallParams.iCallId, CallStatusPckg);
-	TEST1(CallStatusV1.iStatus == CTelephony::EStatusConnected,1);
- 
-	TRequestStatus expStat=KErrNone;	
-	CTestSendDTMFTonesAct*SendDTMFAct = CTestSendDTMFTonesAct::NewLC(this, iTelephony);
-
-	#if defined(_DEBUG)
-	//test OOM
-		INFO_PRINTF1(_L("Test OOM for SendDTMFTones")); 
-		expStat=KErrNoMemory;
-		__UHEAP_FAILNEXT(1);
-		SendDTMFAct->SendDTMFTone(KDtmfString0, expStat);
-		CActiveScheduler::Start();	
-		__UHEAP_RESET;
-	#endif
-		
-	//set expected result values for DTMF	
-	expStat=KErrNone;
-	SendDTMFAct->SendDTMFTone(KDtmfString0, expStat, ETrue);
-	CActiveScheduler::Start();
-
-	//Test cancel
-	INFO_PRINTF1(_L("Test Cancel for SendDTMFTones"));
-	TInt cancelerr = iTelephony->CancelAsync(CTelephony::ESendDTMFTonesCancel);
-	TEST1(cancelerr == KErrNotFound, ETrue);
-	SendDTMFAct->SendDTMFTone(KDtmfString0, expStat);
-	CTestCanceller* canceller = SendDTMFAct->RetrieveCanceller();
-	canceller->Call();
-	CActiveScheduler::Start();	
-	TEST1(SendDTMFAct->iStatus.Int() == KErrCancel, ETrue);
-
-	CTestHangupAct* testHangupAct = CTestHangupAct::NewLC(this, iTelephony);	
-	//Hangup call
-	testHangupAct->TestHangup(testCallParams);
-	CActiveScheduler::Start();
-	CleanupStack::PopAndDestroy(testHangupAct);
-
-	
-	CleanupStack::PopAndDestroy(SendDTMFAct); //SendDTMFAct 
-	return TestStepResult() ;
-}
-
-CTestSendDTMFTonesAct* CTestSendDTMFTonesAct::NewLC(CEtelIsvTestStep* aTestStep, CTelephony* aTelephony)
-//Factory constructor
-	{
-	CTestSendDTMFTonesAct* obj = new(ELeave) CTestSendDTMFTonesAct(aTestStep, aTelephony);
-	CleanupStack::PushL(obj);
-	obj->ConstructL();
-	return obj;
-	}
-	
-CTestSendDTMFTonesAct::CTestSendDTMFTonesAct(CEtelIsvTestStep* aTestStep, CTelephony* aTelephony)
-	: CEtelIsvActBase(aTestStep, aTelephony)
-	{  
-	}
-
-void CTestSendDTMFTonesAct::ConstructL()
-	{ 
-	iCanceller = new(ELeave) CTestCanceller(this);
-	CActiveScheduler::Add(this);
-	}
-
-CTestSendDTMFTonesAct::~CTestSendDTMFTonesAct()
-	{  
-	Cancel();	// if any Req outstanding, calls DoCancel() to cleanup.
-	delete iCanceller;
-	}
-
-void CTestSendDTMFTonesAct::DoCancel()
-	{
-	iTelephony->CancelAsync(CTelephony::ESendDTMFTonesCancel);
-	}
-
-void CTestSendDTMFTonesAct::SendDTMFTone(const TDesC& aTones, TRequestStatus aExpStat, TBool aCheckConcurrency)
-	{
-	iExpStat = aExpStat;
-	
-	iTelephony->SendDTMFTones(iStatus, aTones);
-	
-	if(aCheckConcurrency)
-		{
-		TRequestStatus tmpStatus;
-		iTelephony->SendDTMFTones(tmpStatus, aTones);
-		User::WaitForRequest(tmpStatus);
-		iTestStep->TEST1(tmpStatus.Int() == KErrInUse, ETrue);
-		}
-		
-	SetActive();
-	}
-
-void CTestSendDTMFTonesAct::RunL()
-	{ 
-	// ActiveScheduler will have set status to KRequestComplete, just before
-	// calling this RunL().
-
-	iTestStep->TEST1(iStatus.Int()==iExpStat.Int(), 1);
-	
-	CActiveScheduler::Stop();
-	iTestStep->INFO_PRINTF1(_L(""));
-	}
-
-CTestFlightModeWithPublishSubscribe::CTestFlightModeWithPublishSubscribe()
-/** Each test step initialises it's own name
-*/
-{
-	// store the name of this test case
-	// this is the name that is used by the script file
-	SetTestStepName(_L("TestFlightModeWithPublishSubscribe"));
-}
-
-/**
-*
-@SYMTestCaseID Etel3rdParty 3.1
-@SYMTestCaseDesc Test GetFlightMode 3rd party API
-@SYMFssID SGL.GT0166.054 v1.3 A2_Telephony_Functional_Specification.doc, REQ 2116.4.3
-*
-*/ 
-
-
-TVerdict CTestFlightModeWithPublishSubscribe::doTestStepL()
-	{
-	INFO_PRINTF1(_L("Test retrieval of flight mode with publish and subscribe"));
-
-	RProperty phonePowerProperty;
-	User::LeaveIfError(phonePowerProperty.Attach(KUidSystemCategory, KUidPhonePwr.iUid));
-	CleanupClosePushL(phonePowerProperty);	
-			
-	TRequestStatus status;
-	phonePowerProperty.Subscribe(status);
-	User::LeaveIfError(phonePowerProperty.Set(KUidSystemCategory,KUidPhonePwr.iUid,ESAPhoneOn));
-	User::WaitForRequest(status);
-	TEST(status.Int() == KErrNone);	
-
-	//Set up the data
-	CTelephony::TFlightModeV1 FlightMode;
-	CTelephony::TFlightModeV1Pckg FlightModePckg(FlightMode);
-	TPckgBuf<CTelephony::TFlightModeV1> FlightModeBuff(FlightMode);
-	TDes8* FlightModeData;
-	if (iBufferMode)
-		{
-		FlightModeData = &FlightModeBuff;
-		}
-	else
-		{
-		FlightModeData = &FlightModePckg;
-		}
-	CTelephony::TFlightModeV1& FlightModeResult = 
-		reinterpret_cast<CTelephony::TFlightModeV1&> ( const_cast<TUint8&> ( *FlightModeData->Ptr() ) );
-	
-	//Get current flight mode
-	TRequestStatus reqStat=KErrNone;
-	iTelephony->GetFlightMode(reqStat, *FlightModeData);
-	User::WaitForRequest(reqStat);
-
-	//check results
-	TEST1(reqStat.Int() == KErrNone, ETrue);
-	TEST1(FlightModeResult.iFlightModeStatus == CTelephony::EFlightModeOff, ETrue);
-	if (FlightModeResult.iFlightModeStatus == CTelephony::EFlightModeOff)
-		INFO_PRINTF1(_L("The mobile radio interface and bluetooth is currently on"));
-
-	phonePowerProperty.Subscribe(status);
-	User::LeaveIfError(phonePowerProperty.Set(KUidSystemCategory,KUidPhonePwr.iUid,ESAPhoneOff));
-	User::WaitForRequest(status);
-	TEST(status.Int() == KErrNone);	
-	
-	//Get current flight mode
-	iTelephony->GetFlightMode(reqStat, *FlightModeData);
-	User::WaitForRequest(reqStat);
-
-	//check results
-	TEST1(reqStat.Int() == KErrNone, ETrue);
-	TEST1(FlightModeResult.iFlightModeStatus == CTelephony::EFlightModeOn, ETrue);
-	if (FlightModeResult.iFlightModeStatus == CTelephony::EFlightModeOn)
-		INFO_PRINTF1(_L("The mobile radio interface and bluetooth is currently off"));		
-	CleanupStack::PopAndDestroy(&phonePowerProperty);
-	return TestStepResult() ;
-}
-
-CTestPhoneFuncFlightModeOnWithPublishSubscribe::CTestPhoneFuncFlightModeOnWithPublishSubscribe()
-/** Each test step initialises it's own name
-*/
-{
-	// store the name of this test case
-	// this is the name that is used by the script file
-	SetTestStepName(_L("TestPhoneFuncFlightModeOnWithPublishSubscribe"));
-}
-
-/**
-@SYMTestCaseID Etel3rdParty 8.2, TestPhoneFuncFlightModeOn
-@SYMTestCaseDesc Test GetSignalStrength and SendDTMFTone 3rd party APIs
-@SYMFssID SGL.GT0166.054 v1.3 A2_Telephony_Functional_Specification.doc, REQ 2116.1.?/9
-*/
-
-enum TVerdict CTestPhoneFuncFlightModeOnWithPublishSubscribe::doTestStepL()
-{
-	INFO_PRINTF1(_L("START TEST 8.2"));	
-	 
-	INFO_PRINTF1(_L(" TEST: Signal Strength information not retrievable when flight mode on with publish and subscribe "));
-
-	//Set test number
-	SetTestNumber(34);
-	
-	// Set expected status to KErrAccessDenied as this should be returned in
-	// the case where flight mode is on.
-	TRequestStatus expStat=KErrAccessDenied;
-	CTelephony::TSignalStrengthV1 ExpSignalStrength;
-	ExpSignalStrength.iBar=3;
-	ExpSignalStrength.iSignalStrength=-51;
-	CTelephony::TSignalStrengthV1Pckg expSignalStrengthPckg(ExpSignalStrength);
-	CTestGetSignalStrengthAct* GetSignalStrengthAct = CTestGetSignalStrengthAct::NewLC(this, iTelephony);
-
-	// Set up phonePowerProperty variable so that flight mode can be manipulated.
-	RProperty phonePowerProperty;
-	User::LeaveIfError(phonePowerProperty.Attach(KUidSystemCategory, KUidPhonePwr.iUid));
-	CleanupClosePushL(phonePowerProperty);	
-
-	//Switch flight mode on (ie radio mode off)
-	TRequestStatus status;
-	phonePowerProperty.Subscribe(status);
-	User::LeaveIfError(phonePowerProperty.Set(KUidSystemCategory,KUidPhonePwr.iUid,ESAPhoneOff));
-	User::WaitForRequest(status);
-	TEST(status.Int() == KErrNone);	
-
-	// Make a call to the 3rd Party API.
-	GetSignalStrengthAct->GetSignalStrength(expSignalStrengthPckg, expStat);	
-	CActiveScheduler::Start();
-
-	
-	INFO_PRINTF1(_L("Test sending of DTMF tones disallowed when flight mode on "));
-	
-	//set test data to transmit
-	_LIT(KDtmfString0,"45p6789A");
-	
-	// Switch flight mode off so that a call can be set up. 
-	phonePowerProperty.Subscribe(status);
-	User::LeaveIfError(phonePowerProperty.Set(KUidSystemCategory,KUidPhonePwr.iUid,ESAPhoneOn));
-	User::WaitForRequest(status);
-	TEST(status.Int() == KErrNone);	
- 
- 	//Get current flight mode
-	TRequestStatus reqStat=KErrNone;
-	CTelephony::TFlightModeV1 FlightMode;
-	CTelephony::TFlightModeV1Pckg FlightModePckg(FlightMode);	
-	iTelephony->GetFlightMode(reqStat, FlightModePckg);
-	User::WaitForRequest(reqStat);
-
-	//check results
-	TEST1(reqStat.Int() == KErrNone, ETrue);
-	TEST1(FlightMode.iFlightModeStatus == CTelephony::EFlightModeOff, ETrue);
-	if (FlightMode.iFlightModeStatus == CTelephony::EFlightModeOff)
-		INFO_PRINTF1(_L("The mobile radio interface and bluetooth is currently on"));
-	
- 	// Switch flight mode on (ie radio mode off) to test that 
- 	// DTMF Tone sending fails is disallowed in flight mode. 
-	phonePowerProperty.Subscribe(status);
-	User::LeaveIfError(phonePowerProperty.Set(KUidSystemCategory,KUidPhonePwr.iUid,ESAPhoneOff));
-	User::WaitForRequest(status);
-	TEST(status.Int() == KErrNone);	
-
- 
-	//set expected result values for DTMF	
-	CTestSendDTMFTonesAct*SendDTMFAct = CTestSendDTMFTonesAct::NewLC(this, iTelephony);
-	expStat=KErrAccessDenied;
-	SendDTMFAct->SendDTMFTone(KDtmfString0, expStat);
-	CActiveScheduler::Start();
- 
- 	// Switch flight mode off (ie radio mode on)  
- 	// so that the call can be hung up.
-	phonePowerProperty.Subscribe(status);
-	User::LeaveIfError(phonePowerProperty.Set(KUidSystemCategory,KUidPhonePwr.iUid,ESAPhoneOn));
-	User::WaitForRequest(status);
-	TEST(status.Int() == KErrNone);	
-
-	
-	INFO_PRINTF1(_L("END TEST 8.2"));
-	
-	 
-	//CleanupStack::PopAndDestroy(testHangupAct);
-	CleanupStack::PopAndDestroy(SendDTMFAct); //SendDTMFAct 
-	//CleanupStack::PopAndDestroy(testDialNewCallAct);
-	CleanupStack::PopAndDestroy(&phonePowerProperty);	 
-	CleanupStack::PopAndDestroy(GetSignalStrengthAct);
-	return TestStepResult() ;	  
-	 
-}
-
+// Copyright (c) 2003-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:
+// Tests for ETL 3rd Party Phone APIs  
+// 
+//
+
+/**
+ @file
+*/
+
+#include "TE_EtelIsvbase.h"
+#include "TE_EtelIsvPhoneSettings.h"
+#include "TE_EtelIsvCallFunc.h"
+
+ 
+
+CTestGetPhoneId::CTestGetPhoneId()
+/** Each test step initialises it's own name
+*/
+{
+	// store the name of this test case
+	// this is the name that is used by the script file
+	SetTestStepName(_L("TestGetPhoneId"));
+}
+
+/**
+*
+@SYMTestCaseID Etel3rdParty 1.1
+@SYMTestCaseDesc Test GetPhoneId 3rd party API
+@SYMFssID SGL.GT0166.054 v1.3 A2_Telephony_Functional_Specification.doc, REQ 2116.1.1
+*/ 
+
+TVerdict CTestGetPhoneId::doTestStepL()
+{
+	SetTestNumber(0);
+
+	//expected data
+	_LIT16(manufacturerid, "PSION");
+	_LIT16(modelid, "666");
+	_LIT16(serialid, "1234567890");
+	CTelephony::TPhoneIdV1 ExpectedPhoneId;
+	ExpectedPhoneId.iManufacturer=manufacturerid;
+	ExpectedPhoneId.iModel=modelid;
+	ExpectedPhoneId.iSerialNumber=serialid;
+	TRequestStatus expStat=KErrNone;
+	CTelephony::TPhoneIdV1Pckg ExpectedPhoneIdPckg(ExpectedPhoneId);
+	
+	CTestGetPhoneIdAct* GetPhoneIdAct = CTestGetPhoneIdAct::NewLC(this, iTelephony);
+
+	#if defined(_DEBUG)
+	//Test OOM
+		INFO_PRINTF1(_L("Test OOM for GetPhoneId"));
+		expStat=KErrNoMemory;
+		__UHEAP_FAILNEXT(1);
+		GetPhoneIdAct->GetPhoneId(ExpectedPhoneIdPckg, expStat);
+		CActiveScheduler::Start();
+		__UHEAP_RESET;
+	#endif
+	
+	//Start GetPhoneID AO	
+	INFO_PRINTF1(_L("Test GetPhoneId"));
+	expStat=KErrNone;
+	GetPhoneIdAct->GetPhoneId(ExpectedPhoneIdPckg, expStat, ETrue);
+	CActiveScheduler::Start();	
+	
+	//Test cancel
+	INFO_PRINTF1(_L("Test Cancel for GetPhoneId"));
+	TInt cancelerr = iTelephony->CancelAsync(CTelephony::EGetPhoneIdCancel);
+	TEST1(cancelerr == KErrNotFound, ETrue);
+	GetPhoneIdAct->GetPhoneId(ExpectedPhoneIdPckg, expStat);	
+	CTestCanceller* canceller = GetPhoneIdAct->RetrieveCanceller();
+	canceller->Call();
+	CActiveScheduler::Start();	
+	TEST1(GetPhoneIdAct->iStatus.Int() == KErrCancel || GetPhoneIdAct->iStatus.Int() == KErrNone, ETrue);
+
+	CleanupStack::PopAndDestroy(); //GetPhoneIdAct
+
+	return TestStepResult();
+}
+
+CTestGetPhoneIdError::CTestGetPhoneIdError()
+/** Each test step initialises it's own name
+*/
+{
+	// store the name of this test case
+	// this is the name that is used by the script file
+	SetTestStepName(_L("TestGetPhoneIdError"));
+}
+
+/**
+*
+@SYMTestCaseID Etel3rdParty 1.2
+@SYMTestCaseDesc Test GetPhoneId 3rd party API - Error scenario
+@SYMFssID SGL.GT0166.054 v1.3 A2_Telephony_Functional_Specification.doc,  REQ 2116.1.1
+*/
+
+TVerdict CTestGetPhoneIdError::doTestStepL()
+{
+	INFO_PRINTF1(_L("Test GetPhoneId with error"));
+	SetTestNumber(1);
+	CTelephony::TPhoneIdV1 ExpectedPhoneId;
+	CTelephony::TPhoneIdV1Pckg ExpectedPhoneIdPckg(ExpectedPhoneId);
+	TRequestStatus expStat=KErrNotFound;
+
+	//Start GetPhoneID AO
+	CTestGetPhoneIdAct* GetPhoneIdAct = CTestGetPhoneIdAct::NewLC(this, iTelephony);
+	GetPhoneIdAct->GetPhoneId(ExpectedPhoneIdPckg, expStat);
+
+	CActiveScheduler::Start();
+	
+	CleanupStack::PopAndDestroy(); //GetPhoneIdAct
+	return TestStepResult();
+}
+
+//=====================================================
+//
+//	Class to get phone ID active object
+//
+//=====================================================
+
+CTestGetPhoneIdAct* CTestGetPhoneIdAct::NewLC(CEtelIsvTestStep* aTestStep, CTelephony* aTelephony, TBool aUseMacros)
+//Factory constructor
+	{
+	CTestGetPhoneIdAct* obj = new(ELeave) CTestGetPhoneIdAct(aTestStep, aTelephony, aUseMacros);
+	CleanupStack::PushL(obj);
+	obj->ConstructL();
+	return obj;
+	}
+CTestGetPhoneIdAct::CTestGetPhoneIdAct(CEtelIsvTestStep* aTestStep, CTelephony* aTelephony, TBool aUseMacros = ETrue)
+	: CEtelIsvActBase(aTestStep, aTelephony), 
+	iUseMacros(aUseMacros),
+	iPhoneIdBuff(iPhoneId),
+	iPhoneIdPckg(iPhoneId)
+	{  
+	}
+
+void CTestGetPhoneIdAct::ConstructL()
+	{  
+	iCanceller = new(ELeave) CTestCanceller(this);
+	CActiveScheduler::Add(this);
+	}
+
+CTestGetPhoneIdAct::~CTestGetPhoneIdAct()
+	{  
+	Cancel();	// if any Req outstanding, calls DoCancel() to cleanup.
+	delete iCanceller;
+	}
+
+void CTestGetPhoneIdAct::DoCancel()
+	{
+	iTelephony->CancelAsync(CTelephony::EGetPhoneIdCancel);
+	}
+	
+void CTestGetPhoneIdAct::GetPhoneId(TDes8& aExpectedPhoneIdPckg, TRequestStatus aExpStat, TBool aCheckConcurrency)
+	{
+	iExpectedPhoneIdPckg=&aExpectedPhoneIdPckg;
+	iExpStat=aExpStat;
+	
+	TDes8* data;
+	if (iTestStep->iBufferMode)
+		{
+		data = &iPhoneIdBuff;
+		}
+	else
+		{
+		data = &iPhoneIdPckg;
+		}
+	
+	iTelephony->GetPhoneId(iStatus, *data);
+	
+	if(aCheckConcurrency)
+		{
+		TRequestStatus tmpStatus;
+		iTelephony->GetPhoneId(tmpStatus, *data);
+		User::WaitForRequest(tmpStatus);
+		iTestStep->TEST1(tmpStatus.Int() == KErrInUse, ETrue);
+		}		
+	SetActive();
+	}
+
+void CTestGetPhoneIdAct::RunL()
+	{ 
+	// ActiveScheduler will have set status to KRequestComplete, just before
+	// calling this RunL().
+	CTelephony::TPhoneIdV1Pckg& GetPhoneIdV1Pckg = REINTERPRET_CAST(CTelephony::TPhoneIdV1Pckg&, *iExpectedPhoneIdPckg);
+	
+	//only supports V1 at present
+	CTelephony::TPhoneIdV1& expectedPhoneId = (GetPhoneIdV1Pckg)();	 
+	
+	if(iUseMacros)
+		{	
+		iTestStep->TEST1(iStatus.Int() == iExpStat.Int(), ETrue);
+		}
+
+	if(iStatus.Int() == KErrNone)
+		{
+		if(iUseMacros)
+			{	
+			const CTelephony::TPhoneIdV1* data;
+			if (iTestStep->iBufferMode)
+				{
+				data = reinterpret_cast<const CTelephony::TPhoneIdV1*> ( &iPhoneIdBuff() );
+				}
+			else
+				{
+				data = reinterpret_cast<const CTelephony::TPhoneIdV1*> ( &iPhoneIdPckg() );
+				}
+		    
+			iTestStep->TEST1(data->iManufacturer == expectedPhoneId.iManufacturer, ETrue);
+			iTestStep->TEST1(data->iModel == expectedPhoneId.iModel, ETrue);
+			iTestStep->TEST1(data->iSerialNumber == expectedPhoneId.iSerialNumber, ETrue);		
+			
+			iTestStep->INFO_PRINTF2(_L("Phone manufacturer: %S"), &(data->iManufacturer) );
+			iTestStep->INFO_PRINTF2(_L("Phone model: %S"), &(data->iModel) );
+			iTestStep->INFO_PRINTF2(_L("Phone serial number: %S"), &(data->iSerialNumber) );
+			}
+		}
+	else
+		{
+		if(iUseMacros)
+			{
+			iTestStep->INFO_PRINTF2(_L("Error for GetPhoneId: %d"), iStatus.Int() );
+			}
+		}
+
+	CActiveScheduler::Stop();
+	}
+
+CTestGetSubscriberId::CTestGetSubscriberId()
+/** Each test step initialises it's own name
+*/
+{
+	// store the name of this test case
+	// this is the name that is used by the script file
+	SetTestStepName(_L("TestGetSubscriberId"));
+}
+
+ 
+ 
+ 
+/**
+*
+@SYMTestCaseID Etel3rdParty 2.1
+@SYMTestCaseDesc Test GetSubscriberId 3rd party API
+@SYMFssID SGL.GT0166.054 v1.3 A2_Telephony_Functional_Specification.doc, REQ 2116.1.2
+*
+*/ 
+
+TVerdict CTestGetSubscriberId::doTestStepL()
+	{
+	//Set test number
+	SetTestNumber(2);
+	
+	//Set expected IMSI value
+	_LIT16(SubscriberId, "56789012345678");
+	CTelephony::TSubscriberIdV1 ExpSubscriberId ;
+	ExpSubscriberId.iSubscriberId=SubscriberId;
+	CTelephony::TSubscriberIdV1Pckg expSubscriberIdPckg(ExpSubscriberId);
+	TRequestStatus expStat=KErrNone;
+	
+	CTestGetSubscriberIdAct* GetSubscriberIdAct = CTestGetSubscriberIdAct::NewLC(this, iTelephony);
+
+	#if defined(_DEBUG)
+	//Test OOM
+		INFO_PRINTF1(_L("Test OOM for GetSubscriberId"));
+		expStat=KErrNoMemory;
+		__UHEAP_FAILNEXT(1);
+		GetSubscriberIdAct->GetSubscriberId(expSubscriberIdPckg, expStat);	
+		CActiveScheduler::Start();
+		__UHEAP_RESET;
+	#endif
+	
+	//Start GetSubscriberID AO
+	INFO_PRINTF1(_L("Test GetSubscriberId"));
+	expStat=KErrNone;
+	GetSubscriberIdAct->GetSubscriberId(expSubscriberIdPckg, expStat, ETrue);	
+	CActiveScheduler::Start();
+
+	//Test cancel
+	INFO_PRINTF1(_L("Test Cancel for GetSubscriberId"));
+	TInt cancelerr = iTelephony->CancelAsync(CTelephony::EGetSubscriberIdCancel);
+	TEST1(cancelerr == KErrNotFound, ETrue);
+	CTestCanceller* canceller = GetSubscriberIdAct->RetrieveCanceller();
+	GetSubscriberIdAct->GetSubscriberId(expSubscriberIdPckg, expStat);	
+	canceller->Call();
+	CActiveScheduler::Start();	
+	TEST1(GetSubscriberIdAct->iStatus.Int() == KErrCancel || GetSubscriberIdAct->iStatus.Int() == KErrNone, ETrue);
+
+	CleanupStack::PopAndDestroy(); //GetSubscriberIdAct
+	return TestStepResult();
+}
+
+CTestGetSubscriberIdError::CTestGetSubscriberIdError()
+/** Each test step initialises it's own name
+*/
+{
+	// store the name of this test case
+	// this is the name that is used by the script file
+	SetTestStepName(_L("TestGetSubscriberIdError"));
+}
+
+/**
+*
+@SYMTestCaseID Etel3rdParty 2.2
+@SYMTestCaseDesc Test GetSubscriberId 3rd party API - Error scenario
+@SYMFssID SGL.GT0166.054 v1.3 A2_Telephony_Functional_Specification.doc, REQ 2116.1.2
+*
+*/ 
+
+TVerdict CTestGetSubscriberIdError::doTestStepL()
+	{
+	INFO_PRINTF1(_L("Test Cancel for GetSubscriberId with error."));
+
+	//Set test number
+	SetTestNumber(3);
+
+	//Set expected IMSI value
+	_LIT16(SubscriberId, "01234567890123");
+	CTelephony::TSubscriberIdV1 ExpSubscriberId ;
+	ExpSubscriberId.iSubscriberId=SubscriberId;
+	CTelephony::TSubscriberIdV1Pckg expSubscriberIdPckg(ExpSubscriberId);
+
+	//Start GetSubscriberID AO
+	TRequestStatus expStat=KErrNotSupported;
+	CTestGetSubscriberIdAct* GetSubscriberIdAct = CTestGetSubscriberIdAct::NewLC(this, iTelephony);
+	GetSubscriberIdAct->GetSubscriberId(expSubscriberIdPckg, expStat);
+	
+	CActiveScheduler::Start();
+
+	CleanupStack::PopAndDestroy(); //GetSubscriberIdAct
+	return TestStepResult() ;
+}
+
+//=====================================================
+//
+//	Class to get subscriber ID active object
+//
+//=====================================================
+
+CTestGetSubscriberIdAct* CTestGetSubscriberIdAct::NewLC(CEtelIsvTestStep* aTestStep, CTelephony* aTelephony)
+//Factory constructor
+	{
+	CTestGetSubscriberIdAct* obj = new(ELeave) CTestGetSubscriberIdAct(aTestStep, aTelephony);
+	CleanupStack::PushL(obj);
+	obj->ConstructL();
+	return obj;
+	}
+
+CTestGetSubscriberIdAct::CTestGetSubscriberIdAct(CEtelIsvTestStep* aTestStep, CTelephony* aTelephony)
+	: CEtelIsvActBase(aTestStep, aTelephony),
+	iSubscriberIdBuff(iSubscriberId),
+	iSubscriberIdPckg(iSubscriberId)
+	{  
+	}
+
+void CTestGetSubscriberIdAct::ConstructL()
+	{  
+	iCanceller = new(ELeave) CTestCanceller(this);
+	CActiveScheduler::Add(this);
+	}
+
+CTestGetSubscriberIdAct::~CTestGetSubscriberIdAct()
+	{ 
+	Cancel();	// if any Req outstanding, calls DoCancel() to cleanup.
+	delete iCanceller;
+	}
+
+void CTestGetSubscriberIdAct::DoCancel()
+	{
+	iTelephony->CancelAsync(CTelephony::EGetSubscriberIdCancel);
+	}
+
+void CTestGetSubscriberIdAct::GetSubscriberId(TDes8& aExpSubscriberIdPckg, TRequestStatus aExpStat, TBool aCheckConcurrency)
+	{
+	iExpStat = aExpStat;
+	iExpSubscriberIdPckg=&aExpSubscriberIdPckg;
+	
+	TDes8* data;
+	if (iTestStep->iBufferMode)
+		{
+		data = &iSubscriberIdBuff;
+		}
+	else
+		{
+		data = &iSubscriberIdPckg;
+		}
+
+	iTelephony->GetSubscriberId(iStatus, *data);
+	
+	if(aCheckConcurrency)
+		{
+		TRequestStatus tmpStatus;
+		iTelephony->GetSubscriberId(tmpStatus, *data);
+		User::WaitForRequest(tmpStatus);
+		iTestStep->TEST1(tmpStatus.Int() == KErrInUse, ETrue);
+		}	
+	
+	SetActive();
+	}
+
+void CTestGetSubscriberIdAct::RunL()
+	{ 
+	// ActiveScheduler will have set status to KRequestComplete, just before
+	// calling this RunL().
+	CTelephony::TSubscriberIdV1Pckg& expSubscriberIdPckg = REINTERPRET_CAST(CTelephony::TSubscriberIdV1Pckg&, *iExpSubscriberIdPckg);
+	
+	//only supports V1 at present
+	CTelephony::TSubscriberIdV1& expSubscriberId = (expSubscriberIdPckg)();	
+	
+	iTestStep->TEST1(iStatus.Int() == iExpStat.Int(), ETrue);
+
+	if(iStatus.Int() == KErrNone)
+		{
+		CTelephony::TSubscriberIdV1* data;
+		if (iTestStep->iBufferMode)
+			{
+			data = reinterpret_cast<CTelephony::TSubscriberIdV1*> ( &iSubscriberIdBuff() );
+			}
+		else
+			{
+			data = reinterpret_cast<CTelephony::TSubscriberIdV1*> ( &iSubscriberIdPckg() );
+			}		
+	        
+		iTestStep->TEST1(data->iSubscriberId == expSubscriberId.iSubscriberId, ETrue);		
+		iTestStep->INFO_PRINTF2(_L("SubscriberId: %S"), &(data->iSubscriberId) );
+		}
+	else
+		{
+		iTestStep->INFO_PRINTF2(_L("Error for GeSubscriberId: %d"), iStatus.Int() );
+		}
+
+	CActiveScheduler::Stop();
+	}
+
+CTestGetIndicator::CTestGetIndicator()
+/** Each test step initialises it's own name
+*/
+{
+	// store the name of this test case
+	// this is the name that is used by the script file
+	SetTestStepName(_L("TestGetIndicator"));
+}
+
+/**
+*
+@SYMTestCaseID Etel3rdParty 4.1
+@SYMTestCaseDesc Test GetIndicator 3rd party API
+@SYMFssID SGL.GT0166.054 v1.3 A2_Telephony_Functional_Specification.doc, REQ 2116.1.4
+*
+*/ 
+
+TVerdict CTestGetIndicator::doTestStepL()
+	{
+	//Set test number
+	SetTestNumber(4);
+
+	//Set expected return values
+	TUint32 expIndCaps = CTelephony::KIndChargerConnected | CTelephony::KIndNetworkAvailable | CTelephony::KIndCallInProgress;
+	TUint32 expInd = CTelephony::KIndChargerConnected;
+	TRequestStatus expStat=KErrNone;
+	
+	CTestGetIndicatorAct* GetIndicatorAct = CTestGetIndicatorAct::NewLC(this, iTelephony);
+
+	#if defined(_DEBUG)
+	//test OOM
+		INFO_PRINTF1(_L("Test OOM for GetIndicator"));
+		expStat = KErrNoMemory;
+		__UHEAP_FAILNEXT(1);
+		GetIndicatorAct->GetPhoneIndicator(expIndCaps, expInd, expStat);
+		CActiveScheduler::Start();
+		__UHEAP_RESET;
+	#endif
+
+	//Start GetIndicator AO
+	 expStat=KErrNone;
+	INFO_PRINTF1(_L("Test GetIndicator"));	
+	GetIndicatorAct->GetPhoneIndicator(expIndCaps, expInd, expStat, ETrue);
+	CActiveScheduler::Start();
+
+	//Test cancel
+	TInt cancelerr = iTelephony->CancelAsync(CTelephony::EGetIndicatorCancel);
+	TEST1(cancelerr == KErrNotFound, ETrue);
+	GetIndicatorAct->GetPhoneIndicator(expIndCaps, expInd, expStat);
+	CTestCanceller* canceller = GetIndicatorAct->RetrieveCanceller();
+	canceller->Call();
+	CActiveScheduler::Start();	
+	TEST1(GetIndicatorAct->iStatus.Int() == KErrCancel || GetIndicatorAct->iStatus.Int() == KErrNone, ETrue);
+
+	CleanupStack::PopAndDestroy(); //GetIndicatorAct
+	return TestStepResult() ;
+}
+
+//=====================================================
+//
+//	Class to get phone indicator active object
+//
+//=====================================================
+
+CTestGetIndicatorAct* CTestGetIndicatorAct::NewLC(CEtelIsvTestStep* aTestStep, CTelephony* aTelephony)
+//Factory constructor
+	{
+	CTestGetIndicatorAct* obj = new(ELeave) CTestGetIndicatorAct(aTestStep, aTelephony);
+	CleanupStack::PushL(obj);
+	obj->ConstructL();
+	return obj;
+	}
+
+CTestGetIndicatorAct::CTestGetIndicatorAct(CEtelIsvTestStep* aTestStep, CTelephony* aTelephony)
+	: CEtelIsvActBase(aTestStep, aTelephony),
+	iIndicatorBuff(iIndicator),
+	iIndicatorPckg(iIndicator)
+	{  
+	}
+
+void CTestGetIndicatorAct::ConstructL()
+	{ 
+	iCanceller = new(ELeave) CTestCanceller(this);
+	CActiveScheduler::Add(this);
+	}
+
+CTestGetIndicatorAct::~CTestGetIndicatorAct()
+	{  
+	Cancel();	// if any Req outstanding, calls DoCancel() to cleanup.
+	delete iCanceller;
+	}
+
+void CTestGetIndicatorAct::DoCancel()
+	{
+	iTelephony->CancelAsync(CTelephony::EGetIndicatorCancel);
+	}
+
+void CTestGetIndicatorAct::GetPhoneIndicator(TUint32 aExpIndCaps, TUint32 aExpInd,TRequestStatus aExpStat, TBool aCheckConcurrency)
+	{
+	iExpIndCaps = aExpIndCaps;
+	iExpInd = aExpInd;
+	iExpStat = aExpStat;
+	
+	TDes8* data;
+	if (iTestStep->iBufferMode)
+		{
+		data = &iIndicatorBuff;
+		}
+	else
+		{
+		data = &iIndicatorPckg;
+		}
+	
+	iTelephony->GetIndicator(iStatus, *data);
+	
+	if(aCheckConcurrency)
+		{
+		TRequestStatus tmpStatus;
+		iTelephony->GetIndicator(tmpStatus, *data);
+		User::WaitForRequest(tmpStatus);
+		iTestStep->TEST1(tmpStatus.Int() == KErrInUse, ETrue);
+		}	
+		
+	SetActive();
+	}
+
+void CTestGetIndicatorAct::RunL()
+	{ 
+	// ActiveScheduler will have set status to KRequestComplete, just before
+	// calling this RunL().
+
+	iTestStep->TEST1(iStatus.Int() == iExpStat.Int(), ETrue);
+	
+	if(iStatus.Int() == KErrNone)
+		{
+		CTelephony::TIndicatorV1* data;
+		if (iTestStep->iBufferMode)
+			{
+			data = reinterpret_cast<CTelephony::TIndicatorV1*> ( &iIndicatorBuff() );
+			}
+		else
+			{
+			data = reinterpret_cast<CTelephony::TIndicatorV1*> ( &iIndicatorPckg() );
+			}
+		
+		iTestStep->TEST1(iExpIndCaps == data->iCapabilities, ETrue);
+		iTestStep->TEST1(iExpInd == data->iIndicator, ETrue);
+		iTestStep->PrintIndicatorValues(data->iIndicator, data->iCapabilities);
+		}
+	else
+		{
+		iTestStep->INFO_PRINTF2(_L("Error for GetIndicators: %d"), iStatus.Int() );
+		}
+
+	CActiveScheduler::Stop();
+	}
+
+CTestGetBatteryInfo::CTestGetBatteryInfo()
+/** Each test step initialises it's own name
+*/
+{
+	// store the name of this test case
+	// this is the name that is used by the script file
+	SetTestStepName(_L("TestGetBatteryInfo"));
+}
+
+/**
+*
+@SYMTestCaseID Etel3rdParty 5.1
+@SYMTestCaseDesc Test GetBatteryInfo 3rd party API
+@SYMFssID SGL.GT0166.054 v1.3 A2_Telephony_Functional_Specification.doc, REQ 2116.1.3
+*
+*/ 
+
+TVerdict CTestGetBatteryInfo::doTestStepL()
+	{
+	INFO_PRINTF1(_L("Test retrieval of battery information status"));
+
+	//Set test number
+	SetTestNumber(5);
+	
+	//Set expected result data
+	TRequestStatus expStat=KErrNone;
+	CTelephony::TBatteryInfoV1 BatteryExpInfo;
+	BatteryExpInfo.iStatus=CTelephony::EPowerStatusUnknown;
+	BatteryExpInfo.iChargeLevel=0;
+	CTelephony::TBatteryInfoV1Pckg batteryExpInfoPckg(BatteryExpInfo);
+	CTestGetBatteryInfoAct* GetBatteryInfoAct = CTestGetBatteryInfoAct::NewLC(this, iTelephony);
+	
+	#if defined(_DEBUG)
+	//test OOM
+		INFO_PRINTF1(_L("Test OOM for GetBatteryInfo"));
+		expStat=KErrNoMemory;
+		__UHEAP_FAILNEXT(1);
+		GetBatteryInfoAct->GetBatteryInfo(batteryExpInfoPckg, expStat);	
+		CActiveScheduler::Start();
+		__UHEAP_RESET;
+	#endif
+	
+	//test GetBatteryInfo
+	INFO_PRINTF1(_L("Test GetBatteryInfo"));
+	expStat=KErrNone;
+	GetBatteryInfoAct->GetBatteryInfo(batteryExpInfoPckg, expStat, ETrue);
+	CActiveScheduler::Start();
+		
+	//wait for 3 secs then re-test.  State should have changed.	
+	User::After(3000000);
+
+	expStat=KErrNone;
+	BatteryExpInfo.iStatus=CTelephony::EPoweredByBattery;
+	BatteryExpInfo.iChargeLevel=2;
+	GetBatteryInfoAct->GetBatteryInfo(batteryExpInfoPckg, expStat);	
+	CActiveScheduler::Start();
+	
+	//wait for 3 secs then re-test.  State should have changed.
+	User::After(3000000);
+
+	expStat=KErrGeneral;
+	BatteryExpInfo.iStatus=CTelephony::EPoweredByBattery;
+	BatteryExpInfo.iChargeLevel=20;
+	GetBatteryInfoAct->GetBatteryInfo(batteryExpInfoPckg, expStat);	
+	CActiveScheduler::Start();
+	
+	//Test cancel
+	User::After(3000000);
+	TInt cancelerr = iTelephony->CancelAsync(CTelephony::EGetBatteryInfoCancel);
+	TEST1(cancelerr == KErrNotFound, ETrue);
+	INFO_PRINTF1(_L("Test Cancel for GetBatteryInfo"));
+	GetBatteryInfoAct->GetBatteryInfo(batteryExpInfoPckg, expStat);
+	CTestCanceller* canceller = GetBatteryInfoAct->RetrieveCanceller();
+	canceller->Call();
+	CActiveScheduler::Start();	
+	TEST1(GetBatteryInfoAct->iStatus.Int() == KErrCancel || GetBatteryInfoAct->iStatus.Int() == KErrNone, ETrue);
+
+	CleanupStack::PopAndDestroy(); // GetBatteryInfoAct
+	return TestStepResult() ;
+}
+
+//=====================================================
+//
+//	Class to get battery info active object
+//
+//=====================================================
+
+CTestGetBatteryInfoAct* CTestGetBatteryInfoAct::NewLC(CEtelIsvTestStep* aTestStep, CTelephony* aTelephony)
+//Factory constructor
+	{
+	CTestGetBatteryInfoAct* obj = new(ELeave) CTestGetBatteryInfoAct(aTestStep, aTelephony);
+	CleanupStack::PushL(obj);
+	obj->ConstructL();
+	return obj;
+	}
+
+CTestGetBatteryInfoAct::CTestGetBatteryInfoAct(CEtelIsvTestStep* aTestStep, CTelephony* aTelephony)
+	: CEtelIsvActBase(aTestStep, aTelephony),
+	  iBatteryInfoBuff(iBatteryInfo),
+	  iBatteryInfoPckg(iBatteryInfo)
+	{  
+	}
+
+void CTestGetBatteryInfoAct::ConstructL()
+	{
+	iCanceller = new(ELeave) CTestCanceller(this);
+	CActiveScheduler::Add(this);
+	}
+
+CTestGetBatteryInfoAct::~CTestGetBatteryInfoAct()
+	{  
+	Cancel();	// if any Req outstanding, calls DoCancel() to cleanup.
+	delete iCanceller;
+	}
+
+void CTestGetBatteryInfoAct::DoCancel()
+	{
+	iTelephony->CancelAsync(CTelephony::EGetBatteryInfoCancel);
+	}
+
+void CTestGetBatteryInfoAct::GetBatteryInfo(TDes8& aBatteryExpInfoPckg, TRequestStatus aExpStat, TBool aCheckConcurrency)
+	{
+	iBatteryExpInfoPckg=&aBatteryExpInfoPckg;
+	iExpStat = aExpStat;
+	
+	TDes8* data;
+	if (iTestStep->iBufferMode)
+		{
+		data = &iBatteryInfoBuff;
+		}
+	else
+		{
+		data = &iBatteryInfoPckg;
+		}
+	
+	iTelephony->GetBatteryInfo(iStatus, *data);
+	
+	if(aCheckConcurrency)
+		{
+		TRequestStatus tmpStatus;
+		iTelephony->GetBatteryInfo(tmpStatus, *data);
+		User::WaitForRequest(tmpStatus);
+		iTestStep->TEST1(tmpStatus.Int() == KErrInUse, ETrue);
+		}
+		
+	SetActive();
+	}
+
+void CTestGetBatteryInfoAct::RunL()
+	{ 
+	// ActiveScheduler will have set status to KRequestComplete, just before
+	// calling this RunL().
+	CTelephony::TBatteryInfoV1Pckg& batteryExpInfoPckg = REINTERPRET_CAST(CTelephony::TBatteryInfoV1Pckg&, *iBatteryExpInfoPckg);
+	
+	//only supports V1 at present
+	CTelephony::TBatteryInfoV1& batteryExpInfo = (batteryExpInfoPckg)();	
+
+	iTestStep->TEST1(iStatus.Int()==iExpStat.Int(), ETrue);
+	
+	if(iStatus.Int() == KErrNone)
+		{
+		CTelephony::TBatteryInfoV1* data;
+		if (iTestStep->iBufferMode)
+			{
+			data = reinterpret_cast<CTelephony::TBatteryInfoV1*> ( &iBatteryInfoBuff() );
+			}
+		else
+			{
+			data = reinterpret_cast<CTelephony::TBatteryInfoV1*> ( &iBatteryInfoPckg() );
+			}
+		    
+		iTestStep->TEST1(data->iStatus==batteryExpInfo.iStatus, ETrue);
+		iTestStep->TEST1(data->iChargeLevel==batteryExpInfo.iChargeLevel, ETrue);
+		iTestStep->PrintBatteryInfo(*data);
+		}
+	else
+		{
+		iTestStep->INFO_PRINTF2(_L("Error for GetBatteryInfo: %d"), iStatus.Int() );
+		}
+
+	iTestStep->INFO_PRINTF1(_L(""));
+	CActiveScheduler::Stop();
+	}
+
+CTestGetSignalStrength::CTestGetSignalStrength()
+/** Each test step initialises it's own name
+*/
+{
+	// store the name of this test case
+	// this is the name that is used by the script file
+	SetTestStepName(_L("TestGetSignalStrength"));
+}
+
+/**
+*
+@SYMTestCaseID Etel3rdParty 6.1
+@SYMTestCaseDesc Test GetSignalStrength 3rd party API
+@SYMFssID SGL.GT0166.054 v1.3 A2_Telephony_Functional_Specification.doc, REQ 2116.??
+*
+*/ 
+
+TVerdict CTestGetSignalStrength::doTestStepL()
+	{
+	INFO_PRINTF1(_L("Test retrieval of Signal Strength information "));
+
+	//Set test number
+	SetTestNumber(6);
+	//Set expected result values
+	TRequestStatus expStat=KErrNone;
+	CTelephony::TSignalStrengthV1 ExpSignalStrength;
+	ExpSignalStrength.iBar=3;
+	ExpSignalStrength.iSignalStrength=-51;
+	CTelephony::TSignalStrengthV1Pckg expSignalStrengthPckg(ExpSignalStrength);
+	CTestGetSignalStrengthAct* GetSignalStrengthAct = CTestGetSignalStrengthAct::NewLC(this, iTelephony);
+
+	#if defined(_DEBUG)
+	//test OOM
+		INFO_PRINTF1(_L("Test OOM for GetSignalStrength"));
+		expStat=KErrNoMemory;
+		__UHEAP_FAILNEXT(1);
+		GetSignalStrengthAct->GetSignalStrength(expSignalStrengthPckg, expStat);	
+		CActiveScheduler::Start();
+		__UHEAP_RESET;
+	#endif
+
+	//Start GetSignalStrength AO
+	INFO_PRINTF1(_L("Test GetSignalStrength"));
+	expStat=KErrNone;
+	GetSignalStrengthAct->GetSignalStrength(expSignalStrengthPckg, expStat, ETrue);	
+	CActiveScheduler::Start();
+
+	User::After(3000000);
+	//wait for 3 secs and re-test
+	expStat=KErrNotSupported;
+	GetSignalStrengthAct->GetSignalStrength(expSignalStrengthPckg, expStat);	
+	CActiveScheduler::Start();
+	
+	//Test cancel
+	User::After(3000000);
+	TInt cancelerr = iTelephony->CancelAsync(CTelephony::EGetSignalStrengthCancel);
+	TEST1(cancelerr == KErrNotFound, ETrue);
+	INFO_PRINTF1(_L("Test Cancel for GetSignalStrength"));
+	GetSignalStrengthAct->GetSignalStrength(expSignalStrengthPckg, expStat);
+	CTestCanceller* canceller = GetSignalStrengthAct->RetrieveCanceller();
+	canceller->Call();
+	CActiveScheduler::Start();	
+	TEST1(GetSignalStrengthAct->iStatus.Int() == KErrCancel || GetSignalStrengthAct->iStatus.Int() == KErrNone, ETrue);
+
+	CleanupStack::PopAndDestroy(); //GetSignalStrengthAct 
+	return TestStepResult() ;
+}
+
+//=====================================================
+//
+//	Class to get signal strength active object
+//
+//=====================================================
+CTestGetSignalStrengthAct* CTestGetSignalStrengthAct::NewLC(CEtelIsvTestStep* aTestStep, CTelephony* aTelephony, TBool aUseMacros)
+//Factory constructor
+	{
+	CTestGetSignalStrengthAct* obj = new(ELeave) CTestGetSignalStrengthAct(aTestStep, aTelephony, aUseMacros);
+	CleanupStack::PushL(obj);
+	obj->ConstructL();
+	return obj;
+	}
+	
+CTestGetSignalStrengthAct::CTestGetSignalStrengthAct(CEtelIsvTestStep* aTestStep, CTelephony* aTelephony, TBool aUseMacros)
+	: CEtelIsvActBase(aTestStep, aTelephony),
+	iUseMacros(aUseMacros),
+	iSignalStrengthBuff(iSignalStrength),
+	iSignalStrengthPckg(iSignalStrength)
+	{  
+	}
+
+void CTestGetSignalStrengthAct::ConstructL()
+	{ 
+	iCanceller = new(ELeave) CTestCanceller(this);
+	CActiveScheduler::Add(this);
+	}
+
+CTestGetSignalStrengthAct::~CTestGetSignalStrengthAct()
+	{  
+	Cancel();	// if any Req outstanding, calls DoCancel() to cleanup.
+	delete iCanceller;
+	}
+
+void CTestGetSignalStrengthAct::DoCancel()
+	{
+	iTelephony->CancelAsync(CTelephony::EGetSignalStrengthCancel);
+	}
+
+void CTestGetSignalStrengthAct::GetSignalStrength(TDes8& aExpSignalStrengthPckg, TRequestStatus aExpStat, TBool aCheckConcurrency)
+	{
+	iExpStat = aExpStat;
+	iExpSignalStrengthPckg=&aExpSignalStrengthPckg;
+	
+	TDes8* data;
+	if (iTestStep->iBufferMode)
+		{
+		data = &iSignalStrengthBuff;
+		}
+	else
+		{
+		data = &iSignalStrengthPckg;
+		}
+	
+	iTelephony->GetSignalStrength(iStatus, *data);
+	
+	if(aCheckConcurrency)
+		{
+		TRequestStatus tmpStatus;
+		iTelephony->GetSignalStrength(tmpStatus, *data);
+		User::WaitForRequest(tmpStatus);
+		iTestStep->TEST1(tmpStatus.Int() == KErrInUse, ETrue);
+		}		
+		
+	SetActive();
+	}
+
+void CTestGetSignalStrengthAct::RunL()
+	{ 
+	// ActiveScheduler will have set status to KRequestComplete, just before
+	// calling this RunL().
+	CTelephony::TSignalStrengthV1Pckg& expSignalStrengthPckg = REINTERPRET_CAST(CTelephony::TSignalStrengthV1Pckg&, *iExpSignalStrengthPckg);
+	
+	//only supports V1 at present
+	CTelephony::TSignalStrengthV1& expSignalStrength = (expSignalStrengthPckg)();	
+
+	if(iUseMacros)
+		{
+		iTestStep->TEST1(iStatus.Int()==iExpStat.Int(), ETrue);
+		}
+	
+	if(iStatus.Int() == KErrNone)
+		{
+		if(iUseMacros)
+			{
+			CTelephony::TSignalStrengthV1* data;
+			if (iTestStep->iBufferMode)
+				{
+				data = reinterpret_cast<CTelephony::TSignalStrengthV1*> ( &iSignalStrengthBuff() );
+				}
+			else
+				{
+				data = reinterpret_cast<CTelephony::TSignalStrengthV1*> ( &iSignalStrengthPckg() );
+				}
+			    
+			iTestStep->TEST1(data->iBar==expSignalStrength.iBar, ETrue);
+			iTestStep->TEST1(data->iSignalStrength==expSignalStrength.iSignalStrength, ETrue);
+			iTestStep->INFO_PRINTF2(_L("Signal strength (in display bars) : %d"), expSignalStrength.iBar);
+			iTestStep->INFO_PRINTF2(_L("Signal strength (in dBm) : %d"), expSignalStrength.iSignalStrength);
+			}
+		}
+	else
+		{
+		if(iUseMacros)
+			{
+			iTestStep->INFO_PRINTF2(_L("Error for GetSignalStrength: %d"), iStatus.Int() );
+			}
+		}
+
+	CActiveScheduler::Stop();
+	if(iUseMacros)
+		{
+		iTestStep->INFO_PRINTF1(_L(""));
+		}
+	}
+
+CTestGetLockInfo::CTestGetLockInfo()
+/** Each test step initialises it's own name
+*/
+{
+	// store the name of this test case
+	// this is the name that is used by the script file
+	SetTestStepName(_L("TestGetLockInfo"));
+}
+
+/**
+*
+@SYMTestCaseID Etel3rdParty 7.1
+@SYMTestCaseDesc Test GetLockInfo 3rd party API
+@SYMFssID SGL.GT0166.054 v1.3 A2_Telephony_Functional_Specification.doc, REQ 2116.1.8
+*
+*/ 
+
+TVerdict CTestGetLockInfo::doTestStepL()
+	{
+	INFO_PRINTF1(_L("Test retrieval of current status of PIN1/PIN2 "));
+	//Set test number
+	SetTestNumber(7);
+	
+	//Set expected result values
+	TRequestStatus expStat=KErrNone;
+	CTelephony::TIccLockInfoV1 ExpLockInfo;
+	ExpLockInfo.iSetting = CTelephony::ELockSetDisabled;
+	ExpLockInfo.iStatus = CTelephony::EStatusUnlocked;
+	CTelephony::TIccLockInfoV1Pckg expLockInfoPckg(ExpLockInfo);
+	CTestGetLockInfoAct* GetLockInfoAct = CTestGetLockInfoAct::NewLC(this, iTelephony);
+
+	CTelephony::TIccLock Lock;
+	#if defined(_DEBUG)
+	//test OOM
+		INFO_PRINTF1(_L("Test OOM for GetLockInfo"));
+		expStat=KErrNoMemory;
+		Lock=CTelephony::ELockPin1;
+		__UHEAP_FAILNEXT(1);
+		GetLockInfoAct->GetLockInfo(Lock, expLockInfoPckg, expStat);
+		CActiveScheduler::Start();
+		__UHEAP_RESET;
+	#endif
+	
+	//Start GetLockinfo AO for pin1
+	expStat=KErrNone;
+	INFO_PRINTF1(_L("Test GetLockInfo"));
+	Lock=CTelephony::ELockPin1;
+	INFO_PRINTF1(_L("current status of PIN1 "));
+	GetLockInfoAct->GetLockInfo(Lock, expLockInfoPckg, expStat, ETrue);
+	CActiveScheduler::Start();
+
+	//Start GetLockinfo AO for pin2
+	Lock=CTelephony::ELockPin2;
+	INFO_PRINTF1(_L("current status of PIN2 "));
+	ExpLockInfo.iSetting = CTelephony::ELockSetEnabled;
+	ExpLockInfo.iStatus = CTelephony::EStatusLocked;
+	GetLockInfoAct->GetLockInfo(Lock, expLockInfoPckg, expStat);
+	CActiveScheduler::Start();
+	
+	//Test cancel
+	INFO_PRINTF1(_L("Test Cancel for GetLockInfo"));
+	TInt cancelerr = iTelephony->CancelAsync(CTelephony::EGetLockInfoCancel);
+	TEST1(cancelerr == KErrNotFound, ETrue);
+	GetLockInfoAct->GetLockInfo(Lock, expLockInfoPckg, expStat);
+	CTestCanceller* canceller = GetLockInfoAct->RetrieveCanceller();
+	canceller->Call();
+	CActiveScheduler::Start();
+	TEST1(GetLockInfoAct->iStatus.Int() == KErrCancel || GetLockInfoAct->iStatus.Int() == KErrNone, ETrue);
+
+	CleanupStack::PopAndDestroy(); //GetLockInfoAct 
+	return TestStepResult() ;
+}
+
+//=====================================================
+//
+//	Class to get lock info active object
+//
+//=====================================================
+CTestGetLockInfoAct* CTestGetLockInfoAct::NewLC(CEtelIsvTestStep* aTestStep, CTelephony* aTelephony)
+//Factory constructor
+	{
+	CTestGetLockInfoAct* obj = new(ELeave) CTestGetLockInfoAct(aTestStep, aTelephony);
+	CleanupStack::PushL(obj);
+	obj->ConstructL();
+	return obj;
+	}
+	
+CTestGetLockInfoAct::CTestGetLockInfoAct(CEtelIsvTestStep* aTestStep, CTelephony* aTelephony)
+	: CEtelIsvActBase(aTestStep, aTelephony),
+	iLockInfoBuff(iLockInfo),
+	iLockInfoPckg(iLockInfo)
+	{  
+	}
+
+void CTestGetLockInfoAct::ConstructL()
+	{  
+	iCanceller = new(ELeave) CTestCanceller(this);
+	CActiveScheduler::Add(this);
+	}
+
+CTestGetLockInfoAct::~CTestGetLockInfoAct()
+	{  
+	Cancel();	// if any Req outstanding, calls DoCancel() to cleanup.
+	delete iCanceller;
+	}
+
+void CTestGetLockInfoAct::DoCancel()
+	{
+	iTelephony->CancelAsync(CTelephony::EGetLockInfoCancel);
+	}
+
+void CTestGetLockInfoAct::GetLockInfo(CTelephony::TIccLock aLock, TDes8& aExpLockInfoPckg, TRequestStatus aExpStat, TBool aCheckConcurrency)
+	{
+	iExpStat = aExpStat;
+	iExpLockInfoPckg=&aExpLockInfoPckg;
+	iLock = aLock;
+
+	TDes8* data;
+	if (iTestStep->iBufferMode)
+		{
+		data = &iLockInfoBuff;
+		}
+	else
+		{
+		data = &iLockInfoPckg;
+		}
+
+	iTelephony->GetLockInfo(iStatus ,aLock ,*data);
+	
+	if(aCheckConcurrency)
+		{
+		TRequestStatus tmpStatus;
+		iTelephony->GetLockInfo(tmpStatus ,aLock ,*data);
+		User::WaitForRequest(tmpStatus);
+		iTestStep->TEST1(tmpStatus.Int() == KErrInUse, ETrue);
+		}
+		
+	SetActive();
+	}
+
+void CTestGetLockInfoAct::RunL()
+	{ 
+	// ActiveScheduler will have set status to KRequestComplete, just before
+	// calling this RunL().
+	CTelephony::TIccLockInfoV1Pckg& expLockInfoPckg = REINTERPRET_CAST(CTelephony::TIccLockInfoV1Pckg&, *iExpLockInfoPckg);
+	
+	//only supports V1 at present
+	CTelephony::TIccLockInfoV1& expLockInfo = (expLockInfoPckg)();	
+
+	iTestStep->TEST1(iStatus.Int()==iExpStat.Int(),1);
+	
+	if(iStatus.Int() == KErrNone)
+		{
+		CTelephony::TIccLockInfoV1* data;
+		if (iTestStep->iBufferMode)
+			{
+			data = reinterpret_cast<CTelephony::TIccLockInfoV1*> ( &iLockInfoBuff() );
+			}
+		else
+			{
+			data = reinterpret_cast<CTelephony::TIccLockInfoV1*> ( &iLockInfoPckg() );
+			}
+		    
+		iTestStep->TEST1(data->iSetting==expLockInfo.iSetting,1);
+		iTestStep->TEST1(data->iStatus==expLockInfo.iStatus,1);
+		iTestStep->PrintLockInfo(iLock, data->iSetting, data->iStatus);
+		}
+	else
+		{
+		iTestStep->INFO_PRINTF2(_L("Error for GetLockInfo: %d"), iStatus.Int() );
+		}
+
+	CActiveScheduler::Stop();
+	iTestStep->INFO_PRINTF1(_L(""));
+	}
+
+CTestSendDTMFTones::CTestSendDTMFTones()
+/** Each test step initialises it's own name
+*/
+{
+	// store the name of this test case
+	// this is the name that is used by the script file
+	SetTestStepName(_L("TestSendDTMFTones"));
+}
+
+/**
+*
+@SYMTestCaseID Etel3rdParty 8.1
+@SYMTestCaseDesc Test SendDTMFTones 3rd party API
+@SYMFssID SGL.GT0166.054 v1.3 A2_Telephony_Functional_Specification.doc, REQ 2116.1.9
+*
+*/ 
+
+
+TVerdict CTestSendDTMFTones::doTestStepL()
+	{
+	SetTestNumber(8);
+
+	INFO_PRINTF1(_L("Test sending of DTMF tones "));
+	
+	//set test data to transmit
+	_LIT(KDtmfString0,"45p6789A");
+	
+	//make a call to send the DTMF through
+	
+	_LIT(KGoodNumber,"1789");	
+	//Set the call parameters for call 
+	CTelephony::TCallParamsV1 callParams1;
+	callParams1.iIdRestrict = CTelephony::ESendMyId;
+	CTelephony::TCallParamsV1Pckg callParamsPckg1(callParams1);	
+	
+	TTestCallParams testCallParams;
+	testCallParams.iLine = CTelephony::EVoiceLine;
+	testCallParams.iCallParamsV1Pckg = &callParamsPckg1;
+	testCallParams.iTelAddress.iTelNumber = KGoodNumber;
+	testCallParams.iExpStat = KErrNone;
+		
+	//make the call
+	CTestDialNewCallAct* testDialNewCallAct = CTestDialNewCallAct::NewLC(this, iTelephony);	
+	testCallParams.iCallId = CTelephony::EISVMaxNumOfCalls;
+	testDialNewCallAct->TestDialNewCall(testCallParams);
+	CActiveScheduler::Start();
+	CleanupStack::PopAndDestroy(testDialNewCallAct);	
+	
+	//wait for call status to be connected
+	CTelephony::TCallStatusV1 CallStatusV1;
+	CTelephony::TCallStatusV1Pckg CallStatusPckg(CallStatusV1);
+	iTelephony->GetCallStatus(testCallParams.iCallId, CallStatusPckg);
+	TEST1(CallStatusV1.iStatus == CTelephony::EStatusConnected,1);
+ 
+	TRequestStatus expStat=KErrNone;	
+	CTestSendDTMFTonesAct*SendDTMFAct = CTestSendDTMFTonesAct::NewLC(this, iTelephony);
+
+	#if defined(_DEBUG)
+	//test OOM
+		INFO_PRINTF1(_L("Test OOM for SendDTMFTones")); 
+		expStat=KErrNoMemory;
+		__UHEAP_FAILNEXT(1);
+		SendDTMFAct->SendDTMFTone(KDtmfString0, expStat);
+		CActiveScheduler::Start();	
+		__UHEAP_RESET;
+	#endif
+		
+	//set expected result values for DTMF	
+	expStat=KErrNone;
+	SendDTMFAct->SendDTMFTone(KDtmfString0, expStat, ETrue);
+	CActiveScheduler::Start();
+
+	//Test cancel
+	INFO_PRINTF1(_L("Test Cancel for SendDTMFTones"));
+	TInt cancelerr = iTelephony->CancelAsync(CTelephony::ESendDTMFTonesCancel);
+	TEST1(cancelerr == KErrNotFound, ETrue);
+	SendDTMFAct->SendDTMFTone(KDtmfString0, expStat);
+	CTestCanceller* canceller = SendDTMFAct->RetrieveCanceller();
+	canceller->Call();
+	CActiveScheduler::Start();	
+	TEST1(SendDTMFAct->iStatus.Int() == KErrCancel, ETrue);
+
+	CTestHangupAct* testHangupAct = CTestHangupAct::NewLC(this, iTelephony);	
+	//Hangup call
+	testHangupAct->TestHangup(testCallParams);
+	CActiveScheduler::Start();
+	CleanupStack::PopAndDestroy(testHangupAct);
+
+	
+	CleanupStack::PopAndDestroy(SendDTMFAct); //SendDTMFAct 
+	return TestStepResult() ;
+}
+
+CTestSendDTMFTonesAct* CTestSendDTMFTonesAct::NewLC(CEtelIsvTestStep* aTestStep, CTelephony* aTelephony)
+//Factory constructor
+	{
+	CTestSendDTMFTonesAct* obj = new(ELeave) CTestSendDTMFTonesAct(aTestStep, aTelephony);
+	CleanupStack::PushL(obj);
+	obj->ConstructL();
+	return obj;
+	}
+	
+CTestSendDTMFTonesAct::CTestSendDTMFTonesAct(CEtelIsvTestStep* aTestStep, CTelephony* aTelephony)
+	: CEtelIsvActBase(aTestStep, aTelephony)
+	{  
+	}
+
+void CTestSendDTMFTonesAct::ConstructL()
+	{ 
+	iCanceller = new(ELeave) CTestCanceller(this);
+	CActiveScheduler::Add(this);
+	}
+
+CTestSendDTMFTonesAct::~CTestSendDTMFTonesAct()
+	{  
+	Cancel();	// if any Req outstanding, calls DoCancel() to cleanup.
+	delete iCanceller;
+	}
+
+void CTestSendDTMFTonesAct::DoCancel()
+	{
+	iTelephony->CancelAsync(CTelephony::ESendDTMFTonesCancel);
+	}
+
+void CTestSendDTMFTonesAct::SendDTMFTone(const TDesC& aTones, TRequestStatus aExpStat, TBool aCheckConcurrency)
+	{
+	iExpStat = aExpStat;
+	
+	iTelephony->SendDTMFTones(iStatus, aTones);
+	
+	if(aCheckConcurrency)
+		{
+		TRequestStatus tmpStatus;
+		iTelephony->SendDTMFTones(tmpStatus, aTones);
+		User::WaitForRequest(tmpStatus);
+		iTestStep->TEST1(tmpStatus.Int() == KErrInUse, ETrue);
+		}
+		
+	SetActive();
+	}
+
+void CTestSendDTMFTonesAct::RunL()
+	{ 
+	// ActiveScheduler will have set status to KRequestComplete, just before
+	// calling this RunL().
+
+	iTestStep->TEST1(iStatus.Int()==iExpStat.Int(), 1);
+	
+	CActiveScheduler::Stop();
+	iTestStep->INFO_PRINTF1(_L(""));
+	}
+
+CTestFlightModeWithPublishSubscribe::CTestFlightModeWithPublishSubscribe()
+/** Each test step initialises it's own name
+*/
+{
+	// store the name of this test case
+	// this is the name that is used by the script file
+	SetTestStepName(_L("TestFlightModeWithPublishSubscribe"));
+}
+
+/**
+*
+@SYMTestCaseID Etel3rdParty 3.1
+@SYMTestCaseDesc Test GetFlightMode 3rd party API
+@SYMFssID SGL.GT0166.054 v1.3 A2_Telephony_Functional_Specification.doc, REQ 2116.4.3
+*
+*/ 
+
+
+TVerdict CTestFlightModeWithPublishSubscribe::doTestStepL()
+	{
+	INFO_PRINTF1(_L("Test retrieval of flight mode with publish and subscribe"));
+
+	RProperty phonePowerProperty;
+	User::LeaveIfError(phonePowerProperty.Attach(KUidSystemCategory, KUidPhonePwr.iUid));
+	CleanupClosePushL(phonePowerProperty);	
+			
+	TRequestStatus status;
+	phonePowerProperty.Subscribe(status);
+	User::LeaveIfError(phonePowerProperty.Set(KUidSystemCategory,KUidPhonePwr.iUid,ESAPhoneOn));
+	User::WaitForRequest(status);
+	TEST(status.Int() == KErrNone);	
+
+	//Set up the data
+	CTelephony::TFlightModeV1 FlightMode;
+	CTelephony::TFlightModeV1Pckg FlightModePckg(FlightMode);
+	TPckgBuf<CTelephony::TFlightModeV1> FlightModeBuff(FlightMode);
+	TDes8* FlightModeData;
+	if (iBufferMode)
+		{
+		FlightModeData = &FlightModeBuff;
+		}
+	else
+		{
+		FlightModeData = &FlightModePckg;
+		}
+	CTelephony::TFlightModeV1& FlightModeResult = 
+		reinterpret_cast<CTelephony::TFlightModeV1&> ( const_cast<TUint8&> ( *FlightModeData->Ptr() ) );
+	
+	//Get current flight mode
+	TRequestStatus reqStat=KErrNone;
+	iTelephony->GetFlightMode(reqStat, *FlightModeData);
+	User::WaitForRequest(reqStat);
+
+	//check results
+	TEST1(reqStat.Int() == KErrNone, ETrue);
+	TEST1(FlightModeResult.iFlightModeStatus == CTelephony::EFlightModeOff, ETrue);
+	if (FlightModeResult.iFlightModeStatus == CTelephony::EFlightModeOff)
+		INFO_PRINTF1(_L("The mobile radio interface and bluetooth is currently on"));
+
+	phonePowerProperty.Subscribe(status);
+	User::LeaveIfError(phonePowerProperty.Set(KUidSystemCategory,KUidPhonePwr.iUid,ESAPhoneOff));
+	User::WaitForRequest(status);
+	TEST(status.Int() == KErrNone);	
+	
+	//Get current flight mode
+	iTelephony->GetFlightMode(reqStat, *FlightModeData);
+	User::WaitForRequest(reqStat);
+
+	//check results
+	TEST1(reqStat.Int() == KErrNone, ETrue);
+	TEST1(FlightModeResult.iFlightModeStatus == CTelephony::EFlightModeOn, ETrue);
+	if (FlightModeResult.iFlightModeStatus == CTelephony::EFlightModeOn)
+		INFO_PRINTF1(_L("The mobile radio interface and bluetooth is currently off"));		
+	CleanupStack::PopAndDestroy(&phonePowerProperty);
+	return TestStepResult() ;
+}
+
+CTestPhoneFuncFlightModeOnWithPublishSubscribe::CTestPhoneFuncFlightModeOnWithPublishSubscribe()
+/** Each test step initialises it's own name
+*/
+{
+	// store the name of this test case
+	// this is the name that is used by the script file
+	SetTestStepName(_L("TestPhoneFuncFlightModeOnWithPublishSubscribe"));
+}
+
+/**
+@SYMTestCaseID Etel3rdParty 8.2, TestPhoneFuncFlightModeOn
+@SYMTestCaseDesc Test GetSignalStrength and SendDTMFTone 3rd party APIs
+@SYMFssID SGL.GT0166.054 v1.3 A2_Telephony_Functional_Specification.doc, REQ 2116.1.?/9
+*/
+
+enum TVerdict CTestPhoneFuncFlightModeOnWithPublishSubscribe::doTestStepL()
+{
+	INFO_PRINTF1(_L("START TEST 8.2"));	
+	 
+	INFO_PRINTF1(_L(" TEST: Signal Strength information not retrievable when flight mode on with publish and subscribe "));
+
+	//Set test number
+	SetTestNumber(34);
+	
+	// Set expected status to KErrAccessDenied as this should be returned in
+	// the case where flight mode is on.
+	TRequestStatus expStat=KErrAccessDenied;
+	CTelephony::TSignalStrengthV1 ExpSignalStrength;
+	ExpSignalStrength.iBar=3;
+	ExpSignalStrength.iSignalStrength=-51;
+	CTelephony::TSignalStrengthV1Pckg expSignalStrengthPckg(ExpSignalStrength);
+	CTestGetSignalStrengthAct* GetSignalStrengthAct = CTestGetSignalStrengthAct::NewLC(this, iTelephony);
+
+	// Set up phonePowerProperty variable so that flight mode can be manipulated.
+	RProperty phonePowerProperty;
+	User::LeaveIfError(phonePowerProperty.Attach(KUidSystemCategory, KUidPhonePwr.iUid));
+	CleanupClosePushL(phonePowerProperty);	
+
+	//Switch flight mode on (ie radio mode off)
+	TRequestStatus status;
+	phonePowerProperty.Subscribe(status);
+	User::LeaveIfError(phonePowerProperty.Set(KUidSystemCategory,KUidPhonePwr.iUid,ESAPhoneOff));
+	User::WaitForRequest(status);
+	TEST(status.Int() == KErrNone);	
+
+	// Make a call to the 3rd Party API.
+	GetSignalStrengthAct->GetSignalStrength(expSignalStrengthPckg, expStat);	
+	CActiveScheduler::Start();
+
+	
+	INFO_PRINTF1(_L("Test sending of DTMF tones disallowed when flight mode on "));
+	
+	//set test data to transmit
+	_LIT(KDtmfString0,"45p6789A");
+	
+	// Switch flight mode off so that a call can be set up. 
+	phonePowerProperty.Subscribe(status);
+	User::LeaveIfError(phonePowerProperty.Set(KUidSystemCategory,KUidPhonePwr.iUid,ESAPhoneOn));
+	User::WaitForRequest(status);
+	TEST(status.Int() == KErrNone);	
+ 
+ 	//Get current flight mode
+	TRequestStatus reqStat=KErrNone;
+	CTelephony::TFlightModeV1 FlightMode;
+	CTelephony::TFlightModeV1Pckg FlightModePckg(FlightMode);	
+	iTelephony->GetFlightMode(reqStat, FlightModePckg);
+	User::WaitForRequest(reqStat);
+
+	//check results
+	TEST1(reqStat.Int() == KErrNone, ETrue);
+	TEST1(FlightMode.iFlightModeStatus == CTelephony::EFlightModeOff, ETrue);
+	if (FlightMode.iFlightModeStatus == CTelephony::EFlightModeOff)
+		INFO_PRINTF1(_L("The mobile radio interface and bluetooth is currently on"));
+	
+ 	// Switch flight mode on (ie radio mode off) to test that 
+ 	// DTMF Tone sending fails is disallowed in flight mode. 
+	phonePowerProperty.Subscribe(status);
+	User::LeaveIfError(phonePowerProperty.Set(KUidSystemCategory,KUidPhonePwr.iUid,ESAPhoneOff));
+	User::WaitForRequest(status);
+	TEST(status.Int() == KErrNone);	
+
+ 
+	//set expected result values for DTMF	
+	CTestSendDTMFTonesAct*SendDTMFAct = CTestSendDTMFTonesAct::NewLC(this, iTelephony);
+	expStat=KErrAccessDenied;
+	SendDTMFAct->SendDTMFTone(KDtmfString0, expStat);
+	CActiveScheduler::Start();
+ 
+ 	// Switch flight mode off (ie radio mode on)  
+ 	// so that the call can be hung up.
+	phonePowerProperty.Subscribe(status);
+	User::LeaveIfError(phonePowerProperty.Set(KUidSystemCategory,KUidPhonePwr.iUid,ESAPhoneOn));
+	User::WaitForRequest(status);
+	TEST(status.Int() == KErrNone);	
+
+	
+	INFO_PRINTF1(_L("END TEST 8.2"));
+	
+	 
+	//CleanupStack::PopAndDestroy(testHangupAct);
+	CleanupStack::PopAndDestroy(SendDTMFAct); //SendDTMFAct 
+	//CleanupStack::PopAndDestroy(testDialNewCallAct);
+	CleanupStack::PopAndDestroy(&phonePowerProperty);	 
+	CleanupStack::PopAndDestroy(GetSignalStrengthAct);
+	return TestStepResult() ;	  
+	 
+}
+