diff -r 000000000000 -r 3553901f7fa8 telephonyserverplugins/common_tsy/test/component/src/cctsyapncontrollistfu.cpp --- /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 +#include +#include +#include +#include +#include "tmockltsydata.h" +#include + +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 ltsyData(index); + ltsyData.SerialiseL(dataExpect); + + // data for CompleteL + RMobilePhone::TAPNEntryV3 apnEntryComplete; + _LIT8(KSameName, "SameName"); + apnEntryComplete.iApn.Copy(KSameName); + TMockLtsyData1 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 ltsyData(index); + ltsyData.SerialiseL(dataExpect); + + // data for CompleteL + RMobilePhone::TAPNEntryV3 apnEntryComplete; + _LIT8(KSameName, "SameName"); + apnEntryComplete.iApn.Copy(KSameName); + TMockLtsyData1 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("$CTSYKnownFailure: defect id = %d"), 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 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 ltsyData(index); + ltsyData.SerialiseL(dataExpect); + + // data for CompleteL + RMobilePhone::TAPNEntryV3 apnEntryComplete; + _LIT8(KSameName, "SameName"); + apnEntryComplete.iApn.Copy(KSameName); + TMockLtsyData1 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 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 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 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("$CTSYKnownFailure: defect id = %d"), 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 + + } +