telephonyserverplugins/common_tsy/test/component/src/cctsyapncontrollistfu.cpp
changeset 0 3553901f7fa8
child 24 6638e7f4bd8f
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/telephonyserverplugins/common_tsy/test/component/src/cctsyapncontrollistfu.cpp	Tue Feb 02 01:41:59 2010 +0200
@@ -0,0 +1,2057 @@
+// 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 APNControlList in the Common TSY.
+// 
+//
+
+/**
+ @file 
+*/
+
+#include "cctsyapncontrollistfu.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>
+
+CTestSuite* CCTsyAPNControlListFU::CreateSuiteL(const TDesC& aName)
+	{
+	SUB_SUITE;
+
+	ADD_TEST_STEP_ISO_CPP(CCTsyAPNControlListFU, TestGetAPNname0001L);
+	ADD_TEST_STEP_ISO_CPP(CCTsyAPNControlListFU, TestGetAPNname0002L);
+	ADD_TEST_STEP_ISO_CPP(CCTsyAPNControlListFU, TestGetAPNname0003L);
+	ADD_TEST_STEP_ISO_CPP(CCTsyAPNControlListFU, TestGetAPNname0004L);
+	ADD_TEST_STEP_ISO_CPP(CCTsyAPNControlListFU, TestGetAPNname0005L);
+	ADD_TEST_STEP_ISO_CPP(CCTsyAPNControlListFU, TestEnumerateAPNEntries0001L);
+	ADD_TEST_STEP_ISO_CPP(CCTsyAPNControlListFU, TestEnumerateAPNEntries0002L);
+	ADD_TEST_STEP_ISO_CPP(CCTsyAPNControlListFU, TestEnumerateAPNEntries0004L);
+	ADD_TEST_STEP_ISO_CPP(CCTsyAPNControlListFU, TestEnumerateAPNEntries0005L);
+	ADD_TEST_STEP_ISO_CPP(CCTsyAPNControlListFU, TestAppendAPNName0001L);
+	ADD_TEST_STEP_ISO_CPP(CCTsyAPNControlListFU, TestAppendAPNName0002L);
+	ADD_TEST_STEP_ISO_CPP(CCTsyAPNControlListFU, TestAppendAPNName0004L);
+	ADD_TEST_STEP_ISO_CPP(CCTsyAPNControlListFU, TestAppendAPNName0005L);
+	ADD_TEST_STEP_ISO_CPP(CCTsyAPNControlListFU, TestDeleteAPNName0001L);
+	ADD_TEST_STEP_ISO_CPP(CCTsyAPNControlListFU, TestDeleteAPNName0002L);
+	ADD_TEST_STEP_ISO_CPP(CCTsyAPNControlListFU, TestDeleteAPNName0004L);
+	ADD_TEST_STEP_ISO_CPP(CCTsyAPNControlListFU, TestDeleteAPNName0005L);
+	ADD_TEST_STEP_ISO_CPP(CCTsyAPNControlListFU, TestNotifyAPNListChanged0001L);
+	ADD_TEST_STEP_ISO_CPP(CCTsyAPNControlListFU, TestNotifyAPNListChanged0002L);
+	ADD_TEST_STEP_ISO_CPP(CCTsyAPNControlListFU, TestNotifyAPNListChanged0004L);
+	ADD_TEST_STEP_ISO_CPP(CCTsyAPNControlListFU, TestGetAPNControlListServiceStatus0001L);
+	ADD_TEST_STEP_ISO_CPP(CCTsyAPNControlListFU, TestGetAPNControlListServiceStatus0002L);
+	ADD_TEST_STEP_ISO_CPP(CCTsyAPNControlListFU, TestGetAPNControlListServiceStatus0004L);
+	ADD_TEST_STEP_ISO_CPP(CCTsyAPNControlListFU, TestGetAPNControlListServiceStatus0005L);
+	ADD_TEST_STEP_ISO_CPP(CCTsyAPNControlListFU, TestSetAPNControlListServiceStatus0001L);
+	ADD_TEST_STEP_ISO_CPP(CCTsyAPNControlListFU, TestSetAPNControlListServiceStatus0002L);
+	ADD_TEST_STEP_ISO_CPP(CCTsyAPNControlListFU, TestSetAPNControlListServiceStatus0003L);
+	ADD_TEST_STEP_ISO_CPP(CCTsyAPNControlListFU, TestSetAPNControlListServiceStatus0004L);
+	ADD_TEST_STEP_ISO_CPP(CCTsyAPNControlListFU, TestSetAPNControlListServiceStatus0005L);
+	ADD_TEST_STEP_ISO_CPP(CCTsyAPNControlListFU, TestNotifyAPNControlListServiceStatusChange0001L);
+	ADD_TEST_STEP_ISO_CPP(CCTsyAPNControlListFU, TestNotifyAPNControlListServiceStatusChange0002L);
+	ADD_TEST_STEP_ISO_CPP(CCTsyAPNControlListFU, TestNotifyAPNControlListServiceStatusChange0004L);
+
+	END_SUITE;
+	}
+
+
+//
+// Actual test cases
+//
+
+
+/**
+@SYMTestCaseID BA-CTSY-ACL-MGAN-0001
+@SYMComponent  telephony_ctsy
+@SYMTestCaseDesc Test support in CTSY for RMobilePhone::GetAPNname
+@SYMTestPriority High
+@SYMTestActions Invokes RMobilePhone::GetAPNname
+@SYMTestExpectedResults Pass
+@SYMTestType CT
+*/
+void CCTsyAPNControlListFU::TestGetAPNname0001L()
+	{
+	OpenEtelServerL(EUseExtendedError);
+	CleanupStack::PushL(TCleanupItem(Cleanup,this));
+	OpenPhoneL();
+
+	RBuf8 dataExpect;
+	CleanupClosePushL(dataExpect);
+	
+	RBuf8 dataComplete;
+	CleanupClosePushL(dataComplete);
+	
+	// data for RMobilePhone::GetAPNname itself
+	TRequestStatus reqStatus;
+	TUint32 index = 0;
+	RMobilePhone::TAPNEntryV3 apnEntry;
+	RMobilePhone::TAPNEntryV3Pckg pckgEntry(apnEntry);	
+	
+	// data for ExpectL
+	TMockLtsyData1<TUint32> ltsyData(index);
+	ltsyData.SerialiseL(dataExpect);
+	
+	// data for CompleteL
+	RMobilePhone::TAPNEntryV3 apnEntryComplete;
+	_LIT8(KSameName, "SameName");
+	apnEntryComplete.iApn.Copy(KSameName);
+	TMockLtsyData1<RMobilePhone::TAPNEntryV3> ltsyData2(apnEntryComplete);
+	ltsyData2.SerialiseL(dataComplete);
+	
+ 	//-------------------------------------------------------------------------
+	// TEST A: failure to dispatch request to LTSY
+ 	//-------------------------------------------------------------------------
+	iMockLTSY.ExpectL(EMobilePhoneGetAPNname, dataExpect, KErrNotSupported);
+	
+	iPhone.GetAPNname(reqStatus, index, pckgEntry);
+	User::WaitForRequest(reqStatus);
+   	AssertMockLtsyStatusL();
+	ASSERT_EQUALS(KErrNotSupported, reqStatus.Int());
+	
+
+	//-------------------------------------------------------------------------
+	// TEST B: failure on completion of pending request from LTSY->CTSY
+ 	//-------------------------------------------------------------------------
+	iMockLTSY.ExpectL(EMobilePhoneGetAPNname, dataExpect);
+	iMockLTSY.CompleteL(EMobilePhoneGetAPNname, KErrGeneral, dataComplete);
+	
+	iPhone.GetAPNname(reqStatus, index, pckgEntry);
+	User::WaitForRequest(reqStatus);
+   	AssertMockLtsyStatusL();
+	ASSERT_EQUALS(KErrGeneral, reqStatus.Int());
+	
+	//-------------------------------------------------------------------------
+	// TEST C: Successful completion request of
+	// RMobilePhone::GetAPNname when result is not cached.
+ 	//-------------------------------------------------------------------------
+	iMockLTSY.ExpectL(EMobilePhoneGetAPNname, dataExpect);
+	iMockLTSY.CompleteL(EMobilePhoneGetAPNname, KErrNone, dataComplete);
+	
+	iPhone.GetAPNname(reqStatus, index, pckgEntry);
+	User::WaitForRequest(reqStatus);
+   	AssertMockLtsyStatusL();
+	ASSERT_EQUALS(KErrNone, reqStatus.Int());
+	ASSERT_EQUALS(apnEntryComplete.iApn, apnEntry.iApn);	
+	
+ 	//-------------------------------------------------------------------------
+	// TEST E: Unsolicited completion of RMobilePhone::GetAPNname
+	// from LTSY.
+ 	//-------------------------------------------------------------------------	
+	TRequestStatus mockLtsyStatus;
+	iMockLTSY.NotifyTerminated(mockLtsyStatus); 
+ 	// Issue the Complete...	
+	iMockLTSY.CompleteL(EMobilePhoneGetAPNname, KErrNone, dataComplete);
+	// wait for completion 
+	User::WaitForRequest(mockLtsyStatus);
+	ASSERT_EQUALS(KErrNone, mockLtsyStatus.Int());
+	
+	AssertMockLtsyStatusL();
+	CleanupStack::PopAndDestroy(3, this); // dataComplete, expectData, this
+	
+	}
+
+
+/**
+@SYMTestCaseID BA-CTSY-ACL-MGAN-0002
+@SYMComponent  telephony_ctsy
+@SYMTestCaseDesc Test support in CTSY for cancelling of RMobilePhone::GetAPNname
+@SYMTestPriority High
+@SYMTestActions Invokes cancelling of RMobilePhone::GetAPNname
+@SYMTestExpectedResults Pass
+@SYMTestType CT
+*/
+void CCTsyAPNControlListFU::TestGetAPNname0002L()
+	{
+
+// This test should test cancellation of GetAPNname
+// If this API does not have a cancel, the test step should be completely removed.
+
+	OpenEtelServerL(EUseExtendedError);
+	CleanupStack::PushL(TCleanupItem(Cleanup,this));
+	OpenPhoneL();
+
+	TRequestStatus mockLtsyStatus;
+	iMockLTSY.NotifyTerminated(mockLtsyStatus);
+
+	RBuf8 dataExpect;
+	CleanupClosePushL(dataExpect);
+	
+	RBuf8 dataComplete;
+	CleanupClosePushL(dataComplete);
+	
+	// data for RMobilePhone::GetAPNname itself
+	TRequestStatus reqStatus;
+	TUint32 index = 0;
+	RMobilePhone::TAPNEntryV3 apnEntry;
+	RMobilePhone::TAPNEntryV3Pckg pckgEntry(apnEntry);	
+	
+	// data for ExpectL
+	TMockLtsyData1<TUint32> ltsyData(index);
+	ltsyData.SerialiseL(dataExpect);
+	
+	// data for CompleteL
+	RMobilePhone::TAPNEntryV3 apnEntryComplete;
+	_LIT8(KSameName, "SameName");
+	apnEntryComplete.iApn.Copy(KSameName);
+	TMockLtsyData1<RMobilePhone::TAPNEntryV3> ltsyData2(apnEntryComplete);
+	ltsyData2.SerialiseL(dataComplete);
+
+ 	//-------------------------------------------------------------------------
+	// Test cancelling of RMobilePhone::GetAPNname
+ 	//-------------------------------------------------------------------------
+ 	
+	iMockLTSY.ExpectL(EMobilePhoneGetAPNname, dataExpect);
+	iMockLTSY.CompleteL(EMobilePhoneGetAPNname, KErrNone, dataComplete, 20);
+	
+	iPhone.GetAPNname(reqStatus, index, pckgEntry);
+	//cancel reguest
+	iPhone.CancelAsyncRequest(EMobilePhoneGetAPNname);
+	
+	User::WaitForRequest(reqStatus);
+	
+	// This defect was fixed. For more information see defect description    
+	//ERR_PRINTF2(_L("<font color=Orange>$CTSYKnownFailure: defect id = %d</font>"), 90101);
+  	ASSERT_EQUALS(KErrCancel, reqStatus.Int());
+	
+	// Wait for completion of iMockLTSY.NotifyTerminated
+	User::WaitForRequest(mockLtsyStatus);	
+	AssertMockLtsyStatusL();
+	CleanupStack::PopAndDestroy(3); // dataComplete, dataExpect, this	
+	}
+
+
+/**
+@SYMTestCaseID BA-CTSY-ACL-MGAN-0003
+@SYMComponent  telephony_ctsy
+@SYMTestCaseDesc Test support in CTSY for RMobilePhone::GetAPNname with bad parameter data
+@SYMTestPriority High
+@SYMTestActions Invokes RMobilePhone::GetAPNname with bad parameter data
+@SYMTestExpectedResults Pass
+@SYMTestType CT
+*/
+void CCTsyAPNControlListFU::TestGetAPNname0003L()
+    {
+
+    OpenEtelServerL(EUseExtendedError);
+    CleanupStack::PushL(TCleanupItem(Cleanup,this));
+    OpenPhoneL();
+
+    TRequestStatus reqStatus;
+    TUint32 index = 0;
+
+    //-------------------------------------------------------------------------
+    // Test A: Test passing wrong version of parameters to
+    // RMobilePhone::GetAPNname
+    //-------------------------------------------------------------------------
+
+    // Bad argument
+    TInt apnEntry;
+    TPckg<TInt> pckgEntry(apnEntry);
+
+    // Call GetAPNname with bad argument
+    iPhone.GetAPNname(reqStatus, index, pckgEntry);
+    User::WaitForRequest(reqStatus);
+    AssertMockLtsyStatusL();
+    ASSERT_EQUALS(KErrArgument, reqStatus.Int());
+
+    CleanupStack::PopAndDestroy(this);
+	
+	}
+
+
+/**
+@SYMTestCaseID BA-CTSY-ACL-MGAN-0004
+@SYMComponent  telephony_ctsy
+@SYMTestCaseDesc Test support in CTSY for multiple client requests to RMobilePhone::GetAPNname
+@SYMTestPriority High
+@SYMTestActions Invokes multiple client requests to RMobilePhone::GetAPNname
+@SYMTestExpectedResults Pass
+@SYMTestType CT
+*/
+void CCTsyAPNControlListFU::TestGetAPNname0004L()
+	{
+					
+	OpenEtelServerL(EUseExtendedError);
+	CleanupStack::PushL(TCleanupItem(Cleanup,this));
+	OpenPhoneL();
+
+	// 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);
+	
+	RBuf8 dataExpect;
+	CleanupClosePushL(dataExpect);
+	
+	RBuf8 dataComplete;
+	CleanupClosePushL(dataComplete);
+	
+	// data for RMobilePhone::GetAPNname itself	
+	TRequestStatus reqStatus;	
+	TRequestStatus reqStatus2;
+	TUint32 index = 0;
+	RMobilePhone::TAPNEntryV3 apnEntry;
+	RMobilePhone::TAPNEntryV3Pckg pckgEntry(apnEntry);	
+	
+	// data for ExpectL
+	TMockLtsyData1<TUint32> ltsyData(index);
+	ltsyData.SerialiseL(dataExpect);
+	
+	// data for CompleteL
+	RMobilePhone::TAPNEntryV3 apnEntryComplete;
+	_LIT8(KSameName, "SameName");
+	apnEntryComplete.iApn.Copy(KSameName);
+	TMockLtsyData1<RMobilePhone::TAPNEntryV3> ltsyData2(apnEntryComplete);
+	ltsyData2.SerialiseL(dataComplete);
+	
+
+	//-------------------------------------------------------------------------
+	// Test A: Test multiple clients requesting RMobilePhone::GetAPNname
+ 	//------------------------------------------------------------------------- 	
+ 	// first client 	
+ 	iMockLTSY.ExpectL(EMobilePhoneGetAPNname, dataExpect);
+	iMockLTSY.CompleteL(EMobilePhoneGetAPNname, KErrNone, dataComplete);	
+	iPhone.GetAPNname(reqStatus, index, pckgEntry);
+	
+	// second client	
+	phone2.GetAPNname(reqStatus2, index, pckgEntry);
+	
+	// wait for the first client	
+	User::WaitForRequest(reqStatus);
+	ASSERT_EQUALS(KErrNone, reqStatus.Int());
+	ASSERT_EQUALS(apnEntryComplete.iApn, apnEntry.iApn);
+	
+	// wait for the second client	
+	User::WaitForRequest(reqStatus2);   
+	ASSERT_EQUALS(KErrServerBusy, reqStatus2.Int());
+	
+	AssertMockLtsyStatusL();
+	// Done !
+	CleanupStack::PopAndDestroy(5, this); // phone2, telServer2, dataComplete, dataExpect, this
+	}
+
+
+/**
+@SYMTestCaseID BA-CTSY-ACL-MGAN-0005
+@SYMComponent  telephony_ctsy
+@SYMTestCaseDesc Test support in CTSY for RMobilePhone::GetAPNname with timeout
+@SYMTestPriority High
+@SYMTestActions Invokes RMobilePhone::GetAPNname and tests for timeout
+@SYMTestExpectedResults Pass
+@SYMTestType CT
+*/
+void CCTsyAPNControlListFU::TestGetAPNname0005L()
+	{
+
+	OpenEtelServerL(EUseExtendedError);
+	CleanupStack::PushL(TCleanupItem(Cleanup,this));
+	OpenPhoneL();
+
+	RBuf8 data;
+	CleanupClosePushL(data);
+	
+		
+	// data for RMobilePhone::GetAPNname itself
+	TRequestStatus reqStatus;
+	TUint32 index = 0;
+	RMobilePhone::TAPNEntryV3 apnEntry;
+	RMobilePhone::TAPNEntryV3Pckg pckgEntry(apnEntry);	
+	
+	// data for ExpectL
+	TMockLtsyData1<TUint32> ltsyData(index);
+	ltsyData.SerialiseL(data);
+
+	//-------------------------------------------------------------------------
+	// Test A: Test timeout of RMobilePhone::GetAPNname
+ 	//-------------------------------------------------------------------------
+
+	iMockLTSY.ExpectL(EMobilePhoneGetAPNname, data);
+	
+	iPhone.GetAPNname(reqStatus, index, pckgEntry);
+	User::WaitForRequest(reqStatus);
+   	AssertMockLtsyStatusL();
+	ASSERT_EQUALS(KErrTimedOut, reqStatus.Int());
+
+	// Done !
+	CleanupStack::PopAndDestroy(2, this); // data, this
+
+	}
+
+
+/**
+@SYMTestCaseID BA-CTSY-ACL-MEAE-0001
+@SYMComponent  telephony_ctsy
+@SYMTestCaseDesc Test support in CTSY for RMobilePhone::EnumerateAPNEntries
+@SYMTestPriority High
+@SYMTestActions Invokes RMobilePhone::EnumerateAPNEntries
+@SYMTestExpectedResults Pass
+@SYMTestType CT
+*/
+void CCTsyAPNControlListFU::TestEnumerateAPNEntries0001L()
+	{
+
+	OpenEtelServerL(EUseExtendedError);
+	CleanupStack::PushL(TCleanupItem(Cleanup,this));
+	OpenPhoneL();
+
+	RBuf8 dataComplete;
+	CleanupClosePushL(dataComplete);	
+	
+	// data for EnumerateAPNEntries itself
+	TRequestStatus reqStatus;
+	TUint32 index = 0;
+	
+	// data for CompleteL
+	TUint32 indexComplete = 5;
+	TMockLtsyData1<TUint32> ltsyData(indexComplete);
+	ltsyData.SerialiseL(dataComplete);
+		
+ 	//-------------------------------------------------------------------------
+	// TEST A: failure to dispatch request to LTSY
+ 	//-------------------------------------------------------------------------
+	iMockLTSY.ExpectL(EMobilePhoneEnumerateAPNEntries, KErrNotSupported);
+		
+	iPhone.EnumerateAPNEntries( reqStatus, index );
+	User::WaitForRequest(reqStatus);
+   	AssertMockLtsyStatusL();
+	ASSERT_EQUALS(KErrNotSupported, reqStatus.Int());
+
+	//-------------------------------------------------------------------------
+	// TEST B: failure on completion of pending request from LTSY->CTSY
+ 	//-------------------------------------------------------------------------
+
+	iMockLTSY.ExpectL(EMobilePhoneEnumerateAPNEntries);
+	iMockLTSY.CompleteL(EMobilePhoneEnumerateAPNEntries, KErrGeneral, dataComplete);
+		
+	iPhone.EnumerateAPNEntries( reqStatus, index );
+	User::WaitForRequest(reqStatus);
+   	AssertMockLtsyStatusL();
+	ASSERT_EQUALS(KErrGeneral, reqStatus.Int());
+
+ 	//-------------------------------------------------------------------------
+	// TEST C: Successful completion request of
+	// RMobilePhone::EnumerateAPNEntries when result is not cached.
+ 	//-------------------------------------------------------------------------
+
+	iMockLTSY.ExpectL(EMobilePhoneEnumerateAPNEntries);
+	iMockLTSY.CompleteL(EMobilePhoneEnumerateAPNEntries, KErrNone, dataComplete);
+		
+	iPhone.EnumerateAPNEntries( reqStatus, index );
+	User::WaitForRequest(reqStatus);
+   	AssertMockLtsyStatusL();
+	ASSERT_EQUALS(KErrNone, reqStatus.Int());
+	ASSERT_EQUALS(indexComplete, index);
+
+ 	//-------------------------------------------------------------------------
+	// TEST E: Unsolicited completion of RMobilePhone::EnumerateAPNEntries
+	// from LTSY.
+ 	//-------------------------------------------------------------------------
+	TRequestStatus mockLtsyStatus;
+	iMockLTSY.NotifyTerminated(mockLtsyStatus); 
+ 	// Issue the Complete...	
+	iMockLTSY.CompleteL(EMobilePhoneEnumerateAPNEntries, KErrNone, dataComplete);
+	// wait for completion 
+	User::WaitForRequest(mockLtsyStatus);
+	ASSERT_EQUALS(KErrNone, mockLtsyStatus.Int());
+
+	AssertMockLtsyStatusL();
+	CleanupStack::PopAndDestroy(2, this); // dataComplete, this
+	
+	}
+
+
+/**
+@SYMTestCaseID BA-CTSY-ACL-MEAE-0002
+@SYMComponent  telephony_ctsy
+@SYMTestCaseDesc Test support in CTSY for cancelling of RMobilePhone::EnumerateAPNEntries
+@SYMTestPriority High
+@SYMTestActions Invokes cancelling of RMobilePhone::EnumerateAPNEntries
+@SYMTestExpectedResults Pass
+@SYMTestType CT
+*/
+void CCTsyAPNControlListFU::TestEnumerateAPNEntries0002L()
+	{
+
+// This test should test cancellation of EnumerateAPNEntries
+// If this API does not have a cancel, the test step should be completely removed.
+
+	OpenEtelServerL(EUseExtendedError);
+	CleanupStack::PushL(TCleanupItem(Cleanup,this));
+	OpenPhoneL();
+
+	TRequestStatus mockLtsyStatus;
+	iMockLTSY.NotifyTerminated(mockLtsyStatus);
+
+	RBuf8 data;
+	CleanupClosePushL(data);
+	
+	// data for EnumerateAPNEntries itself
+	TRequestStatus reqStatus;
+	TUint32 index = 0;
+	
+	// data for CompleteL
+	TUint32 indexComplete = 5;
+	TMockLtsyData1<TUint32> ltsyData(indexComplete);
+	ltsyData.SerialiseL(data);
+
+ 	//-------------------------------------------------------------------------
+	// Test cancelling of RMobilePhone::EnumerateAPNEntries
+ 	//-------------------------------------------------------------------------
+ 	iMockLTSY.ExpectL(EMobilePhoneEnumerateAPNEntries);
+	iMockLTSY.CompleteL(EMobilePhoneEnumerateAPNEntries, KErrNone, data, 10);
+		
+	iPhone.EnumerateAPNEntries( reqStatus, index );	
+	//cancel reguest
+	iPhone.CancelAsyncRequest(EMobilePhoneEnumerateAPNEntries);
+	
+	User::WaitForRequest(reqStatus);
+	// This defect was fixed. For more information see defect description  
+	//ERR_PRINTF2(_L("<font color=Orange>$CTSYKnownFailure: defect id = %d</font>"), 90201);
+  	ASSERT_EQUALS(KErrCancel, reqStatus.Int());
+
+	// Wait for completion of iMockLTSY.NotifyTerminated
+	User::WaitForRequest(mockLtsyStatus);
+		
+	AssertMockLtsyStatusL();
+	CleanupStack::PopAndDestroy(2); // data, this	
+	}
+
+
+/**
+@SYMTestCaseID BA-CTSY-ACL-MEAE-0004
+@SYMComponent  telephony_ctsy
+@SYMTestCaseDesc Test support in CTSY for multiple client requests to RMobilePhone::EnumerateAPNEntries
+@SYMTestPriority High
+@SYMTestActions Invokes multiple client requests to RMobilePhone::EnumerateAPNEntries
+@SYMTestExpectedResults Pass
+@SYMTestType CT
+*/
+void CCTsyAPNControlListFU::TestEnumerateAPNEntries0004L()
+	{
+				
+	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);
+	
+	// data for EnumerateAPNEntrieses itself
+	TRequestStatus reqStatus;
+	TUint32 index = 0;	
+	TRequestStatus reqStatus2;
+	TUint32 index2 = 0;
+	
+	// data for CompleteL
+	TUint32 indexComplete = 5;
+	TMockLtsyData1<TUint32> ltsyData(indexComplete);
+	ltsyData.SerialiseL(data);
+	
+
+	//-------------------------------------------------------------------------
+	// Test A: Test multiple clients requesting RMobilePhone::EnumerateAPNEntries
+ 	//-------------------------------------------------------------------------
+	iMockLTSY.ExpectL(EMobilePhoneEnumerateAPNEntries);
+	iMockLTSY.CompleteL(EMobilePhoneEnumerateAPNEntries, KErrNone, data, 5);
+	
+	//send first request
+	iPhone.EnumerateAPNEntries( reqStatus, index );
+	
+	//send second request
+	phone2.EnumerateAPNEntries( reqStatus2, index2 );	
+	
+	// wait for the first client	
+	User::WaitForRequest(reqStatus);
+	ASSERT_EQUALS(KErrNone, reqStatus.Int());
+	ASSERT_EQUALS(indexComplete, index);
+	
+	// wait for the second client	
+	User::WaitForRequest(reqStatus2);
+   	AssertMockLtsyStatusL();
+	ASSERT_EQUALS(KErrServerBusy, reqStatus2.Int());
+
+	// Done !
+	CleanupStack::PopAndDestroy(4, this); // phone2, telServer2, data, this
+	}
+
+
+/**
+@SYMTestCaseID BA-CTSY-ACL-MEAE-0005
+@SYMComponent  telephony_ctsy
+@SYMTestCaseDesc Test support in CTSY for RMobilePhone::EnumerateAPNEntries with timeout
+@SYMTestPriority High
+@SYMTestActions Invokes RMobilePhone::EnumerateAPNEntries and tests for timeout
+@SYMTestExpectedResults Pass
+@SYMTestType CT
+*/
+void CCTsyAPNControlListFU::TestEnumerateAPNEntries0005L()
+	{
+	OpenEtelServerL(EUseExtendedError);
+	CleanupStack::PushL(TCleanupItem(Cleanup,this));
+	OpenPhoneL();
+	// data for EnumerateAPNEntries itself
+	TRequestStatus reqStatus;
+	TUint32 index = 0;
+	
+	//-------------------------------------------------------------------------
+	// Test A: Test timeout of RMobilePhone::EnumerateAPNEntries
+ 	//-------------------------------------------------------------------------	
+	iMockLTSY.ExpectL(EMobilePhoneEnumerateAPNEntries);
+	iPhone.EnumerateAPNEntries( reqStatus, index );
+	
+	User::WaitForRequest(reqStatus);
+	ASSERT_EQUALS(KErrTimedOut, reqStatus.Int());
+	
+	AssertMockLtsyStatusL();
+	// Done !
+	CleanupStack::PopAndDestroy(1, this); // this
+	}
+
+
+/**
+@SYMTestCaseID BA-CTSY-ACL-MAAN-0001
+@SYMComponent  telephony_ctsy
+@SYMTestCaseDesc Test support in CTSY for RMobilePhone::AppendAPNName
+@SYMTestPriority High
+@SYMTestActions Invokes RMobilePhone::AppendAPNName
+@SYMTestExpectedResults Pass
+@SYMTestType CT
+*/
+void CCTsyAPNControlListFU::TestAppendAPNName0001L()
+	{
+
+	OpenEtelServerL(EUseExtendedError);
+	CleanupStack::PushL(TCleanupItem(Cleanup,this));
+	OpenPhoneL();
+
+	RBuf8 dataExpect;
+	CleanupClosePushL(dataExpect);
+
+	// data for AppendAPNName itself
+	TRequestStatus reqStatus;
+	RMobilePhone::TAPNEntryV3 apnEntry;
+	_LIT8(KSomeName, "SomeName");
+	apnEntry.iApn.Copy(KSomeName);
+	RMobilePhone::TAPNEntryV3Pckg pckgEntry(apnEntry);
+	// data for ExpectL
+	TMockLtsyData1<RMobilePhone::TAPNEntryV3> ltsyData( apnEntry );
+	ltsyData.SerialiseL(dataExpect);
+	
+ 	//-------------------------------------------------------------------------
+	// TEST A: failure to dispatch request to LTSY
+ 	//-------------------------------------------------------------------------
+	iMockLTSY.ExpectL(EMobilePhoneAppendAPNName, dataExpect, KErrNotSupported);
+			
+	iPhone.AppendAPNName(reqStatus, pckgEntry);
+	User::WaitForRequest(reqStatus);
+	ASSERT_EQUALS(KErrNotSupported, reqStatus.Int());
+	AssertMockLtsyStatusL();
+
+	//-------------------------------------------------------------------------
+	// TEST B: failure on completion of pending request from LTSY->CTSY
+ 	//-------------------------------------------------------------------------
+	iMockLTSY.ExpectL(EMobilePhoneAppendAPNName, dataExpect);
+	iMockLTSY.CompleteL(EMobilePhoneAppendAPNName, KErrGeneral);
+		
+	iPhone.AppendAPNName(reqStatus, pckgEntry);
+	User::WaitForRequest(reqStatus);
+	ASSERT_EQUALS(KErrGeneral, reqStatus.Int());
+	AssertMockLtsyStatusL();
+	
+ 	//-------------------------------------------------------------------------
+	// TEST C: Successful completion request of
+	// RMobilePhone::AppendAPNName when result is not cached.
+ 	//-------------------------------------------------------------------------
+	iMockLTSY.ExpectL(EMobilePhoneAppendAPNName, dataExpect);
+	iMockLTSY.CompleteL(EMobilePhoneAppendAPNName, KErrNone);
+		
+	iPhone.AppendAPNName(reqStatus, pckgEntry);
+	User::WaitForRequest(reqStatus);
+	ASSERT_EQUALS(KErrNone, reqStatus.Int());
+	AssertMockLtsyStatusL();
+
+ 	//-------------------------------------------------------------------------
+	// TEST E: Unsolicited completion of RMobilePhone::AppendAPNName
+	// from LTSY.
+ 	//-------------------------------------------------------------------------	
+	TRequestStatus mockLtsyStatus;
+	iMockLTSY.NotifyTerminated(mockLtsyStatus);
+	
+	iMockLTSY.CompleteL(EMobilePhoneAppendAPNName, KErrNone);
+	
+	User::WaitForRequest(mockLtsyStatus);
+	ASSERT_EQUALS(KErrNone, mockLtsyStatus.Int());
+
+	AssertMockLtsyStatusL();
+	CleanupStack::PopAndDestroy(2, this); // dataExpect, this	 
+	}
+
+
+/**
+@SYMTestCaseID BA-CTSY-ACL-MAAN-0002
+@SYMComponent  telephony_ctsy
+@SYMTestCaseDesc Test support in CTSY for cancelling of RMobilePhone::AppendAPNName
+@SYMTestPriority High
+@SYMTestActions Invokes cancelling of RMobilePhone::AppendAPNName
+@SYMTestExpectedResults Pass
+@SYMTestType CT
+*/
+void CCTsyAPNControlListFU::TestAppendAPNName0002L()
+	{
+
+	// This test should test cancellation of AppendAPNName
+	// If this API does not have a cancel, the test step should be completely removed.
+
+	OpenEtelServerL(EUseExtendedError);
+	CleanupStack::PushL(TCleanupItem(Cleanup,this));
+	OpenPhoneL();
+
+	TRequestStatus mockLtsyStatus;
+	iMockLTSY.NotifyTerminated(mockLtsyStatus);
+
+	RBuf8 data;
+	CleanupClosePushL(data);
+	
+	// data for AppendAPNName itself
+	TRequestStatus reqStatus;
+	RMobilePhone::TAPNEntryV3 apnEntry;
+	_LIT8(KSomeName, "SomeName");
+	apnEntry.iApn.Copy(KSomeName);
+	RMobilePhone::TAPNEntryV3Pckg pckgEntry(apnEntry);
+	// data for ExpectL
+	TMockLtsyData1<RMobilePhone::TAPNEntryV3> ltsyData( apnEntry );
+	ltsyData.SerialiseL(data);
+
+	//-------------------------------------------------------------------------
+	// For coverage increasing call Cancel without calling RMobilePhone::AppendAPNName
+ 	//------------------------------------------------------------------------- 	 	
+ 	iPhone.CancelAsyncRequest(EMobilePhoneAppendAPNName);
+
+ 	//-------------------------------------------------------------------------
+	// Test cancelling of RMobilePhone::AppendAPNName
+ 	//------------------------------------------------------------------------- 	
+	iMockLTSY.ExpectL(EMobilePhoneAppendAPNName, data);
+	iMockLTSY.CompleteL(EMobilePhoneAppendAPNName, KErrNone, 10);
+		
+	iPhone.AppendAPNName(reqStatus, pckgEntry);
+	//cancel reguest
+	iPhone.CancelAsyncRequest(EMobilePhoneAppendAPNName);
+	
+	User::WaitForRequest(reqStatus);
+	ASSERT_EQUALS(KErrCancel, reqStatus.Int());
+	
+	// Wait for completion of iMockLTSY.NotifyTerminated
+	User::WaitForRequest(mockLtsyStatus);
+	AssertMockLtsyStatusL();
+	CleanupStack::PopAndDestroy(2); // data, this
+	
+	}
+
+
+/**
+@SYMTestCaseID BA-CTSY-ACL-MAAN-0004
+@SYMComponent  telephony_ctsy
+@SYMTestCaseDesc Test support in CTSY for multiple client requests to RMobilePhone::AppendAPNName
+@SYMTestPriority High
+@SYMTestActions Invokes multiple client requests to RMobilePhone::AppendAPNName
+@SYMTestExpectedResults Pass
+@SYMTestType CT
+*/
+void CCTsyAPNControlListFU::TestAppendAPNName0004L()
+	{
+					
+	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);	
+	
+	// data for first AppendAPNName()
+	TRequestStatus reqStatus;
+	RMobilePhone::TAPNEntryV3 apnEntry;
+	_LIT8(KSomeName, "SomeName");
+	apnEntry.iApn.Copy(KSomeName);
+	RMobilePhone::TAPNEntryV3Pckg pckgEntry(apnEntry);
+	
+	// data for second AppendAPNName()
+	TRequestStatus reqStatus2;
+	RMobilePhone::TAPNEntryV3 apnEntry2;
+	_LIT8(KSomeName2, "SomeName2");
+	apnEntry2.iApn.Copy(KSomeName2);
+	RMobilePhone::TAPNEntryV3Pckg pckgEntry2(apnEntry2);
+	
+	// data for first ExpectL
+	TMockLtsyData1<RMobilePhone::TAPNEntryV3> ltsyData( apnEntry );
+	ltsyData.SerialiseL(data);
+
+	//-------------------------------------------------------------------------
+	// Test A: Test multiple clients requesting RMobilePhone::AppendAPNName
+ 	//-------------------------------------------------------------------------
+ 	 	
+ 	// first request
+ 	iMockLTSY.ExpectL(EMobilePhoneAppendAPNName, data);
+	iMockLTSY.CompleteL(EMobilePhoneAppendAPNName, KErrNone, 10);		
+	iPhone.AppendAPNName(reqStatus, pckgEntry);
+	
+	// second request	
+	phone2.AppendAPNName(reqStatus2, pckgEntry2);
+	
+	// wait for the first answer
+	User::WaitForRequest(reqStatus);
+	ASSERT_EQUALS(KErrNone, reqStatus.Int());
+	
+	// wait for the second answer
+	User::WaitForRequest(reqStatus2);
+	ASSERT_EQUALS(KErrServerBusy, reqStatus2.Int());	
+	
+	AssertMockLtsyStatusL();
+	// Done !
+	CleanupStack::PopAndDestroy(4, this); // phone2, telServer2, data, this
+	}
+
+
+/**
+@SYMTestCaseID BA-CTSY-ACL-MAAN-0005
+@SYMComponent  telephony_ctsy
+@SYMTestCaseDesc Test support in CTSY for RMobilePhone::AppendAPNName with timeout
+@SYMTestPriority High
+@SYMTestActions Invokes RMobilePhone::AppendAPNName and tests for timeout
+@SYMTestExpectedResults Pass
+@SYMTestType CT
+*/
+void CCTsyAPNControlListFU::TestAppendAPNName0005L()
+	{
+	OpenEtelServerL(EUseExtendedError);
+	CleanupStack::PushL(TCleanupItem(Cleanup,this));
+	OpenPhoneL();
+
+	RBuf8 data;
+	CleanupClosePushL(data);
+	
+	// data for AppendAPNName itself
+	TRequestStatus reqStatus;
+	RMobilePhone::TAPNEntryV3 apnEntry;
+	_LIT8(KSomeName, "SomeName");
+	apnEntry.iApn.Copy(KSomeName);
+	RMobilePhone::TAPNEntryV3Pckg pckgEntry(apnEntry);
+	// data for ExpectL
+	TMockLtsyData1<RMobilePhone::TAPNEntryV3> ltsyData( apnEntry );
+	ltsyData.SerialiseL(data);
+
+	//-------------------------------------------------------------------------
+	// Test A: Test timeout of RMobilePhone::AppendAPNName
+ 	//------------------------------------------------------------------------- 	
+ 	iMockLTSY.ExpectL(EMobilePhoneAppendAPNName, data);		
+	iPhone.AppendAPNName(reqStatus, pckgEntry);
+	
+	User::WaitForRequest(reqStatus);
+	
+	ASSERT_EQUALS(KErrTimedOut, reqStatus.Int());
+	
+	AssertMockLtsyStatusL();
+	// Done !
+	CleanupStack::PopAndDestroy(2, this); // data, this
+
+	}
+
+
+/**
+@SYMTestCaseID BA-CTSY-ACL-MDAN-0001
+@SYMComponent  telephony_ctsy
+@SYMTestCaseDesc Test support in CTSY for RMobilePhone::DeleteAPNName
+@SYMTestPriority High
+@SYMTestActions Invokes RMobilePhone::DeleteAPNName
+@SYMTestExpectedResults Pass
+@SYMTestType CT
+*/
+void CCTsyAPNControlListFU::TestDeleteAPNName0001L()
+	{
+
+	OpenEtelServerL(EUseExtendedError);
+	CleanupStack::PushL(TCleanupItem(Cleanup,this));
+	OpenPhoneL();
+
+	RBuf8 dataExpect;
+	CleanupClosePushL(dataExpect);
+	
+	// data for DeleteAPNName itself
+	TRequestStatus reqStatus;
+	TUint32 index = 0;
+	
+	// data for ExpectL
+	TMockLtsyData1<TUint32> ltsyData( index );
+	ltsyData.SerialiseL(dataExpect);
+	
+ 	//-------------------------------------------------------------------------
+	// TEST A: failure to dispatch request to LTSY
+ 	//-------------------------------------------------------------------------
+	iMockLTSY.ExpectL(EMobilePhoneDeleteAPNName, dataExpect, KErrNotSupported);	
+	
+	iPhone.DeleteAPNName(reqStatus, index);
+	User::WaitForRequest(reqStatus);
+	ASSERT_EQUALS(KErrNotSupported, reqStatus.Int());
+	AssertMockLtsyStatusL();
+
+	//-------------------------------------------------------------------------
+	// TEST B: failure on completion of pending request from LTSY->CTSY
+ 	//-------------------------------------------------------------------------
+	iMockLTSY.ExpectL(EMobilePhoneDeleteAPNName, dataExpect);	
+	iMockLTSY.CompleteL(EMobilePhoneDeleteAPNName, KErrGeneral);	
+	
+	iPhone.DeleteAPNName(reqStatus, index);
+	User::WaitForRequest(reqStatus);
+	ASSERT_EQUALS(KErrGeneral, reqStatus.Int());
+	AssertMockLtsyStatusL();
+
+ 	//-------------------------------------------------------------------------
+	// TEST C: Successful completion request of
+	// RMobilePhone::DeleteAPNName when result is not cached.
+ 	//-------------------------------------------------------------------------
+	iMockLTSY.ExpectL(EMobilePhoneDeleteAPNName, dataExpect);	
+	iMockLTSY.CompleteL(EMobilePhoneDeleteAPNName, KErrNone);	
+	
+	iPhone.DeleteAPNName(reqStatus, index);
+	User::WaitForRequest(reqStatus);
+	ASSERT_EQUALS(KErrNone, reqStatus.Int());
+	AssertMockLtsyStatusL();
+
+ 	//-------------------------------------------------------------------------
+	// TEST E: Unsolicited completion of RMobilePhone::DeleteAPNName
+	// from LTSY.
+ 	//-------------------------------------------------------------------------
+	TRequestStatus mockLtsyStatus;
+	iMockLTSY.NotifyTerminated(mockLtsyStatus);
+
+	iMockLTSY.CompleteL(EMobilePhoneDeleteAPNName, KErrNone);	
+
+	User::WaitForRequest(mockLtsyStatus);
+	ASSERT_EQUALS(KErrNone, mockLtsyStatus.Int());
+
+	AssertMockLtsyStatusL();
+	CleanupStack::PopAndDestroy(2, this); // dataExpect, this
+	
+	}
+
+
+/**
+@SYMTestCaseID BA-CTSY-ACL-MDAN-0002
+@SYMComponent  telephony_ctsy
+@SYMTestCaseDesc Test support in CTSY for cancelling of RMobilePhone::DeleteAPNName
+@SYMTestPriority High
+@SYMTestActions Invokes cancelling of RMobilePhone::DeleteAPNName
+@SYMTestExpectedResults Pass
+@SYMTestType CT
+*/
+void CCTsyAPNControlListFU::TestDeleteAPNName0002L()
+	{
+
+// This test should test cancellation of DeleteAPNName
+// If this API does not have a cancel, the test step should be completely removed.
+
+	OpenEtelServerL(EUseExtendedError);
+	CleanupStack::PushL(TCleanupItem(Cleanup,this));
+	OpenPhoneL();
+
+	TRequestStatus mockLtsyStatus;
+	iMockLTSY.NotifyTerminated(mockLtsyStatus);
+
+	RBuf8 dataExpect;
+	CleanupClosePushL(dataExpect);
+	
+	// data for DeleteAPNName itself
+	TRequestStatus reqStatus;
+	TUint32 index = 0;
+	
+	// data for ExpectL
+	TMockLtsyData1<TUint32> ltsyData( index );
+	ltsyData.SerialiseL(dataExpect);
+	
+	//-------------------------------------------------------------------------
+	// For coverage increasing call Cancel without calling RMobilePhone::DeleteAPNName
+ 	//------------------------------------------------------------------------- 	 	
+ 	iPhone.CancelAsyncRequest(EMobilePhoneDeleteAPNName);
+
+ 	//-------------------------------------------------------------------------
+	// Test cancelling of RMobilePhone::DeleteAPNName
+ 	//------------------------------------------------------------------------- 	
+	iMockLTSY.ExpectL(EMobilePhoneDeleteAPNName, dataExpect);	
+	iMockLTSY.CompleteL(EMobilePhoneDeleteAPNName, KErrNone, 10);	
+	
+	iPhone.DeleteAPNName(reqStatus, index);
+	
+	//cancel reguest
+	iPhone.CancelAsyncRequest(EMobilePhoneDeleteAPNName);
+	
+	User::WaitForRequest(reqStatus);
+	ASSERT_EQUALS(KErrCancel, reqStatus.Int());
+	
+
+	// Wait for completion of iMockLTSY.NotifyTerminated
+	User::WaitForRequest(mockLtsyStatus);
+	AssertMockLtsyStatusL();
+	CleanupStack::PopAndDestroy(2); // dataExpect, this
+	
+	}
+
+/**
+@SYMTestCaseID BA-CTSY-ACL-MDAN-0004
+@SYMComponent  telephony_ctsy
+@SYMTestCaseDesc Test support in CTSY for multiple client requests to RMobilePhone::DeleteAPNName
+@SYMTestPriority High
+@SYMTestActions Invokes multiple client requests to RMobilePhone::DeleteAPNName
+@SYMTestExpectedResults Pass
+@SYMTestType CT
+*/
+void CCTsyAPNControlListFU::TestDeleteAPNName0004L()
+	{				
+	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);
+	
+	// data for the first DeleteAPNName itself
+	TRequestStatus reqStatus;
+	TUint32 index = 0;
+	
+	// data for the second DeleteAPNName itself
+	TRequestStatus reqStatus2;
+	TUint32 index2 = 1;
+	
+	// data for ExpectL
+	TMockLtsyData1<TUint32> ltsyData( index );
+	ltsyData.SerialiseL(data);		
+
+	//-------------------------------------------------------------------------
+	// Test A: Test multiple clients requesting RMobilePhone::DeleteAPNName
+ 	//-------------------------------------------------------------------------
+	iMockLTSY.ExpectL(EMobilePhoneDeleteAPNName, data);	
+	iMockLTSY.CompleteL(EMobilePhoneDeleteAPNName, KErrNone);	
+	
+	// first request
+	iPhone.DeleteAPNName(reqStatus, index);	
+	// second request
+	phone2.DeleteAPNName(reqStatus2, index2);
+		
+	// wait for the first answer
+	User::WaitForRequest(reqStatus);
+	ASSERT_EQUALS(KErrNone, reqStatus.Int());	
+	
+	// wait for the second answer
+	User::WaitForRequest(reqStatus2);
+	ASSERT_EQUALS(KErrServerBusy, reqStatus2.Int());	
+	
+	AssertMockLtsyStatusL();
+	// Done !
+	CleanupStack::PopAndDestroy(4, this); // phone2, telServer2, data, this
+	}
+
+
+/**
+@SYMTestCaseID BA-CTSY-ACL-MDAN-0005
+@SYMComponent  telephony_ctsy
+@SYMTestCaseDesc Test support in CTSY for RMobilePhone::DeleteAPNName with timeout
+@SYMTestPriority High
+@SYMTestActions Invokes RMobilePhone::DeleteAPNName and tests for timeout
+@SYMTestExpectedResults Pass
+@SYMTestType CT
+*/
+void CCTsyAPNControlListFU::TestDeleteAPNName0005L()
+	{
+	OpenEtelServerL(EUseExtendedError);
+	CleanupStack::PushL(TCleanupItem(Cleanup,this));
+	OpenPhoneL();
+
+	RBuf8 dataExpect;
+	CleanupClosePushL(dataExpect);
+	
+	// data for DeleteAPNName itself
+	TRequestStatus reqStatus;
+	TUint32 index = 0;
+	
+	// data for ExpectL
+	TMockLtsyData1<TUint32> ltsyData( index );
+	ltsyData.SerialiseL(dataExpect);
+
+	//-------------------------------------------------------------------------
+	// Test A: Test timeout of RMobilePhone::DeleteAPNName
+ 	//-------------------------------------------------------------------------
+	iMockLTSY.ExpectL(EMobilePhoneDeleteAPNName, dataExpect);		
+	
+	iPhone.DeleteAPNName(reqStatus, index);
+	User::WaitForRequest(reqStatus);
+	ASSERT_EQUALS(KErrTimedOut, reqStatus.Int());
+	AssertMockLtsyStatusL();
+
+	// Done !
+	CleanupStack::PopAndDestroy(2, this); // dataExpect, this
+	}
+
+
+/**
+@SYMTestCaseID BA-CTSY-ACL-MNALC-0001
+@SYMComponent  telephony_ctsy
+@SYMTestCaseDesc Test support in CTSY for RMobilePhone::NotifyAPNListChanged
+@SYMTestPriority High
+@SYMTestActions Invokes RMobilePhone::NotifyAPNListChanged
+@SYMTestExpectedResults Pass
+@SYMTestType CT
+*/
+void CCTsyAPNControlListFU::TestNotifyAPNListChanged0001L()
+	{	
+	OpenEtelServerL(EUseExtendedError);
+	CleanupStack::PushL(TCleanupItem(Cleanup,this));
+	OpenPhoneL();
+	
+	TRequestStatus reqStatus;
+		
+	//-------------------------------------------------------------------------
+	// TEST E: Unsolicited completion of RMobilePhone::NotifyAPNListChanged
+	// from LTSY.
+ 	//-------------------------------------------------------------------------
+	TRequestStatus mockLtsyStatus;
+	iMockLTSY.NotifyTerminated(mockLtsyStatus);
+	
+	iMockLTSY.CompleteL(EMobilePhoneNotifyAPNListChanged, KErrNone);
+		
+	User::WaitForRequest(mockLtsyStatus);
+	ASSERT_EQUALS(KErrNone, mockLtsyStatus.Int());
+	
+	//-------------------------------------------------------------------------
+	// TEST B: failure on completion of pending request from LTSY->CTSY
+ 	//-------------------------------------------------------------------------
+	iPhone.NotifyAPNListChanged(reqStatus);		
+	iMockLTSY.CompleteL(EMobilePhoneNotifyAPNListChanged, KErrGeneral);	
+	
+	User::WaitForRequest(reqStatus);
+	ASSERT_EQUALS(KErrGeneral, reqStatus.Int());
+
+ 	//-------------------------------------------------------------------------
+	// TEST C: Successful completion request of
+	// RMobilePhone::NotifyAPNListChanged when result is not cached.
+ 	//-------------------------------------------------------------------------
+	iPhone.NotifyAPNListChanged(reqStatus);		
+	iMockLTSY.CompleteL(EMobilePhoneNotifyAPNListChanged, KErrNone);
+		
+	User::WaitForRequest(reqStatus);
+	ASSERT_EQUALS(KErrNone, reqStatus.Int()); 
+	AssertMockLtsyStatusL();
+		
+	CleanupStack::PopAndDestroy(1, this); // this	
+	}
+
+
+/**
+@SYMTestCaseID BA-CTSY-ACL-MNALC-0002
+@SYMComponent  telephony_ctsy
+@SYMTestCaseDesc Test support in CTSY for cancelling of RMobilePhone::NotifyAPNListChanged
+@SYMTestPriority High
+@SYMTestActions Invokes cancelling of RMobilePhone::NotifyAPNListChanged
+@SYMTestExpectedResults Pass
+@SYMTestType CT
+*/
+void CCTsyAPNControlListFU::TestNotifyAPNListChanged0002L()
+	{
+
+// This test should test cancellation of NotifyAPNListChanged
+// If this API does not have a cancel, the test step should be completely removed.
+
+	OpenEtelServerL(EUseExtendedError);
+	CleanupStack::PushL(TCleanupItem(Cleanup,this));
+	OpenPhoneL();
+
+	TRequestStatus mockLtsyStatus;
+	iMockLTSY.NotifyTerminated(mockLtsyStatus);
+
+	TRequestStatus reqStatus;
+	
+	//-------------------------------------------------------------------------
+	// For coverage increasing call Cancel without calling RMobilePhone::NotifyAPNListChanged
+ 	//------------------------------------------------------------------------- 	 	
+ 	// It is useless call as there is a checking of active or waiting request in 
+ 	//CTelObject::GeneralReq case EIsaCancelMessage:
+ 	//iPhone.CancelAsyncRequest(EMobilePhoneNotifyAPNListChanged); 	
+
+ 	//-------------------------------------------------------------------------
+	// Test cancelling of RMobilePhone::NotifyAPNListChanged
+ 	//------------------------------------------------------------------------- 	
+ 	iPhone.NotifyAPNListChanged(reqStatus);		
+	iMockLTSY.CompleteL(EMobilePhoneNotifyAPNListChanged, KErrNone, 10);
+	
+	// cancel request
+	iPhone.CancelAsyncRequest(EMobilePhoneNotifyAPNListChanged);
+			
+	User::WaitForRequest(reqStatus);
+	ASSERT_EQUALS(KErrCancel, reqStatus.Int()); 	
+	
+	// Wait for completion of iMockLTSY.NotifyTerminated
+	User::WaitForRequest(mockLtsyStatus);
+	AssertMockLtsyStatusL();
+	CleanupStack::PopAndDestroy(1); // this	
+	}
+
+
+/**
+@SYMTestCaseID BA-CTSY-ACL-MNALC-0004
+@SYMComponent  telephony_ctsy
+@SYMTestCaseDesc Test support in CTSY for multiple client requests to RMobilePhone::NotifyAPNListChanged
+@SYMTestPriority High
+@SYMTestActions Invokes multiple client requests to RMobilePhone::NotifyAPNListChanged
+@SYMTestExpectedResults Pass
+@SYMTestType CT
+*/
+void CCTsyAPNControlListFU::TestNotifyAPNListChanged0004L()
+	{
+					
+	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);
+
+	//-------------------------------------------------------------------------
+	// Test A: Test multiple clients requesting RMobilePhone::NotifyAPNListChanged
+ 	//-------------------------------------------------------------------------
+ 	TRequestStatus reqStatus;
+ 	TRequestStatus reqStatus2;
+ 	
+ 	//send first request
+ 	iPhone.NotifyAPNListChanged(reqStatus);	
+ 	
+ 	//send second request
+ 	phone2.NotifyAPNListChanged(reqStatus2);
+ 	
+ 	// send completion
+	iMockLTSY.CompleteL(EMobilePhoneNotifyAPNListChanged, KErrNone);
+	
+	// wait for the first notification
+	User::WaitForRequest(reqStatus);
+	ASSERT_EQUALS(KErrNone, reqStatus.Int()); 
+	
+	// wait for the second notification
+	User::WaitForRequest(reqStatus2);
+	ASSERT_EQUALS(KErrNone, reqStatus2.Int()); 
+	
+	AssertMockLtsyStatusL();
+	// Done !
+	CleanupStack::PopAndDestroy(4, this); // phone2, telServer2, data, this
+	}
+
+
+/**
+@SYMTestCaseID BA-CTSY-ACL-MGACLSS-0001
+@SYMComponent  telephony_ctsy
+@SYMTestCaseDesc Test support in CTSY for RMobilePhone::GetAPNControlListServiceStatus
+@SYMTestPriority High
+@SYMTestActions Invokes RMobilePhone::GetAPNControlListServiceStatus
+@SYMTestExpectedResults Pass
+@SYMTestType CT
+*/
+void CCTsyAPNControlListFU::TestGetAPNControlListServiceStatus0001L()
+	{
+
+	OpenEtelServerL(EUseExtendedError);
+	CleanupStack::PushL(TCleanupItem(Cleanup,this));
+	OpenPhoneL();
+
+	RBuf8 dataComplete;
+	CleanupClosePushL(dataComplete);	
+	
+	// data for GetAPNControlListServiceStatus()
+	TRequestStatus reqStatus;
+	RMobilePhone::TAPNControlListServiceStatus apnControlListServiceStatus;
+	
+	// data for CompleteL
+	RMobilePhone::TAPNControlListServiceStatus apnStatusComplete = RMobilePhone::EAPNControlListServiceEnabled; 
+	TMockLtsyData1<RMobilePhone::TAPNControlListServiceStatus> ltsyData(apnStatusComplete);
+	ltsyData.SerialiseL(dataComplete);	
+
+ 	//-------------------------------------------------------------------------
+	// TEST A: failure to dispatch request to LTSY
+ 	//-------------------------------------------------------------------------
+	iMockLTSY.ExpectL(EMobilePhoneGetAPNControlListServiceStatus, KErrNotSupported);
+		
+	iPhone.GetAPNControlListServiceStatus(reqStatus, apnControlListServiceStatus);
+	User::WaitForRequest(reqStatus);
+	ASSERT_EQUALS(KErrNotSupported, reqStatus.Int()); 
+	AssertMockLtsyStatusL();
+	
+	//-------------------------------------------------------------------------
+	// TEST B: failure on completion of pending request from LTSY->CTSY
+ 	//-------------------------------------------------------------------------
+	iMockLTSY.ExpectL(EMobilePhoneGetAPNControlListServiceStatus);
+	iMockLTSY.CompleteL(EMobilePhoneGetAPNControlListServiceStatus, KErrGeneral, dataComplete);
+		
+	iPhone.GetAPNControlListServiceStatus(reqStatus, apnControlListServiceStatus);
+	User::WaitForRequest(reqStatus);
+	ASSERT_EQUALS(KErrGeneral, reqStatus.Int()); 	
+	AssertMockLtsyStatusL();
+
+ 	//-------------------------------------------------------------------------
+	// TEST C: Successful completion request of
+	// RMobilePhone::GetAPNControlListServiceStatus when result is not cached.
+ 	//-------------------------------------------------------------------------
+	iMockLTSY.ExpectL(EMobilePhoneGetAPNControlListServiceStatus);
+	iMockLTSY.CompleteL(EMobilePhoneGetAPNControlListServiceStatus, KErrNone, dataComplete);
+		
+	iPhone.GetAPNControlListServiceStatus(reqStatus, apnControlListServiceStatus);
+	User::WaitForRequest(reqStatus);
+	ASSERT_EQUALS(KErrNone, reqStatus.Int()); 
+	ASSERT_EQUALS(apnStatusComplete, apnControlListServiceStatus);	
+	AssertMockLtsyStatusL();
+
+  	//-------------------------------------------------------------------------
+	// TEST E: Unsolicited completion of RMobilePhone::GetAPNControlListServiceStatus
+	// from LTSY.
+ 	//-------------------------------------------------------------------------
+	TRequestStatus mockLtsyStatus;
+	iMockLTSY.NotifyTerminated(mockLtsyStatus); 
+ 	// Issue the Complete...	
+	iMockLTSY.CompleteL(EMobilePhoneGetAPNControlListServiceStatus, KErrNone, dataComplete);
+	// wait for completion 
+	User::WaitForRequest(mockLtsyStatus);
+	ASSERT_EQUALS(KErrNone, mockLtsyStatus.Int())
+
+	AssertMockLtsyStatusL();
+	CleanupStack::PopAndDestroy(2, this); // dataComplete, this
+	
+	}
+
+
+/**
+@SYMTestCaseID BA-CTSY-ACL-MGACLSS-0002
+@SYMComponent  telephony_ctsy
+@SYMTestCaseDesc Test support in CTSY for cancelling of RMobilePhone::GetAPNControlListServiceStatus
+@SYMTestPriority High
+@SYMTestActions Invokes cancelling of RMobilePhone::GetAPNControlListServiceStatus
+@SYMTestExpectedResults Pass
+@SYMTestType CT
+*/
+void CCTsyAPNControlListFU::TestGetAPNControlListServiceStatus0002L()
+	{
+
+// This test should test cancellation of GetAPNControlListServiceStatus
+// If this API does not have a cancel, the test step should be completely removed.
+
+	OpenEtelServerL(EUseExtendedError);
+	CleanupStack::PushL(TCleanupItem(Cleanup,this));
+	OpenPhoneL();
+
+	TRequestStatus mockLtsyStatus;
+	iMockLTSY.NotifyTerminated(mockLtsyStatus);
+
+	RBuf8 dataComplete;
+	CleanupClosePushL(dataComplete);	
+	
+	// data for GetAPNControlListServiceStatus()
+	TRequestStatus reqStatus;
+	RMobilePhone::TAPNControlListServiceStatus apnControlListServiceStatus;
+	
+	// data for CompleteL
+	RMobilePhone::TAPNControlListServiceStatus apnStatusComplete = RMobilePhone::EAPNControlListServiceEnabled; 
+	TMockLtsyData1<RMobilePhone::TAPNControlListServiceStatus> ltsyData(apnStatusComplete);
+	ltsyData.SerialiseL(dataComplete);	
+
+ 	//-------------------------------------------------------------------------
+	// Test cancelling of RMobilePhone::GetAPNControlListServiceStatus
+ 	//-------------------------------------------------------------------------
+ 	iMockLTSY.ExpectL(EMobilePhoneGetAPNControlListServiceStatus);
+	iMockLTSY.CompleteL(EMobilePhoneGetAPNControlListServiceStatus, KErrNone, dataComplete, 10);
+		
+	iPhone.GetAPNControlListServiceStatus(reqStatus, apnControlListServiceStatus);
+	//cancel reguest
+	iPhone.CancelAsyncRequest(EMobilePhoneGetAPNControlListServiceStatus);		
+	User::WaitForRequest(reqStatus);
+	ASSERT_EQUALS(KErrCancel, reqStatus.Int());  	
+
+	// Wait for completion of iMockLTSY.NotifyTerminated
+	User::WaitForRequest(mockLtsyStatus);
+	
+	AssertMockLtsyStatusL();
+	CleanupStack::PopAndDestroy(2); // dataComplete, this
+	
+	}
+
+
+/**
+@SYMTestCaseID BA-CTSY-ACL-MGACLSS-0004
+@SYMComponent  telephony_ctsy
+@SYMTestCaseDesc Test support in CTSY for multiple client requests to RMobilePhone::GetAPNControlListServiceStatus
+@SYMTestPriority High
+@SYMTestActions Invokes multiple client requests to RMobilePhone::GetAPNControlListServiceStatus
+@SYMTestExpectedResults Pass
+@SYMTestType CT
+*/
+void CCTsyAPNControlListFU::TestGetAPNControlListServiceStatus0004L()
+	{
+					
+	OpenEtelServerL(EUseExtendedError);
+	CleanupStack::PushL(TCleanupItem(Cleanup,this));
+	OpenPhoneL();
+
+	RBuf8 dataComplete;
+	CleanupClosePushL(dataComplete);
+
+	// 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);	
+	
+	// data for the first  GetAPNControlListServiceStatus()
+	TRequestStatus reqStatus;
+	RMobilePhone::TAPNControlListServiceStatus apnControlListServiceStatus;
+	
+	// data for the second  GetAPNControlListServiceStatus()
+	TRequestStatus reqStatus2;
+	RMobilePhone::TAPNControlListServiceStatus apnControlListServiceStatus2;
+	
+	// data for CompleteL
+	RMobilePhone::TAPNControlListServiceStatus apnStatusComplete = RMobilePhone::EAPNControlListServiceEnabled; 
+	TMockLtsyData1<RMobilePhone::TAPNControlListServiceStatus> ltsyData(apnStatusComplete);
+	ltsyData.SerialiseL(dataComplete);	
+
+	//-------------------------------------------------------------------------
+	// Test A: Test multiple clients requesting RMobilePhone::GetAPNControlListServiceStatus
+ 	//-------------------------------------------------------------------------
+	
+	// send first request
+	iMockLTSY.ExpectL(EMobilePhoneGetAPNControlListServiceStatus);
+	iMockLTSY.CompleteL(EMobilePhoneGetAPNControlListServiceStatus, KErrNone, dataComplete);		
+	iPhone.GetAPNControlListServiceStatus(reqStatus, apnControlListServiceStatus);	
+	
+	// send second request		
+	phone2.GetAPNControlListServiceStatus(reqStatus2, apnControlListServiceStatus2);
+	
+	// wait for the first answer	
+	User::WaitForRequest(reqStatus);
+	ASSERT_EQUALS(KErrNone, reqStatus.Int()); 
+	ASSERT_EQUALS(apnStatusComplete, apnControlListServiceStatus);	
+	
+	// wait for the second answer	
+	User::WaitForRequest(reqStatus2);
+	ASSERT_EQUALS(KErrServerBusy, reqStatus2.Int()); 
+		
+	AssertMockLtsyStatusL();	
+	// Done !
+	CleanupStack::PopAndDestroy(4, this); // phone2, telServer2, dataComplete, this
+
+	}
+
+
+/**
+@SYMTestCaseID BA-CTSY-ACL-MGACLSS-0005
+@SYMComponent  telephony_ctsy
+@SYMTestCaseDesc Test support in CTSY for RMobilePhone::GetAPNControlListServiceStatus with timeout
+@SYMTestPriority High
+@SYMTestActions Invokes RMobilePhone::GetAPNControlListServiceStatus and tests for timeout
+@SYMTestExpectedResults Pass
+@SYMTestType CT
+*/
+void CCTsyAPNControlListFU::TestGetAPNControlListServiceStatus0005L()
+	{
+	
+	OpenEtelServerL(EUseExtendedError);
+	CleanupStack::PushL(TCleanupItem(Cleanup,this));
+	OpenPhoneL();
+	
+	// data for GetAPNControlListServiceStatus()
+	TRequestStatus reqStatus;
+	RMobilePhone::TAPNControlListServiceStatus apnControlListServiceStatus;
+	
+	//-------------------------------------------------------------------------
+	// Test A: Test timeout of RMobilePhone::GetAPNControlListServiceStatus
+ 	//-------------------------------------------------------------------------
+ 	iMockLTSY.ExpectL(EMobilePhoneGetAPNControlListServiceStatus);
+	
+	iPhone.GetAPNControlListServiceStatus(reqStatus, apnControlListServiceStatus);	
+	
+	User::WaitForRequest(reqStatus);
+	ASSERT_EQUALS(KErrTimedOut, reqStatus.Int());  
+		
+	AssertMockLtsyStatusL();
+	// Done !
+	CleanupStack::PopAndDestroy(1, this); // this
+
+	}
+
+
+/**
+@SYMTestCaseID BA-CTSY-ACL-MSACLSS-0001
+@SYMComponent  telephony_ctsy
+@SYMTestCaseDesc Test support in CTSY for RMobilePhone::SetAPNControlListServiceStatus
+@SYMTestPriority High
+@SYMTestActions Invokes RMobilePhone::SetAPNControlListServiceStatus
+@SYMTestExpectedResults Pass
+@SYMTestType CT
+*/
+void CCTsyAPNControlListFU::TestSetAPNControlListServiceStatus0001L()
+	{
+
+	OpenEtelServerL(EUseExtendedError);
+	CleanupStack::PushL(TCleanupItem(Cleanup,this));
+	OpenPhoneL();
+
+	RBuf8 dataExpect;
+	CleanupClosePushL(dataExpect);
+	
+	// data for SetAPNControlListServiceStatus() itself
+	TRequestStatus reqStatus;
+	RMobilePhone::TAPNControlListServiceStatus apnControlListServiceStatus;
+	apnControlListServiceStatus = RMobilePhone::EAPNControlListServiceEnabled;
+	
+	// data for ExpectL
+	TMockLtsyData1<RMobilePhone::TAPNControlListServiceStatus> ltsyData(apnControlListServiceStatus);
+	ltsyData.SerialiseL(dataExpect);	
+	
+ 	//-------------------------------------------------------------------------
+	// TEST A: failure to dispatch request to LTSY
+ 	//-------------------------------------------------------------------------
+	iMockLTSY.ExpectL(EMobilePhoneSetAPNControlListServiceStatus, dataExpect, KErrNotSupported);
+	
+	iPhone.SetAPNControlListServiceStatus(reqStatus, apnControlListServiceStatus);
+	
+	User::WaitForRequest(reqStatus);
+	ASSERT_EQUALS(KErrNotSupported, reqStatus.Int()); 
+	AssertMockLtsyStatusL();
+
+	//-------------------------------------------------------------------------
+	// TEST B: failure on completion of pending request from LTSY->CTSY
+ 	//-------------------------------------------------------------------------
+	iMockLTSY.ExpectL(EMobilePhoneSetAPNControlListServiceStatus, dataExpect);
+	iMockLTSY.CompleteL(EMobilePhoneSetAPNControlListServiceStatus, KErrGeneral);
+	
+	iPhone.SetAPNControlListServiceStatus(reqStatus, apnControlListServiceStatus);
+	
+	User::WaitForRequest(reqStatus);
+	ASSERT_EQUALS(KErrGeneral, reqStatus.Int());
+	AssertMockLtsyStatusL();
+
+ 	//-------------------------------------------------------------------------
+	// TEST C: Successful completion request of
+	// RMobilePhone::SetAPNControlListServiceStatus when result is not cached.
+ 	//-------------------------------------------------------------------------
+	iMockLTSY.ExpectL(EMobilePhoneSetAPNControlListServiceStatus, dataExpect);
+	iMockLTSY.CompleteL(EMobilePhoneSetAPNControlListServiceStatus, KErrNone);
+	
+	iPhone.SetAPNControlListServiceStatus(reqStatus, apnControlListServiceStatus);
+	
+	User::WaitForRequest(reqStatus);
+	ASSERT_EQUALS(KErrNone, reqStatus.Int()); 
+	AssertMockLtsyStatusL();
+		
+  	//-------------------------------------------------------------------------
+	// TEST E: Unsolicited completion of RMobilePhone::SetAPNControlListServiceStatus
+	// from LTSY.
+ 	//-------------------------------------------------------------------------
+	TRequestStatus mockLtsyStatus;
+	iMockLTSY.NotifyTerminated(mockLtsyStatus); 
+ 	// Issue the Complete...	
+	iMockLTSY.CompleteL(EMobilePhoneSetAPNControlListServiceStatus, KErrNone);
+	// wait for completion 
+	User::WaitForRequest(mockLtsyStatus);
+	ASSERT_EQUALS(KErrNone, mockLtsyStatus.Int())
+	AssertMockLtsyStatusL();
+	CleanupStack::PopAndDestroy(2, this); // dataExpect, this
+	
+	}
+
+
+/**
+@SYMTestCaseID BA-CTSY-ACL-MSACLSS-0002
+@SYMComponent  telephony_ctsy
+@SYMTestCaseDesc Test support in CTSY for cancelling of RMobilePhone::SetAPNControlListServiceStatus
+@SYMTestPriority High
+@SYMTestActions Invokes cancelling of RMobilePhone::SetAPNControlListServiceStatus
+@SYMTestExpectedResults Pass
+@SYMTestType CT
+*/
+void CCTsyAPNControlListFU::TestSetAPNControlListServiceStatus0002L()
+	{
+
+// This test should test cancellation of SetAPNControlListServiceStatus
+// If this API does not have a cancel, the test step should be completely removed.
+
+	OpenEtelServerL(EUseExtendedError);
+	CleanupStack::PushL(TCleanupItem(Cleanup,this));
+	OpenPhoneL();
+
+	TRequestStatus mockLtsyStatus;
+	iMockLTSY.NotifyTerminated(mockLtsyStatus);
+
+	RBuf8 dataExpect;
+	CleanupClosePushL(dataExpect);
+	
+	// data for SetAPNControlListServiceStatus() itself
+	TRequestStatus reqStatus;
+	RMobilePhone::TAPNControlListServiceStatus apnControlListServiceStatus;
+	apnControlListServiceStatus = RMobilePhone::EAPNControlListServiceEnabled;
+	
+	// data for ExpectL
+	TMockLtsyData1<RMobilePhone::TAPNControlListServiceStatus> ltsyData(apnControlListServiceStatus);
+	ltsyData.SerialiseL(dataExpect);
+	
+	//-------------------------------------------------------------------------
+	// Test cancelling of RMobilePhone::SetAPNControlListServiceStatus
+ 	//-------------------------------------------------------------------------
+ 	iMockLTSY.ExpectL(EMobilePhoneSetAPNControlListServiceStatus, dataExpect);
+	iMockLTSY.CompleteL(EMobilePhoneSetAPNControlListServiceStatus, KErrNone, 10);
+	
+	iPhone.SetAPNControlListServiceStatus(reqStatus, apnControlListServiceStatus);
+	//cancel reguest
+	iPhone.CancelAsyncRequest(EMobilePhoneSetAPNControlListServiceStatus);	
+	
+	User::WaitForRequest(reqStatus);
+	ASSERT_EQUALS(KErrCancel, reqStatus.Int()); 
+	
+	// Wait for completion of iMockLTSY.NotifyTerminated
+	User::WaitForRequest(mockLtsyStatus);
+	
+	AssertMockLtsyStatusL();	
+	CleanupStack::PopAndDestroy(2); // dataExpect, this	
+	}
+
+
+/**
+@SYMTestCaseID BA-CTSY-ACL-MSACLSS-0003
+@SYMComponent  telephony_ctsy
+@SYMTestCaseDesc Test support in CTSY for RMobilePhone::SetAPNControlListServiceStatus with bad parameter data
+@SYMTestPriority High
+@SYMTestActions Invokes RMobilePhone::SetAPNControlListServiceStatus with bad parameter data
+@SYMTestExpectedResults Pass
+@SYMTestType CT
+*/
+void CCTsyAPNControlListFU::TestSetAPNControlListServiceStatus0003L()
+	{
+
+// This test should test sending bad parameter data for SetAPNControlListServiceStatus
+// If this API does not have any parameters, then remove this test completely.
+
+	OpenEtelServerL(EUseExtendedError);
+	CleanupStack::PushL(TCleanupItem(Cleanup,this));
+	OpenPhoneL();
+
+	RBuf8 dataExpect;
+	CleanupClosePushL(dataExpect);
+
+	//-------------------------------------------------------------------------
+	// Test C: Test passing out of bounds parameters to
+	// RMobilePhone::SetAPNControlListServiceStatus
+ 	//------------------------------------------------------------------------- 	
+ 	// data for SetAPNControlListServiceStatus() itself
+	TRequestStatus reqStatus;
+	RMobilePhone::TAPNControlListServiceStatus apnControlListServiceStatus;	
+	// wrong value
+	apnControlListServiceStatus = (RMobilePhone::TAPNControlListServiceStatus) -1;
+	
+	// data for ExpectL
+	TMockLtsyData1<RMobilePhone::TAPNControlListServiceStatus> ltsyData(apnControlListServiceStatus);
+	ltsyData.SerialiseL(dataExpect);
+	
+	
+	iMockLTSY.ExpectL(EMobilePhoneSetAPNControlListServiceStatus, dataExpect);
+	iMockLTSY.CompleteL(EMobilePhoneSetAPNControlListServiceStatus, KErrNone);
+	
+	iPhone.SetAPNControlListServiceStatus(reqStatus, apnControlListServiceStatus);
+	
+	User::WaitForRequest(reqStatus);
+	// there is no checking of passing parameters in CTSY,
+	// but CTSY doesn't use passing parameters, it just sent it to LTSY
+	// so, I think, it isn't defect	
+	ASSERT_EQUALS(KErrNone, reqStatus.Int()); 
+	AssertMockLtsyStatusL();	
+
+	// Done !
+	CleanupStack::PopAndDestroy(2, this); // dataExpect, this
+
+	}
+
+
+/**
+@SYMTestCaseID BA-CTSY-ACL-MSACLSS-0004
+@SYMComponent  telephony_ctsy
+@SYMTestCaseDesc Test support in CTSY for multiple client requests to RMobilePhone::SetAPNControlListServiceStatus
+@SYMTestPriority High
+@SYMTestActions Invokes multiple client requests to RMobilePhone::SetAPNControlListServiceStatus
+@SYMTestExpectedResults Pass
+@SYMTestType CT
+*/
+void CCTsyAPNControlListFU::TestSetAPNControlListServiceStatus0004L()
+	{
+					
+	OpenEtelServerL(EUseExtendedError);
+	CleanupStack::PushL(TCleanupItem(Cleanup,this));
+	OpenPhoneL();
+
+	RBuf8 dataExpect;
+	CleanupClosePushL(dataExpect);	
+
+	// 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);	
+	
+	// data for the first SetAPNControlListServiceStatus() 
+	TRequestStatus reqStatus;
+	RMobilePhone::TAPNControlListServiceStatus apnControlListServiceStatus;
+	apnControlListServiceStatus = RMobilePhone::EAPNControlListServiceEnabled;
+	
+	// data for the second SetAPNControlListServiceStatus() 
+	TRequestStatus reqStatus2;
+	RMobilePhone::TAPNControlListServiceStatus apnControlListServiceStatus2;
+	apnControlListServiceStatus2 = RMobilePhone::EAPNControlListServiceDisabled;
+	
+	// data for ExpectL
+	TMockLtsyData1<RMobilePhone::TAPNControlListServiceStatus> ltsyData(apnControlListServiceStatus);
+	ltsyData.SerialiseL(dataExpect);
+
+	//-------------------------------------------------------------------------
+	// Test A: Test multiple clients requesting RMobilePhone::SetAPNControlListServiceStatus
+ 	//-------------------------------------------------------------------------
+ 	
+ 	// send first request
+ 	iMockLTSY.ExpectL(EMobilePhoneSetAPNControlListServiceStatus, dataExpect);
+	iMockLTSY.CompleteL(EMobilePhoneSetAPNControlListServiceStatus, KErrNone);	
+	iPhone.SetAPNControlListServiceStatus(reqStatus, apnControlListServiceStatus);
+	
+	
+	// send second request
+	phone2.SetAPNControlListServiceStatus(reqStatus2, apnControlListServiceStatus2);	
+	
+	//wait for the first answer
+	User::WaitForRequest(reqStatus);
+	ASSERT_EQUALS(KErrNone, reqStatus.Int()); 
+	
+	//wait for the second answer
+	User::WaitForRequest(reqStatus2);
+	ASSERT_EQUALS(KErrServerBusy, reqStatus2.Int()); 
+		
+	AssertMockLtsyStatusL();
+	// Done !
+	CleanupStack::PopAndDestroy(4, this); // phone2, telServer2, dataExpect, this
+
+	}
+
+
+/**
+@SYMTestCaseID BA-CTSY-ACL-MSACLSS-0005
+@SYMComponent  telephony_ctsy
+@SYMTestCaseDesc Test support in CTSY for RMobilePhone::SetAPNControlListServiceStatus with timeout
+@SYMTestPriority High
+@SYMTestActions Invokes RMobilePhone::SetAPNControlListServiceStatus and tests for timeout
+@SYMTestExpectedResults Pass
+@SYMTestType CT
+*/
+void CCTsyAPNControlListFU::TestSetAPNControlListServiceStatus0005L()
+	{
+
+	OpenEtelServerL(EUseExtendedError);
+	CleanupStack::PushL(TCleanupItem(Cleanup,this));
+	OpenPhoneL();
+
+	RBuf8 dataExpect;
+	CleanupClosePushL(dataExpect);
+	
+	// data for SetAPNControlListServiceStatus() itself
+	TRequestStatus reqStatus;
+	RMobilePhone::TAPNControlListServiceStatus apnControlListServiceStatus;
+	apnControlListServiceStatus = RMobilePhone::EAPNControlListServiceEnabled;
+	
+	// data for ExpectL
+	TMockLtsyData1<RMobilePhone::TAPNControlListServiceStatus> ltsyData(apnControlListServiceStatus);
+	ltsyData.SerialiseL(dataExpect);	
+
+	//-------------------------------------------------------------------------
+	// Test A: Test timeout of RMobilePhone::SetAPNControlListServiceStatus
+ 	//-------------------------------------------------------------------------
+	iMockLTSY.ExpectL(EMobilePhoneSetAPNControlListServiceStatus, dataExpect);
+	
+	iPhone.SetAPNControlListServiceStatus(reqStatus, apnControlListServiceStatus);
+	User::WaitForRequest(reqStatus);
+	ASSERT_EQUALS(KErrTimedOut, reqStatus.Int()); 
+	
+	AssertMockLtsyStatusL();
+	// Done !
+	CleanupStack::PopAndDestroy(2, this); // dataExpect, this
+
+	}
+
+
+/**
+@SYMTestCaseID BA-CTSY-ACL-MNACLSSC-0001
+@SYMComponent  telephony_ctsy
+@SYMTestCaseDesc Test support in CTSY for RMobilePhone::NotifyAPNControlListServiceStatusChange
+@SYMTestPriority High
+@SYMTestActions Invokes RMobilePhone::NotifyAPNControlListServiceStatusChange
+@SYMTestExpectedResults Pass
+@SYMTestType CT
+*/
+void CCTsyAPNControlListFU::TestNotifyAPNControlListServiceStatusChange0001L()
+	{
+
+	OpenEtelServerL(EUseExtendedError);
+	CleanupStack::PushL(TCleanupItem(Cleanup,this));
+	OpenPhoneL();
+
+	RBuf8 dataComplete;
+	CleanupClosePushL(dataComplete);	
+	
+	// data for CompleteL
+	RMobilePhone::TAPNControlListServiceStatus apnStatusComplete = RMobilePhone::EAPNControlListServiceEnabled;
+	TMockLtsyData1<RMobilePhone::TAPNControlListServiceStatus> ltsyData(apnStatusComplete);
+	ltsyData.SerialiseL(dataComplete);	
+	
+	// data for NotifyAPNControlListServiceStatusChange
+	TRequestStatus reqStatus;
+	RMobilePhone::TAPNControlListServiceStatus apnControlListServiceStatus;	
+	
+	//-------------------------------------------------------------------------
+	// TEST E: Unsolicited completion of RMobilePhone::NotifyAPNControlListServiceStatusChange
+	// from LTSY. 
+ 	//-------------------------------------------------------------------------
+	TRequestStatus mockLtsyStatus;
+	iMockLTSY.NotifyTerminated(mockLtsyStatus); 
+ 	// Issue the Complete...	
+	iMockLTSY.CompleteL(EMobilePhoneNotifyAPNControlListServiceStatusChange, KErrNone, dataComplete);
+	// wait for completion 
+	User::WaitForRequest(mockLtsyStatus);
+	ASSERT_EQUALS(KErrNone, mockLtsyStatus.Int());
+	AssertMockLtsyStatusL();		
+	
+ 	//-------------------------------------------------------------------------
+	// TEST B: failure on completion of pending request from LTSY->CTSY
+ 	//-------------------------------------------------------------------------
+	iPhone.NotifyAPNControlListServiceStatusChange (reqStatus, apnControlListServiceStatus);
+	
+	// send completion 
+	iMockLTSY.CompleteL(EMobilePhoneNotifyAPNControlListServiceStatusChange, KErrGeneral, dataComplete);
+	
+	User::WaitForRequest(reqStatus);
+	ASSERT_EQUALS(KErrGeneral, reqStatus.Int()); 
+	AssertMockLtsyStatusL();
+
+ 	//-------------------------------------------------------------------------
+	// TEST C: Successful completion request of
+	// RMobilePhone::NotifyAPNControlListServiceStatusChange when result is not cached.
+ 	//-------------------------------------------------------------------------
+	iPhone.NotifyAPNControlListServiceStatusChange (reqStatus, apnControlListServiceStatus);
+	
+	// send completion 
+	iMockLTSY.CompleteL(EMobilePhoneNotifyAPNControlListServiceStatusChange, KErrNone, dataComplete);
+		
+	User::WaitForRequest(reqStatus);
+	ASSERT_EQUALS(KErrNone, reqStatus.Int()); 
+	ASSERT_EQUALS(apnStatusComplete, apnControlListServiceStatus); 		
+
+	AssertMockLtsyStatusL();
+	CleanupStack::PopAndDestroy(2, this); // dataComplete, this		
+	}
+
+
+/**
+@SYMTestCaseID BA-CTSY-ACL-MNACLSSC-0002
+@SYMComponent  telephony_ctsy
+@SYMTestCaseDesc Test support in CTSY for cancelling of RMobilePhone::NotifyAPNControlListServiceStatusChange
+@SYMTestPriority High
+@SYMTestActions Invokes cancelling of RMobilePhone::NotifyAPNControlListServiceStatusChange
+@SYMTestExpectedResults Pass
+@SYMTestType CT
+*/
+void CCTsyAPNControlListFU::TestNotifyAPNControlListServiceStatusChange0002L()
+	{
+
+// This test should test cancellation of NotifyAPNControlListServiceStatusChange
+// If this API does not have a cancel, the test step should be completely removed.
+
+	OpenEtelServerL(EUseExtendedError);
+	CleanupStack::PushL(TCleanupItem(Cleanup,this));
+	OpenPhoneL();
+
+	TRequestStatus mockLtsyStatus;
+	iMockLTSY.NotifyTerminated(mockLtsyStatus);
+
+	RBuf8 dataComplete;
+	CleanupClosePushL(dataComplete);	
+	
+	// data for CompleteL
+	RMobilePhone::TAPNControlListServiceStatus apnStatusComplete = RMobilePhone::EAPNControlListServiceEnabled;
+	TMockLtsyData1<RMobilePhone::TAPNControlListServiceStatus> ltsyData(apnStatusComplete);
+	ltsyData.SerialiseL(dataComplete);	
+	
+	// data for NotifyAPNControlListServiceStatusChange
+	TRequestStatus reqStatus;
+	RMobilePhone::TAPNControlListServiceStatus apnControlListServiceStatus;	
+
+ 	//-------------------------------------------------------------------------
+	// Test cancelling of RMobilePhone::NotifyAPNControlListServiceStatusChange
+ 	//-------------------------------------------------------------------------
+ 	iPhone.NotifyAPNControlListServiceStatusChange (reqStatus, apnControlListServiceStatus);	
+	// send completion 
+	iMockLTSY.CompleteL(EMobilePhoneNotifyAPNControlListServiceStatusChange, KErrNone, dataComplete, 10);
+		
+	// cancel request
+	iPhone.CancelAsyncRequest(EMobilePhoneNotifyAPNControlListServiceStatusChange);
+			
+	User::WaitForRequest(reqStatus);
+	ASSERT_EQUALS(KErrCancel, reqStatus.Int()); 				
+ 	
+	// Wait for completion of iMockLTSY.NotifyTerminated
+	User::WaitForRequest(mockLtsyStatus);
+	
+	AssertMockLtsyStatusL();
+	CleanupStack::PopAndDestroy(2); // dataComplete, this	
+	}
+
+
+/**
+@SYMTestCaseID BA-CTSY-ACL-MNACLSSC-0004
+@SYMComponent  telephony_ctsy
+@SYMTestCaseDesc Test support in CTSY for multiple client requests to RMobilePhone::NotifyAPNControlListServiceStatusChange
+@SYMTestPriority High
+@SYMTestActions Invokes multiple client requests to RMobilePhone::NotifyAPNControlListServiceStatusChange
+@SYMTestExpectedResults Pass
+@SYMTestType CT
+*/
+void CCTsyAPNControlListFU::TestNotifyAPNControlListServiceStatusChange0004L()
+	{
+					
+	OpenEtelServerL(EUseExtendedError);
+	CleanupStack::PushL(TCleanupItem(Cleanup,this));
+	OpenPhoneL();
+
+	RBuf8 dataComplete;
+	CleanupClosePushL(dataComplete);		
+
+	// 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);
+	
+	
+	// data for CompleteL
+	RMobilePhone::TAPNControlListServiceStatus apnStatusComplete = RMobilePhone::EAPNControlListServiceEnabled;
+	TMockLtsyData1<RMobilePhone::TAPNControlListServiceStatus> ltsyData(apnStatusComplete);
+	ltsyData.SerialiseL(dataComplete);	
+	
+	// data for the first NotifyAPNControlListServiceStatusChange
+	TRequestStatus reqStatus;
+	RMobilePhone::TAPNControlListServiceStatus apnControlListServiceStatus;	
+	
+	// data for the second NotifyAPNControlListServiceStatusChange
+	TRequestStatus reqStatus2;
+	RMobilePhone::TAPNControlListServiceStatus apnControlListServiceStatus2;
+
+	//-------------------------------------------------------------------------
+	// Test A: Test multiple clients requesting RMobilePhone::NotifyAPNControlListServiceStatusChange
+ 	//-------------------------------------------------------------------------
+ 	
+ 	// send first reques
+ 	iPhone.NotifyAPNControlListServiceStatusChange (reqStatus, apnControlListServiceStatus);
+ 	
+ 	// send second reques
+ 	phone2.NotifyAPNControlListServiceStatusChange (reqStatus2, apnControlListServiceStatus2);
+	
+	// send completion 
+	iMockLTSY.CompleteL(EMobilePhoneNotifyAPNControlListServiceStatusChange, KErrNone, dataComplete);
+		
+	// wait for the first answer	
+	User::WaitForRequest(reqStatus);
+	ASSERT_EQUALS(KErrNone, reqStatus.Int()); 
+	ASSERT_EQUALS(apnStatusComplete, apnControlListServiceStatus); 	
+	
+	// wait for the second answer	
+	User::WaitForRequest(reqStatus);
+	ASSERT_EQUALS(KErrNone, reqStatus.Int()); 
+	ASSERT_EQUALS(apnStatusComplete, apnControlListServiceStatus); 
+		
+
+	AssertMockLtsyStatusL();
+	// Done !
+	CleanupStack::PopAndDestroy(4, this); // phone2, telServer2, dataComplete, this
+
+	}
+