telephonyserverplugins/common_tsy/test/component/src/cctsysmspstorefu.cpp
branchopencode
changeset 24 6638e7f4bd8f
parent 0 3553901f7fa8
--- a/telephonyserverplugins/common_tsy/test/component/src/cctsysmspstorefu.cpp	Mon May 03 13:37:20 2010 +0300
+++ b/telephonyserverplugins/common_tsy/test/component/src/cctsysmspstorefu.cpp	Thu May 06 15:10:38 2010 +0100
@@ -1,547 +1,547 @@
-// Copyright (c) 2007-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:
-// The TEFUnit test suite for SMSPStore in the Common TSY.
-// 
-//
-
-/**
- @file 
-*/
-
-#include "cctsysmspstorefu.h"
-#include <etel.h>
-#include <etelmm.h>
-#include <et_clsvr.h>
-#include <ctsy/mmtsy_names.h>
-#include <ctsy/serviceapi/mmtsy_ipcdefs.h>
-#include "tmockltsydata.h"
-#include <ctsy/serviceapi/gsmerror.h>
-#include "cctsyactiveretriever.h"
-#include <mmretrieve.h>
-
-CTestSuite* CCTsySMSPStoreFU::CreateSuiteL(const TDesC& aName)
-	{
-	SUB_SUITE;
-
-	ADD_TEST_STEP_ISO_CPP(CCTsySMSPStoreFU, TestStart0001L);
-	ADD_TEST_STEP_ISO_CPP(CCTsySMSPStoreFU, TestStart0002L);
-	ADD_TEST_STEP_ISO_CPP(CCTsySMSPStoreFU, TestStart0004L);
-	ADD_TEST_STEP_ISO_CPP(CCTsySMSPStoreFU, TestStart0005L);
-
-	END_SUITE;
-	}
-
-/**
-To push a CleanupItem ont the cleanupstack to close the phone
-*/
-void CCTsySMSPStoreFU::Cleanup(TAny* aSelf)
-	{
-	static_cast<CCTsySMSPStoreFU*>(aSelf)->DoCleanup();
-	}
-	
-/**
-Close the Phone a the server connection
-*/	
-void CCTsySMSPStoreFU::DoCleanup()
-	{
-	CActiveScheduler::Install(NULL);
-	CCtsyComponentTestBase::DoCleanup();
-	}
-
-
-LOCAL_C void FillInSmsParamsAndListL(
-		CArrayPtrFlat<TSmsParameters>& aSmsParamsList,
-		TSmsParameters& aSmsParams1,
-		TSmsParameters& aSmsParams2)
-	{
-	aSmsParams1.iLocationNumber = 1;
-	aSmsParams1.iParameterIndicator = KDestinationAddress|KServiceCentreAddress;
-	aSmsParams1.iProtocolId = 2;
-	aSmsParams1.iDataCodingScheme = 3;
-	aSmsParams1.iValidityPeriod = 4;
-	aSmsParams1.iMobileScTON = RMobilePhone::EInternationalNumber;
-	aSmsParams1.iMobileScNPI = RMobilePhone::EIsdnNumberPlan;
-	aSmsParams1.iMobileDeTON = RMobilePhone::ENationalNumber;
-	aSmsParams1.iMobileDeNPI = RMobilePhone::EDataNumberPlan;
-	aSmsParams1.iAlphaTagPresent = ETrue;
-	aSmsParams1.iServiceCenterAddress.Copy(_L("asta"));
-	aSmsParams1.iDestinationAddress.Copy(_L("la"));
-	aSmsParams1.iAlphaTagData.Copy(_L("vista"));
-
-	aSmsParams2.iLocationNumber = 5;
-	aSmsParams2.iParameterIndicator = KProtocolID|KDataCodingScheme|KValidityPeriod;
-	aSmsParams2.iProtocolId = 6;
-	aSmsParams2.iDataCodingScheme = 7;
-	aSmsParams2.iValidityPeriod = 8;
-	aSmsParams2.iMobileScTON = RMobilePhone::ENetworkSpecificNumber;
-	aSmsParams2.iMobileScNPI = RMobilePhone::ETelexNumberPlan;
-	aSmsParams2.iMobileDeTON = RMobilePhone::ESubscriberNumber;
-	aSmsParams2.iMobileDeNPI = RMobilePhone::ENationalNumberPlan;
-	aSmsParams2.iAlphaTagPresent = EFalse;
-	aSmsParams2.iServiceCenterAddress.Copy(_L("I'l"));
-	aSmsParams2.iDestinationAddress.Copy(_L("be"));
-	aSmsParams2.iAlphaTagData.Copy(_L("back"));
-
-	aSmsParamsList.AppendL(&aSmsParams1);
-	aSmsParamsList.AppendL(&aSmsParams2);
-	}
-
-
-//
-// Actual test cases
-//
-
-
-/**
-@SYMTestCaseID BA-CTSY-SMSP-CRMPSL-0001
-@SYMComponent  telephony_ctsy
-@SYMTestCaseDesc Test support in CTSY for CRetrieveMobilePhoneSmspList::Start
-@SYMTestPriority High
-@SYMTestActions Invokes CRetrieveMobilePhoneSmspList::Start
-@SYMTestExpectedResults Pass
-@SYMTestType CT
-*/
-void CCTsySMSPStoreFU::TestStart0001L()
-	{
-
-	OpenEtelServerL(EUseExtendedError);
-	CleanupStack::PushL(TCleanupItem(Cleanup,this));
-	OpenPhoneL();
-
-	RBuf8 data;
-	CleanupClosePushL(data);
-
-	CFilteringActiveScheduler scheduler;
-	CActiveScheduler::Install(&scheduler);
-
-	RMobileSmsMessaging messaging;
-	TInt err = messaging.Open(iPhone);
-	ASSERT_EQUALS(KErrNone, err);
-	CleanupClosePushL(messaging);
-	CRetrieveMobilePhoneSmspList* asyncRetrieveList =
-	                                       CRetrieveMobilePhoneSmspList::NewL(messaging);    
-	CleanupStack::PushL(asyncRetrieveList);
-
-	CActiveRetriever::ResetRequestsNumber();
-	CActiveRetriever* activeRetriever = 
-						CActiveRetriever::NewL(*asyncRetrieveList);
-	CleanupStack::PushL(activeRetriever);
-	scheduler.AddRetrieverL(*activeRetriever);
-
- 	//-------------------------------------------------------------------------
-	// TEST A: failure to dispatch request to LTSY
- 	//-------------------------------------------------------------------------
-
-    iMockLTSY.ExpectL(EMobileSmsMessagingGetSmspListPhase1, KErrNotSupported);
-
-	asyncRetrieveList->Start(activeRetriever->iStatus);
-	activeRetriever->Activate();
-	scheduler.StartScheduler();
-
-	ASSERT_EQUALS(0, CActiveRetriever::ResetRequestsNumber());
-	ASSERT_EQUALS(KErrNotSupported, activeRetriever->iStatus.Int());
-	AssertMockLtsyStatusL();
-
-	// test for KErrNotFound
-    iMockLTSY.ExpectL(EMobileSmsMessagingGetSmspListPhase1, KErrNotFound);
-
-	asyncRetrieveList->Start(activeRetriever->iStatus);
-	activeRetriever->Activate();
-	scheduler.StartScheduler();
-
-	ASSERT_EQUALS(0, CActiveRetriever::ResetRequestsNumber());
-	ASSERT_EQUALS(KErrNotFound, activeRetriever->iStatus.Int());
-	AssertMockLtsyStatusL();
-
-	//-------------------------------------------------------------------------
-	// TEST B: failure on completion of pending request from LTSY->CTSY
- 	//-------------------------------------------------------------------------
-
-    iMockLTSY.ExpectL(EMobileSmsMessagingGetSmspListPhase1);
-    iMockLTSY.CompleteL(EMobileSmsMessagingGetSmspListPhase1, KErrGeneral);
-
-	asyncRetrieveList->Start(activeRetriever->iStatus);
-	activeRetriever->Activate();
-	scheduler.StartScheduler();
-
-	ASSERT_EQUALS(0, CActiveRetriever::ResetRequestsNumber());
-	ASSERT_EQUALS(KErrGeneral, activeRetriever->iStatus.Int());
-	AssertMockLtsyStatusL();
-
-	//-------------------------------------------------------------------------
-	// TEST: completion with empty array
- 	//-------------------------------------------------------------------------
-
-    iMockLTSY.ExpectL(EMobileSmsMessagingGetSmspListPhase1);
-
-	CArrayPtrFlat<TSmsParameters>* completeList = new (ELeave) CArrayPtrFlat<TSmsParameters>(1);
-	CleanupStack::PushL(completeList);
-	TMockLtsyData1<CArrayPtrFlat<TSmsParameters>*> completeLtsyData(completeList);
-    completeLtsyData.SerialiseL(data); 
-    iMockLTSY.CompleteL(EMobileSmsMessagingGetSmspListPhase1, KErrNone, data);
-
-	asyncRetrieveList->Start(activeRetriever->iStatus);
-	activeRetriever->Activate();
-	scheduler.StartScheduler();
-
-	ASSERT_EQUALS(0, CActiveRetriever::ResetRequestsNumber());
-	ASSERT_EQUALS(KErrNone, activeRetriever->iStatus.Int());
-
-	CMobilePhoneSmspList* list = asyncRetrieveList->RetrieveListL();
-	CleanupStack::PushL( list );
-	ASSERT_EQUALS(0, list->Enumerate());
-    CleanupStack::PopAndDestroy(list);
-	
-	AssertMockLtsyStatusL();
-
- 	//-------------------------------------------------------------------------
-	// TEST C: Successful completion request of
-	// CRetrieveMobilePhoneSmspList::Start when result is not cached.
- 	//-------------------------------------------------------------------------
-
-    iMockLTSY.ExpectL(EMobileSmsMessagingGetSmspListPhase1);
-
-	TSmsParameters entry;
-	TSmsParameters entry1;
-	FillInSmsParamsAndListL(*completeList, entry, entry1);
-	data.Close();
-    completeLtsyData.SerialiseL(data); 
-    iMockLTSY.CompleteL(EMobileSmsMessagingGetSmspListPhase1, KErrNone, data);
-
-	asyncRetrieveList->Start(activeRetriever->iStatus);
-	activeRetriever->Activate();
-	scheduler.StartScheduler();
-
-	ASSERT_EQUALS(0, CActiveRetriever::ResetRequestsNumber());
-	ASSERT_EQUALS(KErrNone, activeRetriever->iStatus.Int());
-	
-	list = asyncRetrieveList->RetrieveListL();
-	CleanupStack::PushL( list );
-	
-	ASSERT_EQUALS(2, list->Enumerate());
-	const RMobileSmsMessaging::TMobileSmspEntryV1& smspEntry = list->GetEntryL(0);
-	
-	TInt completeIndex(entry.iLocationNumber);
-	ASSERT_EQUALS(completeIndex, smspEntry.iIndex);
-	ASSERT_EQUALS(entry.iAlphaTagData, smspEntry.iText);
-	TUint32 completeValidParams(entry.iParameterIndicator);
-	ASSERT_EQUALS(completeValidParams, smspEntry.iValidParams);
-	ASSERT_EQUALS(entry.iMobileDeTON, smspEntry.iDestination.iTypeOfNumber);
-	ASSERT_EQUALS(entry.iMobileDeNPI, smspEntry.iDestination.iNumberPlan);
-	ASSERT_TRUE( 0 == entry.iDestinationAddress.Compare(smspEntry.iDestination.iTelNumber) );
-	ASSERT_EQUALS(entry.iMobileScTON, smspEntry.iServiceCentre.iTypeOfNumber);
-	ASSERT_EQUALS(entry.iMobileScNPI, smspEntry.iServiceCentre.iNumberPlan);
-	ASSERT_TRUE( 0 == entry.iServiceCenterAddress.Compare(smspEntry.iServiceCentre.iTelNumber) );
-		
-	const RMobileSmsMessaging::TMobileSmspEntryV1& smspEntry1 = list->GetEntryL(1);
-	
-	completeIndex = entry1.iLocationNumber;
-	ASSERT_EQUALS(completeIndex, smspEntry1.iIndex);
-	ASSERT_EQUALS(0, smspEntry1.iText.Length());
-	completeValidParams = entry1.iParameterIndicator;
-	ASSERT_EQUALS(completeValidParams, smspEntry1.iValidParams);
-	ASSERT_EQUALS(entry1.iProtocolId, smspEntry1.iProtocolId);
-	ASSERT_EQUALS(entry1.iDataCodingScheme, smspEntry1.iDcs);
-	ASSERT_EQUALS(entry1.iValidityPeriod, smspEntry1.iValidityPeriod);
-
-    CleanupStack::PopAndDestroy(list);
-	AssertMockLtsyStatusL();
-
- 	//-------------------------------------------------------------------------
-	// TEST E: Unsolicited completion of CRetrieveMobilePhoneSmspList::Start
-	// from LTSY.
- 	//-------------------------------------------------------------------------
-
-	TRequestStatus mockLtsyStatus;
-	iMockLTSY.NotifyTerminated(mockLtsyStatus);
-	completeList->Reset();
-    data.Close();
-    completeLtsyData.SerialiseL(data); 
-    iMockLTSY.CompleteL(EMobileSmsMessagingGetSmspListPhase1, KErrNone, data);
-	User::WaitForRequest(mockLtsyStatus);
-	ASSERT_EQUALS(KErrNone, mockLtsyStatus.Int());
-	AssertMockLtsyStatusL();
-
-	// increase coverage
-	iMockLTSY.NotifyTerminated(mockLtsyStatus);	
-    iMockLTSY.CompleteL(EMobileSmsMessagingGetSmspListPhase1, KErrGeneral);
-	User::WaitForRequest(mockLtsyStatus);
-	ASSERT_EQUALS(KErrNone, mockLtsyStatus.Int());
-	AssertMockLtsyStatusL();
-
-	CleanupStack::PopAndDestroy(completeList);
-
-	//-------------------------------------------------------------------------
-	// TEST: completion with null pointer
- 	//-------------------------------------------------------------------------
-
-	iMockLTSY.ExpectL(EMobileSmsMessagingGetSmspListPhase1);
-	completeList = NULL;
-	data.Close();
-	completeLtsyData.SerialiseL(data);
-	iMockLTSY.CompleteL(EMobileSmsMessagingGetSmspListPhase1, KErrNone, data);
-
-	asyncRetrieveList->Start(activeRetriever->iStatus);
-	activeRetriever->Activate();
-	scheduler.StartScheduler();
-
-	ASSERT_EQUALS(0, CActiveRetriever::ResetRequestsNumber());
-	ASSERT_EQUALS(KErrGeneral, activeRetriever->iStatus.Int());
-	AssertMockLtsyStatusL();
-
-	CleanupStack::PopAndDestroy(3); // activeRetriever, asyncRetrieveList, messaging
-	CleanupStack::PopAndDestroy(2, this); // data, this
-	
-	}
-
-
-/**
-@SYMTestCaseID BA-CTSY-SMSP-CRMPSL-0002
-@SYMComponent  telephony_ctsy
-@SYMTestCaseDesc Test support in CTSY for cancelling of CRetrieveMobilePhoneSmspList::Start
-@SYMTestPriority High
-@SYMTestActions Invokes cancelling of CRetrieveMobilePhoneSmspList::Start
-@SYMTestExpectedResults Pass
-@SYMTestType CT
-*/
-void CCTsySMSPStoreFU::TestStart0002L()
-	{
-
-	OpenEtelServerL(EUseExtendedError);
-	CleanupStack::PushL(TCleanupItem(Cleanup,this));
-	OpenPhoneL();
-
-	TRequestStatus mockLtsyStatus;
-	iMockLTSY.NotifyTerminated(mockLtsyStatus);
-
-	RBuf8 data;
-	CleanupClosePushL(data);
-
-	CFilteringActiveScheduler scheduler;
-	CActiveScheduler::Install(&scheduler);
-
-	RMobileSmsMessaging messaging;
-	TInt err = messaging.Open(iPhone);
-	ASSERT_EQUALS(KErrNone, err);
-	CleanupClosePushL(messaging);
-	CRetrieveMobilePhoneSmspList* asyncRetrieveList =
-	                                       CRetrieveMobilePhoneSmspList::NewL(messaging);    
-	CleanupStack::PushL(asyncRetrieveList);
-
-	CActiveRetriever::ResetRequestsNumber();
-	CActiveRetriever* activeRetriever = 
-						CActiveRetriever::NewL(*asyncRetrieveList);
-	CleanupStack::PushL(activeRetriever);
-	scheduler.AddRetrieverL(*activeRetriever);
-
- 	//-------------------------------------------------------------------------
-	// Test cancelling of CRetrieveMobilePhoneSmspList::Start
- 	//-------------------------------------------------------------------------
- 	
-    iMockLTSY.ExpectL(EMobileSmsMessagingGetSmspListPhase1);
-
-	CArrayPtrFlat<TSmsParameters>* completeList = new (ELeave) CArrayPtrFlat<TSmsParameters>(1);
-	CleanupStack::PushL(completeList);
-	TSmsParameters entry;
-	TSmsParameters entry1;
-	FillInSmsParamsAndListL(*completeList, entry, entry1);
-
-	TMockLtsyData1<CArrayPtrFlat<TSmsParameters>*> completeLtsyData(completeList);
-	completeLtsyData.SerialiseL(data); 
-    iMockLTSY.CompleteL(EMobileSmsMessagingGetSmspListPhase1, KErrNone, data, 10);
-
-	asyncRetrieveList->Start(activeRetriever->iStatus);
-	activeRetriever->Activate(CActiveRetriever::ECaseGeneralCancelCase);
-	scheduler.StartScheduler();
-
-	ASSERT_EQUALS(0, CActiveRetriever::ResetRequestsNumber());
-	ASSERT_EQUALS(KErrCancel, activeRetriever->iStatus.Int());
-
-	// Wait for completion of iMockLTSY.NotifyTerminated
-	User::WaitForRequest(mockLtsyStatus);
-	ASSERT_EQUALS(KErrNone, mockLtsyStatus.Int());
-	
-	AssertMockLtsyStatusL();
-
- 	//-------------------------------------------------------------------------
-	// phase 2 cancel test case
- 	//-------------------------------------------------------------------------
-	
-    iMockLTSY.ExpectL(EMobileSmsMessagingGetSmspListPhase1);
-    iMockLTSY.CompleteL(EMobileSmsMessagingGetSmspListPhase1, KErrNone, data);
-
-	asyncRetrieveList->Start(activeRetriever->iStatus);
-	activeRetriever->Activate(CActiveRetriever::ECasePhase2Cancel);
-	scheduler.StartScheduler();
-
-	ASSERT_EQUALS(0, CActiveRetriever::ResetRequestsNumber());
-	ASSERT_EQUALS(KErrCancel, activeRetriever->iStatus.Int());
-
-	AssertMockLtsyStatusL();
-
-	CleanupStack::PopAndDestroy(4); // completeList, activeRetriever, asyncRetrieveList, messaging
-	CleanupStack::PopAndDestroy(2); // data, this
-	
-	}
-
-
-/**
-@SYMTestCaseID BA-CTSY-SMSP-CRMPSL-0004
-@SYMComponent  telephony_ctsy
-@SYMTestCaseDesc Test support in CTSY for multiple client requests to CRetrieveMobilePhoneSmspList::Start
-@SYMTestPriority High
-@SYMTestActions Invokes multiple client requests to CRetrieveMobilePhoneSmspList::Start
-@SYMTestExpectedResults Pass
-@SYMTestType CT
-*/
-void CCTsySMSPStoreFU::TestStart0004L()
-	{
-
-
-	OpenEtelServerL(EUseExtendedError);
-	CleanupStack::PushL(TCleanupItem(Cleanup, this));
-	OpenPhoneL();
-
-	RBuf8 data;
-	CleanupClosePushL(data);
-
-	// Open second client
-	RTelServer telServer2;
-	TInt ret = telServer2.Connect();
-	ASSERT_EQUALS(KErrNone, ret);
-	CleanupClosePushL(telServer2);
-
-	RMobilePhone phone2;
-	ret = phone2.Open(telServer2, KMmTsyPhoneName);
-	ASSERT_EQUALS(KErrNone, ret);
-	CleanupClosePushL(phone2);
-
-	CFilteringActiveScheduler scheduler;
-	CActiveScheduler::Install(&scheduler);
-
-	RMobileSmsMessaging messaging;
-	TInt err = messaging.Open(iPhone);
-	ASSERT_EQUALS(KErrNone, err);
-	CleanupClosePushL(messaging);
-	CRetrieveMobilePhoneSmspList* asyncRetrieveList =
-	                                       CRetrieveMobilePhoneSmspList::NewL(messaging);
-	CleanupStack::PushL(asyncRetrieveList);
-
-	CActiveRetriever::ResetRequestsNumber();
-	CActiveRetriever* activeRetriever = 
-						CActiveRetriever::NewL(*asyncRetrieveList);
-	CleanupStack::PushL(activeRetriever);
-	scheduler.AddRetrieverL(*activeRetriever);
-
-	RMobileSmsMessaging messaging2;
-	err = messaging2.Open(phone2);
-	ASSERT_EQUALS(KErrNone, err);
-	CleanupClosePushL(messaging2);
-	CRetrieveMobilePhoneSmspList* asyncRetrieveList2 =
-	                                       CRetrieveMobilePhoneSmspList::NewL(messaging2);
-	CleanupStack::PushL(asyncRetrieveList2);
-
-	CActiveRetriever::ResetRequestsNumber();
-	CActiveRetriever* activeRetriever2 = 
-						CActiveRetriever::NewL(*asyncRetrieveList2);
-	CleanupStack::PushL(activeRetriever2);
-	scheduler.AddRetrieverL(*activeRetriever2);
-
-	//-------------------------------------------------------------------------
-	// Test A: Test multiple clients requesting CRetrieveMobilePhoneSmspList::Start
- 	//-------------------------------------------------------------------------
-
-    iMockLTSY.ExpectL(EMobileSmsMessagingGetSmspListPhase1);
-
-	CArrayPtrFlat<TSmsParameters>* completeList = new (ELeave) CArrayPtrFlat<TSmsParameters>(1);
-	CleanupStack::PushL(completeList);
-	TSmsParameters entry;
-	TSmsParameters entry1;
-	FillInSmsParamsAndListL(*completeList, entry, entry1);
-
-	TMockLtsyData1<CArrayPtrFlat<TSmsParameters>*> completeLtsyData(completeList);
-    completeLtsyData.SerialiseL(data); 
-    iMockLTSY.CompleteL(EMobileSmsMessagingGetSmspListPhase1, KErrNone, data, 10);
-
-	asyncRetrieveList->Start(activeRetriever->iStatus);
-	activeRetriever->Activate();
-
-	asyncRetrieveList2->Start(activeRetriever2->iStatus);
-	activeRetriever2->Activate();
-
-	scheduler.StartScheduler();
-
-	ASSERT_EQUALS(0, CActiveRetriever::ResetRequestsNumber());
-	ASSERT_EQUALS(KErrNone, activeRetriever->iStatus.Int());
-	ASSERT_EQUALS(KErrServerBusy, activeRetriever2->iStatus.Int());
-
-	AssertMockLtsyStatusL();
-	CleanupStack::PopAndDestroy(4); // completeList, activeRetriever2, asyncRetrieveList2, messaging2
-	CleanupStack::PopAndDestroy(3); // activeRetriever, asyncRetrieveList, messaging
-	CleanupStack::PopAndDestroy(4, this); // phone2, telServer2, data, this
-
-	}
-
-
-/**
-@SYMTestCaseID BA-CTSY-SMSP-CRMPSL-0005
-@SYMComponent  telephony_ctsy
-@SYMTestCaseDesc Test support in CTSY for CRetrieveMobilePhoneSmspList::Start with timeout
-@SYMTestPriority High
-@SYMTestActions Invokes CRetrieveMobilePhoneSmspList::Start and tests for timeout
-@SYMTestExpectedResults Pass
-@SYMTestType CT
-*/
-void CCTsySMSPStoreFU::TestStart0005L()
-	{
-
-	OpenEtelServerL(EUseExtendedError);
-	CleanupStack::PushL(TCleanupItem(Cleanup,this));
-	OpenPhoneL();
-
-	CFilteringActiveScheduler scheduler;
-	CActiveScheduler::Install(&scheduler);
-
-	RMobileSmsMessaging messaging;
-	TInt err = messaging.Open(iPhone);
-	ASSERT_EQUALS(KErrNone, err);
-	CleanupClosePushL(messaging);
-	CRetrieveMobilePhoneSmspList* asyncRetrieveList =
-	                                       CRetrieveMobilePhoneSmspList::NewL(messaging);
-	CleanupStack::PushL(asyncRetrieveList);
-
-	CActiveRetriever::ResetRequestsNumber();
-	CActiveRetriever* activeRetriever = 
-						CActiveRetriever::NewL(*asyncRetrieveList);
-	CleanupStack::PushL(activeRetriever);
-	scheduler.AddRetrieverL(*activeRetriever);
-
-	//-------------------------------------------------------------------------
-	// Test A: Test timeout of CRetrieveMobilePhoneSmspList::Start
- 	//-------------------------------------------------------------------------
-
-    iMockLTSY.ExpectL(EMobileSmsMessagingGetSmspListPhase1);
-
-	asyncRetrieveList->Start(activeRetriever->iStatus);
-	activeRetriever->Activate();
-	scheduler.StartScheduler();
-
-	ASSERT_EQUALS(0, CActiveRetriever::ResetRequestsNumber());
-	ASSERT_EQUALS(KErrTimedOut, activeRetriever->iStatus.Int());
-
-	AssertMockLtsyStatusL();
-	CleanupStack::PopAndDestroy(3); // activeRetriever, asyncRetrieveList, messaging
-	CleanupStack::PopAndDestroy(this);
-
-	}
+// Copyright (c) 2007-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:
+// The TEFUnit test suite for SMSPStore in the Common TSY.
+// 
+//
+
+/**
+ @file 
+*/
+
+#include "cctsysmspstorefu.h"
+#include <etel.h>
+#include <etelmm.h>
+#include <et_clsvr.h>
+#include <ctsy/mmtsy_names.h>
+#include <ctsy/serviceapi/mmtsy_ipcdefs.h>
+#include "tmockltsydata.h"
+#include <ctsy/serviceapi/gsmerror.h>
+#include "cctsyactiveretriever.h"
+#include <mmretrieve.h>
+
+CTestSuite* CCTsySMSPStoreFU::CreateSuiteL(const TDesC& aName)
+	{
+	SUB_SUITE;
+
+	ADD_TEST_STEP_ISO_CPP(CCTsySMSPStoreFU, TestStart0001L);
+	ADD_TEST_STEP_ISO_CPP(CCTsySMSPStoreFU, TestStart0002L);
+	ADD_TEST_STEP_ISO_CPP(CCTsySMSPStoreFU, TestStart0004L);
+	ADD_TEST_STEP_ISO_CPP(CCTsySMSPStoreFU, TestStart0005L);
+
+	END_SUITE;
+	}
+
+/**
+To push a CleanupItem ont the cleanupstack to close the phone
+*/
+void CCTsySMSPStoreFU::Cleanup(TAny* aSelf)
+	{
+	static_cast<CCTsySMSPStoreFU*>(aSelf)->DoCleanup();
+	}
+	
+/**
+Close the Phone a the server connection
+*/	
+void CCTsySMSPStoreFU::DoCleanup()
+	{
+	CActiveScheduler::Install(NULL);
+	CCtsyComponentTestBase::DoCleanup();
+	}
+
+
+LOCAL_C void FillInSmsParamsAndListL(
+		CArrayPtrFlat<TSmsParameters>& aSmsParamsList,
+		TSmsParameters& aSmsParams1,
+		TSmsParameters& aSmsParams2)
+	{
+	aSmsParams1.iLocationNumber = 1;
+	aSmsParams1.iParameterIndicator = KDestinationAddress|KServiceCentreAddress;
+	aSmsParams1.iProtocolId = 2;
+	aSmsParams1.iDataCodingScheme = 3;
+	aSmsParams1.iValidityPeriod = 4;
+	aSmsParams1.iMobileScTON = RMobilePhone::EInternationalNumber;
+	aSmsParams1.iMobileScNPI = RMobilePhone::EIsdnNumberPlan;
+	aSmsParams1.iMobileDeTON = RMobilePhone::ENationalNumber;
+	aSmsParams1.iMobileDeNPI = RMobilePhone::EDataNumberPlan;
+	aSmsParams1.iAlphaTagPresent = ETrue;
+	aSmsParams1.iServiceCenterAddress.Copy(_L("asta"));
+	aSmsParams1.iDestinationAddress.Copy(_L("la"));
+	aSmsParams1.iAlphaTagData.Copy(_L("vista"));
+
+	aSmsParams2.iLocationNumber = 5;
+	aSmsParams2.iParameterIndicator = KProtocolID|KDataCodingScheme|KValidityPeriod;
+	aSmsParams2.iProtocolId = 6;
+	aSmsParams2.iDataCodingScheme = 7;
+	aSmsParams2.iValidityPeriod = 8;
+	aSmsParams2.iMobileScTON = RMobilePhone::ENetworkSpecificNumber;
+	aSmsParams2.iMobileScNPI = RMobilePhone::ETelexNumberPlan;
+	aSmsParams2.iMobileDeTON = RMobilePhone::ESubscriberNumber;
+	aSmsParams2.iMobileDeNPI = RMobilePhone::ENationalNumberPlan;
+	aSmsParams2.iAlphaTagPresent = EFalse;
+	aSmsParams2.iServiceCenterAddress.Copy(_L("I'l"));
+	aSmsParams2.iDestinationAddress.Copy(_L("be"));
+	aSmsParams2.iAlphaTagData.Copy(_L("back"));
+
+	aSmsParamsList.AppendL(&aSmsParams1);
+	aSmsParamsList.AppendL(&aSmsParams2);
+	}
+
+
+//
+// Actual test cases
+//
+
+
+/**
+@SYMTestCaseID BA-CTSY-SMSP-CRMPSL-0001
+@SYMComponent  telephony_ctsy
+@SYMTestCaseDesc Test support in CTSY for CRetrieveMobilePhoneSmspList::Start
+@SYMTestPriority High
+@SYMTestActions Invokes CRetrieveMobilePhoneSmspList::Start
+@SYMTestExpectedResults Pass
+@SYMTestType CT
+*/
+void CCTsySMSPStoreFU::TestStart0001L()
+	{
+
+	OpenEtelServerL(EUseExtendedError);
+	CleanupStack::PushL(TCleanupItem(Cleanup,this));
+	OpenPhoneL();
+
+	RBuf8 data;
+	CleanupClosePushL(data);
+
+	CFilteringActiveScheduler scheduler;
+	CActiveScheduler::Install(&scheduler);
+
+	RMobileSmsMessaging messaging;
+	TInt err = messaging.Open(iPhone);
+	ASSERT_EQUALS(KErrNone, err);
+	CleanupClosePushL(messaging);
+	CRetrieveMobilePhoneSmspList* asyncRetrieveList =
+	                                       CRetrieveMobilePhoneSmspList::NewL(messaging);    
+	CleanupStack::PushL(asyncRetrieveList);
+
+	CActiveRetriever::ResetRequestsNumber();
+	CActiveRetriever* activeRetriever = 
+						CActiveRetriever::NewL(*asyncRetrieveList);
+	CleanupStack::PushL(activeRetriever);
+	scheduler.AddRetrieverL(*activeRetriever);
+
+ 	//-------------------------------------------------------------------------
+	// TEST A: failure to dispatch request to LTSY
+ 	//-------------------------------------------------------------------------
+
+    iMockLTSY.ExpectL(EMobileSmsMessagingGetSmspListPhase1, KErrNotSupported);
+
+	asyncRetrieveList->Start(activeRetriever->iStatus);
+	activeRetriever->Activate();
+	scheduler.StartScheduler();
+
+	ASSERT_EQUALS(0, CActiveRetriever::ResetRequestsNumber());
+	ASSERT_EQUALS(KErrNotSupported, activeRetriever->iStatus.Int());
+	AssertMockLtsyStatusL();
+
+	// test for KErrNotFound
+    iMockLTSY.ExpectL(EMobileSmsMessagingGetSmspListPhase1, KErrNotFound);
+
+	asyncRetrieveList->Start(activeRetriever->iStatus);
+	activeRetriever->Activate();
+	scheduler.StartScheduler();
+
+	ASSERT_EQUALS(0, CActiveRetriever::ResetRequestsNumber());
+	ASSERT_EQUALS(KErrNotFound, activeRetriever->iStatus.Int());
+	AssertMockLtsyStatusL();
+
+	//-------------------------------------------------------------------------
+	// TEST B: failure on completion of pending request from LTSY->CTSY
+ 	//-------------------------------------------------------------------------
+
+    iMockLTSY.ExpectL(EMobileSmsMessagingGetSmspListPhase1);
+    iMockLTSY.CompleteL(EMobileSmsMessagingGetSmspListPhase1, KErrGeneral);
+
+	asyncRetrieveList->Start(activeRetriever->iStatus);
+	activeRetriever->Activate();
+	scheduler.StartScheduler();
+
+	ASSERT_EQUALS(0, CActiveRetriever::ResetRequestsNumber());
+	ASSERT_EQUALS(KErrGeneral, activeRetriever->iStatus.Int());
+	AssertMockLtsyStatusL();
+
+	//-------------------------------------------------------------------------
+	// TEST: completion with empty array
+ 	//-------------------------------------------------------------------------
+
+    iMockLTSY.ExpectL(EMobileSmsMessagingGetSmspListPhase1);
+
+	CArrayPtrFlat<TSmsParameters>* completeList = new (ELeave) CArrayPtrFlat<TSmsParameters>(1);
+	CleanupStack::PushL(completeList);
+	TMockLtsyData1<CArrayPtrFlat<TSmsParameters>*> completeLtsyData(completeList);
+    completeLtsyData.SerialiseL(data); 
+    iMockLTSY.CompleteL(EMobileSmsMessagingGetSmspListPhase1, KErrNone, data);
+
+	asyncRetrieveList->Start(activeRetriever->iStatus);
+	activeRetriever->Activate();
+	scheduler.StartScheduler();
+
+	ASSERT_EQUALS(0, CActiveRetriever::ResetRequestsNumber());
+	ASSERT_EQUALS(KErrNone, activeRetriever->iStatus.Int());
+
+	CMobilePhoneSmspList* list = asyncRetrieveList->RetrieveListL();
+	CleanupStack::PushL( list );
+	ASSERT_EQUALS(0, list->Enumerate());
+    CleanupStack::PopAndDestroy(list);
+	
+	AssertMockLtsyStatusL();
+
+ 	//-------------------------------------------------------------------------
+	// TEST C: Successful completion request of
+	// CRetrieveMobilePhoneSmspList::Start when result is not cached.
+ 	//-------------------------------------------------------------------------
+
+    iMockLTSY.ExpectL(EMobileSmsMessagingGetSmspListPhase1);
+
+	TSmsParameters entry;
+	TSmsParameters entry1;
+	FillInSmsParamsAndListL(*completeList, entry, entry1);
+	data.Close();
+    completeLtsyData.SerialiseL(data); 
+    iMockLTSY.CompleteL(EMobileSmsMessagingGetSmspListPhase1, KErrNone, data);
+
+	asyncRetrieveList->Start(activeRetriever->iStatus);
+	activeRetriever->Activate();
+	scheduler.StartScheduler();
+
+	ASSERT_EQUALS(0, CActiveRetriever::ResetRequestsNumber());
+	ASSERT_EQUALS(KErrNone, activeRetriever->iStatus.Int());
+	
+	list = asyncRetrieveList->RetrieveListL();
+	CleanupStack::PushL( list );
+	
+	ASSERT_EQUALS(2, list->Enumerate());
+	const RMobileSmsMessaging::TMobileSmspEntryV1& smspEntry = list->GetEntryL(0);
+	
+	TInt completeIndex(entry.iLocationNumber);
+	ASSERT_EQUALS(completeIndex, smspEntry.iIndex);
+	ASSERT_EQUALS(entry.iAlphaTagData, smspEntry.iText);
+	TUint32 completeValidParams(entry.iParameterIndicator);
+	ASSERT_EQUALS(completeValidParams, smspEntry.iValidParams);
+	ASSERT_EQUALS(entry.iMobileDeTON, smspEntry.iDestination.iTypeOfNumber);
+	ASSERT_EQUALS(entry.iMobileDeNPI, smspEntry.iDestination.iNumberPlan);
+	ASSERT_TRUE( 0 == entry.iDestinationAddress.Compare(smspEntry.iDestination.iTelNumber) );
+	ASSERT_EQUALS(entry.iMobileScTON, smspEntry.iServiceCentre.iTypeOfNumber);
+	ASSERT_EQUALS(entry.iMobileScNPI, smspEntry.iServiceCentre.iNumberPlan);
+	ASSERT_TRUE( 0 == entry.iServiceCenterAddress.Compare(smspEntry.iServiceCentre.iTelNumber) );
+		
+	const RMobileSmsMessaging::TMobileSmspEntryV1& smspEntry1 = list->GetEntryL(1);
+	
+	completeIndex = entry1.iLocationNumber;
+	ASSERT_EQUALS(completeIndex, smspEntry1.iIndex);
+	ASSERT_EQUALS(0, smspEntry1.iText.Length());
+	completeValidParams = entry1.iParameterIndicator;
+	ASSERT_EQUALS(completeValidParams, smspEntry1.iValidParams);
+	ASSERT_EQUALS(entry1.iProtocolId, smspEntry1.iProtocolId);
+	ASSERT_EQUALS(entry1.iDataCodingScheme, smspEntry1.iDcs);
+	ASSERT_EQUALS(entry1.iValidityPeriod, smspEntry1.iValidityPeriod);
+
+    CleanupStack::PopAndDestroy(list);
+	AssertMockLtsyStatusL();
+
+ 	//-------------------------------------------------------------------------
+	// TEST E: Unsolicited completion of CRetrieveMobilePhoneSmspList::Start
+	// from LTSY.
+ 	//-------------------------------------------------------------------------
+
+	TRequestStatus mockLtsyStatus;
+	iMockLTSY.NotifyTerminated(mockLtsyStatus);
+	completeList->Reset();
+    data.Close();
+    completeLtsyData.SerialiseL(data); 
+    iMockLTSY.CompleteL(EMobileSmsMessagingGetSmspListPhase1, KErrNone, data);
+	User::WaitForRequest(mockLtsyStatus);
+	ASSERT_EQUALS(KErrNone, mockLtsyStatus.Int());
+	AssertMockLtsyStatusL();
+
+	// increase coverage
+	iMockLTSY.NotifyTerminated(mockLtsyStatus);	
+    iMockLTSY.CompleteL(EMobileSmsMessagingGetSmspListPhase1, KErrGeneral);
+	User::WaitForRequest(mockLtsyStatus);
+	ASSERT_EQUALS(KErrNone, mockLtsyStatus.Int());
+	AssertMockLtsyStatusL();
+
+	CleanupStack::PopAndDestroy(completeList);
+
+	//-------------------------------------------------------------------------
+	// TEST: completion with null pointer
+ 	//-------------------------------------------------------------------------
+
+	iMockLTSY.ExpectL(EMobileSmsMessagingGetSmspListPhase1);
+	completeList = NULL;
+	data.Close();
+	completeLtsyData.SerialiseL(data);
+	iMockLTSY.CompleteL(EMobileSmsMessagingGetSmspListPhase1, KErrNone, data);
+
+	asyncRetrieveList->Start(activeRetriever->iStatus);
+	activeRetriever->Activate();
+	scheduler.StartScheduler();
+
+	ASSERT_EQUALS(0, CActiveRetriever::ResetRequestsNumber());
+	ASSERT_EQUALS(KErrGeneral, activeRetriever->iStatus.Int());
+	AssertMockLtsyStatusL();
+
+	CleanupStack::PopAndDestroy(3); // activeRetriever, asyncRetrieveList, messaging
+	CleanupStack::PopAndDestroy(2, this); // data, this
+	
+	}
+
+
+/**
+@SYMTestCaseID BA-CTSY-SMSP-CRMPSL-0002
+@SYMComponent  telephony_ctsy
+@SYMTestCaseDesc Test support in CTSY for cancelling of CRetrieveMobilePhoneSmspList::Start
+@SYMTestPriority High
+@SYMTestActions Invokes cancelling of CRetrieveMobilePhoneSmspList::Start
+@SYMTestExpectedResults Pass
+@SYMTestType CT
+*/
+void CCTsySMSPStoreFU::TestStart0002L()
+	{
+
+	OpenEtelServerL(EUseExtendedError);
+	CleanupStack::PushL(TCleanupItem(Cleanup,this));
+	OpenPhoneL();
+
+	TRequestStatus mockLtsyStatus;
+	iMockLTSY.NotifyTerminated(mockLtsyStatus);
+
+	RBuf8 data;
+	CleanupClosePushL(data);
+
+	CFilteringActiveScheduler scheduler;
+	CActiveScheduler::Install(&scheduler);
+
+	RMobileSmsMessaging messaging;
+	TInt err = messaging.Open(iPhone);
+	ASSERT_EQUALS(KErrNone, err);
+	CleanupClosePushL(messaging);
+	CRetrieveMobilePhoneSmspList* asyncRetrieveList =
+	                                       CRetrieveMobilePhoneSmspList::NewL(messaging);    
+	CleanupStack::PushL(asyncRetrieveList);
+
+	CActiveRetriever::ResetRequestsNumber();
+	CActiveRetriever* activeRetriever = 
+						CActiveRetriever::NewL(*asyncRetrieveList);
+	CleanupStack::PushL(activeRetriever);
+	scheduler.AddRetrieverL(*activeRetriever);
+
+ 	//-------------------------------------------------------------------------
+	// Test cancelling of CRetrieveMobilePhoneSmspList::Start
+ 	//-------------------------------------------------------------------------
+ 	
+    iMockLTSY.ExpectL(EMobileSmsMessagingGetSmspListPhase1);
+
+	CArrayPtrFlat<TSmsParameters>* completeList = new (ELeave) CArrayPtrFlat<TSmsParameters>(1);
+	CleanupStack::PushL(completeList);
+	TSmsParameters entry;
+	TSmsParameters entry1;
+	FillInSmsParamsAndListL(*completeList, entry, entry1);
+
+	TMockLtsyData1<CArrayPtrFlat<TSmsParameters>*> completeLtsyData(completeList);
+	completeLtsyData.SerialiseL(data); 
+    iMockLTSY.CompleteL(EMobileSmsMessagingGetSmspListPhase1, KErrNone, data, 10);
+
+	asyncRetrieveList->Start(activeRetriever->iStatus);
+	activeRetriever->Activate(CActiveRetriever::ECaseGeneralCancelCase);
+	scheduler.StartScheduler();
+
+	ASSERT_EQUALS(0, CActiveRetriever::ResetRequestsNumber());
+	ASSERT_EQUALS(KErrCancel, activeRetriever->iStatus.Int());
+
+	// Wait for completion of iMockLTSY.NotifyTerminated
+	User::WaitForRequest(mockLtsyStatus);
+	ASSERT_EQUALS(KErrNone, mockLtsyStatus.Int());
+	
+	AssertMockLtsyStatusL();
+
+ 	//-------------------------------------------------------------------------
+	// phase 2 cancel test case
+ 	//-------------------------------------------------------------------------
+	
+    iMockLTSY.ExpectL(EMobileSmsMessagingGetSmspListPhase1);
+    iMockLTSY.CompleteL(EMobileSmsMessagingGetSmspListPhase1, KErrNone, data);
+
+	asyncRetrieveList->Start(activeRetriever->iStatus);
+	activeRetriever->Activate(CActiveRetriever::ECasePhase2Cancel);
+	scheduler.StartScheduler();
+
+	ASSERT_EQUALS(0, CActiveRetriever::ResetRequestsNumber());
+	ASSERT_EQUALS(KErrCancel, activeRetriever->iStatus.Int());
+
+	AssertMockLtsyStatusL();
+
+	CleanupStack::PopAndDestroy(4); // completeList, activeRetriever, asyncRetrieveList, messaging
+	CleanupStack::PopAndDestroy(2); // data, this
+	
+	}
+
+
+/**
+@SYMTestCaseID BA-CTSY-SMSP-CRMPSL-0004
+@SYMComponent  telephony_ctsy
+@SYMTestCaseDesc Test support in CTSY for multiple client requests to CRetrieveMobilePhoneSmspList::Start
+@SYMTestPriority High
+@SYMTestActions Invokes multiple client requests to CRetrieveMobilePhoneSmspList::Start
+@SYMTestExpectedResults Pass
+@SYMTestType CT
+*/
+void CCTsySMSPStoreFU::TestStart0004L()
+	{
+
+
+	OpenEtelServerL(EUseExtendedError);
+	CleanupStack::PushL(TCleanupItem(Cleanup, this));
+	OpenPhoneL();
+
+	RBuf8 data;
+	CleanupClosePushL(data);
+
+	// Open second client
+	RTelServer telServer2;
+	TInt ret = telServer2.Connect();
+	ASSERT_EQUALS(KErrNone, ret);
+	CleanupClosePushL(telServer2);
+
+	RMobilePhone phone2;
+	ret = phone2.Open(telServer2, KMmTsyPhoneName);
+	ASSERT_EQUALS(KErrNone, ret);
+	CleanupClosePushL(phone2);
+
+	CFilteringActiveScheduler scheduler;
+	CActiveScheduler::Install(&scheduler);
+
+	RMobileSmsMessaging messaging;
+	TInt err = messaging.Open(iPhone);
+	ASSERT_EQUALS(KErrNone, err);
+	CleanupClosePushL(messaging);
+	CRetrieveMobilePhoneSmspList* asyncRetrieveList =
+	                                       CRetrieveMobilePhoneSmspList::NewL(messaging);
+	CleanupStack::PushL(asyncRetrieveList);
+
+	CActiveRetriever::ResetRequestsNumber();
+	CActiveRetriever* activeRetriever = 
+						CActiveRetriever::NewL(*asyncRetrieveList);
+	CleanupStack::PushL(activeRetriever);
+	scheduler.AddRetrieverL(*activeRetriever);
+
+	RMobileSmsMessaging messaging2;
+	err = messaging2.Open(phone2);
+	ASSERT_EQUALS(KErrNone, err);
+	CleanupClosePushL(messaging2);
+	CRetrieveMobilePhoneSmspList* asyncRetrieveList2 =
+	                                       CRetrieveMobilePhoneSmspList::NewL(messaging2);
+	CleanupStack::PushL(asyncRetrieveList2);
+
+	CActiveRetriever::ResetRequestsNumber();
+	CActiveRetriever* activeRetriever2 = 
+						CActiveRetriever::NewL(*asyncRetrieveList2);
+	CleanupStack::PushL(activeRetriever2);
+	scheduler.AddRetrieverL(*activeRetriever2);
+
+	//-------------------------------------------------------------------------
+	// Test A: Test multiple clients requesting CRetrieveMobilePhoneSmspList::Start
+ 	//-------------------------------------------------------------------------
+
+    iMockLTSY.ExpectL(EMobileSmsMessagingGetSmspListPhase1);
+
+	CArrayPtrFlat<TSmsParameters>* completeList = new (ELeave) CArrayPtrFlat<TSmsParameters>(1);
+	CleanupStack::PushL(completeList);
+	TSmsParameters entry;
+	TSmsParameters entry1;
+	FillInSmsParamsAndListL(*completeList, entry, entry1);
+
+	TMockLtsyData1<CArrayPtrFlat<TSmsParameters>*> completeLtsyData(completeList);
+    completeLtsyData.SerialiseL(data); 
+    iMockLTSY.CompleteL(EMobileSmsMessagingGetSmspListPhase1, KErrNone, data, 10);
+
+	asyncRetrieveList->Start(activeRetriever->iStatus);
+	activeRetriever->Activate();
+
+	asyncRetrieveList2->Start(activeRetriever2->iStatus);
+	activeRetriever2->Activate();
+
+	scheduler.StartScheduler();
+
+	ASSERT_EQUALS(0, CActiveRetriever::ResetRequestsNumber());
+	ASSERT_EQUALS(KErrNone, activeRetriever->iStatus.Int());
+	ASSERT_EQUALS(KErrServerBusy, activeRetriever2->iStatus.Int());
+
+	AssertMockLtsyStatusL();
+	CleanupStack::PopAndDestroy(4); // completeList, activeRetriever2, asyncRetrieveList2, messaging2
+	CleanupStack::PopAndDestroy(3); // activeRetriever, asyncRetrieveList, messaging
+	CleanupStack::PopAndDestroy(4, this); // phone2, telServer2, data, this
+
+	}
+
+
+/**
+@SYMTestCaseID BA-CTSY-SMSP-CRMPSL-0005
+@SYMComponent  telephony_ctsy
+@SYMTestCaseDesc Test support in CTSY for CRetrieveMobilePhoneSmspList::Start with timeout
+@SYMTestPriority High
+@SYMTestActions Invokes CRetrieveMobilePhoneSmspList::Start and tests for timeout
+@SYMTestExpectedResults Pass
+@SYMTestType CT
+*/
+void CCTsySMSPStoreFU::TestStart0005L()
+	{
+
+	OpenEtelServerL(EUseExtendedError);
+	CleanupStack::PushL(TCleanupItem(Cleanup,this));
+	OpenPhoneL();
+
+	CFilteringActiveScheduler scheduler;
+	CActiveScheduler::Install(&scheduler);
+
+	RMobileSmsMessaging messaging;
+	TInt err = messaging.Open(iPhone);
+	ASSERT_EQUALS(KErrNone, err);
+	CleanupClosePushL(messaging);
+	CRetrieveMobilePhoneSmspList* asyncRetrieveList =
+	                                       CRetrieveMobilePhoneSmspList::NewL(messaging);
+	CleanupStack::PushL(asyncRetrieveList);
+
+	CActiveRetriever::ResetRequestsNumber();
+	CActiveRetriever* activeRetriever = 
+						CActiveRetriever::NewL(*asyncRetrieveList);
+	CleanupStack::PushL(activeRetriever);
+	scheduler.AddRetrieverL(*activeRetriever);
+
+	//-------------------------------------------------------------------------
+	// Test A: Test timeout of CRetrieveMobilePhoneSmspList::Start
+ 	//-------------------------------------------------------------------------
+
+    iMockLTSY.ExpectL(EMobileSmsMessagingGetSmspListPhase1);
+
+	asyncRetrieveList->Start(activeRetriever->iStatus);
+	activeRetriever->Activate();
+	scheduler.StartScheduler();
+
+	ASSERT_EQUALS(0, CActiveRetriever::ResetRequestsNumber());
+	ASSERT_EQUALS(KErrTimedOut, activeRetriever->iStatus.Int());
+
+	AssertMockLtsyStatusL();
+	CleanupStack::PopAndDestroy(3); // activeRetriever, asyncRetrieveList, messaging
+	CleanupStack::PopAndDestroy(this);
+
+	}