--- a/telephonyserverplugins/common_tsy/test/component/src/cctsycallcontrolfu.cpp Mon May 03 13:37:20 2010 +0300
+++ b/telephonyserverplugins/common_tsy/test/component/src/cctsycallcontrolfu.cpp Thu May 06 15:10:38 2010 +0100
@@ -1,12992 +1,12992 @@
-// 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 CallControl in the Common TSY.
-//
-//
-
-/**
- @file
-*/
-
-#include "cctsycallcontrolfu.h"
-#include <etel.h>
-#include <etelmm.h>
-#include <et_clsvr.h>
-#include <ctsy/mmtsy_names.h>
-#include <ctsy/serviceapi/mmtsy_ipcdefs.h>
-#include "tmockltsydata.h"
-#include <ctsy/serviceapi/gsmerror.h>
-#include <etelmmerr.h>
-#include "MmTsy_timeoutdefs.h"
-
-CTestSuite* CCTsyCallControlFU::CreateSuiteL(const TDesC& aName)
- {
- SUB_SUITE;
-
- ADD_TEST_STEP_ISO_CPP(CCTsyCallControlFU, TestAnswerIncomingCall0001L);
- ADD_TEST_STEP_ISO_CPP(CCTsyCallControlFU, TestAnswerIncomingCall0002L);
- ADD_TEST_STEP_ISO_CPP(CCTsyCallControlFU, TestAnswerIncomingCall0004L);
- ADD_TEST_STEP_ISO_CPP(CCTsyCallControlFU, TestAnswerIncomingCall0005L);
- ADD_TEST_STEP_ISO_CPP(CCTsyCallControlFU, TestAnswerIncomingCall0006L);
- ADD_TEST_STEP_ISO_CPP(CCTsyCallControlFU, TestAnswerIncomingCall0007L);
- ADD_TEST_STEP_ISO_CPP(CCTsyCallControlFU, TestAnswerIncomingCall0008L);
- ADD_TEST_STEP_ISO_CPP(CCTsyCallControlFU, TestAnswerIncomingCall0009L);
- ADD_TEST_STEP_ISO_CPP(CCTsyCallControlFU, TestAnswerIncomingCall00010L);
- ADD_TEST_STEP_ISO_CPP(CCTsyCallControlFU, TestAnswerIncomingCall00011L);
- ADD_TEST_STEP_ISO_CPP(CCTsyCallControlFU, TestDial0001L);
- ADD_TEST_STEP_ISO_CPP(CCTsyCallControlFU, TestDial0001bL);
- ADD_TEST_STEP_ISO_CPP(CCTsyCallControlFU, TestDial0001cL);
- ADD_TEST_STEP_ISO_CPP(CCTsyCallControlFU, TestDial0002L);
- ADD_TEST_STEP_ISO_CPP(CCTsyCallControlFU, TestDial0003L);
- ADD_TEST_STEP_ISO_CPP(CCTsyCallControlFU, TestDial0004L);
- ADD_TEST_STEP_ISO_CPP(CCTsyCallControlFU, TestDial0005L);
- ADD_TEST_STEP_ISO_CPP(CCTsyCallControlFU, TestDial0006L);
- ADD_TEST_STEP_ISO_CPP(CCTsyCallControlFU, TestDial0006bL);
- ADD_TEST_STEP_ISO_CPP(CCTsyCallControlFU, TestDial0006cL);
- ADD_TEST_STEP_ISO_CPP(CCTsyCallControlFU, TestDial0006dL);
- ADD_TEST_STEP_ISO_CPP(CCTsyCallControlFU, TestDial0006eL);
- ADD_TEST_STEP_ISO_CPP(CCTsyCallControlFU, TestDial0006fL);
- ADD_TEST_STEP_ISO_CPP(CCTsyCallControlFU, TestDial0006gL);
- ADD_TEST_STEP_ISO_CPP(CCTsyCallControlFU, TestDial0006hL);
- ADD_TEST_STEP_ISO_CPP(CCTsyCallControlFU, TestDial0006iL);
- ADD_TEST_STEP_ISO_CPP(CCTsyCallControlFU, TestDial0007L);
- ADD_TEST_STEP_ISO_CPP(CCTsyCallControlFU, TestDial0008L);
- ADD_TEST_STEP_ISO_CPP(CCTsyCallControlFU, TestDial0009L);
- ADD_TEST_STEP_ISO_CPP(CCTsyCallControlFU, TestDial0009bL);
- ADD_TEST_STEP_ISO_CPP(CCTsyCallControlFU, TestDial0009cL);
- ADD_TEST_STEP_ISO_CPP(CCTsyCallControlFU, TestDial00010L);
- ADD_TEST_STEP_ISO_CPP(CCTsyCallControlFU, TestDial00011L);
- ADD_TEST_STEP_ISO_CPP(CCTsyCallControlFU, TestHangUp0001L);
- ADD_TEST_STEP_ISO_CPP(CCTsyCallControlFU, TestHangUp0002L);
- ADD_TEST_STEP_ISO_CPP(CCTsyCallControlFU, TestHangUp0004L);
- ADD_TEST_STEP_ISO_CPP(CCTsyCallControlFU, TestHangUp0005L);
- ADD_TEST_STEP_ISO_CPP(CCTsyCallControlFU, TestHangUp0006L);
- ADD_TEST_STEP_ISO_CPP(CCTsyCallControlFU, TestHangUp0007L);
- ADD_TEST_STEP_ISO_CPP(CCTsyCallControlFU, TestHangUp0009L);
- ADD_TEST_STEP_ISO_CPP(CCTsyCallControlFU, TestHangUp00010L);
- ADD_TEST_STEP_ISO_CPP(CCTsyCallControlFU, TestHangUp00011L);
- ADD_TEST_STEP_ISO_CPP(CCTsyCallControlFU, TestHangUp00011bL);
- ADD_TEST_STEP_ISO_CPP(CCTsyCallControlFU, TestHangUp00011cL);
- ADD_TEST_STEP_ISO_CPP(CCTsyCallControlFU, TestHangUp00012L);
- ADD_TEST_STEP_ISO_CPP(CCTsyCallControlFU, TestHangUp00014L);
- ADD_TEST_STEP_ISO_CPP(CCTsyCallControlFU, TestHangUp00015L);
- ADD_TEST_STEP_ISO_CPP(CCTsyCallControlFU, TestHold0001L);
- ADD_TEST_STEP_ISO_CPP(CCTsyCallControlFU, TestHold0002L);
- ADD_TEST_STEP_ISO_CPP(CCTsyCallControlFU, TestHold0004L);
- ADD_TEST_STEP_ISO_CPP(CCTsyCallControlFU, TestHold0005L);
- ADD_TEST_STEP_ISO_CPP(CCTsyCallControlFU, TestHold0006L);
- ADD_TEST_STEP_ISO_CPP(CCTsyCallControlFU, TestHold00011L);
- ADD_TEST_STEP_ISO_CPP(CCTsyCallControlFU, TestHold0001aL);
- ADD_TEST_STEP_ISO_CPP(CCTsyCallControlFU, TestSwap0001L);
- ADD_TEST_STEP_ISO_CPP(CCTsyCallControlFU, TestSwap0002L);
- ADD_TEST_STEP_ISO_CPP(CCTsyCallControlFU, TestSwap0004L);
- ADD_TEST_STEP_ISO_CPP(CCTsyCallControlFU, TestSwap0005L);
- ADD_TEST_STEP_ISO_CPP(CCTsyCallControlFU, TestSwap0006L);
- ADD_TEST_STEP_ISO_CPP(CCTsyCallControlFU, TestSwap00011L);
- ADD_TEST_STEP_ISO_CPP(CCTsyCallControlFU, TestResume0001L);
- ADD_TEST_STEP_ISO_CPP(CCTsyCallControlFU, TestResume0002L);
- ADD_TEST_STEP_ISO_CPP(CCTsyCallControlFU, TestResume0004L);
- ADD_TEST_STEP_ISO_CPP(CCTsyCallControlFU, TestResume0005L);
- ADD_TEST_STEP_ISO_CPP(CCTsyCallControlFU, TestResume0006L);
- ADD_TEST_STEP_ISO_CPP(CCTsyCallControlFU, TestResume00011L);
- ADD_TEST_STEP_ISO_CPP(CCTsyCallControlFU, TestDeflect0001L);
- ADD_TEST_STEP_ISO_CPP(CCTsyCallControlFU, TestDeflect0002L);
- ADD_TEST_STEP_ISO_CPP(CCTsyCallControlFU, TestDeflect0003L);
- ADD_TEST_STEP_ISO_CPP(CCTsyCallControlFU, TestTransfer0001L);
- ADD_TEST_STEP_ISO_CPP(CCTsyCallControlFU, TestTransfer0002L);
- ADD_TEST_STEP_ISO_CPP(CCTsyCallControlFU, TestTransfer0004L);
- ADD_TEST_STEP_ISO_CPP(CCTsyCallControlFU, TestTransfer0005L);
- ADD_TEST_STEP_ISO_CPP(CCTsyCallControlFU, TestTransfer0006L);
- ADD_TEST_STEP_ISO_CPP(CCTsyCallControlFU, TestTransfer0009L);
- ADD_TEST_STEP_ISO_CPP(CCTsyCallControlFU, TestTransfer00011L);
- ADD_TEST_STEP_ISO_CPP(CCTsyCallControlFU, TestTerminateAllCalls0001L);
- ADD_TEST_STEP_ISO_CPP(CCTsyCallControlFU, TestTerminateAllCalls0002L);
- ADD_TEST_STEP_ISO_CPP(CCTsyCallControlFU, TestTerminateAllCalls0004L);
- ADD_TEST_STEP_ISO_CPP(CCTsyCallControlFU, TestTerminateAllCalls0005L);
- ADD_TEST_STEP_ISO_CPP(CCTsyCallControlFU, TestTerminateActiveCalls0001L);
- ADD_TEST_STEP_ISO_CPP(CCTsyCallControlFU, TestTerminateActiveCalls0001bL);
- ADD_TEST_STEP_ISO_CPP(CCTsyCallControlFU, TestTerminateActiveCalls0001cL);
- ADD_TEST_STEP_ISO_CPP(CCTsyCallControlFU, TestTerminateActiveCalls0002L);
- ADD_TEST_STEP_ISO_CPP(CCTsyCallControlFU, TestTerminateActiveCalls0004L);
- ADD_TEST_STEP_ISO_CPP(CCTsyCallControlFU, TestTerminateActiveCalls0005L);
- ADD_TEST_STEP_ISO_CPP(CCTsyCallControlFU, TestSetIncomingCallType0001L);
- ADD_TEST_STEP_ISO_CPP(CCTsyCallControlFU, TestAnswerIncomingCallISV0001L);
- ADD_TEST_STEP_ISO_CPP(CCTsyCallControlFU, TestAnswerIncomingCallISV0002L);
- ADD_TEST_STEP_ISO_CPP(CCTsyCallControlFU, TestAnswerIncomingCallISV0004L);
- ADD_TEST_STEP_ISO_CPP(CCTsyCallControlFU, TestAnswerIncomingCallISV0005L);
- ADD_TEST_STEP_ISO_CPP(CCTsyCallControlFU, TestAnswerIncomingCallISV0006L);
- ADD_TEST_STEP_ISO_CPP(CCTsyCallControlFU, TestAnswerIncomingCallISV00011L);
- ADD_TEST_STEP_ISO_CPP(CCTsyCallControlFU, TestDialISV0001L);
- ADD_TEST_STEP_ISO_CPP(CCTsyCallControlFU, TestDialISV0006L);
- ADD_TEST_STEP_ISO_CPP(CCTsyCallControlFU, TestDialISV00011L);
- ADD_TEST_STEP_ISO_CPP(CCTsyCallControlFU, TestDialCallControl0001L);
- ADD_TEST_STEP_ISO_CPP(CCTsyCallControlFU, TestDialCallControl0006L);
- ADD_TEST_STEP_ISO_CPP(CCTsyCallControlFU, TestDialCallControl00011L);
- ADD_TEST_STEP_ISO_CPP(CCTsyCallControlFU, TestEnumerateCall0001L);
- ADD_TEST_STEP_ISO_CPP(CCTsyCallControlFU, TestEnumerateCall0006L);
- ADD_TEST_STEP_ISO_CPP(CCTsyCallControlFU, TestEnumerateCall00011L);
- ADD_TEST_STEP_ISO_CPP(CCTsyCallControlFU, TestNotifyHookChange0001L);
- ADD_TEST_STEP_ISO_CPP(CCTsyCallControlFU, TestNotifyHookChange0006L);
- ADD_TEST_STEP_ISO_CPP(CCTsyCallControlFU, TestNotifyHookChange00011L);
- ADD_TEST_STEP_ISO_CPP(CCTsyCallControlFU, TestCompleteNotifyStatusChange0001L);
- ADD_TEST_STEP_ISO_CPP(CCTsyCallControlFU, TestUpdateLifeTime0001L);
-
- END_SUITE;
- }
-
-
-//
-// Actual test cases
-//
-
-
-/**
-@SYMTestCaseID BA-CTSY-CCON-CAIC-0001
-@SYMComponent telephony_ctsy
-@SYMTestCaseDesc Test support in CTSY for RCall::AnswerIncomingCall for voice calls
-@SYMTestPriority High
-@SYMTestActions Invokes RCall::AnswerIncomingCall for voice calls
-@SYMTestExpectedResults Pass
-@SYMTestType CT
-*/
-void CCTsyCallControlFU::TestAnswerIncomingCall0001L()
- {
-
- OpenEtelServerL(EUseExtendedError);
- CleanupStack::PushL(TCleanupItem(Cleanup,this));
- OpenPhoneL();
-
- RBuf8 expectData;
- CleanupClosePushL(expectData);
-
- RBuf8 completeData;
- CleanupClosePushL(completeData);
-
- RLine line;
- RCall call;
- CleanupClosePushL(call);
-
- TInt errorCode = KErrNone;
- TInt callId = 1;
- TName incomingCallName;
- TRequestStatus requestStatus;
- TRequestStatus requestNotify;
-
- // open new line and call for KMmTsyVoice1LineName
- errorCode = OpenNewLineLC(iPhone, line, KMmTsyVoice1LineName);
- ASSERT_EQUALS(KErrNone, errorCode);
-
- RMobileCall::TMobileCallStatus mobileCallStatus = RMobileCall::EStatusRinging;
- RMobilePhone::TMobileService mobileService = RMobilePhone::EVoiceService;
-
- //-------------------------------------------------------------------------
- // TEST A: failure to dispatch request to LTSY
- //-------------------------------------------------------------------------
-
- //-------------------------------------------------------------------------
- // create new incoming call
- errorCode = CreateIncomingCallL(line, callId, incomingCallName,
- mobileService, mobileCallStatus);
- ASSERT_EQUALS(KErrNone, errorCode);
-
- errorCode = call.OpenExistingCall(line, incomingCallName);
- ASSERT_EQUALS(KErrNone, errorCode);
- //-------------------------------------------------------------------------
-
- TMockLtsyCallData0 mockData0(callId, mobileService);
-
- expectData.Close();
- mockData0.SerialiseL(expectData);
- iMockLTSY.ExpectL(EEtelCallAnswer, expectData, KErrNotSupported);
-
- RMobileCall::TMobileCallParamsV1 callParamsV1;
- TPckg<RMobileCall::TMobileCallParamsV1> mmParamsPckgV1(callParamsV1);
- call.AnswerIncomingCall(requestStatus, mmParamsPckgV1);
-
- User::WaitForRequest(requestStatus);
- AssertMockLtsyStatusL();
- ASSERT_EQUALS(KErrNotSupported, requestStatus.Int());
-
- // close incoming call
- CloseIncomingCallL(call, callId, mobileService);
-
- //-------------------------------------------------------------------------
- // TEST B: failure on completion of pending request from LTSY->CTSY
- //-------------------------------------------------------------------------
-
- //-------------------------------------------------------------------------
- // create new incoming call
- errorCode = CreateIncomingCallL(line, callId, incomingCallName,
- mobileService, mobileCallStatus);
- ASSERT_EQUALS(KErrNone, errorCode);
- AssertMockLtsyStatusL();
-
- errorCode = call.OpenExistingCall(line, incomingCallName);
- ASSERT_EQUALS(KErrNone, errorCode);
- AssertMockLtsyStatusL();
- //-------------------------------------------------------------------------
-
- expectData.Close();
- mockData0.SerialiseL(expectData);
- iMockLTSY.ExpectL(EEtelCallAnswer, expectData);
- iMockLTSY.CompleteL(EEtelCallAnswer, KErrGeneral, expectData);
- call.AnswerIncomingCall(requestStatus, mmParamsPckgV1);
-
- User::WaitForRequest(requestStatus);
- AssertMockLtsyStatusL();
- ASSERT_EQUALS(KErrGeneral, requestStatus.Int());
-
- // close incoming call
- CloseIncomingCallL(call, callId, mobileService);
-
- //-------------------------------------------------------------------------
- // TEST C: Successful completion request of
- // RCall::AnswerIncomingCall when result is not cached.
- //-------------------------------------------------------------------------
-
- //-------------------------------------------------------------------------
- // create new incoming call
- errorCode = CreateIncomingCallL(line, callId, incomingCallName,
- mobileService, mobileCallStatus);
- ASSERT_EQUALS(KErrNone, errorCode);
- AssertMockLtsyStatusL();
-
- errorCode = call.OpenExistingCall(line, incomingCallName);
- ASSERT_EQUALS(KErrNone, errorCode);
- AssertMockLtsyStatusL();
- //-------------------------------------------------------------------------
-
- expectData.Close();
- mockData0.SerialiseL(expectData);
- iMockLTSY.ExpectL(EEtelCallAnswer, expectData);
- iMockLTSY.CompleteL(EEtelCallAnswer, KErrNone, expectData);
- call.AnswerIncomingCall(requestStatus, mmParamsPckgV1);
-
- User::WaitForRequest(requestStatus);
- AssertMockLtsyStatusL();
- ASSERT_EQUALS(KErrNone, requestStatus.Int());
-
- // close incoming call
- CloseIncomingCallL(call, callId, mobileService);
-
- //-------------------------------------------------------------------------
- // TEST E: Unsolicited completion of RCall::AnswerIncomingCall
- // from LTSY.
- //-------------------------------------------------------------------------
-
- TRequestStatus mockLtsyStatus;
-
- iMockLTSY.NotifyTerminated(mockLtsyStatus);
- expectData.Close();
- mockData0.SerialiseL(expectData);
- iMockLTSY.CompleteL(EEtelCallAnswer, KErrNone, expectData);
- User::WaitForRequest(mockLtsyStatus);
- AssertMockLtsyStatusL();
- ASSERT_EQUALS(KErrNone, mockLtsyStatus.Int());
-
- //-------------------------------------------------------------------------
- // TEST : Call AnswerIncomingCall with null description
- //-------------------------------------------------------------------------
-
- //-------------------------------------------------------------------------
- // create new incoming call
- errorCode = CreateIncomingCallL(line, callId, incomingCallName,
- mobileService, mobileCallStatus);
- ASSERT_EQUALS(KErrNone, errorCode);
- AssertMockLtsyStatusL();
-
- errorCode = call.OpenExistingCall(line, incomingCallName);
- ASSERT_EQUALS(KErrNone, errorCode);
- AssertMockLtsyStatusL();
- //-------------------------------------------------------------------------
-
- expectData.Close();
- mockData0.SerialiseL(expectData);
- iMockLTSY.ExpectL(EEtelCallAnswer, expectData);
- iMockLTSY.CompleteL(EEtelCallAnswer, KErrNone, expectData);
-
- TPtr8 null(NULL,0);
- call.AnswerIncomingCall(requestStatus, null);
-
- User::WaitForRequest(requestStatus);
- AssertMockLtsyStatusL();
- ASSERT_EQUALS(KErrNone, requestStatus.Int());
-
- // close incoming call
- CloseIncomingCallL(call, callId, mobileService);
-
- //-------------------------------------------------------------------------
- // TEST : to increase CMmVoiceCallTsy::AnswerIncomingCall coverage
- // covers "if ( 0 < answerCallHandle )" condition
- //-------------------------------------------------------------------------
-
- RCall call2;
- CleanupClosePushL(call2);
- TRequestStatus requestStatus2;
-
- //-------------------------------------------------------------------------
- // create new incoming call
- errorCode = CreateIncomingCallL(line, callId, incomingCallName,
- mobileService, mobileCallStatus);
- ASSERT_EQUALS(KErrNone, errorCode);
- AssertMockLtsyStatusL();
-
- errorCode = call.OpenExistingCall(line, incomingCallName);
- ASSERT_EQUALS(KErrNone, errorCode);
- AssertMockLtsyStatusL();
- //-------------------------------------------------------------------------
-
- //-------------------------------------------------------------------------
- errorCode = call2.OpenExistingCall(line, incomingCallName);
- ASSERT_EQUALS(KErrNone, errorCode);
- AssertMockLtsyStatusL();
- //-------------------------------------------------------------------------
-
- expectData.Close();
- mockData0.SerialiseL(expectData);
- iMockLTSY.ExpectL(EEtelCallAnswer, expectData);
- iMockLTSY.CompleteL(EEtelCallAnswer, KErrNone, expectData);
- call.AnswerIncomingCall(requestStatus, mmParamsPckgV1);
-
- call2.AnswerIncomingCall(requestStatus2, mmParamsPckgV1);
-
- User::WaitForRequest(requestStatus);
- ASSERT_EQUALS(KErrNone, requestStatus.Int());
-
- User::WaitForRequest(requestStatus2);
- ASSERT_EQUALS(KErrServerBusy, requestStatus2.Int());
-
- call.Close();
-
- CloseIncomingCallL(call2, callId, mobileService);
- AssertMockLtsyStatusL();
-
- //-------------------------------------------------------------------------
- // TEST : to increase CMmVoiceCallTsy::AnswerIncomingCall coverage
- // covers "else if( activeCall &&
- // ( !( KETelExt3rdPartyV1 == activeCall->GetExtensionId() ) &&
- // ( KETelExt3rdPartyV1 == extensionId ) ) )" condition
- //-------------------------------------------------------------------------
-
- mobileCallStatus = RMobileCall::EStatusRinging;
-
- // create new incoming call1
- errorCode = CreateIncomingCallL(line, callId, incomingCallName,
- mobileService, mobileCallStatus);
- ASSERT_EQUALS(KErrNone, errorCode);
- AssertMockLtsyStatusL();
-
- RMobileCall call1;
- CleanupClosePushL(call1);
- errorCode = call1.OpenExistingCall(line, incomingCallName);
- ASSERT_EQUALS(KErrNone, errorCode);
- AssertMockLtsyStatusL();
-
- //-------------------------------------------------------------------------
-
- TName incomingCallName2;
- TInt callId2 = 2;
- mobileCallStatus = RMobileCall::EStatusConnected;
-
- // create new incoming call2
- errorCode = CreateIncomingCallL(line, callId2, incomingCallName2,
- mobileService, mobileCallStatus);
- ASSERT_EQUALS(KErrNone, errorCode);
- AssertMockLtsyStatusL();
-
- errorCode = call2.OpenExistingCall(line, incomingCallName2);
- ASSERT_EQUALS(KErrNone, errorCode);
- AssertMockLtsyStatusL();
- //-------------------------------------------------------------------------
-
- call2.AnswerIncomingCall(requestStatus2, mmParamsPckgV1);
-
- RMobileCall::TEtel3rdPartyMobileCallParamsV1 callParams;
- TPckg<RMobileCall::TEtel3rdPartyMobileCallParamsV1> callParamsPckg(callParams);
- call1.AnswerIncomingCallISV(requestStatus, callParamsPckg);
-
- User::WaitForRequest(requestStatus);
- ASSERT_EQUALS(KErrGsmNotAllowed, requestStatus.Int());
-
- User::WaitForRequest(requestStatus2);
- ASSERT_EQUALS(KErrNotSupported, requestStatus2.Int());
-
- AssertMockLtsyStatusL();
- CleanupStack::PopAndDestroy(7, this); // expectData, completeData, call, line, call2
- // this, call1
-
- }
-
-
-/**
-@SYMTestCaseID BA-CTSY-CCON-CAIC-0002
-@SYMComponent telephony_ctsy
-@SYMTestCaseDesc Test support in CTSY for cancelling of RCall::AnswerIncomingCall for voice calls
-@SYMTestPriority High
-@SYMTestActions Invokes cancelling of RCall::AnswerIncomingCall for voice calls
-@SYMTestExpectedResults Pass
-@SYMTestType CT
-*/
-void CCTsyCallControlFU::TestAnswerIncomingCall0002L()
- {
-
- OpenEtelServerL(EUseExtendedError);
- CleanupStack::PushL(TCleanupItem(Cleanup,this));
- OpenPhoneL();
-
- RBuf8 expectData;
- CleanupClosePushL(expectData);
-
- RLine line;
- RCall call;
- CleanupClosePushL(call);
-
- TInt errorCode = KErrNone;
- TInt callId = 1;
- TName incomingCallName;
-
- TRequestStatus requestStatus;
- TRequestStatus mockLtsyStatus;
-
- RMobileCall::TMobileCallStatus mobileCallStatus = RMobileCall::EStatusRinging;
- RMobilePhone::TMobileService mobileService = RMobilePhone::EVoiceService;
-
- //-------------------------------------------------------------------------
- // Test cancelling of RCall::AnswerIncomingCall
- //-------------------------------------------------------------------------
-
- // open new line for KMmTsyVoice1LineName
- errorCode = OpenNewLineLC(iPhone, line, KMmTsyVoice1LineName);
- ASSERT_EQUALS(KErrNone, errorCode);
-
- //-------------------------------------------------------------------------
- // create new incoming call
- errorCode = CreateIncomingCallL(line, callId, incomingCallName,
- mobileService, mobileCallStatus);
- ASSERT_EQUALS(KErrNone, errorCode);
- AssertMockLtsyStatusL();
-
- errorCode = call.OpenExistingCall(line, incomingCallName);
- ASSERT_EQUALS(KErrNone, errorCode);
- AssertMockLtsyStatusL();
- //-------------------------------------------------------------------------
-
- iMockLTSY.NotifyTerminated(mockLtsyStatus);
- TMockLtsyCallData0 mockData0(callId, mobileService);
-
- expectData.Close();
- mockData0.SerialiseL(expectData);
-
- iMockLTSY.ExpectL(EEtelCallAnswer, expectData);
- iMockLTSY.CompleteL(EEtelCallAnswer, KErrCancel, expectData);
-
- RMobileCall::TMobileCallParamsV1 callParamsV1;
- TPckg<RMobileCall::TMobileCallParamsV1> mmParamsPckgV1(callParamsV1);
- call.AnswerIncomingCall(requestStatus, mmParamsPckgV1);
-
- TInt hangUpCause = KErrGsmBusyUserRequest;
- TBool autoStChangeDisable = ETrue;
- TMockLtsyCallData2<TInt, TBool> mockData2(callId, mobileService,
- hangUpCause,
- autoStChangeDisable);
- expectData.Close();
- mockData2.SerialiseL(expectData);
- iMockLTSY.ExpectL(EEtelCallHangUp, expectData);
-
- call.CancelAsyncRequest(EEtelCallAnswer);
-
- User::WaitForRequest(requestStatus);
- AssertMockLtsyStatusL();
- ASSERT_EQUALS(KErrCancel, requestStatus.Int());
-
- User::WaitForRequest(mockLtsyStatus);
-
- CleanupStack::PopAndDestroy(4); // this, expectData, call, line
-
- }
-
-/**
-@SYMTestCaseID BA-CTSY-CCON-CAIC-0004
-@SYMComponent telephony_ctsy
-@SYMTestCaseDesc Test support in CTSY for multiple client requests to RCall::AnswerIncomingCall for voice calls
-@SYMTestPriority High
-@SYMTestActions Invokes multiple client requests to RCall::AnswerIncomingCall for voice calls
-@SYMTestExpectedResults Pass
-@SYMTestType CT
-*/
-void CCTsyCallControlFU::TestAnswerIncomingCall0004L()
- {
- OpenEtelServerL(EUseExtendedError);
- CleanupStack::PushL(TCleanupItem(Cleanup,this));
- OpenPhoneL();
-
- RBuf8 expectData;
- CleanupClosePushL(expectData);
-
- RBuf8 completeData;
- CleanupClosePushL(completeData);
-
- // Open second client
- RTelServer telServer2;
- TInt ret = telServer2.Connect();
- ASSERT_EQUALS(KErrNone, ret);
- CleanupClosePushL(telServer2);
-
- RMobilePhone phone2;
- ret = phone2.Open(iTelServer,KMmTsyPhoneName);
- ASSERT_EQUALS(KErrNone, ret);
- CleanupClosePushL(phone2);
-
- RLine line1;
- RLine line2;
-
- RCall call1;
- CleanupClosePushL(call1);
-
- RCall call2;
- CleanupClosePushL(call2);
-
- TInt errorCode = KErrNone;
-
- TInt callId1 = 1;
- TName incomingCallName1;
-
- TInt callId2 = 2;
- TName incomingCallName2;
-
- TRequestStatus requestStatus1;
- TRequestStatus requestStatus2;
-
- // open new line1 for KMmTsyVoice1LineName
- errorCode = OpenNewLineLC(iPhone, line1, KMmTsyVoice1LineName);
- ASSERT_EQUALS(KErrNone, errorCode);
-
- // open new line2 for KMmTsyVoice1LineName
- errorCode = OpenNewLineLC(phone2, line2, KMmTsyVoice1LineName);
- ASSERT_EQUALS(KErrNone, errorCode);
-
- RMobileCall::TMobileCallStatus mobileCallStatus = RMobileCall::EStatusRinging;
- RMobilePhone::TMobileService mobileService = RMobilePhone::EVoiceService;
-
- RMobileCall::TMobileCallParamsV1 callParamsV1;
- TPckg<RMobileCall::TMobileCallParamsV1> mmParamsPckgV1(callParamsV1);
-
- //-------------------------------------------------------------------------
- // Test A: Test multiple clients requesting RCall::AnswerIncomingCall
- //-------------------------------------------------------------------------
-
- //-------------------------------------------------------------------------
- // create new incoming call1
- errorCode = CreateIncomingCallL(line1, callId1, incomingCallName1,
- mobileService, mobileCallStatus);
- ASSERT_EQUALS(KErrNone, errorCode);
- AssertMockLtsyStatusL();
-
- errorCode = call1.OpenExistingCall(line1, incomingCallName1);
- ASSERT_EQUALS(KErrNone, errorCode);
- AssertMockLtsyStatusL();
- //-------------------------------------------------------------------------
-
- //-------------------------------------------------------------------------
- // create new incoming call2
- errorCode = CreateIncomingCallL(line2, callId2, incomingCallName2,
- mobileService, mobileCallStatus);
- ASSERT_EQUALS(KErrNone, errorCode);
- AssertMockLtsyStatusL();
-
- errorCode = call2.OpenExistingCall(line2, incomingCallName2);
- ASSERT_EQUALS(KErrNone, errorCode);
- AssertMockLtsyStatusL();
- //-------------------------------------------------------------------------
-
- TMockLtsyCallData0 mockData01(callId1, mobileService);
-
- expectData.Close();
- mockData01.SerialiseL(expectData);
- iMockLTSY.ExpectL(EEtelCallAnswer, expectData);
- iMockLTSY.CompleteL(EEtelCallAnswer, KErrNone, expectData);
- call1.AnswerIncomingCall(requestStatus1, mmParamsPckgV1);
-
- TMockLtsyCallData0 mockData02(callId2, mobileService);
- expectData.Close();
- mockData02.SerialiseL(expectData);
- iMockLTSY.ExpectL(EEtelCallAnswer, expectData);
- iMockLTSY.CompleteL(EEtelCallAnswer, KErrNone, expectData);
- call2.AnswerIncomingCall(requestStatus2, mmParamsPckgV1);
-
- User::WaitForRequest(requestStatus1);
- AssertMockLtsyStatusL();
- ASSERT_EQUALS(KErrNone, requestStatus1.Int());
-
- User::WaitForRequest(requestStatus2);
- AssertMockLtsyStatusL();
- ASSERT_EQUALS(KErrNone, requestStatus2.Int());
-
- // close incoming call1
- CloseIncomingCallL(call1, callId1, mobileService);
- AssertMockLtsyStatusL();
-
- // close incoming call2
- CloseIncomingCallL(call2, callId2, mobileService);
- AssertMockLtsyStatusL();
-
- //-------------------------------------------------------------------------
- // Test for increase coverage
- //-------------------------------------------------------------------------
-
- line1.NotifyIncomingCall(requestStatus1, incomingCallName1);
- User::WaitForRequest(requestStatus1);
- AssertMockLtsyStatusL();
- ASSERT_EQUALS(KErrNone, requestStatus1.Int());
-
- mobileCallStatus = RMobileCall::EStatusConnected;
-
- //-------------------------------------------------------------------------
- // create new incoming call1
- errorCode = CreateIncomingCallL(line1, callId1, incomingCallName1,
- mobileService, mobileCallStatus);
- ASSERT_EQUALS(KErrNone, errorCode);
- AssertMockLtsyStatusL();
-
- errorCode = call1.OpenExistingCall(line1, incomingCallName1);
- ASSERT_EQUALS(KErrNone, errorCode);
- AssertMockLtsyStatusL();
- //-------------------------------------------------------------------------
-
- mobileCallStatus = RMobileCall::EStatusHold;
- //-------------------------------------------------------------------------
- // create new incoming call2
- errorCode = CreateIncomingCallL(line2, callId2, incomingCallName2,
- mobileService, mobileCallStatus);
- ASSERT_EQUALS(KErrNone, errorCode);
- AssertMockLtsyStatusL();
-
- errorCode = call2.OpenExistingCall(line2, incomingCallName2);
- ASSERT_EQUALS(KErrNone, errorCode);
- AssertMockLtsyStatusL();
- //-------------------------------------------------------------------------
-
- call1.AnswerIncomingCall(requestStatus1, mmParamsPckgV1);
-
- User::WaitForRequest(requestStatus1);
- AssertMockLtsyStatusL();
- ASSERT_EQUALS(KErrGsmNotAllowed, requestStatus1.Int());
-
- //-------------------------------------------------------------------------
-
- // Done !
- CleanupStack::PopAndDestroy(4); // line1, line2, call1, call2
- CleanupStack::PopAndDestroy(5, this); // phone2, telServer2, expectData, this, completeData
-
- }
-
-
-/**
-@SYMTestCaseID BA-CTSY-CCON-CAIC-0005
-@SYMComponent telephony_ctsy
-@SYMTestCaseDesc Test support in CTSY for RCall::AnswerIncomingCall with timeout for voice calls
-@SYMTestPriority High
-@SYMTestActions Invokes RCall::AnswerIncomingCall and tests for timeout for voice calls
-@SYMTestExpectedResults Pass
-@SYMTestType CT
-*/
-void CCTsyCallControlFU::TestAnswerIncomingCall0005L()
- {
- OpenEtelServerL(EUseExtendedError);
- CleanupStack::PushL(TCleanupItem(Cleanup,this));
- OpenPhoneL();
-
- RBuf8 expectData;
- CleanupClosePushL(expectData);
-
- RLine line;
- RCall call;
- CleanupClosePushL(call);
-
- TInt errorCode = KErrNone;
- TInt callId = 1;
- TName incomingCallName;
-
- TRequestStatus requestStatus;
- TRequestStatus mockLtsyStatus;
-
- // open new line for KMmTsyVoice1LineName
- errorCode = OpenNewLineLC(iPhone, line, KMmTsyVoice1LineName);
- ASSERT_EQUALS(KErrNone, errorCode);
-
- RMobileCall::TMobileCallStatus mobileCallStatus = RMobileCall::EStatusRinging;
- RMobilePhone::TMobileService mobileService = RMobilePhone::EVoiceService;
-
- //-------------------------------------------------------------------------
- // Test A: Test timeout of RCall::AnswerIncomingCall
- //-------------------------------------------------------------------------
-
- //-------------------------------------------------------------------------
- // create new incoming call
- errorCode = CreateIncomingCallL(line, callId, incomingCallName,
- mobileService, mobileCallStatus);
- ASSERT_EQUALS(KErrNone, errorCode);
- AssertMockLtsyStatusL();
-
- errorCode = call.OpenExistingCall(line, incomingCallName);
- ASSERT_EQUALS(KErrNone, errorCode);
- AssertMockLtsyStatusL();
- //-------------------------------------------------------------------------
-
- TMockLtsyCallData0 mockData0(callId, mobileService);
-
- expectData.Close();
- mockData0.SerialiseL(expectData);
- iMockLTSY.ExpectL(EEtelCallAnswer, expectData);
-
- RMobileCall::TMobileCallParamsV1 callParamsV1;
- TPckg<RMobileCall::TMobileCallParamsV1> mmParamsPckgV1(callParamsV1);
- call.AnswerIncomingCall(requestStatus, mmParamsPckgV1);
-
- User::WaitForRequest(requestStatus);
- AssertMockLtsyStatusL();
- ASSERT_EQUALS(KErrTimedOut, requestStatus.Int());
-
- CleanupStack::PopAndDestroy(4, this); // expectData, this, line, call
-
- }
-
-
-/**
-@SYMTestCaseID BA-CTSY-CCON-CAIC-0006
-@SYMComponent telephony_ctsy
-@SYMTestCaseDesc Test support in CTSY for RCall::AnswerIncomingCall for data calls
-@SYMTestPriority High
-@SYMTestActions Invokes RCall::AnswerIncomingCall for data calls
-@SYMTestExpectedResults Pass
-@SYMTestType CT
-*/
-void CCTsyCallControlFU::TestAnswerIncomingCall0006L()
- {
-
- OpenEtelServerL(EUseExtendedError);
- CleanupStack::PushL(TCleanupItem(Cleanup,this));
- OpenPhoneL();
-
- RBuf8 expectData;
- CleanupClosePushL(expectData);
-
- RBuf8 completeData;
- CleanupClosePushL(completeData);
-
- RLine line;
- RCall call;
- CleanupClosePushL(call);
-
- TInt errorCode = KErrNone;
- TInt callId = 1;
- TName incomingCallName;
-
- TRequestStatus requestStatus;
- TRequestStatus mockLtsyStatus;
-
- // open new line for KMmTsyVoice1LineName
- errorCode = OpenNewLineLC(iPhone, line, KMmTsyDataLineName);
- ASSERT_EQUALS(KErrNone, errorCode);
-
- RMobilePhone::TMobileService mobileService = RMobilePhone::ECircuitDataService;
- RMobileCall::TMobileCallStatus mobileCallStatus = RMobileCall::EStatusRinging;
-
- //-------------------------------------------------------------------------
- // TEST A: failure to dispatch request to LTSY
- //-------------------------------------------------------------------------
-
- //-------------------------------------------------------------------------
- // create new incoming call
- errorCode = CreateIncomingCallL(line, callId, incomingCallName,
- mobileService, mobileCallStatus);
- ASSERT_EQUALS(KErrNone, errorCode);
-
- errorCode = call.OpenExistingCall(line, incomingCallName);
- ASSERT_EQUALS(KErrNone, errorCode);
- //-------------------------------------------------------------------------
-
- TMockLtsyCallData0 mockData0(callId, mobileService);
-
- expectData.Close();
- mockData0.SerialiseL(expectData);
- iMockLTSY.ExpectL(EEtelCallAnswer, expectData, KErrNotSupported);
-
- RMobileCall::TMobileCallParamsV1 callParamsV1;
- TPckg<RMobileCall::TMobileCallParamsV1> mmParamsPckgV1(callParamsV1);
- call.AnswerIncomingCall(requestStatus, mmParamsPckgV1);
-
- User::WaitForRequest(requestStatus);
- AssertMockLtsyStatusL();
- ASSERT_EQUALS(KErrNotSupported, requestStatus.Int());
-
- //-------------------------------------------------------------------------
- // TEST B: failure on completion of pending request from LTSY->CTSY
- //-------------------------------------------------------------------------
-
- expectData.Close();
- mockData0.SerialiseL(expectData);
- iMockLTSY.ExpectL(EEtelCallAnswer, expectData);
- iMockLTSY.CompleteL(EEtelCallAnswer, KErrGeneral, expectData);
- call.AnswerIncomingCall(requestStatus, mmParamsPckgV1);
-
- User::WaitForRequest(requestStatus);
- AssertMockLtsyStatusL();
- ASSERT_EQUALS(KErrGeneral, requestStatus.Int());
-
- //-------------------------------------------------------------------------
- // TEST C: Successful completion request of
- // RCall::AnswerIncomingCall when result is not cached.
- //-------------------------------------------------------------------------
-
- expectData.Close();
- mockData0.SerialiseL(expectData);
- iMockLTSY.ExpectL(EEtelCallAnswer, expectData);
- iMockLTSY.CompleteL(EEtelCallAnswer, KErrNone, expectData);
- call.AnswerIncomingCall(requestStatus, mmParamsPckgV1);
-
- User::WaitForRequest(requestStatus);
- AssertMockLtsyStatusL();
- ASSERT_EQUALS(KErrNone, requestStatus.Int());
-
- //-------------------------------------------------------------------------
- // TEST E: Unsolicited completion of RCall::AnswerIncomingCall
- // from LTSY.
- //-------------------------------------------------------------------------
-
- iMockLTSY.NotifyTerminated(mockLtsyStatus);
- expectData.Close();
- mockData0.SerialiseL(expectData);
- iMockLTSY.CompleteL(EEtelCallAnswer, KErrNone, expectData);
- User::WaitForRequest(mockLtsyStatus);
- AssertMockLtsyStatusL();
- ASSERT_EQUALS(KErrNone, mockLtsyStatus.Int());
-
- //-------------------------------------------------------------------------
- // TEST : to increase CMmDataCallTsy::AnswerIncomingCall coverage
- // covers "if ( 0 < iAnswerCallHandle )" condition
- //-------------------------------------------------------------------------
-
- RCall call2;
- CleanupClosePushL(call2);
- TRequestStatus requestStatus2;
-
- //-------------------------------------------------------------------------
- errorCode = call2.OpenExistingCall(line, incomingCallName);
- ASSERT_EQUALS(KErrNone, errorCode);
- AssertMockLtsyStatusL();
- //-------------------------------------------------------------------------
-
- call.AnswerIncomingCall(requestStatus, mmParamsPckgV1);
-
- RMobileCall::TMobileCallParamsV1 callParamsV2;
- TPckg<RMobileCall::TMobileCallParamsV1> mmParamsPckgV2(callParamsV2);
- call2.AnswerIncomingCall(requestStatus2, mmParamsPckgV2);
-
- iMockLTSY.CompleteL(EEtelCallAnswer, KErrNone, expectData);
-
- User::WaitForRequest(requestStatus);
- ASSERT_EQUALS(KErrNone, requestStatus.Int());
-
- User::WaitForRequest(requestStatus2);
- AssertMockLtsyStatusL();
- ASSERT_EQUALS(KErrServerBusy, requestStatus2.Int());
-
- //-------------------------------------------------------------------------
- // TEST : to increase CMmDataCallTsy::AnswerIncomingCall coverage
- // covers "if ( iCallCaps.iFlags & RCall::KCapsAnswer ||
- // RCall::EStatusIdle == iCallStatus )" condition
- //-------------------------------------------------------------------------
-
- //-------------------------------------------------------------------------
- // call CMmDataCallTsy::CompleteNotifyStatusChange for set
- // iCallCaps.iFlags &= ~( RCall::KCapsAnswer );
-
- mobileCallStatus = RMobileCall::EStatusIdle;
-
- TMockLtsyCallData1<RMobileCall::TMobileCallStatus> mockCallData2(callId, mobileService, mobileCallStatus);
- mockCallData2.SerialiseL(completeData);
-
- iMockLTSY.NotifyTerminated(mockLtsyStatus);
- iMockLTSY.CompleteL(EMobileCallNotifyMobileCallStatusChange, KErrNone, completeData);
- User::WaitForRequest(mockLtsyStatus);
- AssertMockLtsyStatusL();
- ASSERT_EQUALS(KErrNone, mockLtsyStatus.Int());
-
- //-------------------------------------------------------------------------
- // call CMmVoiceLineTsy::CompleteNotifyIncomingCall for set iCallId = 1.
- RMobileCall::TMobileCallInfoV1 mobileCallInfo;
- TMockLtsyCallData1<RMobileCall::TMobileCallInfoV1> mockCallData1(callId, mobileService, mobileCallInfo);
- completeData.Close();
- mockCallData1.SerialiseL(completeData);
-
- iMockLTSY.NotifyTerminated(mockLtsyStatus);
- iMockLTSY.CompleteL(EEtelLineNotifyIncomingCall, KErrNone, completeData);
- User::WaitForRequest(mockLtsyStatus);
- AssertMockLtsyStatusL();
- ASSERT_EQUALS(KErrNone, mockLtsyStatus.Int());
- //-------------------------------------------------------------------------
-
- call.AnswerIncomingCall(requestStatus, mmParamsPckgV1);
-
- User::WaitForRequest(requestStatus);
- AssertMockLtsyStatusL();
- ASSERT_EQUALS(KErrNotReady, requestStatus.Int());
-
- CleanupStack::PopAndDestroy(2); // call2, line
-
- CloseIncomingCallL(call, callId, mobileService);
- CleanupStack::PopAndDestroy(3); // expectData, call, completeData
-
- CleanupStack::PopAndDestroy(1, this);
- }
-
-
-/**
-@SYMTestCaseID BA-CTSY-CCON-CAIC-0007
-@SYMComponent telephony_ctsy
-@SYMTestCaseDesc Test support in CTSY for cancelling of RCall::AnswerIncomingCall for data calls
-@SYMTestPriority High
-@SYMTestActions Invokes cancelling of RCall::AnswerIncomingCall for data calls
-@SYMTestExpectedResults Pass
-@SYMTestType CT
-*/
-void CCTsyCallControlFU::TestAnswerIncomingCall0007L()
- {
-
- OpenEtelServerL(EUseExtendedError);
- CleanupStack::PushL(TCleanupItem(Cleanup,this));
- OpenPhoneL();
-
- RBuf8 expectData;
- CleanupClosePushL(expectData);
-
- RLine line;
- RCall call;
- CleanupClosePushL(call);
-
- TInt errorCode = KErrNone;
- TInt callId = 1;
- TName incomingCallName;
-
- TRequestStatus requestStatus;
- TRequestStatus mockLtsyStatus;
-
- RMobilePhone::TMobileService mobileService = RMobilePhone::ECircuitDataService;
- RMobileCall::TMobileCallStatus mobileCallStatus = RMobileCall::EStatusRinging;
-
- //-------------------------------------------------------------------------
- // Test cancelling of RCall::AnswerIncomingCall
- //-------------------------------------------------------------------------
-
- // open new line for KMmTsyVoice1LineName
- errorCode = OpenNewLineLC(iPhone, line, KMmTsyDataLineName);
- ASSERT_EQUALS(KErrNone, errorCode);
-
- //-------------------------------------------------------------------------
- // create new incoming call
- errorCode = CreateIncomingCallL(line, callId, incomingCallName,
- mobileService, mobileCallStatus);
- ASSERT_EQUALS(KErrNone, errorCode);
- AssertMockLtsyStatusL();
-
- errorCode = call.OpenExistingCall(line, incomingCallName);
- ASSERT_EQUALS(KErrNone, errorCode);
- AssertMockLtsyStatusL();
- //-------------------------------------------------------------------------
-
- iMockLTSY.NotifyTerminated(mockLtsyStatus);
- TMockLtsyCallData0 mockData0(callId, mobileService);
-
- expectData.Close();
- mockData0.SerialiseL(expectData);
-
- iMockLTSY.ExpectL(EEtelCallAnswer, expectData);
- iMockLTSY.CompleteL(EEtelCallAnswer, KErrCancel, expectData);
-
- RMobileCall::TMobileCallParamsV1 callParamsV1;
- TPckg<RMobileCall::TMobileCallParamsV1> mmParamsPckgV1(callParamsV1);
- call.AnswerIncomingCall(requestStatus, mmParamsPckgV1);
-
- TInt hangUpCause = KErrGsmBusyUserRequest;
- TBool autoStChangeDisable = EFalse;
- TMockLtsyCallData2<TInt, TBool> mockData2(callId, mobileService,
- hangUpCause,
- autoStChangeDisable);
- expectData.Close();
- mockData2.SerialiseL(expectData);
- iMockLTSY.ExpectL(EEtelCallHangUp, expectData);
-
- call.CancelAsyncRequest(EEtelCallAnswer);
-
- User::WaitForRequest(requestStatus);
- AssertMockLtsyStatusL();
- ASSERT_EQUALS(KErrCancel, requestStatus.Int());
-
- User::WaitForRequest(mockLtsyStatus);
-
- CleanupStack::PopAndDestroy(4); // this, expectData, call, line
-
- }
-
-/**
-@SYMTestCaseID BA-CTSY-CCON-CAIC-0008
-@SYMComponent telephony_ctsy
-@SYMTestCaseDesc Test support in CTSY for RCall::AnswerIncomingCall with bad parameter data for data calls
-@SYMTestPriority High
-@SYMTestActions Invokes RCall::AnswerIncomingCall with bad parameter data for data calls
-@SYMTestExpectedResults Pass
-@SYMTestType CT
-*/
-void CCTsyCallControlFU::TestAnswerIncomingCall0008L()
- {
- OpenEtelServerL(EUseExtendedError);
- CleanupStack::PushL(TCleanupItem(Cleanup,this));
- OpenPhoneL();
-
- RBuf8 expectData;
- CleanupClosePushL(expectData);
-
- TInt errorCode = KErrNone;
- TInt callId = 1;
- TName incomingCallName;
-
- TRequestStatus requestStatus;
- TRequestStatus mockLtsyStatus;
-
- RCall call;
- CleanupClosePushL(call);
-
- // open new line for KMmTsyVoice1LineName
- RLine line;
- errorCode = OpenNewLineLC(iPhone, line, KMmTsyDataLineName);
- ASSERT_EQUALS(KErrNone, errorCode);
-
- RMobilePhone::TMobileService mobileService = RMobilePhone::ECircuitDataService;
- RMobileCall::TMobileCallStatus mobileCallStatus = RMobileCall::EStatusRinging;
-
- //-------------------------------------------------------------------------
- // Test B: Test passing wrong descriptor size to parameter in
- // RCall::Dial
- //-------------------------------------------------------------------------
-
- //-------------------------------------------------------------------------
- // create new incoming call
- errorCode = CreateIncomingCallL(line, callId, incomingCallName,
- mobileService, mobileCallStatus);
- ASSERT_EQUALS(KErrNone, errorCode);
- AssertMockLtsyStatusL();
-
- errorCode = call.OpenExistingCall(line, incomingCallName);
- ASSERT_EQUALS(KErrNone, errorCode);
- AssertMockLtsyStatusL();
- //-------------------------------------------------------------------------
-
- TMockLtsyCallData0 mockData0(callId, mobileService);
-
- expectData.Close();
- mockData0.SerialiseL(expectData);
- iMockLTSY.ExpectL(EEtelCallAnswer, expectData);
- iMockLTSY.CompleteL(EEtelCallAnswer, KErrNone, expectData);
-
- TPtr8 null(NULL,0);
- call.AnswerIncomingCall(requestStatus, null);
-
- User::WaitForRequest(requestStatus);
- AssertMockLtsyStatusL();
- ASSERT_EQUALS(KErrNone, requestStatus.Int());
-
- CleanupStack::PopAndDestroy(4, this); // expectData, this, line, call
- }
-
-
-/**
-@SYMTestCaseID BA-CTSY-CCON-CAIC-0009
-@SYMComponent telephony_ctsy
-@SYMTestCaseDesc Test support in CTSY for multiple client requests to RCall::AnswerIncomingCall for data calls
-@SYMTestPriority High
-@SYMTestActions Invokes multiple client requests to RCall::AnswerIncomingCall for data calls
-@SYMTestExpectedResults Pass
-@SYMTestType CT
-*/
-void CCTsyCallControlFU::TestAnswerIncomingCall0009L()
- {
- OpenEtelServerL(EUseExtendedError);
- CleanupStack::PushL(TCleanupItem(Cleanup,this));
- OpenPhoneL();
-
- RBuf8 expectData;
- CleanupClosePushL(expectData);
-
- // Open second client
- RTelServer telServer2;
- TInt ret = telServer2.Connect();
- ASSERT_EQUALS(KErrNone, ret);
- CleanupClosePushL(telServer2);
-
- RMobilePhone phone2;
- ret = phone2.Open(iTelServer,KMmTsyPhoneName);
- ASSERT_EQUALS(KErrNone, ret);
- CleanupClosePushL(phone2);
-
- RLine line1;
- RLine line2;
-
- RCall call1;
- CleanupClosePushL(call1);
-
- RCall call2;
- CleanupClosePushL(call2);
-
- TInt errorCode = KErrNone;
-
- TInt callId1 = 1;
- TName incomingCallName1;
-
- TInt callId2 = 2;
- TName incomingCallName2;
-
- TRequestStatus requestStatus1;
- TRequestStatus requestStatus2;
-
- // open new line1 for KMmTsyVoice1LineName
- errorCode = OpenNewLineLC(iPhone, line1, KMmTsyDataLineName);
- ASSERT_EQUALS(KErrNone, errorCode);
-
- // open new line2 for KMmTsyVoice1LineName
- errorCode = OpenNewLineLC(phone2, line2, KMmTsyDataLineName);
- ASSERT_EQUALS(KErrNone, errorCode);
-
- RMobilePhone::TMobileService mobileService = RMobilePhone::ECircuitDataService;
- RMobileCall::TMobileCallStatus mobileCallStatus = RMobileCall::EStatusRinging;
-
- //-------------------------------------------------------------------------
- // Test A: Test multiple clients requesting RCall::AnswerIncomingCall
- //-------------------------------------------------------------------------
-
- //-------------------------------------------------------------------------
- // create new incoming call1
- errorCode = CreateIncomingCallL(line1, callId1, incomingCallName1,
- mobileService, mobileCallStatus);
- ASSERT_EQUALS(KErrNone, errorCode);
- AssertMockLtsyStatusL();
-
- errorCode = call1.OpenExistingCall(line1, incomingCallName1);
- ASSERT_EQUALS(KErrNone, errorCode);
- AssertMockLtsyStatusL();
- //-------------------------------------------------------------------------
-
- //-------------------------------------------------------------------------
- // create new incoming call2
- errorCode = CreateIncomingCallL(line2, callId2, incomingCallName2,
- mobileService, mobileCallStatus);
- ASSERT_EQUALS(KErrNone, errorCode);
- AssertMockLtsyStatusL();
-
- errorCode = call2.OpenExistingCall(line2, incomingCallName2);
- ASSERT_EQUALS(KErrNone, errorCode);
- AssertMockLtsyStatusL();
- //-------------------------------------------------------------------------
-
- TMockLtsyCallData0 mockData01(callId1, mobileService);
-
- expectData.Close();
- mockData01.SerialiseL(expectData);
- iMockLTSY.ExpectL(EEtelCallAnswer, expectData);
- iMockLTSY.CompleteL(EEtelCallAnswer, KErrNone, expectData);
-
- RMobileCall::TMobileCallParamsV1 callParamsV1;
- TPckg<RMobileCall::TMobileCallParamsV1> mmParamsPckgV1(callParamsV1);
- call1.AnswerIncomingCall(requestStatus1, mmParamsPckgV1);
-
- TMockLtsyCallData0 mockData02(callId2, mobileService);
- expectData.Close();
- mockData02.SerialiseL(expectData);
- iMockLTSY.ExpectL(EEtelCallAnswer, expectData);
- iMockLTSY.CompleteL(EEtelCallAnswer, KErrNone, expectData);
-
- RMobileCall::TMobileCallParamsV1 callParamsV2;
- TPckg<RMobileCall::TMobileCallParamsV1> mmParamsPckgV2(callParamsV2);
- call2.AnswerIncomingCall(requestStatus2, mmParamsPckgV2);
-
- User::WaitForRequest(requestStatus1);
- AssertMockLtsyStatusL();
- ASSERT_EQUALS(KErrNone, requestStatus1.Int());
-
- User::WaitForRequest(requestStatus2);
- AssertMockLtsyStatusL();
- ASSERT_EQUALS(KErrNone, requestStatus2.Int());
-
- // Done !
- CleanupStack::PopAndDestroy(4); // line1, line2, call1, call2
- CleanupStack::PopAndDestroy(4, this); // phone2, telServer2, expectData, this
- }
-
-
-/**
-@SYMTestCaseID BA-CTSY-CCON-CAIC-00010
-@SYMComponent telephony_ctsy
-@SYMTestCaseDesc Test support in CTSY for RCall::AnswerIncomingCall with timeout for data calls
-@SYMTestPriority High
-@SYMTestActions Invokes RCall::AnswerIncomingCall and tests for timeout for data calls
-@SYMTestExpectedResults Pass
-@SYMTestType CT
-*/
-void CCTsyCallControlFU::TestAnswerIncomingCall00010L()
- {
- OpenEtelServerL(EUseExtendedError);
- CleanupStack::PushL(TCleanupItem(Cleanup,this));
- OpenPhoneL();
-
- RBuf8 expectData;
- CleanupClosePushL(expectData);
-
- RLine line;
- RCall call;
- CleanupClosePushL(call);
-
- TInt errorCode = KErrNone;
- TInt callId = 1;
- TName incomingCallName;
-
- TRequestStatus requestStatus;
- TRequestStatus mockLtsyStatus;
-
- // open new line for KMmTsyVoice1LineName
- errorCode = OpenNewLineLC(iPhone, line, KMmTsyDataLineName);
- ASSERT_EQUALS(KErrNone, errorCode);
-
- RMobilePhone::TMobileService mobileService = RMobilePhone::ECircuitDataService;
- RMobileCall::TMobileCallStatus mobileCallStatus = RMobileCall::EStatusRinging;
-
- //-------------------------------------------------------------------------
- // Test A: Test timeout of RCall::AnswerIncomingCall
- //-------------------------------------------------------------------------
-
- //-------------------------------------------------------------------------
- // create new incoming call
- errorCode = CreateIncomingCallL(line, callId, incomingCallName,
- mobileService, mobileCallStatus);
- ASSERT_EQUALS(KErrNone, errorCode);
- AssertMockLtsyStatusL();
-
- errorCode = call.OpenExistingCall(line, incomingCallName);
- ASSERT_EQUALS(KErrNone, errorCode);
- AssertMockLtsyStatusL();
- //-------------------------------------------------------------------------
-
- TMockLtsyCallData0 mockData0(callId, mobileService);
-
- expectData.Close();
- mockData0.SerialiseL(expectData);
- iMockLTSY.ExpectL(EEtelCallAnswer, expectData);
-
- RMobileCall::TMobileCallParamsV1 callParamsV1;
- TPckg<RMobileCall::TMobileCallParamsV1> mmParamsPckgV1(callParamsV1);
- call.AnswerIncomingCall(requestStatus, mmParamsPckgV1);
-
- User::WaitForRequest(requestStatus);
- AssertMockLtsyStatusL();
- ASSERT_EQUALS(KErrTimedOut, requestStatus.Int());
-
- //-------------------------------------------------------------------------
- // TEST : Call AnswerIncomingCall with null description
- //-------------------------------------------------------------------------
-
- expectData.Close();
- mockData0.SerialiseL(expectData);
- iMockLTSY.ExpectL(EEtelCallAnswer, expectData);
- iMockLTSY.CompleteL(EEtelCallAnswer, KErrNone, expectData);
-
- TPtr8 null(NULL,0);
- call.AnswerIncomingCall(requestStatus, null);
-
- User::WaitForRequest(requestStatus);
- AssertMockLtsyStatusL();
- ASSERT_EQUALS(KErrNone, requestStatus.Int());
-
- CleanupStack::PopAndDestroy(4, this); // expectData, this, line, call
- }
-
-
-/**
-@SYMTestCaseID BA-CTSY-CCON-CAIC-00011
-@SYMComponent telephony_ctsy
-@SYMTestCaseDesc Test support in CTSY for RCall::AnswerIncomingCall for fax calls
-@SYMTestPriority High
-@SYMTestActions Invokes RCall::AnswerIncomingCall for fax calls
-@SYMTestExpectedResults Pass
-@SYMTestType CT
-*/
-void CCTsyCallControlFU::TestAnswerIncomingCall00011L()
- {
-
- OpenEtelServerL(EUseExtendedError);
- CleanupStack::PushL(TCleanupItem(Cleanup,this));
- OpenPhoneL();
-
- RBuf8 expectData;
- CleanupClosePushL(expectData);
-
- RLine line;
- RCall call;
- CleanupClosePushL(call);
-
- TInt errorCode = KErrNone;
- TInt callId = 1;
- TName incomingCallName;
-
- TRequestStatus requestStatus;
- TRequestStatus mockLtsyStatus;
-
- // open new line for KMmTsyFaxLineName
- errorCode = OpenNewLineLC(iPhone, line, KMmTsyFaxLineName);
- ASSERT_EQUALS(KErrNone, errorCode);
-
- RMobilePhone::TMobileService mobileService = RMobilePhone::EFaxService;
- RMobileCall::TMobileCallStatus mobileCallStatus = RMobileCall::EStatusRinging;
-
- //-------------------------------------------------------------------------
- // TEST A: failure to dispatch request to LTSY
- //-------------------------------------------------------------------------
-
- //-------------------------------------------------------------------------
- // create new incoming call
- errorCode = CreateIncomingCallL(line, callId, incomingCallName,
- mobileService, mobileCallStatus);
- ASSERT_EQUALS(KErrNone, errorCode);
-
- errorCode = call.OpenExistingCall(line, incomingCallName);
- ASSERT_EQUALS(KErrNone, errorCode);
- //-------------------------------------------------------------------------
-
- TMockLtsyCallData0 mockData0(callId, mobileService);
-
- expectData.Close();
- mockData0.SerialiseL(expectData);
-
- RMobileCall::TMobileCallParamsV1 callParamsV1;
- TPckg<RMobileCall::TMobileCallParamsV1> mmParamsPckgV1(callParamsV1);
- call.AnswerIncomingCall(requestStatus, mmParamsPckgV1);
-
- User::WaitForRequest(requestStatus);
- AssertMockLtsyStatusL();
- ASSERT_EQUALS(KErrNotSupported, requestStatus.Int());
-
- AssertMockLtsyStatusL();
- CleanupStack::PopAndDestroy(4, this); // expectData, call, line
- }
-
-
-/**
-@SYMTestCaseID BA-CTSY-CCON-CD-0001
-@SYMComponent telephony_ctsy
-@SYMTestCaseDesc Test support in CTSY for RCall::Dial for voice calls
-@SYMTestPriority High
-@SYMTestActions Invokes RCall::Dial for voice calls
-@SYMTestExpectedResults Pass
-@SYMTestType CT
-*/
-void CCTsyCallControlFU::TestDial0001L()
- {
-
- OpenEtelServerL(EUseExtendedError);
- CleanupStack::PushL(TCleanupItem(Cleanup,this));
- OpenPhoneL();
-
- RBuf8 expectData;
- CleanupClosePushL(expectData);
-
- RBuf8 completeData;
- CleanupClosePushL(completeData);
-
- RLine line;
- RCall call;
-
- TInt errorCode = KErrNone;
- TRequestStatus requestStatus;
- TRequestStatus requestStatus2;
- TRequestStatus mockLtsyStatus;
-
- // open new line and call for KMmTsyVoice1LineName
- errorCode = OpenNewLineLC(iPhone, line, KMmTsyVoice1LineName);
- ASSERT_EQUALS(KErrNone, errorCode);
-
- TName name;
-
- _LIT(KPhoneNumber, "101632960000");
-
- TInt callId = 1;
- RMobilePhone::TMobileService mobileService = RMobilePhone::EVoiceService;
-
- RMobileCall::TMobileCallParamsV1 callParams;
- callParams.iInterval = 4;
- callParams.iCug.iCugIndex = 0xFFFF;
-
- RMobileCall::TMobileCallInfoV8 callInfo;
- callInfo.iDialledParty.iTelNumber.Copy(KPhoneNumber);
- callInfo.iService = mobileService;
- callInfo.iValid = RMobileCall::KCallDialledParty | RMobileCall::KCallAlternating;
-
- TMockLtsyCallData2<RMobileCall::TMobileCallParamsV1, RMobileCall::TMobileCallInfoV8>
- mockData2(0, mobileService, callParams, callInfo);
-
- TMockLtsyCallData0 mockData0(callId, mobileService);
-
- RCall::TCallParams callParamsX;
- TPckg<RCall::TCallParams> pckgCallParamsX(callParamsX);
- callParamsX.iSpeakerControl = RCall::EMonitorSpeakerControlOnUntilCarrier;
- callParamsX.iSpeakerVolume = RCall::EMonitorSpeakerVolumeLow;
- callParamsX.iInterval = 100;
- callParamsX.iWaitForDialTone = RCall::EDialToneWait;
-
- //-------------------------------------------------------------------------
- // TEST A: failure to dispatch request to LTSY
- //-------------------------------------------------------------------------
-
- // open new call
- CleanupClosePushL(call);
- errorCode = call.OpenNewCall(line, name);
- ASSERT_EQUALS(KErrNone, errorCode);
-
-
- expectData.Close();
- mockData2.SerialiseL(expectData);
- iMockLTSY.ExpectL(EEtelCallDial, expectData, KErrNotSupported);
-
- call.Dial(requestStatus, pckgCallParamsX, KPhoneNumber);
- User::WaitForRequest(requestStatus);
- AssertMockLtsyStatusL();
- ASSERT_EQUALS(KErrNotSupported, requestStatus.Int());
-
- call.Close();
- AssertMockLtsyStatusL();
- CleanupStack::PopAndDestroy(1);
-
- //-------------------------------------------------------------------------
- // TEST B: failure on completion of pending request from LTSY->CTSY
- //-------------------------------------------------------------------------
-
- // open new call
- CleanupClosePushL(call);
- errorCode = call.OpenNewCall(line, name);
- ASSERT_EQUALS(KErrNone, errorCode);
-
- expectData.Close();
- mockData2.SerialiseL(expectData);
- iMockLTSY.ExpectL(EEtelCallDial, expectData);
-
- CallGetMobileCallInfoL(callId, mobileService, KPhoneNumber);
-
- mockData0.SerialiseL(completeData);
- iMockLTSY.CompleteL(EEtelCallDial, KErrGeneral, completeData);
-
- call.Dial(requestStatus, pckgCallParamsX, KPhoneNumber);
- User::WaitForRequest(requestStatus);
- AssertMockLtsyStatusL();
- ASSERT_EQUALS(KErrGeneral, requestStatus.Int());
-
- call.Close();
- AssertMockLtsyStatusL();
- CleanupStack::PopAndDestroy(1);
-
- // Checking that we can return a specific error - KErrGsmCSConnectionBarred
- CleanupClosePushL(call);
- errorCode = call.OpenNewCall(line, name);
- ASSERT_EQUALS(KErrNone, errorCode);
-
- CallGetMobileCallInfoL(callId, mobileService, KPhoneNumber);
-
- expectData.Close();
- mockData2.SerialiseL(expectData);
- iMockLTSY.ExpectL(EEtelCallDial, expectData);
-
- mockData0.SerialiseL(completeData);
- iMockLTSY.CompleteL(EEtelCallDial, KErrGsmCSConnectionBarred, completeData);
-
- call.Dial(requestStatus, pckgCallParamsX, KPhoneNumber);
- User::WaitForRequest(requestStatus);
- AssertMockLtsyStatusL();
- ASSERT_EQUALS(KErrGsmCSConnectionBarred, requestStatus.Int());
-
- call.Close();
- AssertMockLtsyStatusL();
- CleanupStack::PopAndDestroy(1);
-
-
- //-------------------------------------------------------------------------
- // TEST C: Successful completion request of
- // RCall::Dial when result is not cached.
- //-------------------------------------------------------------------------
-
- // open new call
- CleanupClosePushL(call);
- errorCode = call.OpenNewCall(line, name);
- ASSERT_EQUALS(KErrNone, errorCode);
-
- expectData.Close();
- mockData2.SerialiseL(expectData);
- iMockLTSY.ExpectL(EEtelCallDial, expectData);
-
- CallGetMobileCallInfoL(callId, mobileService, KPhoneNumber);
-
- completeData.Close();
- mockData0.SerialiseL(completeData);
- iMockLTSY.CompleteL(EEtelCallDial, KErrNone, completeData);
-
- call.Dial(requestStatus, pckgCallParamsX, KPhoneNumber);
- User::WaitForRequest(requestStatus);
- AssertMockLtsyStatusL();
- ASSERT_EQUALS(KErrNone, requestStatus.Int());
-
- call.Close();
- AssertMockLtsyStatusL();
- CleanupStack::PopAndDestroy(1);
-
- //-------------------------------------------------------------------------
- // TEST E: Unsolicited completion of RCall::Dial
- // from LTSY.
- //-------------------------------------------------------------------------
-
- iMockLTSY.NotifyTerminated(mockLtsyStatus);
- expectData.Close();
- mockData0.SerialiseL(expectData);
- iMockLTSY.CompleteL(EEtelCallDial, KErrNone, expectData);
- User::WaitForRequest(mockLtsyStatus);
- AssertMockLtsyStatusL();
- ASSERT_EQUALS(KErrNone, mockLtsyStatus.Int());
-
- //-------------------------------------------------------------------------
- // TEST : to check that RCall::Dial works fine with RMobileCall::TMobileCallParamsV1
- //-------------------------------------------------------------------------
- // open new call
- CleanupClosePushL(call);
- errorCode = call.OpenNewCall(line, name);
- ASSERT_EQUALS(KErrNone, errorCode);
-
- RMobileCall::TMobileCallParamsV1 callParamsV1;
- RMobileCall::TMobileCallParamsV1Pckg callParamsV1Pkg(callParamsV1);
- callParamsV1.iCug.iCugIndex = 0xFFFF;
- callParamsV1.iSpeakerControl = RCall::EMonitorSpeakerControlOnExceptDuringDialling;
- callParamsV1.iSpeakerVolume = RCall::EMonitorSpeakerVolumeOff;
- callParamsV1.iInterval = 100;
- callParamsV1.iWaitForDialTone = RCall::EDialToneNoWait;
-
- TMockLtsyCallData2<RMobileCall::TMobileCallParamsV1, RMobileCall::TMobileCallInfoV8>
- mockDataV1(0, mobileService, callParamsV1, callInfo);
-
- expectData.Close();
- mockDataV1.SerialiseL(expectData);
- iMockLTSY.ExpectL(EEtelCallDial, expectData);
-
- CallGetMobileCallInfoL(callId, mobileService, KPhoneNumber);
-
- completeData.Close();
- mockData0.SerialiseL(completeData);
- iMockLTSY.CompleteL(EEtelCallDial, KErrNone, completeData);
-
- call.Dial(requestStatus, callParamsV1Pkg, KPhoneNumber);
- User::WaitForRequest(requestStatus);
- AssertMockLtsyStatusL();
- ASSERT_EQUALS(KErrNone, requestStatus.Int());
-
- RMobileCall::TMobileCallParamsV1 checkParams;
- RMobileCall::TMobileCallParamsV1Pckg checkParamsPkg(checkParams);
- call.GetCallParams(checkParamsPkg);
-
- TInt compareResult = ((checkParams.iSpeakerControl != callParamsV1.iSpeakerControl) ||
- (checkParams.iSpeakerVolume != callParamsV1.iSpeakerVolume) ||
- (checkParams.iInterval != callParamsV1.iInterval) ||
- (checkParams.iWaitForDialTone != callParamsV1.iWaitForDialTone) ||
- (checkParams.iCug.iCugIndex != callParamsV1.iCug.iCugIndex));
-
- if(KErrNone != compareResult)
- {
- ERR_PRINTF1(_L("RCall::GetCallParams did not return the same params as that used for Dial"));
- ASSERT_EQUALS(KErrNone, compareResult);
- }
-
- call.Close();
- AssertMockLtsyStatusL();
- CleanupStack::PopAndDestroy(1);
-
- //-------------------------------------------------------------------------
- // TEST : to check that RCall::Dial works fine with RMobileCall::TMobileCallParamsV2
- //-------------------------------------------------------------------------
- // open new call
- CleanupClosePushL(call);
- errorCode = call.OpenNewCall(line, name);
- ASSERT_EQUALS(KErrNone, errorCode);
-
- RMobileCall::TMobileCallParamsV2 callParamsV2;
- RMobileCall::TMobileCallParamsV2Pckg callParamsV2Pkg(callParamsV2);
- callParamsV2.iBearerMode = RMobileCall::EMulticallNewBearer;
-
- TMockLtsyCallData2<RMobileCall::TMobileCallParamsV2, RMobileCall::TMobileCallInfoV8>
- mockDataV2(0, mobileService, callParamsV2, callInfo);
-
- expectData.Close();
- mockDataV2.SerialiseL(expectData);
- iMockLTSY.ExpectL(EEtelCallDial, expectData);
-
- CallGetMobileCallInfoL(callId, mobileService, KPhoneNumber);
-
- completeData.Close();
- mockData0.SerialiseL(completeData);
- iMockLTSY.CompleteL(EEtelCallDial, KErrNone, completeData);
-
- call.Dial(requestStatus, callParamsV2Pkg, KPhoneNumber);
- User::WaitForRequest(requestStatus);
- AssertMockLtsyStatusL();
- ASSERT_EQUALS(KErrNone, requestStatus.Int());
-
- RMobileCall::TMobileCallParamsV2 checkParamsV2;
- RMobileCall::TMobileCallParamsV2Pckg checkParamsV2Pkg(checkParamsV2);
- call.GetCallParams(checkParamsV2Pkg);
-
- if(KErrNone != compareResult)
- {
- ERR_PRINTF1(_L("RCall::GetCallParams did not return the same V2 params as that used for Dial"));
- ASSERT_EQUALS(KErrNone, compareResult);
- }
-
- call.Close();
- AssertMockLtsyStatusL();
- CleanupStack::PopAndDestroy(1);
-
- //-------------------------------------------------------------------------
- // TEST : to increase CMmVoiceCallTsy::Dial coverage
- // covers "else if ( RMobileCall::EStatusIdle != iMobileCallStatus )" condition
- //-------------------------------------------------------------------------
-
- TName incomingCallName;
- RMobileCall::TMobileCallStatus mobileCallStatus = RMobileCall::EStatusRinging;
-
- //-------------------------------------------------------------------------
- // create new incoming call
- errorCode = CreateIncomingCallL(line, callId, incomingCallName,
- mobileService, mobileCallStatus);
- ASSERT_EQUALS(KErrNone, errorCode);
- AssertMockLtsyStatusL();
- //-------------------------------------------------------------------------
-
- // open new call
- CleanupClosePushL(call);
- errorCode = call.OpenExistingCall(line, incomingCallName);
- ASSERT_EQUALS(KErrNone, errorCode);
-
- call.Dial(requestStatus, pckgCallParamsX, KPhoneNumber);
-
- User::WaitForRequest(requestStatus);
- AssertMockLtsyStatusL();
- ASSERT_EQUALS(KErrNotReady, requestStatus.Int());
-
- CloseIncomingCallL(call, callId, mobileService);
- CleanupStack::PopAndDestroy(1);
-
- //-------------------------------------------------------------------------
- // TEST : to increase CMmVoiceCallTsy::Dial coverage
- // covers "else if ( ( activeCall ) && ( KETelExt3rdPartyV1 == extensionId ) &&
- // ( KETelExt3rdPartyV1 != activeCall->GetExtensionId() ) )" condition
- //-------------------------------------------------------------------------
-
- RMobileCall mobileCall;
- mobileCallStatus = RMobileCall::EStatusConnected;
-
- //-------------------------------------------------------------------------
- // create new incoming call
- errorCode = CreateIncomingCallL(line, callId, incomingCallName,
- mobileService, mobileCallStatus);
- ASSERT_EQUALS(KErrNone, errorCode);
- AssertMockLtsyStatusL();
- //-------------------------------------------------------------------------
-
- // open new call
- CleanupClosePushL(mobileCall);
- errorCode = mobileCall.OpenNewCall(line, name);
- ASSERT_EQUALS(KErrNone, errorCode);
-
- RMobileCall::TEtel3rdPartyMobileCallParamsV1 callParamsXX;
- TPckg<RMobileCall::TEtel3rdPartyMobileCallParamsV1> pckgCallParamsXX(callParamsXX);
- mobileCall.DialISV(requestStatus, pckgCallParamsXX, KPhoneNumber);
-
- User::WaitForRequest(requestStatus);
- AssertMockLtsyStatusL();
- ASSERT_EQUALS(KErrServerBusy, requestStatus.Int());
-
- call.Close();
- AssertMockLtsyStatusL();
- mobileCall.Close();
- AssertMockLtsyStatusL();
- CleanupStack::PopAndDestroy(1);
-
- //-------------------------------------------------------------------------
- // TEST : to increase CMmVoiceCallTsy::Dial coverage
- // covers "else" condition in case of
- // impossible of conditions "if ( ERfsStateInfoInactive == iMmPhone->GetRfStateInfo() )",
- // "else if ( RMobileCall::EStatusIdle != iMobileCallStatus )",
- // "else if ( ( 0 < dialHandle ) || ( ( KETelExt3rdPartyV1 == extensionId )
- // && ( 0 < dialHandleISV ) && !i3rdPartyEmergencyNumberCheckDone ) )",
- // "else if ( ( activeCall ) && ( KETelExt3rdPartyV1 == extensionId )
- // && ( KETelExt3rdPartyV1 != activeCall->GetExtensionId() ) )" and
- // "else if( extensionId == KETelExt3rdPartyV1 &&
- // !i3rdPartyEmergencyNumberCheckDone )".
- //-------------------------------------------------------------------------
-
- RCall call2;
- mobileCallStatus = RMobileCall::EStatusConnected;
-
- //-------------------------------------------------------------------------
- // create new incoming call
- errorCode = CreateIncomingCallL(line, callId, incomingCallName,
- mobileService, mobileCallStatus);
- ASSERT_EQUALS(KErrNone, errorCode);
- AssertMockLtsyStatusL();
- //-------------------------------------------------------------------------
-
- // open new call
- CleanupClosePushL(call2);
- errorCode = call2.OpenNewCall(line, name);
- ASSERT_EQUALS(KErrNone, errorCode);
-
- expectData.Close();
- mockData2.SerialiseL(expectData);
- iMockLTSY.ExpectL(EEtelCallDial, expectData, KErrNotSupported);
- call2.Dial(requestStatus, pckgCallParamsX, KPhoneNumber);
-
- User::WaitForRequest(requestStatus);
- AssertMockLtsyStatusL();
- ASSERT_EQUALS(KErrNotSupported, requestStatus.Int());
-
- call.Close();
- AssertMockLtsyStatusL();
- call2.Close();
- AssertMockLtsyStatusL();
- CleanupStack::PopAndDestroy(1);
-
- //-------------------------------------------------------------------------
- // TEST : to increase CMmVoiceCallTsy::Dial coverage
- // covers "if ( ERfsStateInfoInactive == iMmPhone->GetRfStateInfo() )" condition
- //-------------------------------------------------------------------------
-
- // open new call
- CleanupClosePushL(call);
- errorCode = call.OpenNewCall(line, name);
- ASSERT_EQUALS(KErrNone, errorCode);
-
- iMockLTSY.NotifyTerminated(mockLtsyStatus);
- TRfStateInfo rfInfo = ERfsStateInfoInactive;
- TMockLtsyData1<TRfStateInfo> mockData1(rfInfo);
-
- expectData.Close();
- mockData1.SerialiseL(expectData);
-
- iMockLTSY.CompleteL(EMmTsyBootGetRFStatusIPC, KErrNone, expectData);
- User::WaitForRequest(mockLtsyStatus);
- AssertMockLtsyStatusL();
- ASSERT_EQUALS(KErrNone, mockLtsyStatus.Int());
-
- call.Dial(requestStatus, pckgCallParamsX, KPhoneNumber);
- User::WaitForRequest(requestStatus);
- AssertMockLtsyStatusL();
- ASSERT_EQUALS(KErrGsmOfflineOpNotAllowed, requestStatus.Int());
-
- call.Close();
- AssertMockLtsyStatusL();
- CleanupStack::PopAndDestroy(1);
-
- AssertMockLtsyStatusL();
- CleanupStack::PopAndDestroy(4, this); // expectData, completeData, line
- }
-
-/**
-@SYMTestCaseID BA-CTSY-CCON-CD-0001b
-@SYMComponent telephony_ctsy
-@SYMTestCaseDesc Test support in CTSY for RCall::Dial for voice calls with minimal parameters (RCall::TCallParams)
-@SYMTestPriority High
-@SYMTestActions Invokes RCall::Dial for voice calls
-@SYMTestExpectedResults Pass
-@SYMTestType CT
-*/
-void CCTsyCallControlFU::TestDial0001bL()
- {
-
- OpenEtelServerL(EUseExtendedError);
- CleanupStack::PushL(TCleanupItem(Cleanup,this));
- OpenPhoneL();
-
- RBuf8 expectData;
- CleanupClosePushL(expectData);
-
- RBuf8 completeData;
- CleanupClosePushL(completeData);
-
- TInt errorCode = KErrNone;
-
- //-- For Voice1 -------------------------
-
- TBuf<256> lineName(KMmTsyVoice1LineName);
- // Open new line
- RLine line;
- errorCode = line.Open(iPhone, lineName);
- ASSERT_EQUALS(KErrNone, errorCode);
- CleanupClosePushL(line);
- // open call
- _LIT(KDoubleColon, "::");
- TBuf<256> name;
- name = KMmTsyPhoneName;
- name.Append(KDoubleColon);
- name.Append(lineName);
- name.Append(KDoubleColon);
-
- RMobileCall call;
- errorCode = call.OpenNewCall(line, name);
- ASSERT_EQUALS(KErrNone, errorCode);
- CleanupClosePushL(call);
-
- TRequestStatus requestStatus;
- _LIT(KSomeNumber, "123456789");
-
- RMobilePhone::TMobileService mobileService = RMobilePhone::EVoiceService;
- TInt expectedCallId = 0;
-
- RMobileCall::TMobileCallParamsV7 callParams;
- RMobileCall::TMobileCallParamsV7Pckg pckgCallParams(callParams);
- RMobileCall::TMobileCallInfoV8 callInfo;
- callParams.iSpeakerControl = RCall::EMonitorSpeakerControlOnUntilCarrier;
- callParams.iSpeakerVolume = RCall::EMonitorSpeakerVolumeLow;
- callParams.iInterval = 100;
- callParams.iWaitForDialTone = RCall::EDialToneWait;
- callParams.iIdRestrict = RMobileCall::EIdRestrictDefault;
- callParams.iCug.iExplicitInvoke = EFalse;
- callParams.iCug.iCugIndex = 0xFFFF;
- callParams.iCug.iSuppressPrefCug = EFalse;
- callParams.iCug.iSuppressOA = EFalse;
- callParams.iAutoRedial = EFalse;
- callInfo.iValid = RMobileCall::KCallDialledParty | RMobileCall::KCallAlternating;
- callInfo.iService = mobileService;
- callInfo.iStatus = RMobileCall::EStatusUnknown;
- callInfo.iCallId =-1;
- callInfo.iExitCode =0;
- callInfo.iEmergency =0;
- callInfo.iForwarded =0;
- callInfo.iPrivacy = RMobilePhone::EPrivacyUnspecified;
- callInfo.iAlternatingCall = RMobilePhone::EAlternatingModeUnspecified;
-
-
- callInfo.iDialledParty.iTelNumber.Copy( KSomeNumber );
- callInfo.iDialledParty.iNumberPlan = RMobilePhone::EUnknownNumberingPlan;
- callInfo.iDialledParty.iTypeOfNumber = RMobilePhone::EUnknownNumber;
-
- TMockLtsyCallData2< RMobileCall::TMobileCallParamsV1, RMobileCall::TMobileCallInfoV8 >
- mockCallData(expectedCallId, mobileService, callParams, callInfo);
- mockCallData.SerialiseL(expectData);
-
- iMockLTSY.ExpectL(EEtelCallDial, expectData);
-
- TInt callId = 1;
-
- completeData.Close();
- TMockLtsyCallData1<RMobileCall::TMobileCallInfoV1> callInfoData(callId, mobileService, callInfo);
- callInfoData.SerialiseL(completeData);
- //Complete Mobile Call Info in order to set the call ID
- iMockLTSY.CompleteL(EMobileCallGetMobileCallInfo, KErrNone, completeData);
-
- TMockLtsyCallData0 mockDataComplete(callId, mobileService);
- completeData.Close();
- mockDataComplete.SerialiseL(completeData);
- // Complete the Dial
- iMockLTSY.CompleteL(EEtelCallDial, KErrNone, completeData);
-
- RCall::TCallParams callParamsX;
- callParamsX.iSpeakerControl = RCall::EMonitorSpeakerControlOnUntilCarrier;
- callParamsX.iSpeakerVolume = RCall::EMonitorSpeakerVolumeLow;
- callParamsX.iInterval = 100;
- callParamsX.iWaitForDialTone = RCall::EDialToneWait;
- TPckg<RCall::TCallParams> pckgCallParamsX(callParamsX);
-
- call.Dial(requestStatus, pckgCallParamsX, KSomeNumber);
-
- User::WaitForRequest(requestStatus);
- ASSERT_EQUALS(KErrNone, requestStatus.Int());
- AssertMockLtsyStatusL();
-
- CleanupStack::PopAndDestroy(5,this);
-
- }
-
-
-/**
-@SYMTestCaseID BA-CTSY-CCON-CD-0001c
-@SYMComponent telephony_ctsy
-@SYMTestCaseDesc Test support in CTSY for RCall::Dial for voice calls with changing parameters
-@SYMTestPriority High
-@SYMTestActions Invokes RCall::Dial for voice calls
-@SYMTestExpectedResults Pass
-@SYMTestType CT
-*/
-void CCTsyCallControlFU::TestDial0001cL()
- {
-
- OpenEtelServerL(EUseExtendedError);
- CleanupStack::PushL(TCleanupItem(Cleanup,this));
- OpenPhoneL();
-
- RBuf8 expectData;
- CleanupClosePushL(expectData);
-
- RBuf8 completeData;
- CleanupClosePushL(completeData);
-
- TInt errorCode = KErrNone;
-
- //-- For Voice1 -------------------------
-
- TBuf<256> lineName(KMmTsyVoice1LineName);
- // Open new line
- RLine line;
- errorCode = line.Open(iPhone, lineName);
- ASSERT_EQUALS(KErrNone, errorCode);
- CleanupClosePushL(line);
- // open call
- _LIT(KDoubleColon, "::");
- TBuf<256> name;
- name = KMmTsyPhoneName;
- name.Append(KDoubleColon);
- name.Append(lineName);
- name.Append(KDoubleColon);
-
- RMobileCall call;
- errorCode = call.OpenNewCall(line, name);
- ASSERT_EQUALS(KErrNone, errorCode);
- CleanupClosePushL(call);
-
- TRequestStatus requestStatus;
- _LIT(KSomeNumber, "123456789");
-
- RMobilePhone::TMobileService mobileService = RMobilePhone::EVoiceService;
- TInt expectedCallId = 0;
- RMobileCall::TMobileCallInfoV8 callInfo;
- callInfo.iValid = RMobileCall::KCallDialledParty | RMobileCall::KCallAlternating;
- callInfo.iService = mobileService;
- callInfo.iStatus = RMobileCall::EStatusUnknown;
- callInfo.iCallId =-1;
- callInfo.iExitCode =0;
- callInfo.iEmergency =0;
- callInfo.iForwarded =0;
- callInfo.iPrivacy = RMobilePhone::EPrivacyUnspecified;
- callInfo.iAlternatingCall = RMobilePhone::EAlternatingModeUnspecified;
- callInfo.iDialledParty.iTelNumber.Copy( KSomeNumber );
- callInfo.iDialledParty.iNumberPlan = RMobilePhone::EUnknownNumberingPlan;
- callInfo.iDialledParty.iTypeOfNumber = RMobilePhone::EUnknownNumber;
-
- // A. Call with V7 params.
- // Fill the params with random values
- RMobileCall::TMobileCallParamsV7 callParams;
- RMobileCall::TMobileCallParamsV7Pckg pckgCallParams(callParams);
- callParams.iAlphaId.Copy(_L("Alpha Id"));
- callParams.iIconId.iQualifier = RMobileCall::ESelfExplanatory;
- callParams.iIconId.iIdentifier = 0x0A;
- callParams.iBCRepeatIndicator = RMobileCall::EBCServiceChangeAndFallbackMode;
- callParams.iBearerCap2.Copy(_L("Cap2"));
- callParams.iBearerCap1.Copy(_L("Cap1"));
- callParams.iSubAddress.Copy(_L("SubAddress"));
- callParams.iCallParamOrigin = RMobileCall::EOriginatorEtelClient;
- callParams.iBearerMode = RMobileCall::EMulticallShareBearer;
- callParams.iIdRestrict = RMobileCall::EDontSendMyId;
- callParams.iCug.iExplicitInvoke = EFalse;
- callParams.iCug.iCugIndex = 0xAABB;
- callParams.iCug.iSuppressPrefCug = EFalse;
- callParams.iCug.iSuppressOA = ETrue;
- callParams.iAutoRedial = ETrue;
- callParams.iSpeakerControl = RCall::EMonitorSpeakerControlOnUntilCarrier;
- callParams.iSpeakerVolume = RCall::EMonitorSpeakerVolumeLow;
- callParams.iInterval = 0;
- callParams.iWaitForDialTone = RCall::EDialToneWait;
-
- TMockLtsyCallData2< RMobileCall::TMobileCallParamsV7, RMobileCall::TMobileCallInfoV8 >
- mockCallData(expectedCallId, mobileService, callParams, callInfo);
- mockCallData.SerialiseL(expectData);
-
- iMockLTSY.ExpectL(EEtelCallDial, expectData);
-
- TInt callId = 1;
-
- completeData.Close();
- TMockLtsyCallData1<RMobileCall::TMobileCallInfoV1> callInfoData(callId, mobileService, callInfo);
- callInfoData.SerialiseL(completeData);
- //Complete Mobile Call Info in order to set the call ID
- iMockLTSY.CompleteL(EMobileCallGetMobileCallInfo, KErrNone, completeData);
-
- TMockLtsyCallData0 mockDataComplete(callId, mobileService);
- completeData.Close();
- mockDataComplete.SerialiseL(completeData);
- // Complete the Dial
- iMockLTSY.CompleteL(EEtelCallDial, KErrNone, completeData);
-
- call.Dial(requestStatus, pckgCallParams, KSomeNumber);
-
- User::WaitForRequest(requestStatus);
- ASSERT_EQUALS(KErrNone, requestStatus.Int());
- AssertMockLtsyStatusL();
-
- // B. Call with V0 params.
- // The CTSY should send the default V7 values to the LTSY, and not the previous call parameters which are irrelevant.
- // Fill the params with other random values.
- callParams.iAlphaId.Zero();
- callParams.iIconId.iQualifier = RMobileCall::EIconQualifierNotSet;
- callParams.iIconId.iIdentifier = 0x00;
- callParams.iBCRepeatIndicator = RMobileCall::EBCAlternateMode;
- callParams.iBearerCap2.Zero();
- callParams.iBearerCap1.Zero();
- callParams.iSubAddress.Zero();
- callParams.iCallParamOrigin = RMobileCall::EOriginatorUnknown;
- callParams.iBearerMode = RMobileCall::EMulticallNotSupported;
- callParams.iIdRestrict = RMobileCall::EIdRestrictDefault;
- callParams.iCug.iExplicitInvoke = EFalse;
- callParams.iCug.iCugIndex = 0xFFFF;
- callParams.iCug.iSuppressPrefCug = EFalse;
- callParams.iCug.iSuppressOA = EFalse;
- callParams.iAutoRedial = EFalse;
- callParams.iSpeakerControl = RCall::EMonitorSpeakerControlAlwaysOn;
- callParams.iSpeakerVolume = RCall::EMonitorSpeakerVolumeMedium;
- callParams.iInterval = 12;
- callParams.iWaitForDialTone = RCall::EDialToneNoWait;
-
-
- RMobileCall::TCallParams callParams0;
- callParams0.iSpeakerControl = callParams.iSpeakerControl;
- callParams0.iSpeakerVolume = callParams.iSpeakerVolume;
- callParams0.iInterval = callParams.iInterval;
- callParams0.iWaitForDialTone = callParams.iWaitForDialTone;
- RCall::TCallParamsPckg pckgCallParams0(callParams0);
-
- expectData.Close();
- TMockLtsyCallData2< RMobileCall::TMobileCallParamsV7, RMobileCall::TMobileCallInfoV8 >
- mockCallData2(1, mobileService, callParams, callInfo);
- mockCallData2.SerialiseL(expectData);
-
- iMockLTSY.ExpectL(EEtelCallDial, expectData);
-
-
- completeData.Close();
- callInfoData.SerialiseL(completeData);
- //Complete Mobile Call Info in order to set the call ID
- iMockLTSY.CompleteL(EMobileCallGetMobileCallInfo, KErrNone, completeData);
-
- completeData.Close();
- mockDataComplete.SerialiseL(completeData);
- // Complete the Dial
- iMockLTSY.CompleteL(EEtelCallDial, KErrNone, completeData);
-
- call.Dial(requestStatus, pckgCallParams0, KSomeNumber);
-
- User::WaitForRequest(requestStatus);
- ASSERT_EQUALS(KErrNone, requestStatus.Int());
- AssertMockLtsyStatusL();
-
- CleanupStack::PopAndDestroy(5,this);
-
- }
-
-
-/**
-@SYMTestCaseID BA-CTSY-CCON-CD-0002
-@SYMComponent telephony_ctsy
-@SYMTestCaseDesc Test support in CTSY for cancelling of RCall::Dial for voice calls
-@SYMTestPriority High
-@SYMTestActions Invokes cancelling of RCall::Dial for voice calls
-@SYMTestExpectedResults Pass
-@SYMTestType CT
-*/
-void CCTsyCallControlFU::TestDial0002L()
- {
-
- OpenEtelServerL(EUseExtendedError);
- CleanupStack::PushL(TCleanupItem(Cleanup,this));
- OpenPhoneL();
-
- RBuf8 expectData;
- CleanupClosePushL(expectData);
-
- RBuf8 completeData;
- CleanupClosePushL(completeData);
-
- RLine line;
- RCall call;
-
- TInt errorCode = KErrNone;
- TRequestStatus requestStatus;
- TRequestStatus mockLtsyStatus;
-
- // open new line and call for KMmTsyVoice1LineName
- errorCode = OpenNewLineLC(iPhone, line, KMmTsyVoice1LineName);
- ASSERT_EQUALS(KErrNone, errorCode);
-
- TName name;
-
- _LIT(KPhoneNumber, "101632960000");
-
- TInt callId = 1;
- RMobilePhone::TMobileService mobileService = RMobilePhone::EVoiceService;
-
- RMobileCall::TMobileCallParamsV7 callParams;
- callParams.iInterval = 100;
- callParams.iCug.iCugIndex = 0xFFFF;
- callParams.iSpeakerControl = RCall::EMonitorSpeakerControlOnUntilCarrier;
- callParams.iSpeakerVolume = RCall::EMonitorSpeakerVolumeLow;
- callParams.iWaitForDialTone = RCall::EDialToneWait;
- callParams.iIdRestrict = RMobileCall::EIdRestrictDefault;
- callParams.iCug.iExplicitInvoke = EFalse;
- callParams.iCug.iSuppressPrefCug = EFalse;
- callParams.iCug.iSuppressOA = EFalse;
- callParams.iAutoRedial = EFalse;
-
- RMobileCall::TMobileCallInfoV8 callInfo;
- callInfo.iDialledParty.iTelNumber.Copy(KPhoneNumber);
- callInfo.iService = mobileService;
- callInfo.iValid = RMobileCall::KCallDialledParty | RMobileCall::KCallAlternating;
- callInfo.iStatus = RMobileCall::EStatusUnknown;
- callInfo.iCallId =-1;
- callInfo.iExitCode =0;
- callInfo.iEmergency =0;
- callInfo.iForwarded =0;
- callInfo.iPrivacy = RMobilePhone::EPrivacyUnspecified;
- callInfo.iAlternatingCall = RMobilePhone::EAlternatingModeUnspecified;
-
-
- TMockLtsyCallData2<RMobileCall::TMobileCallParamsV1, RMobileCall::TMobileCallInfoV1>
- mockData2(0, mobileService, callParams, callInfo);
-
- TMockLtsyCallData0 mockData0(callId, mobileService);
-
- TInt hangUpCause = KErrGsmReleaseByUser;
- TBool autoStChangeDisable = ETrue;
- TMockLtsyCallData2<TInt, TBool> mockCallData2(callId, mobileService,
- hangUpCause,
- autoStChangeDisable);
-
- RCall::TCallParams callParamsX;
- TPckg<RCall::TCallParams> pckgCallParamsX(callParamsX);
- callParamsX.iSpeakerControl = RCall::EMonitorSpeakerControlOnUntilCarrier;
- callParamsX.iSpeakerVolume = RCall::EMonitorSpeakerVolumeLow;
- callParamsX.iInterval = 100;
- callParamsX.iWaitForDialTone = RCall::EDialToneWait;
-
- //-------------------------------------------------------------------------
- // Test cancelling of RCall::Dial
- // before than LTSY sends any completions
- //-------------------------------------------------------------------------
-
- // open new call
- CleanupClosePushL(call);
- errorCode = call.OpenNewCall(line, name);
- ASSERT_EQUALS(KErrNone, errorCode);
-
- expectData.Close();
- mockData2.SerialiseL(expectData);
- iMockLTSY.ExpectL(EEtelCallDial, expectData);
-
-
- call.Dial(requestStatus, pckgCallParamsX, KPhoneNumber);
- call.CancelAsyncRequest(EEtelCallDial);
-
- CallGetMobileCallInfoL(callId, mobileService, KPhoneNumber);
-
- RMobileCall::TMobileCallStatus mobileCallStatus = RMobileCall::EStatusDialling;
- TMockLtsyCallData1<RMobileCall::TMobileCallStatus> mockCallDataStatus(callId, mobileService, mobileCallStatus);
- completeData.Close();
- mockCallDataStatus.SerialiseL(completeData);
-
- iMockLTSY.NotifyTerminated(mockLtsyStatus);
- iMockLTSY.CompleteL(EMobileCallNotifyMobileCallStatusChange, KErrNone, completeData);
-
- expectData.Close();
- mockCallData2.SerialiseL(expectData);
- iMockLTSY.ExpectL(EEtelCallHangUp, expectData);
-
- User::WaitForRequest(mockLtsyStatus);
-
- // Cancelled Dial request. After this CTSY hangs up the call and it goes to idle state.
-
- RMobileCall::TMobileCallStatus mobileCallStatus2 = RMobileCall::EStatusIdle;
- TMockLtsyCallData1<RMobileCall::TMobileCallStatus> mockCallDataStatus2(callId, mobileService, mobileCallStatus2);
- completeData.Close();
- mockCallDataStatus2.SerialiseL(completeData);
-
- iMockLTSY.NotifyTerminated(mockLtsyStatus);
- iMockLTSY.CompleteL(EMobileCallNotifyMobileCallStatusChange, KErrGsmReleaseByUser, completeData);
-
- User::WaitForRequest(requestStatus);
- AssertMockLtsyStatusL();
- ASSERT_EQUALS(KErrCancel, requestStatus.Int());
-
- call.Close();
- AssertMockLtsyStatusL();
- CleanupStack::PopAndDestroy(1);
- //-------------------------------------------------------------------------
- // Test cancelling of RCall::Dial
- //-------------------------------------------------------------------------
-
- // open new call
- CleanupClosePushL(call);
- errorCode = call.OpenNewCall(line, name);
- ASSERT_EQUALS(KErrNone, errorCode);
-
-
- expectData.Close();
- mockData2.SerialiseL(expectData);
- iMockLTSY.ExpectL(EEtelCallDial, expectData);
-
- CallGetMobileCallInfoL(callId, mobileService, KPhoneNumber);
-
- call.Dial(requestStatus, pckgCallParamsX, KPhoneNumber);
- completeData.Close();
- mockCallDataStatus.SerialiseL(completeData);
-
- iMockLTSY.NotifyTerminated(mockLtsyStatus);
- iMockLTSY.CompleteL(EMobileCallNotifyMobileCallStatusChange, KErrNone, completeData);
-
- User::WaitForRequest(mockLtsyStatus);
-
- expectData.Close();
- mockCallData2.SerialiseL(expectData);
- iMockLTSY.ExpectL(EEtelCallHangUp, expectData);
-
- // Cancelled Dial request. After this CTSY hangs up the call and it goes to idle state.
- call.CancelAsyncRequest(EEtelCallDial);
- completeData.Close();
- mockCallDataStatus2.SerialiseL(completeData);
-
- iMockLTSY.NotifyTerminated(mockLtsyStatus);
- iMockLTSY.CompleteL(EMobileCallNotifyMobileCallStatusChange, KErrGsmReleaseByUser, completeData);
-
- User::WaitForRequest(requestStatus);
- AssertMockLtsyStatusL();
- ASSERT_EQUALS(KErrCancel, requestStatus.Int());
-
- call.Close();
- AssertMockLtsyStatusL();
- CleanupStack::PopAndDestroy(1);
- CleanupStack::PopAndDestroy(4); // expectData, completeData, this, this
-
- }
-
-
-/**
-@SYMTestCaseID BA-CTSY-CCON-CD-0003
-@SYMComponent telephony_ctsy
-@SYMTestCaseDesc Test support in CTSY for RCall::Dial with bad parameter data for voice calls
-@SYMTestPriority High
-@SYMTestActions Invokes RCall::Dial with bad parameter data for voice calls
-@SYMTestExpectedResults Pass
-@SYMTestType CT
-*/
-void CCTsyCallControlFU::TestDial0003L()
- {
-
- OpenEtelServerL(EUseExtendedError);
- CleanupStack::PushL(TCleanupItem(Cleanup,this));
- OpenPhoneL();
-
- RBuf8 expectData;
- CleanupClosePushL(expectData);
-
- RBuf8 completeData;
- CleanupClosePushL(completeData);
-
- RLine line;
- RCall call;
-
- TInt errorCode = KErrNone;
- TRequestStatus requestStatus;
- TRequestStatus mockLtsyStatus;
-
- // open new line and call for KMmTsyVoice1LineName
- errorCode = OpenNewLineLC(iPhone, line, KMmTsyVoice1LineName);
- ASSERT_EQUALS(KErrNone, errorCode);
-
- TName name;
-
- _LIT(KPhoneNumber, "101632960000");
-
- TInt callId = 1;
- RMobilePhone::TMobileService mobileService = RMobilePhone::EVoiceService;
-
- RMobileCall::TMobileCallParamsV1 callParams;
- callParams.iInterval = 4;
- callParams.iCug.iCugIndex = 0xFFFF;
-
- RMobileCall::TMobileCallInfoV8 callInfo;
- callInfo.iDialledParty.iTelNumber.Copy(KPhoneNumber);
- callInfo.iService = mobileService;
- callInfo.iValid = RMobileCall::KCallDialledParty | RMobileCall::KCallAlternating;
-
- TMockLtsyCallData2<RMobileCall::TMobileCallParamsV1, RMobileCall::TMobileCallInfoV8>
- mockData2(0, mobileService, callParams, callInfo);
-
- TMockLtsyCallData0 mockData0(callId, mobileService);
-
- //-------------------------------------------------------------------------
- // Test A: Test passing wrong version of parameters to
- // RCall::Dial
- //-------------------------------------------------------------------------
-
- // open new call
- CleanupClosePushL(call);
- errorCode = call.OpenNewCall(line, name);
- ASSERT_EQUALS(KErrNone, errorCode);
-
- RMobileCall::TEtel3rdPartyMobileCallParamsV1 paramsV1;
- TPckg<RMobileCall::TEtel3rdPartyMobileCallParamsV1> pckgParamsV1(paramsV1);
-
- call.Dial(requestStatus, pckgParamsV1, KPhoneNumber);
-
- User::WaitForRequest(requestStatus);
- ASSERT_EQUALS(KErrArgument, requestStatus.Int());
-
- call.Close();
- CleanupStack::PopAndDestroy(&call);
-
- //-------------------------------------------------------------------------
- // Test B: Test passing wrong descriptor size to parameter in
- // RCall::Dial
- //-------------------------------------------------------------------------
-
- // open new call
- CleanupClosePushL(call);
- errorCode = call.OpenNewCall(line, name);
- ASSERT_EQUALS(KErrNone, errorCode);
-
- CallGetMobileCallInfoL(callId, mobileService, KPhoneNumber);
-
- _LIT8(KTempDesC8,"A");
- TBuf8<1> tempDes(KTempDesC8);
-
- call.Dial(requestStatus, tempDes, KPhoneNumber);
-
- User::WaitForRequest(requestStatus);
- ASSERT_EQUALS(KErrArgument, requestStatus.Int());
-
- call.Close();
- CleanupStack::PopAndDestroy(&call);
-
- //-------------------------------------------------------------------------
- // Test C: Test passing empty descriptor size to parameter in
- // RCall::Dial
- //-------------------------------------------------------------------------
-
- // open new call
- CleanupClosePushL(call);
- errorCode = call.OpenNewCall(line, name);
- ASSERT_EQUALS(KErrNone, errorCode);
-
- expectData.Close();
- mockData2.SerialiseL(expectData);
- iMockLTSY.ExpectL(EEtelCallDial, expectData);
-
- CallGetMobileCallInfoL(callId, mobileService, KPhoneNumber);
-
- completeData.Close();
- mockData0.SerialiseL(completeData);
- iMockLTSY.CompleteL(EEtelCallDial, KErrNone, completeData);
-
- TBuf8<1> nullDes(KNullDesC8);
-
- // If aCallParams is empty it is handled as there are no call parameters
- // and CTSY uses default values
- call.Dial(requestStatus, nullDes, KPhoneNumber);
-
- User::WaitForRequest(requestStatus);
- ASSERT_EQUALS(KErrNone, requestStatus.Int());
-
- call.Close();
- AssertMockLtsyStatusL();
- CleanupStack::PopAndDestroy(&call);
- CleanupStack::PopAndDestroy(4); // completeData, expectData, line, this
-
- }
-
-
-/**
-@SYMTestCaseID BA-CTSY-CCON-CD-0004
-@SYMComponent telephony_ctsy
-@SYMTestCaseDesc Test support in CTSY for multiple client requests to RCall::Dial for voice calls
-@SYMTestPriority High
-@SYMTestActions Invokes multiple client requests to RCall::Dial for voice calls
-@SYMTestExpectedResults Pass
-@SYMTestType CT
-*/
-void CCTsyCallControlFU::TestDial0004L()
- {
- OpenEtelServerL(EUseExtendedError);
- CleanupStack::PushL(TCleanupItem(Cleanup,this));
- OpenPhoneL();
-
- RBuf8 expectData;
- CleanupClosePushL(expectData);
-
- RBuf8 completeData;
- CleanupClosePushL(completeData);
-
- // Open second client
- RTelServer telServer2;
- TInt ret = telServer2.Connect();
- ASSERT_EQUALS(KErrNone, ret);
- CleanupClosePushL(telServer2);
-
- RMobilePhone phone2;
- ret = phone2.Open(iTelServer,KMmTsyPhoneName);
- ASSERT_EQUALS(KErrNone, ret);
- CleanupClosePushL(phone2);
-
- RLine line1;
- RLine line2;
-
- RCall call1;
- RCall call2;
-
- TInt errorCode = KErrNone;
- TRequestStatus requestStatus1;
- TRequestStatus requestStatus2;
-
- // open new line1 and call for KMmTsyVoice1LineName
- errorCode = OpenNewLineLC(iPhone, line1, KMmTsyVoice1LineName);
- ASSERT_EQUALS(KErrNone, errorCode);
-
- // open new line2 and call for KMmTsyVoice1LineName
- errorCode = OpenNewLineLC(phone2, line2, KMmTsyVoice1LineName);
- ASSERT_EQUALS(KErrNone, errorCode);
-
- TName name;
-
- _LIT(KPhoneNumber1, "101632960000");
- _LIT(KPhoneNumber2, "654654864531");
-
- TInt callId1 = 1;
- TInt callId2 = 2;
- RMobilePhone::TMobileService mobileService = RMobilePhone::EVoiceService;
-
- RMobileCall::TMobileCallParamsV7 callParams1;
- callParams1.iInterval = 100;
- callParams1.iCug.iCugIndex = 0xFFFF;
- callParams1.iSpeakerControl = RCall::EMonitorSpeakerControlOnUntilCarrier;
- callParams1.iSpeakerVolume = RCall::EMonitorSpeakerVolumeLow;
- callParams1.iWaitForDialTone = RCall::EDialToneWait;
- callParams1.iIdRestrict = RMobileCall::EIdRestrictDefault;
- callParams1.iCug.iExplicitInvoke = EFalse;
- callParams1.iCug.iSuppressPrefCug = EFalse;
- callParams1.iCug.iSuppressOA = EFalse;
- callParams1.iAutoRedial = EFalse;
-
- RMobileCall::TMobileCallParamsV7 callParams2;
- callParams2.iInterval = 200;
- callParams2.iCug.iCugIndex = 0xFFFF;
- callParams2.iSpeakerControl = RCall::EMonitorSpeakerControlAlwaysOn;
- callParams2.iSpeakerVolume =RCall::EMonitorSpeakerVolumeMedium;
- callParams2.iWaitForDialTone = RCall::EDialToneWait;
- callParams2.iIdRestrict = RMobileCall::EIdRestrictDefault;
- callParams2.iCug.iExplicitInvoke = EFalse;
- callParams2.iCug.iSuppressPrefCug = EFalse;
- callParams2.iCug.iSuppressOA = EFalse;
- callParams2.iAutoRedial = EFalse;
-
-
-
- RMobileCall::TMobileCallInfoV8 callInfo1;
- callInfo1.iDialledParty.iTelNumber.Copy(KPhoneNumber1);
- callInfo1.iService = mobileService;
- callInfo1.iValid = RMobileCall::KCallDialledParty | RMobileCall::KCallAlternating;
- callInfo1.iStatus = RMobileCall::EStatusUnknown;
- callInfo1.iCallId =-1;
- callInfo1.iExitCode =0;
- callInfo1.iEmergency =0;
- callInfo1.iForwarded =0;
- callInfo1.iPrivacy = RMobilePhone::EPrivacyUnspecified;
- callInfo1.iAlternatingCall = RMobilePhone::EAlternatingModeUnspecified;
-
-
- RMobileCall::TMobileCallInfoV8 callInfo2;
- callInfo2.iDialledParty.iTelNumber.Copy(KPhoneNumber2);
- callInfo2.iService = mobileService;
- callInfo2.iValid = RMobileCall::KCallDialledParty | RMobileCall::KCallAlternating;
- callInfo2.iStatus = RMobileCall::EStatusUnknown;
- callInfo2.iCallId =-1;
- callInfo2.iExitCode =0;
- callInfo2.iEmergency =0;
- callInfo2.iForwarded =0;
- callInfo2.iPrivacy = RMobilePhone::EPrivacyUnspecified;
- callInfo2.iAlternatingCall = RMobilePhone::EAlternatingModeUnspecified;
-
- TMockLtsyCallData2<RMobileCall::TMobileCallParamsV7, RMobileCall::TMobileCallInfoV8>
- mockData21(0, mobileService, callParams1, callInfo1);
-
- TMockLtsyCallData2<RMobileCall::TMobileCallParamsV7, RMobileCall::TMobileCallInfoV8>
- mockData22(0, mobileService, callParams2, callInfo2);
-
- TMockLtsyCallData0 mockData01(callId1, mobileService);
- TMockLtsyCallData0 mockData02(callId2, mobileService);
-
- RCall::TCallParams callParamsX1;
- TPckg<RCall::TCallParams> pckgCallParamsX1(callParamsX1);
- callParamsX1.iSpeakerControl = RCall::EMonitorSpeakerControlOnUntilCarrier;
- callParamsX1.iSpeakerVolume = RCall::EMonitorSpeakerVolumeLow;
- callParamsX1.iInterval = 100;
- callParamsX1.iWaitForDialTone = RCall::EDialToneWait;
-
- RCall::TCallParams callParamsX2;
- TPckg<RCall::TCallParams> pckgCallParamsX2(callParamsX2);
- callParamsX2.iSpeakerControl = RCall::EMonitorSpeakerControlAlwaysOn;
- callParamsX2.iSpeakerVolume = RCall::EMonitorSpeakerVolumeMedium;
- callParamsX2.iInterval = 200;
- callParamsX2.iWaitForDialTone = RCall::EDialToneNoWait;
-
- //-------------------------------------------------------------------------
- // Test A: Test multiple clients requesting RCall::Dial
- //-------------------------------------------------------------------------
-
- // call first clinet
- // open new call1
- CleanupClosePushL(call1);
- errorCode = call1.OpenNewCall(line1, name);
- ASSERT_EQUALS(KErrNone, errorCode);
-
- expectData.Close();
- mockData21.SerialiseL(expectData);
- iMockLTSY.ExpectL(EEtelCallDial, expectData);
-
- CallGetMobileCallInfoL(callId1, mobileService, KPhoneNumber1);
- call1.Dial(requestStatus1, pckgCallParamsX1, KPhoneNumber1);
- User::After(1000);
-
- mockData01.SerialiseL(completeData);
- iMockLTSY.CompleteL(EEtelCallDial, KErrNone, completeData);
-
- // call second clinet
- // open new call
- CleanupClosePushL(call2);
- errorCode = call2.OpenNewCall(line2, name);
- ASSERT_EQUALS(KErrNone, errorCode);
-
- call2.Dial(requestStatus2, pckgCallParamsX2, KPhoneNumber2);
-
- User::WaitForRequest(requestStatus1);
- AssertMockLtsyStatusL();
- ASSERT_EQUALS(KErrNone, requestStatus1.Int());
-
- User::WaitForRequest(requestStatus2);
- AssertMockLtsyStatusL();
- ASSERT_EQUALS(KErrServerBusy, requestStatus2.Int());
-
- call1.Close();
- AssertMockLtsyStatusL();
- CleanupStack::PopAndDestroy(1);
-
- call2.Close();
- AssertMockLtsyStatusL();
- CleanupStack::PopAndDestroy(1);
-
- CleanupStack::PopAndDestroy(7, this); // phone2, telServer2, expectData, completeData, this
- // line1, line2
- }
-
-
-/**
-@SYMTestCaseID BA-CTSY-CCON-CD-0005
-@SYMComponent telephony_ctsy
-@SYMTestCaseDesc Test support in CTSY for RCall::Dial with timeout for voice calls
-@SYMTestPriority High
-@SYMTestActions Invokes RCall::Dial and tests for timeout for voice calls
-@SYMTestExpectedResults Pass
-@SYMTestType CT
-*/
-void CCTsyCallControlFU::TestDial0005L()
- {
- OpenEtelServerL(EUseExtendedError);
- CleanupStack::PushL(TCleanupItem(Cleanup,this));
- OpenPhoneL();
-
- RBuf8 expectData;
- CleanupClosePushL(expectData);
-
- RBuf8 completeData;
- CleanupClosePushL(completeData);
-
- RLine line;
- RCall call;
-
- TInt errorCode = KErrNone;
- TRequestStatus requestStatus;
-
- // open new line and call for KMmTsyVoice1LineName
- errorCode = OpenNewLineLC(iPhone, line, KMmTsyVoice1LineName);
- ASSERT_EQUALS(KErrNone, errorCode);
-
-
- TName name;
-
- _LIT(KPhoneNumber, "101632960000");
-
- TInt callId = 1;
- RMobilePhone::TMobileService mobileService = RMobilePhone::EVoiceService;
-
- RMobileCall::TMobileCallParamsV1 callParams;
- callParams.iInterval = 4;
- callParams.iCug.iCugIndex = 0xFFFF;
-
- RMobileCall::TMobileCallInfoV1 callInfo;
- callInfo.iDialledParty.iTelNumber.Copy(KPhoneNumber);
- callInfo.iService = mobileService;
- callInfo.iValid = RMobileCall::KCallDialledParty | RMobileCall::KCallAlternating;
-
- TMockLtsyCallData2<RMobileCall::TMobileCallParamsV1, RMobileCall::TMobileCallInfoV1>
- mockData2(0, mobileService, callParams, callInfo);
-
- TMockLtsyCallData0 mockData0(callId, mobileService);
-
- RCall::TCallParams callParamsX;
- TPckg<RCall::TCallParams> pckgCallParamsX(callParamsX);
- callParamsX.iSpeakerControl = RCall::EMonitorSpeakerControlOnUntilCarrier;
- callParamsX.iSpeakerVolume = RCall::EMonitorSpeakerVolumeLow;
- callParamsX.iInterval = 100;
- callParamsX.iWaitForDialTone = RCall::EDialToneWait;
-
- //-------------------------------------------------------------------------
- // Test A: Test timeout of RCall::Dial
- //-------------------------------------------------------------------------
-
- // open new call
- CleanupClosePushL(call);
- errorCode = call.OpenNewCall(line, name);
- ASSERT_EQUALS(KErrNone, errorCode);
-
- expectData.Close();
- mockData2.SerialiseL(expectData);
- iMockLTSY.ExpectL(EEtelCallDial, expectData);
-
- CallGetMobileCallInfoL(callId, mobileService, KPhoneNumber);
-
- call.Dial(requestStatus, pckgCallParamsX, KPhoneNumber);
-
- User::WaitForRequest(requestStatus);
- AssertMockLtsyStatusL();
- ASSERT_EQUALS(KErrTimedOut, requestStatus.Int());
-
- call.Close();
- AssertMockLtsyStatusL();
- CleanupStack::PopAndDestroy(1);
- CleanupStack::PopAndDestroy(4); // expectData, completeData, this, this
- }
-
-/**
-@SYMTestCaseID BA-CTSY-CCON-CD-0006
-@SYMDEF DEF127552
-@SYMREQ 7745
-@SYMComponent telephony_ctsy
-@SYMTestCaseDesc Test support in CTSY for RCall::Dial for data calls
-@SYMTestPriority High
-@SYMTestActions Invokes RCall::Dial for data calls
-@SYMTestExpectedResults Pass
-@SYMTestType CT
-
-N.B. As the test case BA-CTSY-CCON-CD-0006 has a very long running time, it is split into sub-test cases.
-The rationale for that is as following: When the call duration of a test case exceeds 10sec, CTYS sends
-a life time update to LTSY. If a test case duration is at the border of ~10sec, the life time update
-notification is completed depending on the speed of working environment. It varies machine to machine
-or board to board. Therefore, BA-CTSY-CCON-CD-0006 is divided into smaller parts where each part takes
-far less than 10sec.
-*/
-void CCTsyCallControlFU::TestDial0006L()
- {
- OpenEtelServerL(EUseExtendedError);
- CleanupStack::PushL(TCleanupItem(Cleanup,this));
- OpenPhoneL();
-
- RBuf8 expectData;
- CleanupClosePushL(expectData);
-
- RBuf8 completeData;
- CleanupClosePushL(completeData);
-
- RLine line;
- RCall call;
-
- TInt errorCode = KErrNone;
- TRequestStatus requestStatus;
- TRequestStatus mockLtsyStatus;
-
- // open new line and call for KMmTsyDataLineName
- errorCode = OpenNewLineLC(iPhone, line, KMmTsyDataLineName);
- ASSERT_EQUALS(KErrNone, errorCode);
-
- TName name;
-
- _LIT(KPhoneNumber, "101632960000");
-
- TInt callId = 1;
- RMobilePhone::TMobileService mobileService = RMobilePhone::ECircuitDataService;
-
- RMobileCall::TMobileDataCallParamsV1 callParams;
- callParams.iInterval = 4;
- callParams.iCug.iCugIndex = 0xFFFF;
- callParams.iIdRestrict = RMobileCall::EIdRestrictDefault;
- callParams.iCug.iExplicitInvoke = EFalse;
- callParams.iCug.iSuppressPrefCug = EFalse;
- callParams.iCug.iSuppressOA = EFalse;
- callParams.iAutoRedial = EFalse;
-
- RMobileCall::TMobileCallInfoV8 callInfo;
- callInfo.iDialledParty.iTelNumber.Copy(KPhoneNumber);
- callInfo.iService = mobileService;
- callInfo.iValid = RMobileCall::KCallDialledParty | RMobileCall::KCallAlternating;
-
- TMockLtsyCallData2<RMobileCall::TMobileDataCallParamsV1, RMobileCall::TMobileCallInfoV8>
- mockData2(0, mobileService, callParams, callInfo);
-
- TMockLtsyCallData0 mockData0(callId, mobileService);
-
- TPckg<RMobileCall::TMobileDataCallParamsV1> pckgMockParams1(callParams);
-
- RCall::TCallParams callParamsX;
-
- callParamsX.iSpeakerControl = RCall::EMonitorSpeakerControlOnUntilCarrier;
- callParamsX.iSpeakerVolume = RCall::EMonitorSpeakerVolumeLow;
- callParamsX.iInterval = 100;
- callParamsX.iWaitForDialTone = RCall::EDialToneWait;
-
-
- //-------------------------------------------------------------------------
- // TEST A: failure to dispatch request to LTSY
- //-------------------------------------------------------------------------
-
- // open new call
- CleanupClosePushL(call);
- errorCode = call.OpenNewCall(line, name);
- ASSERT_EQUALS(KErrNone, errorCode);
-
- expectData.Close();
- mockData2.SerialiseL(expectData);
- iMockLTSY.ExpectL(EEtelCallDial, expectData, KErrNotSupported);
-
- call.Dial(requestStatus, pckgMockParams1, KPhoneNumber);
- User::WaitForRequest(requestStatus);
- AssertMockLtsyStatusL();
- ASSERT_EQUALS(KErrNotSupported, requestStatus.Int());
-
- call.Close();
- AssertMockLtsyStatusL();
- CleanupStack::PopAndDestroy(1);
-
- //-------------------------------------------------------------------------
- // TEST B: failure on completion of pending request from LTSY->CTSY
- //-------------------------------------------------------------------------
-
- // open new call
- CleanupClosePushL(call);
- errorCode = call.OpenNewCall(line, name);
- ASSERT_EQUALS(KErrNone, errorCode);
-
- expectData.Close();
- mockData2.SerialiseL(expectData);
- iMockLTSY.ExpectL(EEtelCallDial, expectData);
-
- CallGetMobileCallInfoL(callId, mobileService, KPhoneNumber);
-
- mockData0.SerialiseL(completeData);
- iMockLTSY.CompleteL(EEtelCallDial, KErrGeneral, completeData);
-
- call.Dial(requestStatus, pckgMockParams1, KPhoneNumber);
- User::WaitForRequest(requestStatus);
- AssertMockLtsyStatusL();
- ASSERT_EQUALS(KErrGeneral, requestStatus.Int());
-
- call.Close();
- AssertMockLtsyStatusL();
- CleanupStack::PopAndDestroy(1);
-
- //-------------------------------------------------------------------------
- // TEST C: Successful completion request of
- // RCall::Dial when result is not cached.
- //-------------------------------------------------------------------------
-
- // open new call
- CleanupClosePushL(call);
- errorCode = call.OpenNewCall(line, name);
- ASSERT_EQUALS(KErrNone, errorCode);
-
- expectData.Close();
- mockData2.SerialiseL(expectData);
- iMockLTSY.ExpectL(EEtelCallDial, expectData);
-
- CallGetMobileCallInfoL(callId, mobileService, KPhoneNumber);
-
- completeData.Close();
- mockData0.SerialiseL(completeData);
- iMockLTSY.CompleteL(EEtelCallDial, KErrNone, completeData);
-
- // we are dialing the call:
- call.Dial(requestStatus, pckgMockParams1, KPhoneNumber);
-
- CompleteDialStatusNotificationsL(call, callId, mobileService );
-
- // completion of the Dial() request:
- User::WaitForRequest(requestStatus);
- ASSERT_EQUALS(KErrNone, requestStatus.Int());
-
- CompleteCallDisconnectNotificationsL(callId, mobileService);
-
- call.Close();
- CleanupStack::PopAndDestroy(1);
-
- //-------------------------------------------------------------------------
- // TEST D (Reloaded): Successful completion request of
- // RCall::Dial with TCallParams when result is not cached.
- //-------------------------------------------------------------------------
-
- // open new call
- CleanupClosePushL(call);
- errorCode = call.OpenNewCall(line, name);
- ASSERT_EQUALS(KErrNone, errorCode);
-
- RMobileCall::TMobileDataCallParamsV8 callParamsDefault;
- callParamsDefault.iInterval = 4;
- callParamsDefault.iCug.iCugIndex = 0xFFFF;
- callParamsDefault.iIdRestrict = RMobileCall::EIdRestrictDefault;
- callParamsDefault.iCug.iExplicitInvoke = EFalse;
- callParamsDefault.iCug.iSuppressPrefCug = EFalse;
- callParamsDefault.iCug.iSuppressOA = EFalse;
- callParamsDefault.iAutoRedial = EFalse;
-
- TMockLtsyCallData2<RMobileCall::TMobileDataCallParamsV8, RMobileCall::TMobileCallInfoV8>
- mockData3(0, mobileService, callParamsDefault, callInfo);
-
- expectData.Close();
- mockData3.SerialiseL(expectData);
- iMockLTSY.ExpectL(EEtelCallDial, expectData);
-
- CallGetMobileCallInfoL(callId, mobileService, KPhoneNumber);
-
- completeData.Close();
- mockData0.SerialiseL(completeData);
- iMockLTSY.CompleteL(EEtelCallDial, KErrNone, completeData);
-
- TPckg<RCall::TCallParams> pckgCallParamsX(callParamsX); // passing TCallParams
-
- // we are dialing the call:
- call.Dial(requestStatus, pckgCallParamsX, KPhoneNumber);
-
- CompleteDialStatusNotificationsL(call, callId, mobileService );
-
- // completion of the Dial() request:
- User::WaitForRequest(requestStatus);
- ASSERT_EQUALS(KErrNone, requestStatus.Int());
-
- CompleteCallDisconnectNotificationsL(callId, mobileService);
-
- call.Close();
- CleanupStack::PopAndDestroy(1);
-
- CleanupStack::PopAndDestroy(4, this); // expectData, completeData, line, this
- }
-
-/**
-@SYMTestCaseID BA-CTSY-CCON-CD-0006b
-@SYMDEF DEF127552
-@SYMREQ 7745
-@SYMComponent telephony_ctsy
-@SYMTestCaseDesc Test support in CTSY for RCall::Dial for data calls. It is in connection to BA-CTSY-CCON-CD-0006.
-@SYMTestPriority High
-@SYMTestActions Invokes RCall::Dial for data calls
-@SYMTestExpectedResults Pass
-@SYMTestType CT
-*/
-void CCTsyCallControlFU::TestDial0006bL()
- {
- OpenEtelServerL(EUseExtendedError);
- CleanupStack::PushL(TCleanupItem(Cleanup,this));
- OpenPhoneL();
-
- RBuf8 expectData;
- CleanupClosePushL(expectData);
-
- RBuf8 completeData;
- CleanupClosePushL(completeData);
-
- RLine line;
- RCall call;
-
- TInt errorCode = KErrNone;
- TRequestStatus requestStatus;
- TRequestStatus mockLtsyStatus;
-
- // open new line and call for KMmTsyDataLineName
- errorCode = OpenNewLineLC(iPhone, line, KMmTsyDataLineName);
- ASSERT_EQUALS(KErrNone, errorCode);
-
- TName name;
-
- _LIT(KPhoneNumber, "101632960000");
-
- TInt callId = 1;
- RMobilePhone::TMobileService mobileService = RMobilePhone::ECircuitDataService;
-
- RMobileCall::TMobileDataCallParamsV1 callParams;
- callParams.iInterval = 4;
- callParams.iCug.iCugIndex = 0xFFFF;
-
- RMobileCall::TMobileCallInfoV8 callInfo;
- callInfo.iDialledParty.iTelNumber.Copy(KPhoneNumber);
- callInfo.iService = mobileService;
- callInfo.iValid = RMobileCall::KCallDialledParty | RMobileCall::KCallAlternating;
-
- TMockLtsyCallData2<RMobileCall::TMobileDataCallParamsV1, RMobileCall::TMobileCallInfoV8>
- mockData2(0, mobileService, callParams, callInfo);
-
- TMockLtsyCallData0 mockData0(callId, mobileService);
- TPckg<RMobileCall::TMobileDataCallParamsV1> pckgMockParams1(callParams);
-
- //-------------------------------------------------------------------------
- // TEST E: Unsolicited completion of RCall::Dial
- // from LTSY.
- //-------------------------------------------------------------------------
-
- iMockLTSY.NotifyTerminated(mockLtsyStatus);
- expectData.Close();
- mockData0.SerialiseL(expectData);
- iMockLTSY.CompleteL(EEtelCallDial, KErrNone, expectData);
- User::WaitForRequest(mockLtsyStatus);
- AssertMockLtsyStatusL();
- ASSERT_EQUALS(KErrNone, mockLtsyStatus.Int());
-
- //-------------------------------------------------------------------------
- // TEST : to increase CMmDataCallTsy::Dial coverage
- // covers "else if ( RMobileCall::EStatusIdle != iMobileCallStatus )" condition
- //-------------------------------------------------------------------------
-
- TName incomingCallName;
- RMobileCall::TMobileCallStatus mobileCallStatus = RMobileCall::EStatusRinging;
-
- //-------------------------------------------------------------------------
- // create new incoming call
- errorCode = CreateIncomingCallL(line, callId, incomingCallName,
- mobileService, mobileCallStatus);
- ASSERT_EQUALS(KErrNone, errorCode);
-
- //-------------------------------------------------------------------------
-
- //-------------------------------------------------------------------------
- // open new call
- CleanupClosePushL(call);
- errorCode = call.OpenExistingCall(line, incomingCallName);
- ASSERT_EQUALS(KErrNone, errorCode);
- //-------------------------------------------------------------------------
-
- call.Dial(requestStatus, pckgMockParams1, KPhoneNumber);
-
- User::WaitForRequest(requestStatus);
- AssertMockLtsyStatusL();
- ASSERT_EQUALS(KErrNotReady, requestStatus.Int());
-
- //-------------------------------------------------------------------------
- // close incoming call
- TInt hangUpCause = KErrGsmReleaseByUser;
- TBool autoStChangeDisable = EFalse;
- RMobilePhone::TMobileService mobileServiceX = RMobilePhone::ECircuitDataService;
- TMockLtsyCallData2<TInt, TBool> mockData2x(callId, mobileServiceX,
- hangUpCause,
- autoStChangeDisable);
- expectData.Close();
- mockData2x.SerialiseL(expectData);
- iMockLTSY.ExpectL(EEtelCallHangUp, expectData);
-
- call.Close();
- AssertMockLtsyStatusL();
- CleanupStack::PopAndDestroy(1);
-
- //-------------------------------------------------------------------------
- // TEST : to increase CMmDataCallTsy::Dial coverage
- // covers "else" condition in case of impossible of conditions
- // "if ( ERfsStateInfoInactive == iMmPhone->GetRfStateInfo() )",
- // "else if ( RMobileCall::EStatusIdle != iMobileCallStatus )" and
- // "else if ( 0 < dialHandle )"
- //-------------------------------------------------------------------------
-
- mobileCallStatus = RMobileCall::EStatusDisconnectingWithInband;
- TInt callId3 = 3;
- TName incomingCallName3;
-
- //-------------------------------------------------------------------------
- // create new incoming call
- errorCode = CreateIncomingCallL(line, callId3, incomingCallName3,
- mobileService, mobileCallStatus);
- ASSERT_EQUALS(KErrNone, errorCode);
- AssertMockLtsyStatusL();
- //-------------------------------------------------------------------------
-
- mobileCallStatus = RMobileCall::EStatusDisconnecting;
- TInt callId2 = 2;
- TName incomingCallName2;
-
- //-------------------------------------------------------------------------
- // create new incoming call
- errorCode = CreateIncomingCallL(line, callId2, incomingCallName2,
- mobileService, mobileCallStatus);
- ASSERT_EQUALS(KErrNone, errorCode);
- AssertMockLtsyStatusL();
- //-------------------------------------------------------------------------
-
- mobileCallStatus = RMobileCall::EStatusRinging;
- //-------------------------------------------------------------------------
- // create new incoming call
- errorCode = CreateIncomingCallL(line, callId, incomingCallName,
- mobileService, mobileCallStatus);
- ASSERT_EQUALS(KErrNone, errorCode);
- AssertMockLtsyStatusL();
- //-------------------------------------------------------------------------
-
- // open new call
- CleanupClosePushL(call);
- errorCode = call.OpenNewCall(line, name);
- ASSERT_EQUALS(KErrNone, errorCode);
-
- call.Dial(requestStatus, pckgMockParams1, KPhoneNumber);
-
- User::WaitForRequest(requestStatus);
- ASSERT_EQUALS(KErrEtelCallAlreadyActive, requestStatus.Int());
-
- call.Close();
- AssertMockLtsyStatusL();
- CleanupStack::PopAndDestroy(1);
-
- //-------------------------------------------------------------------------
- // TEST : to increase CMmDataCallTsy::Dial coverage
- // covers "if ( ERfsStateInfoInactive == iMmPhone->GetRfStateInfo() )" condition
- //-------------------------------------------------------------------------
-
- // open new call
- CleanupClosePushL(call);
- errorCode = call.OpenNewCall(line, name);
- ASSERT_EQUALS(KErrNone, errorCode);
-
- iMockLTSY.NotifyTerminated(mockLtsyStatus);
- TRfStateInfo rfInfo = ERfsStateInfoInactive;
- TMockLtsyData1<TRfStateInfo> mockData1(rfInfo);
- expectData.Close();
- mockData1.SerialiseL(expectData);
- iMockLTSY.CompleteL(EMmTsyBootGetRFStatusIPC, KErrNone, expectData);
- User::WaitForRequest(mockLtsyStatus);
- AssertMockLtsyStatusL();
- ASSERT_EQUALS(KErrNone, mockLtsyStatus.Int());
-
- call.Close();
- AssertMockLtsyStatusL();
- CleanupStack::PopAndDestroy(1);
-
- iMockLTSY.NotifyTerminated(mockLtsyStatus);
- rfInfo = (TRfStateInfo) 0;
- TMockLtsyData1<TRfStateInfo> mockDataRf(rfInfo);
- expectData.Close();
- mockDataRf.SerialiseL(expectData);
- iMockLTSY.CompleteL(EMmTsyBootGetRFStatusIPC, KErrNone, expectData);
- User::WaitForRequest(mockLtsyStatus);
- AssertMockLtsyStatusL();
- ASSERT_EQUALS(KErrNone, mockLtsyStatus.Int());
-
- // call CMmVoiceCallTsy::CompleteNotifyStatusChange for setting
- // iMobileCallStatus = RMobileCall::EStatusIdle.
- RMobileCall::TMobileCallStatus mobileCallSt = RMobileCall::EStatusIdle;
- TMockLtsyCallData1<RMobileCall::TMobileCallStatus> mockCallDataStatus2(callId, mobileService, mobileCallSt);
- completeData.Close();
- mockCallDataStatus2.SerialiseL(completeData);
-
- iMockLTSY.NotifyTerminated(mockLtsyStatus);
- iMockLTSY.CompleteL(EMobileCallNotifyMobileCallStatusChange, KErrNone, completeData);
-
- User::WaitForRequest(mockLtsyStatus);
- ASSERT_EQUALS(KErrNone, mockLtsyStatus.Int());
-
- //-------------------------------------------------------------------------
- // Tests for TMobileDataCallParamsV2
-
- RMobileCall::TMobileDataCallParamsV2 dataCallParams2;
- dataCallParams2.iInterval = 4;
- dataCallParams2.iCug.iCugIndex = 0xFFFF;
- dataCallParams2.iQoS = RMobileCall::EQosTransparentPreferred;
- dataCallParams2.iBearerMode = RMobileCall::EMulticallShareBearer;
-
- TMockLtsyCallData2<RMobileCall::TMobileDataCallParamsV2, RMobileCall::TMobileCallInfoV8>
- mockDataCallParams2(0, mobileService, dataCallParams2, callInfo);
-
- TPckg<RMobileCall::TMobileDataCallParamsV2> pckgMockDataCallParams2(dataCallParams2);
-
- //-------------------------------------------------------------------------
- // TEST A2: failure to dispatch request to LTSY
- //-------------------------------------------------------------------------
-
- // open new call
- CleanupClosePushL(call);
- errorCode = call.OpenNewCall(line, name);
- ASSERT_EQUALS(KErrNone, errorCode);
-
- // expectData.Close();
- mockDataCallParams2.SerialiseL(expectData);
- iMockLTSY.ExpectL(EEtelCallDial, expectData, KErrNotSupported);
-
- call.Dial(requestStatus, pckgMockDataCallParams2, KPhoneNumber);
- User::WaitForRequest(requestStatus);
- ASSERT_EQUALS(KErrNotSupported, requestStatus.Int());
-
- call.Close();
- AssertMockLtsyStatusL();
- CleanupStack::PopAndDestroy(1);
-
- //-------------------------------------------------------------------------
- // TEST B2: failure on completion of pending request from LTSY->CTSY
- //-------------------------------------------------------------------------
-
- // open new call
- CleanupClosePushL(call);
- errorCode = call.OpenNewCall(line, name);
- ASSERT_EQUALS(KErrNone, errorCode);
-
- expectData.Close();
- mockDataCallParams2.SerialiseL(expectData);
- iMockLTSY.ExpectL(EEtelCallDial, expectData);
-
- CallGetMobileCallInfoL(callId, mobileService, KPhoneNumber);
-
- mockData0.SerialiseL(completeData);
- iMockLTSY.CompleteL(EEtelCallDial, KErrGeneral, completeData);
-
- call.Dial(requestStatus, pckgMockDataCallParams2, KPhoneNumber);
- User::WaitForRequest(requestStatus);
- AssertMockLtsyStatusL();
- ASSERT_EQUALS(KErrGeneral, requestStatus.Int());
-
- call.Close();
- AssertMockLtsyStatusL();
- CleanupStack::PopAndDestroy(1);
-
- //-------------------------------------------------------------------------
- // TEST C2: Successful completion request of
- // RCall::Dial when result is not cached
- //-------------------------------------------------------------------------
-
- // open new call
- CleanupClosePushL(call);
- errorCode = call.OpenNewCall(line, name);
- ASSERT_EQUALS(KErrNone, errorCode);
-
- expectData.Close();
- mockDataCallParams2.SerialiseL(expectData);
- iMockLTSY.ExpectL(EEtelCallDial, expectData);
-
- CallGetMobileCallInfoL(callId, mobileService, KPhoneNumber);
-
- completeData.Close();
- mockData0.SerialiseL(completeData);
- iMockLTSY.CompleteL(EEtelCallDial, KErrNone, completeData);
-
- // we are dialing the call:
- call.Dial(requestStatus, pckgMockDataCallParams2, KPhoneNumber);
-
- CompleteDialStatusNotificationsL(call, callId, mobileService );
-
- // completion of the Dial() request:
- User::WaitForRequest(requestStatus);
- ASSERT_EQUALS(KErrNone, requestStatus.Int());
-
- CompleteCallDisconnectNotificationsL(callId, mobileService);
-
- call.Close();
- CleanupStack::PopAndDestroy(1);
- CleanupStack::PopAndDestroy(4, this); // expectData, completeData, line, this
- }
-
-// Returns sample call information variable
-void GetCallInformation8(RMobileCall::TMobileCallInfoV8& aCallInformation, const TDesC& aPhoneNumber, RMobilePhone::TMobileService aMobileService)
- {
- aCallInformation.iDialledParty.iTelNumber.Copy(aPhoneNumber);
- aCallInformation.iService = aMobileService;
- aCallInformation.iValid = RMobileCall::KCallDialledParty | RMobileCall::KCallAlternating;
- aCallInformation.iAlphaId.Copy(_L("Alpha Id"));
- aCallInformation.iValid |= RMobileCall::KCallAlphaId;
- aCallInformation.iCallParamOrigin = RMobileCall::EOriginatorSIM;;
- aCallInformation.iValid |= RMobileCall::KCallParamOrigin;
- }
-
-// Returns sample call params variable
-void GetCallParams8(RMobileCall::TMobileDataCallParamsV8& aDataCallParams)
- {
- aDataCallParams.iInterval = 4;
- aDataCallParams.iCug.iCugIndex = 0xFFFF;
- aDataCallParams.iQoS = RMobileCall::EQosTransparentPreferred;
- aDataCallParams.iBearerMode = RMobileCall::EMulticallShareBearer;
- aDataCallParams.iSubAddress.Copy(_L("An Unknown SubAddress"));
- aDataCallParams.iAlphaId.Copy(_L("Alpha Id"));
- aDataCallParams.iCallParamOrigin = RMobileCall::EOriginatorSIM;
- }
-
-/**
-@SYMTestCaseID BA-CTSY-CCON-CD-0006c
-@SYMDEF DEF127552
-@SYMREQ 7745
-@SYMComponent telephony_ctsy
-@SYMTestCaseDesc Test support in CTSY for RCall::Dial for data calls. It is in connection to BA-CTSY-CCON-CD-0006.
-@SYMTestPriority High
-@SYMTestActions Invokes RCall::Dial for data calls
-@SYMTestExpectedResults Pass
-@SYMTestType CT
-*/
-void CCTsyCallControlFU::TestDial0006cL()
- {
- OpenEtelServerL(EUseExtendedError);
- CleanupStack::PushL(TCleanupItem(Cleanup,this));
- OpenPhoneL();
-
- RBuf8 expectData;
- CleanupClosePushL(expectData);
-
- RBuf8 completeData;
- CleanupClosePushL(completeData);
-
- RLine line;
- RCall call;
-
- TInt errorCode = KErrNone;
- TRequestStatus requestStatus;
- TRequestStatus mockLtsyStatus;
-
- // open new line and call for KMmTsyDataLineName
- errorCode = OpenNewLineLC(iPhone, line, KMmTsyDataLineName);
- ASSERT_EQUALS(KErrNone, errorCode);
-
- TName name;
-
- _LIT(KPhoneNumber, "135468456456");
-
- TInt callId = 1;
- RMobilePhone::TMobileService mobileService = RMobilePhone::ECircuitDataService;
- TMockLtsyCallData0 mockData0(callId, mobileService);
-
- //-------------------------------------------------------------------------
- // Tests for TMobileDataCallParamsV8
-
- RMobileCall::TMobileCallInfoV8 callInformation;
- GetCallInformation8(callInformation, KPhoneNumber(), mobileService);
-
- RMobileCall::TMobileDataCallParamsV8 dataCallParams8;
- GetCallParams8(dataCallParams8);
-
- TMockLtsyCallData2<RMobileCall::TMobileDataCallParamsV8, RMobileCall::TMobileCallInfoV8>
- mockDataCallParams8(0, mobileService, dataCallParams8, callInformation);
-
- TPckg<RMobileCall::TMobileDataCallParamsV8> pckgMockDataCallParams8(dataCallParams8);
-
- //-------------------------------------------------------------------------
- // TEST A3: failure to dispatch request to LTSY
- //-------------------------------------------------------------------------
-
- // open new call
- CleanupClosePushL(call);
- errorCode = call.OpenNewCall(line, name);
- ASSERT_EQUALS(KErrNone, errorCode);
-
- expectData.Close();
- mockDataCallParams8.SerialiseL(expectData);
- iMockLTSY.ExpectL(EEtelCallDial, expectData, KErrNotSupported);
-
- call.Dial(requestStatus, pckgMockDataCallParams8, KPhoneNumber);
- User::WaitForRequest(requestStatus);
- ASSERT_EQUALS(KErrNotSupported, requestStatus.Int());
-
- call.Close();
- AssertMockLtsyStatusL();
- CleanupStack::PopAndDestroy(1);
-
- //-------------------------------------------------------------------------
- // TEST B3: failure on completion of pending request from LTSY->CTSY
- //-------------------------------------------------------------------------
-
- // open new call
- CleanupClosePushL(call);
- errorCode = call.OpenNewCall(line, name);
- ASSERT_EQUALS(KErrNone, errorCode);
-
- expectData.Close();
- mockDataCallParams8.SerialiseL(expectData);
- iMockLTSY.ExpectL(EEtelCallDial, expectData);
-
- CallGetMobileCallInfoL(callId, mobileService, KPhoneNumber);
-
- mockData0.SerialiseL(completeData);
- iMockLTSY.CompleteL(EEtelCallDial, KErrGeneral, completeData);
-
- call.Dial(requestStatus, pckgMockDataCallParams8, KPhoneNumber);
- User::WaitForRequest(requestStatus);
- ASSERT_EQUALS(KErrGeneral, requestStatus.Int());
-
- call.Close();
- AssertMockLtsyStatusL();
- CleanupStack::PopAndDestroy(1);
-
- //-------------------------------------------------------------------------
- // TEST C3: Successful completion request of
- // RCall::Dial when result is not cached
- //-------------------------------------------------------------------------
-
- // open new call
- CleanupClosePushL(call);
- errorCode = call.OpenNewCall(line, name);
- ASSERT_EQUALS(KErrNone, errorCode);
-
- expectData.Close();
- mockDataCallParams8.SerialiseL(expectData);
- iMockLTSY.ExpectL(EEtelCallDial, expectData);
-
- CallGetMobileCallInfoL(callId, mobileService, KPhoneNumber);
-
- completeData.Close();
- mockData0.SerialiseL(completeData);
- iMockLTSY.CompleteL(EEtelCallDial, KErrNone, completeData);
-
- // we are dialing the call:
- call.Dial(requestStatus, pckgMockDataCallParams8, KPhoneNumber);
-
- CompleteDialStatusNotificationsL(call, callId, mobileService );
-
- // completion of the Dial() request:
- User::WaitForRequest(requestStatus);
- ASSERT_EQUALS(KErrNone, requestStatus.Int());
-
- CompleteCallDisconnectNotificationsL(callId, mobileService);
-
- call.Close();
- CleanupStack::PopAndDestroy(1); // call
- CleanupStack::PopAndDestroy(4, this); // expectData, completeData, line, this
- }
-
-/**
-@SYMTestCaseID BA-CTSY-CCON-CD-0006d
-@SYMDEF DEF127552
-@SYMREQ 7745
-@SYMComponent telephony_ctsy
-@SYMTestCaseDesc Test support in CTSY for RCall::Dial for data calls. It is in connection to BA-CTSY-CCON-CD-0006.
-@SYMTestPriority High
-@SYMTestActions Invokes RCall::Dial for data calls
-@SYMTestExpectedResults Pass
-@SYMTestType CT
-*/
-void CCTsyCallControlFU::TestDial0006dL()
- {
- OpenEtelServerL(EUseExtendedError);
- CleanupStack::PushL(TCleanupItem(Cleanup,this));
- OpenPhoneL();
-
- RBuf8 expectData;
- CleanupClosePushL(expectData);
-
- RBuf8 completeData;
- CleanupClosePushL(completeData);
-
- RLine line;
- RCall call;
-
- TInt errorCode = KErrNone;
- TRequestStatus requestStatus;
- TRequestStatus mockLtsyStatus;
-
- // open new line and call for KMmTsyDataLineName
- errorCode = OpenNewLineLC(iPhone, line, KMmTsyDataLineName);
- ASSERT_EQUALS(KErrNone, errorCode);
-
- TName name;
- _LIT(KPhoneNumber, "135468456456");
-
- TInt callId = 1;
- RMobilePhone::TMobileService mobileService = RMobilePhone::ECircuitDataService;
- TMockLtsyCallData0 mockData0(callId, mobileService);
-
- RMobileCall::TMobileCallInfoV8 callInformation;
- GetCallInformation8(callInformation, KPhoneNumber(), mobileService);
-
- RMobileCall::TMobileDataCallParamsV8 dataCallParams8;
- GetCallParams8(dataCallParams8);
-
- TMockLtsyCallData2<RMobileCall::TMobileDataCallParamsV8, RMobileCall::TMobileCallInfoV8>
- mockDataCallParams8(0, mobileService, dataCallParams8, callInformation);
-
- TPckg<RMobileCall::TMobileDataCallParamsV8> pckgMockDataCallParams8(dataCallParams8);
-
- //-------------------------------------------------------------------------
- // Tests for default parameters
-
- //-------------------------------------------------------------------------
- // TEST A4: failure to dispatch request to LTSY
- //-------------------------------------------------------------------------
-
- // open new call
- CleanupClosePushL(call);
- errorCode = call.OpenNewCall(line, name);
- ASSERT_EQUALS(KErrNone, errorCode);
-
- expectData.Close();
- mockDataCallParams8.SerialiseL(expectData);
- iMockLTSY.ExpectL(EEtelCallDial, expectData, KErrNotSupported);
-
- call.Dial(requestStatus, KPhoneNumber);
- User::WaitForRequest(requestStatus);
- ASSERT_EQUALS(KErrNotSupported, requestStatus.Int());
-
- call.Close();
- AssertMockLtsyStatusL();
- CleanupStack::PopAndDestroy(1);
-
- //-------------------------------------------------------------------------
- // TEST B4: failure on completion of pending request from LTSY->CTSY
- //-------------------------------------------------------------------------
-
- // open new call
- CleanupClosePushL(call);
- errorCode = call.OpenNewCall(line, name);
- ASSERT_EQUALS(KErrNone, errorCode);
-
- expectData.Close();
- mockDataCallParams8.SerialiseL(expectData);
- iMockLTSY.ExpectL(EEtelCallDial, expectData);
-
- CallGetMobileCallInfoL(callId, mobileService, KPhoneNumber);
-
- mockData0.SerialiseL(completeData);
- iMockLTSY.CompleteL(EEtelCallDial, KErrGeneral, completeData);
-
- call.Dial(requestStatus, KPhoneNumber);
- User::WaitForRequest(requestStatus);
- ASSERT_EQUALS(KErrGeneral, requestStatus.Int());
-
- call.Close();
- AssertMockLtsyStatusL();
- CleanupStack::PopAndDestroy(1);
-
- //-------------------------------------------------------------------------
- // TEST C4: Successful completion request of
- // RCall::Dial when result is not cached
- //-------------------------------------------------------------------------
-
- // open new call
- CleanupClosePushL(call);
- errorCode = call.OpenNewCall(line, name);
- ASSERT_EQUALS(KErrNone, errorCode);
-
- expectData.Close();
- mockDataCallParams8.SerialiseL(expectData);
- iMockLTSY.ExpectL(EEtelCallDial, expectData);
-
- CallGetMobileCallInfoL(callId, mobileService, KPhoneNumber);
-
- completeData.Close();
- mockData0.SerialiseL(completeData);
- iMockLTSY.CompleteL(EEtelCallDial, KErrNone, completeData);
-
- // we are dialing the call:
- call.Dial(requestStatus, KPhoneNumber);
-
- CompleteDialStatusNotificationsL(call, callId, mobileService );
-
- // completion of the Dial() request:
- User::WaitForRequest(requestStatus);
- ASSERT_EQUALS(KErrNone, requestStatus.Int());
-
- CompleteCallDisconnectNotificationsL(callId, mobileService);
-
- call.Close();
- CleanupStack::PopAndDestroy(1); // call
-
- CleanupStack::PopAndDestroy(4, this); // expectData, completeData, line, this
- }
-
-/**
-@SYMTestCaseID BA-CTSY-CCON-CD-0006e
-@SYMComponent telephony_ctsy
-@SYMTestCaseDesc Test support in CTSY for RCall::Dial for data calls with HscsdCallParams. It is in connection to BA-CTSY-CCON-CD-0006
-@SYMTestPriority High
-@SYMTestActions Invokes RCall::Dial for data calls
-@SYMTestExpectedResults Pass
-@SYMTestType CT
-*/
-void CCTsyCallControlFU::TestDial0006eL()
- {
- OpenEtelServerL(EUseExtendedError);
- CleanupStack::PushL(TCleanupItem(Cleanup,this));
- OpenPhoneL();
-
- RBuf8 expectData;
- CleanupClosePushL(expectData);
-
- RBuf8 completeData;
- CleanupClosePushL(completeData);
-
- RLine line;
- RCall call;
-
- TInt errorCode = KErrNone;
- TRequestStatus requestStatus;
- TRequestStatus mockLtsyStatus;
-
- // open new line and call for KMmTsyDataLineName
- errorCode = OpenNewLineLC(iPhone, line, KMmTsyDataLineName);
- ASSERT_EQUALS(KErrNone, errorCode);
-
- TName name;
-
- _LIT(KPhoneNumber, "101632960000");
-
- TInt callId = 1;
- RMobilePhone::TMobileService mobileService = RMobilePhone::ECircuitDataService;
-
- RMobileCall::TMobileCallInfoV8 callInfo;
- callInfo.iDialledParty.iTelNumber.Copy(KPhoneNumber);
- callInfo.iService = mobileService;
- callInfo.iValid = RMobileCall::KCallDialledParty | RMobileCall::KCallAlternating;
-
- //-------------------------------------------------------------------------
- // Test: Test passing RMobileCall::TMobileHscsdCallParamsV1 to
- // RCall::Dial
- //-------------------------------------------------------------------------
-
- RMobileCall::TMobileHscsdCallParamsV1 hscsdCallParams;
-
- TMockLtsyCallData2<RMobileCall::TMobileHscsdCallParamsV1, RMobileCall::TMobileCallInfoV8>
- mockHscsdData(0, mobileService, hscsdCallParams, callInfo);
-
- TPckg<RMobileCall::TMobileHscsdCallParamsV1> pckgMockHscsdParams1(hscsdCallParams);
-
- //-------------------------------------------------------------------------
- // TEST A4: failure to dispatch request to LTSY
- //-------------------------------------------------------------------------
-
- // open new call
- CleanupClosePushL(call);
- errorCode = call.OpenNewCall(line, name);
- ASSERT_EQUALS(KErrNone, errorCode);
-
- expectData.Close();
- mockHscsdData.SerialiseL(expectData);
- iMockLTSY.ExpectL(EEtelCallDial, expectData, KErrNotSupported);
-
- call.Dial(requestStatus, pckgMockHscsdParams1, KPhoneNumber);
- User::WaitForRequest(requestStatus);
- ASSERT_EQUALS(KErrNotSupported, requestStatus.Int());
-
- call.Close();
- AssertMockLtsyStatusL();
- CleanupStack::PopAndDestroy(1);
-
- //-------------------------------------------------------------------------
- // TEST B4: failure on completion of pending request from LTSY->CTSY
- //-------------------------------------------------------------------------
-
- // open new call
- CleanupClosePushL(call);
- errorCode = call.OpenNewCall(line, name);
- ASSERT_EQUALS(KErrNone, errorCode);
-
- expectData.Close();
- mockHscsdData.SerialiseL(expectData);
- iMockLTSY.ExpectL(EEtelCallDial, expectData);
-
- CallGetMobileCallInfoL(callId, mobileService, KPhoneNumber);
-
- TMockLtsyCallData0 mockData0(callId, mobileService);
- mockData0.SerialiseL(completeData);
- iMockLTSY.CompleteL(EEtelCallDial, KErrGeneral, completeData);
-
- call.Dial(requestStatus, pckgMockHscsdParams1, KPhoneNumber);
- User::WaitForRequest(requestStatus);
- ASSERT_EQUALS(KErrGeneral, requestStatus.Int());
-
- call.Close();
- AssertMockLtsyStatusL();
- CleanupStack::PopAndDestroy(1);
-
- //-------------------------------------------------------------------------
- // TEST C4: Successful completion request of
- // RCall::Dial when result is not cached
- //-------------------------------------------------------------------------
-
- // open new call
- CleanupClosePushL(call);
- errorCode = call.OpenNewCall(line, name);
- ASSERT_EQUALS(KErrNone, errorCode);
-
- expectData.Close();
- mockHscsdData.SerialiseL(expectData);
- iMockLTSY.ExpectL(EEtelCallDial, expectData);
-
- CallGetMobileCallInfoL(callId, mobileService, KPhoneNumber);
-
- mockData0.SerialiseL(completeData);
- iMockLTSY.CompleteL(EEtelCallDial, KErrNone, completeData);
-
- // we are dialing the call:
- call.Dial(requestStatus, pckgMockHscsdParams1, KPhoneNumber);
-
- CompleteDialStatusNotificationsL(call, callId, mobileService );
-
- // completion of the Dial() request:
- User::WaitForRequest(requestStatus);
- ASSERT_EQUALS(KErrNone, requestStatus.Int());
-
- CompleteCallDisconnectNotificationsL(callId, mobileService);
-
- call.Close();
- CleanupStack::PopAndDestroy(1);
- CleanupStack::PopAndDestroy(4, this); // expectData, completeData, line, this
- }
-
-/**
-@SYMTestCaseID BA-CTSY-CCON-CD-0006f
-@SYMComponent telephony_ctsy
-@SYMTestCaseDesc Test support in CTSY for RCall::Dial for data calls with HscsdCallParams. It is in connection to BA-CTSY-CCON-CD-0006
-@SYMTestPriority High
-@SYMTestActions Invokes RCall::Dial for data calls
-@SYMTestExpectedResults Pass
-@SYMTestType CT
-*/
-void CCTsyCallControlFU::TestDial0006fL()
- {
- OpenEtelServerL(EUseExtendedError);
- CleanupStack::PushL(TCleanupItem(Cleanup,this));
- OpenPhoneL();
-
- RBuf8 expectData;
- CleanupClosePushL(expectData);
-
- RBuf8 completeData;
- CleanupClosePushL(completeData);
-
- RLine line;
- RCall call;
-
- TInt errorCode = KErrNone;
- TRequestStatus requestStatus;
- TRequestStatus mockLtsyStatus;
-
- // open new line and call for KMmTsyDataLineName
- errorCode = OpenNewLineLC(iPhone, line, KMmTsyDataLineName);
- ASSERT_EQUALS(KErrNone, errorCode);
-
- TName name;
-
- _LIT(KPhoneNumber, "135468456456");
-
- TInt callId = 1;
- RMobilePhone::TMobileService mobileService = RMobilePhone::ECircuitDataService;
-
- RMobileCall::TMobileCallInfoV8 callInfo;
- callInfo.iDialledParty.iTelNumber.Copy(KPhoneNumber);
- callInfo.iService = mobileService;
- callInfo.iValid = RMobileCall::KCallDialledParty | RMobileCall::KCallAlternating;
-
- //-------------------------------------------------------------------------
- // Test: Test passing RMobileCall::TMobileHscsdCallParamsV2 to
- // RCall::Dial
- //-------------------------------------------------------------------------
-
- RMobileCall::TMobileHscsdCallParamsV2 hscsdCallParams2;
-
- TMockLtsyCallData2<RMobileCall::TMobileHscsdCallParamsV2, RMobileCall::TMobileCallInfoV8>
- mockHscsdData2(0, mobileService, hscsdCallParams2, callInfo);
-
- TPckg<RMobileCall::TMobileHscsdCallParamsV2> pckgMockHscsdParams2(hscsdCallParams2);
-
- //-------------------------------------------------------------------------
- // TEST A5: failure to dispatch request to LTSY
- //-------------------------------------------------------------------------
-
- // open new call
- CleanupClosePushL(call);
- errorCode = call.OpenNewCall(line, name);
- ASSERT_EQUALS(KErrNone, errorCode);
-
- expectData.Close();
- mockHscsdData2.SerialiseL(expectData);
- iMockLTSY.ExpectL(EEtelCallDial, expectData, KErrNotSupported);
-
- call.Dial(requestStatus, pckgMockHscsdParams2, KPhoneNumber);
- User::WaitForRequest(requestStatus);
- ASSERT_EQUALS(KErrNotSupported, requestStatus.Int());
-
- call.Close();
- AssertMockLtsyStatusL();
- CleanupStack::PopAndDestroy(1);
-
- //-------------------------------------------------------------------------
- // TEST B5: failure on completion of pending request from LTSY->CTSY
- //-------------------------------------------------------------------------
-
- // open new call
- CleanupClosePushL(call);
- errorCode = call.OpenNewCall(line, name);
- ASSERT_EQUALS(KErrNone, errorCode);
-
- expectData.Close();
- mockHscsdData2.SerialiseL(expectData);
- iMockLTSY.ExpectL(EEtelCallDial, expectData);
-
- CallGetMobileCallInfoL(callId, mobileService, KPhoneNumber);
-
- TMockLtsyCallData0 mockData0(callId, mobileService);
- mockData0.SerialiseL(completeData);
- iMockLTSY.CompleteL(EEtelCallDial, KErrGeneral, completeData);
-
- call.Dial(requestStatus, pckgMockHscsdParams2, KPhoneNumber);
- User::WaitForRequest(requestStatus);
- ASSERT_EQUALS(KErrGeneral, requestStatus.Int());
-
- call.Close();
- AssertMockLtsyStatusL();
- CleanupStack::PopAndDestroy(1);
-
- //-------------------------------------------------------------------------
- // TEST C5: Successful completion request of
- // RCall::Dial when result is not cached
- //-------------------------------------------------------------------------
-
- // open new call
- CleanupClosePushL(call);
- errorCode = call.OpenNewCall(line, name);
- ASSERT_EQUALS(KErrNone, errorCode);
-
- expectData.Close();
- mockHscsdData2.SerialiseL(expectData);
- iMockLTSY.ExpectL(EEtelCallDial, expectData);
-
- CallGetMobileCallInfoL(callId, mobileService, KPhoneNumber);
-
- mockData0.SerialiseL(completeData);
- iMockLTSY.CompleteL(EEtelCallDial, KErrNone, completeData);
-
- // we are dialing the call:
- call.Dial(requestStatus, pckgMockHscsdParams2, KPhoneNumber);
-
- CompleteDialStatusNotificationsL(call, callId, mobileService );
-
- // completion of the Dial() request:
- User::WaitForRequest(requestStatus);
- ASSERT_EQUALS(KErrNone, requestStatus.Int());
-
- CompleteCallDisconnectNotificationsL(callId, mobileService);
-
- call.Close();
- CleanupStack::PopAndDestroy(1);
-
- CleanupStack::PopAndDestroy(4, this); // expectData, completeData, line, this
- }
-
-/**
-@SYMTestCaseID BA-CTSY-CCON-CD-0006g
-@SYMComponent telephony_ctsy
-@SYMTestCaseDesc Test support in CTSY for RCall::Dial for data calls with HscsdCallParams.It is in connection to BA-CTSY-CCON-CD-0006
-@SYMTestPriority High
-@SYMTestActions Invokes RCall::Dial for data calls
-@SYMTestExpectedResults Pass
-@SYMTestType CT
-*/
-void CCTsyCallControlFU::TestDial0006gL()
- {
- OpenEtelServerL(EUseExtendedError);
- CleanupStack::PushL(TCleanupItem(Cleanup,this));
- OpenPhoneL();
-
- RBuf8 expectData;
- CleanupClosePushL(expectData);
-
- RBuf8 completeData;
- CleanupClosePushL(completeData);
-
- RLine line;
- RCall call;
-
- TInt errorCode = KErrNone;
- TRequestStatus requestStatus;
- TRequestStatus mockLtsyStatus;
-
- // open new line and call for KMmTsyDataLineName
- errorCode = OpenNewLineLC(iPhone, line, KMmTsyDataLineName);
- ASSERT_EQUALS(KErrNone, errorCode);
-
- TName name;
-
- _LIT(KPhoneNumber, "101632960000");
-
- TInt callId = 1;
- RMobilePhone::TMobileService mobileService = RMobilePhone::ECircuitDataService;
- TMockLtsyCallData0 mockData0(callId, mobileService);
-
- //-------------------------------------------------------------------------
- // Test: Test passing RMobileCall::TMobileHscsdCallParamsV7 to
- // RCall::Dial
- //-------------------------------------------------------------------------
-
- RMobileCall::TMobileHscsdCallParamsV7 hscsdCallParams7;
-
- // TMobileHscsdCallParamsV7 params for Dial
- hscsdCallParams7.iInterval = 4;
- hscsdCallParams7.iCug.iCugIndex = 0xFFFF;
- hscsdCallParams7.iSpeakerControl = RCall::EMonitorSpeakerControlAlwaysOff;
- hscsdCallParams7.iSpeakerVolume = RCall::EMonitorSpeakerVolumeMedium;
- hscsdCallParams7.iWaitForDialTone = RCall::EDialToneWait;
- hscsdCallParams7.iQoS = RMobileCall::EQosTransparentPreferred;
- hscsdCallParams7.iV42bisReq = RMobileCall::EV42bisTxDirection;
- hscsdCallParams7.iWantedRxTimeSlots = 2;
- hscsdCallParams7.iCodings = 3;
- hscsdCallParams7.iBearerMode = RMobileCall::EMulticallShareBearer;
- hscsdCallParams7.iAlphaId.Copy(_L("Alpha Id"));
- hscsdCallParams7.iCallParamOrigin = RMobileCall::EOriginatorSIM;
-
- RMobileCall::TMobileCallInfoV8 callInformation;
- GetCallInformation8(callInformation, KPhoneNumber(), mobileService);
-
- TMockLtsyCallData2<RMobileCall::TMobileHscsdCallParamsV7, RMobileCall::TMobileCallInfoV8>
- mockHscsdData7(0, mobileService, hscsdCallParams7, callInformation);
-
- TPckg<RMobileCall::TMobileHscsdCallParamsV7> pckgMockHscsdParams7(hscsdCallParams7);
-
- //-------------------------------------------------------------------------
- // TEST A6: failure to dispatch request to LTSY
- //-------------------------------------------------------------------------
-
- // open new call
- CleanupClosePushL(call);
- errorCode = call.OpenNewCall(line, name);
- ASSERT_EQUALS(KErrNone, errorCode);
-
- expectData.Close();
- mockHscsdData7.SerialiseL(expectData);
- iMockLTSY.ExpectL(EEtelCallDial, expectData, KErrNotSupported);
-
- call.Dial(requestStatus, pckgMockHscsdParams7, KPhoneNumber);
- User::WaitForRequest(requestStatus);
- ASSERT_EQUALS(KErrNotSupported, requestStatus.Int());
-
- call.Close();
- AssertMockLtsyStatusL();
- CleanupStack::PopAndDestroy(1);
-
- //-------------------------------------------------------------------------
- // TEST B6: failure on completion of pending request from LTSY->CTSY
- //-------------------------------------------------------------------------
-
- // open new call
- CleanupClosePushL(call);
- errorCode = call.OpenNewCall(line, name);
- ASSERT_EQUALS(KErrNone, errorCode);
-
- expectData.Close();
- mockHscsdData7.SerialiseL(expectData);
- iMockLTSY.ExpectL(EEtelCallDial, expectData);
-
- CallGetMobileCallInfoL(callId, mobileService, KPhoneNumber);
-
- mockData0.SerialiseL(completeData);
- iMockLTSY.CompleteL(EEtelCallDial, KErrGeneral, completeData);
-
- call.Dial(requestStatus, pckgMockHscsdParams7, KPhoneNumber);
- User::WaitForRequest(requestStatus);
- ASSERT_EQUALS(KErrGeneral, requestStatus.Int());
-
- call.Close();
- AssertMockLtsyStatusL();
- CleanupStack::PopAndDestroy(1);
-
- //-------------------------------------------------------------------------
- // TEST C6: Successful completion request of
- // RCall::Dial when result is not cached
- //-------------------------------------------------------------------------
-
- // open new call
- CleanupClosePushL(call);
- errorCode = call.OpenNewCall(line, name);
- ASSERT_EQUALS(KErrNone, errorCode);
-
- expectData.Close();
- mockHscsdData7.SerialiseL(expectData);
- iMockLTSY.ExpectL(EEtelCallDial, expectData);
-
- CallGetMobileCallInfoL(callId, mobileService, KPhoneNumber);
-
- mockData0.SerialiseL(completeData);
- iMockLTSY.CompleteL(EEtelCallDial, KErrNone, completeData);
-
- // we are dialing the call:
- call.Dial(requestStatus, pckgMockHscsdParams7, KPhoneNumber);
-
- CompleteDialStatusNotificationsL(call, callId, mobileService );
-
- // completion of the Dial() request:
- User::WaitForRequest(requestStatus);
- ASSERT_EQUALS(KErrNone, requestStatus.Int());
-
- CompleteCallDisconnectNotificationsL(callId, mobileService);
-
- call.Close();
- CleanupStack::PopAndDestroy(1);
-
- CleanupStack::PopAndDestroy(4, this); // expectData, completeData, line, this
- }
-
-/**
-@SYMTestCaseID BA-CTSY-CCON-CD-0006h
-@SYMComponent telephony_ctsy
-@SYMTestCaseDesc Test support in CTSY for RCall::Dial for data calls with HscsdCallParams.It is in connection to BA-CTSY-CCON-CD-0006
-@SYMTestPriority High
-@SYMTestActions Invokes RCall::Dial for data calls
-@SYMTestExpectedResults Pass
-@SYMTestType CT
-*/
-void CCTsyCallControlFU::TestDial0006hL()
- {
- OpenEtelServerL(EUseExtendedError);
- CleanupStack::PushL(TCleanupItem(Cleanup,this));
- OpenPhoneL();
-
- RBuf8 expectData;
- CleanupClosePushL(expectData);
-
- RBuf8 completeData;
- CleanupClosePushL(completeData);
-
- RLine line;
- RCall call;
-
- TInt errorCode = KErrNone;
- TRequestStatus requestStatus;
- TRequestStatus mockLtsyStatus;
-
- // open new line and call for KMmTsyDataLineName
- errorCode = OpenNewLineLC(iPhone, line, KMmTsyDataLineName);
- ASSERT_EQUALS(KErrNone, errorCode);
-
- TName name;
- _LIT(KPhoneNumber, "135468456456");
-
- TInt callId = 1;
- RMobilePhone::TMobileService mobileService = RMobilePhone::ECircuitDataService;
- TMockLtsyCallData0 mockData0(callId, mobileService);
-
- //-------------------------------------------------------------------------
- // Test: Test passing RMobileCall::TMobileHscsdCallParamsV8 to
- // RCall::Dial
- //-------------------------------------------------------------------------
-
- RMobileCall::TMobileHscsdCallParamsV8 hscsdCallParams8;
-
- // TMobileHscsdCallParamsV8 params for Dial
- hscsdCallParams8.iInterval = 2;
- hscsdCallParams8.iCug.iCugIndex = 0xFFFF;
- hscsdCallParams8.iSpeakerControl = RCall::EMonitorSpeakerControlAlwaysOff;
- hscsdCallParams8.iSpeakerVolume = RCall::EMonitorSpeakerVolumeMedium;
- hscsdCallParams8.iWaitForDialTone = RCall::EDialToneWait;
- hscsdCallParams8.iQoS = RMobileCall::EQosTransparentPreferred;
- hscsdCallParams8.iV42bisReq = RMobileCall::EV42bisTxDirection;
- hscsdCallParams8.iWantedRxTimeSlots = 2;
- hscsdCallParams8.iCodings = 3;
- hscsdCallParams8.iBearerMode = RMobileCall::EMulticallShareBearer;
- hscsdCallParams8.iAlphaId.Copy(_L("Alpha Id"));
- hscsdCallParams8.iSubAddress.Copy(_L("An Unknown SubAddress"));
- hscsdCallParams8.iCallParamOrigin = RMobileCall::EOriginatorSIM;
-
- RMobileCall::TMobileCallInfoV8 callInformation;
- GetCallInformation8(callInformation, KPhoneNumber(), mobileService);
-
- TMockLtsyCallData2<RMobileCall::TMobileHscsdCallParamsV8, RMobileCall::TMobileCallInfoV8>
- mockHscsdData8(0, mobileService, hscsdCallParams8, callInformation);
-
- TPckg<RMobileCall::TMobileHscsdCallParamsV8> pckgMockHscsdParams8(hscsdCallParams8);
-
- //-------------------------------------------------------------------------
- // TEST A7: failure to dispatch request to LTSY
- //-------------------------------------------------------------------------
-
- // open new call
- CleanupClosePushL(call);
- errorCode = call.OpenNewCall(line, name);
- ASSERT_EQUALS(KErrNone, errorCode);
-
- expectData.Close();
- mockHscsdData8.SerialiseL(expectData);
- iMockLTSY.ExpectL(EEtelCallDial, expectData, KErrNotSupported);
-
- call.Dial(requestStatus, pckgMockHscsdParams8, KPhoneNumber);
- User::WaitForRequest(requestStatus);
- ASSERT_EQUALS(KErrNotSupported, requestStatus.Int());
-
- call.Close();
- AssertMockLtsyStatusL();
- CleanupStack::PopAndDestroy(1);
-
- //-------------------------------------------------------------------------
- // TEST B7: failure on completion of pending request from LTSY->CTSY
- //-------------------------------------------------------------------------
-
- // open new call
- CleanupClosePushL(call);
- errorCode = call.OpenNewCall(line, name);
- ASSERT_EQUALS(KErrNone, errorCode);
-
- expectData.Close();
- mockHscsdData8.SerialiseL(expectData);
- iMockLTSY.ExpectL(EEtelCallDial, expectData);
-
- CallGetMobileCallInfoL(callId, mobileService, KPhoneNumber);
-
- mockData0.SerialiseL(completeData);
- iMockLTSY.CompleteL(EEtelCallDial, KErrGeneral, completeData);
-
- call.Dial(requestStatus, pckgMockHscsdParams8, KPhoneNumber);
- User::WaitForRequest(requestStatus);
- ASSERT_EQUALS(KErrGeneral, requestStatus.Int());
-
- call.Close();
- AssertMockLtsyStatusL();
- CleanupStack::PopAndDestroy(1);
-
- //-------------------------------------------------------------------------
- // TEST C6: Successful completion request of
- // RCall::Dial when result is not cached
- //-------------------------------------------------------------------------
-
- // open new call
- CleanupClosePushL(call);
- errorCode = call.OpenNewCall(line, name);
- ASSERT_EQUALS(KErrNone, errorCode);
-
- expectData.Close();
- mockHscsdData8.SerialiseL(expectData);
- iMockLTSY.ExpectL(EEtelCallDial, expectData);
-
- CallGetMobileCallInfoL(callId, mobileService, KPhoneNumber);
-
- mockData0.SerialiseL(completeData);
- iMockLTSY.CompleteL(EEtelCallDial, KErrNone, completeData);
-
- // we are dialing the call:
- call.Dial(requestStatus, pckgMockHscsdParams8, KPhoneNumber);
-
- CompleteDialStatusNotificationsL(call, callId, mobileService );
-
- // completion of the Dial() request:
- User::WaitForRequest(requestStatus);
- ASSERT_EQUALS(KErrNone, requestStatus.Int());
-
- CompleteCallDisconnectNotificationsL(callId, mobileService);
-
- call.Close();
- CleanupStack::PopAndDestroy(1);
-
- CleanupStack::PopAndDestroy(4, this); // expectData, completeData, line, this
- }
-
-/**
-@SYMTestCaseID BA-CTSY-CCON-CD-0006i
-@SYMComponent telephony_ctsy
-@SYMTestCaseDesc Test support in CTSY for RCall::Dial for data calls with minimal parameters (RCall::TCallParams)
-@SYMTestPriority High
-@SYMTestActions Invokes RCall::Dial for data calls
-@SYMTestExpectedResults Pass
-@SYMTestType CT
-*/
-void CCTsyCallControlFU::TestDial0006iL()
- {
-
- OpenEtelServerL(EUseExtendedError);
- CleanupStack::PushL(TCleanupItem(Cleanup,this));
- OpenPhoneL();
-
- RBuf8 expectData;
- CleanupClosePushL(expectData);
-
- RBuf8 completeData;
- CleanupClosePushL(completeData);
-
- TInt errorCode = KErrNone;
-
- //-- For Voice1 -------------------------
-
- TBuf<256> lineName(KMmTsyDataLineName);
- // Open new line
- RLine line;
- errorCode = line.Open(iPhone, lineName);
- ASSERT_EQUALS(KErrNone, errorCode);
- CleanupClosePushL(line);
- // open call
- _LIT(KDoubleColon, "::");
- TBuf<256> name;
- name = KMmTsyPhoneName;
- name.Append(KDoubleColon);
- name.Append(lineName);
- name.Append(KDoubleColon);
-
- RMobileCall call;
- errorCode = call.OpenNewCall(line, name);
- ASSERT_EQUALS(KErrNone, errorCode);
- CleanupClosePushL(call);
-
- TRequestStatus requestStatus;
- _LIT(KSomeNumber, "123456789");
-
- RMobilePhone::TMobileService mobileService = RMobilePhone::ECircuitDataService;
- TInt expectedCallId = 0;
-
- RMobileCall::TMobileDataCallParamsV8 callParams;
- RMobileCall::TMobileDataCallParamsV8Pckg pckgCallParams(callParams);
- RMobileCall::TMobileCallInfoV8 callInfo;
- callParams.iSpeakerControl = RCall::EMonitorSpeakerControlOnUntilCarrier;
- callParams.iSpeakerVolume = RCall::EMonitorSpeakerVolumeLow;
- callParams.iInterval = 100;
- callParams.iWaitForDialTone = RCall::EDialToneWait;
- callParams.iIdRestrict = RMobileCall::EIdRestrictDefault;
- callParams.iCug.iExplicitInvoke = EFalse;
- callParams.iCug.iCugIndex = 0xFFFF;
- callParams.iCug.iSuppressPrefCug = EFalse;
- callParams.iCug.iSuppressOA = EFalse;
- callParams.iAutoRedial = EFalse;
- callInfo.iValid = RMobileCall::KCallDialledParty | RMobileCall::KCallAlternating;
- callInfo.iService = mobileService;
- callInfo.iStatus = RMobileCall::EStatusUnknown;
- callInfo.iCallId =-1;
- callInfo.iExitCode =0;
- callInfo.iEmergency =0;
- callInfo.iForwarded =0;
- callInfo.iPrivacy = RMobilePhone::EPrivacyUnspecified;
- callInfo.iAlternatingCall = RMobilePhone::EAlternatingModeUnspecified;
-
-
- callInfo.iDialledParty.iTelNumber.Copy( KSomeNumber );
- callInfo.iDialledParty.iNumberPlan = RMobilePhone::EUnknownNumberingPlan;
- callInfo.iDialledParty.iTypeOfNumber = RMobilePhone::EUnknownNumber;
-
- TMockLtsyCallData2< RMobileCall::TMobileDataCallParamsV8, RMobileCall::TMobileCallInfoV8 >
- mockCallData(expectedCallId, mobileService, callParams, callInfo);
- mockCallData.SerialiseL(expectData);
-
- iMockLTSY.ExpectL(EEtelCallDial, expectData);
-
- TInt callId = 1;
-
- completeData.Close();
- TMockLtsyCallData1<RMobileCall::TMobileCallInfoV1> callInfoData(callId, mobileService, callInfo);
- callInfoData.SerialiseL(completeData);
- //Complete Mobile Call Info in order to set the call ID
- iMockLTSY.CompleteL(EMobileCallGetMobileCallInfo, KErrNone, completeData);
-
- TMockLtsyCallData0 mockDataComplete(callId, mobileService);
- completeData.Close();
- mockDataComplete.SerialiseL(completeData);
- // Complete the Dial
- iMockLTSY.CompleteL(EEtelCallDial, KErrNone, completeData);
-
- RCall::TCallParams callParamsX;
- callParamsX.iSpeakerControl = RCall::EMonitorSpeakerControlOnUntilCarrier;
- callParamsX.iSpeakerVolume = RCall::EMonitorSpeakerVolumeLow;
- callParamsX.iInterval = 100;
- callParamsX.iWaitForDialTone = RCall::EDialToneWait;
- TPckg<RCall::TCallParams> pckgCallParamsX(callParamsX);
-
- call.Dial(requestStatus, pckgCallParamsX, KSomeNumber);
-
- User::WaitForRequest(requestStatus);
- ASSERT_EQUALS(KErrNone, requestStatus.Int());
- AssertMockLtsyStatusL();
-
- CleanupStack::PopAndDestroy(5,this);
-
- }
-
-
-/**
-@SYMTestCaseID BA-CTSY-CCON-CD-0007
-@SYMComponent telephony_ctsy
-@SYMTestCaseDesc Test support in CTSY for cancelling of RCall::Dial for data calls
-@SYMTestPriority High
-@SYMTestActions Invokes cancelling of RCall::Dial for data calls
-@SYMTestExpectedResults Pass
-@SYMTestType CT
-*/
-void CCTsyCallControlFU::TestDial0007L()
- {
-
- OpenEtelServerL(EUseExtendedError);
- CleanupStack::PushL(TCleanupItem(Cleanup,this));
- OpenPhoneL();
-
- RBuf8 expectData;
- CleanupClosePushL(expectData);
-
- RBuf8 completeData;
- CleanupClosePushL(completeData);
-
- RLine line;
- RCall call;
-
- TInt errorCode = KErrNone;
- TRequestStatus requestStatus;
- TRequestStatus mockLtsyStatus;
-
- // open new line and call for KMmTsyDataLineName
- errorCode = OpenNewLineLC(iPhone, line, KMmTsyDataLineName);
- ASSERT_EQUALS(KErrNone, errorCode);
-
- TName name;
-
- _LIT(KPhoneNumber, "135468456456");
-
- TInt callId = 1;
- RMobilePhone::TMobileService mobileService = RMobilePhone::ECircuitDataService;
-
- RMobileCall::TMobileDataCallParamsV1 callParams;
- callParams.iInterval = 4;
- callParams.iCug.iCugIndex = 0xFFFF;
-
- RMobileCall::TMobileCallInfoV8 callInfo;
- callInfo.iDialledParty.iTelNumber.Copy(KPhoneNumber);
- callInfo.iService = mobileService;
- callInfo.iValid = RMobileCall::KCallDialledParty | RMobileCall::KCallAlternating;
-
-
- RMobileCall::TMobileCallStatus mobileCallStatus2 = RMobileCall::EStatusIdle;
- TMockLtsyCallData1<RMobileCall::TMobileCallStatus> mockCallDataStatus2(callId, mobileService, mobileCallStatus2);
- completeData.Close();
- mockCallDataStatus2.SerialiseL(completeData);
-
-
- // Call Specific data
- TMockLtsyCallData2<RMobileCall::TMobileDataCallParamsV1, RMobileCall::TMobileCallInfoV8>
- mockData2(0, mobileService, callParams, callInfo);
-
- TMockLtsyCallData0 mockData0(callId, mobileService);
- TPckg<RMobileCall::TMobileDataCallParamsV1> pckgMockParams1(callParams);
-
- expectData.Close();
- mockData2.SerialiseL(expectData);
-
- DialDataCallAndCancelL(line,pckgMockParams1,expectData,completeData);
-
- //------------------------------------------------------------------
- // TMobileDataCallParamsV2
-
- RMobileCall::TMobileDataCallParamsV2 dataCallParams2;
- dataCallParams2.iInterval = 4;
- dataCallParams2.iCug.iCugIndex = 0xFFFF;
-
- TMockLtsyCallData2<RMobileCall::TMobileDataCallParamsV2, RMobileCall::TMobileCallInfoV8>
- mockDataCall2(0, mobileService, dataCallParams2, callInfo);
-
- TPckg<RMobileCall::TMobileDataCallParamsV2> pckgMockDataCallParams2(dataCallParams2);
-
- expectData.Close();
- mockDataCall2.SerialiseL(expectData);
-
- DialDataCallAndCancelL(line,pckgMockDataCallParams2,expectData,completeData);
-
- //------------------------------------------------------------------
- // TMobileDataCallParamsV8
-
- RMobileCall::TMobileDataCallParamsV8 dataCallParams8;
- dataCallParams8.iInterval = 4;
- dataCallParams8.iCug.iCugIndex = 0xFFFF;
-
- TMockLtsyCallData2<RMobileCall::TMobileDataCallParamsV8, RMobileCall::TMobileCallInfoV8>
- mockDataCall8(0, mobileService, dataCallParams8, callInfo);
-
- TPckg<RMobileCall::TMobileDataCallParamsV8> pckgMockDataCallParams8(dataCallParams8);
-
- expectData.Close();
- mockDataCall8.SerialiseL(expectData);
-
- DialDataCallAndCancelL(line,pckgMockDataCallParams8,expectData,completeData);
-
- //------------------------------------------------------------------
- // TMobileHscsdCallParamsV1
-
- RMobileCall::TMobileHscsdCallParamsV1 hscsdCallParams;
- hscsdCallParams.iInterval = 4;
- hscsdCallParams.iCug.iCugIndex = 0xFFFF;
-
- TMockLtsyCallData2<RMobileCall::TMobileHscsdCallParamsV1, RMobileCall::TMobileCallInfoV8>
- mockHscsdCall(0, mobileService, hscsdCallParams, callInfo);
-
- TPckg<RMobileCall::TMobileHscsdCallParamsV1> pckgMockHscsdCallParams(hscsdCallParams);
-
- expectData.Close();
- mockHscsdCall.SerialiseL(expectData);
-
- DialDataCallAndCancelL(line,pckgMockHscsdCallParams,expectData,completeData);
-
- //------------------------------------------------------------------
- // TMobileHscsdCallParamsV2
-
- RMobileCall::TMobileHscsdCallParamsV2 hscsdCallParams2;
- hscsdCallParams2.iInterval = 4;
- hscsdCallParams2.iCug.iCugIndex = 0xFFFF;
-
- TMockLtsyCallData2<RMobileCall::TMobileHscsdCallParamsV2, RMobileCall::TMobileCallInfoV8>
- mockHscsdCall2(0, mobileService, hscsdCallParams2, callInfo);
-
- TPckg<RMobileCall::TMobileHscsdCallParamsV2> pckgMockHscsdCallParams2(hscsdCallParams2);
-
- expectData.Close();
- mockHscsdCall2.SerialiseL(expectData);
-
- DialDataCallAndCancelL(line,pckgMockHscsdCallParams2,expectData,completeData);
-
- //------------------------------------------------------------------
- // TMobileHscsdCallParamsV7
-
- RMobileCall::TMobileHscsdCallParamsV7 hscsdCallParams7;
- hscsdCallParams7.iInterval = 4;
- hscsdCallParams7.iCug.iCugIndex = 0xFFFF;
-
- TMockLtsyCallData2<RMobileCall::TMobileHscsdCallParamsV7, RMobileCall::TMobileCallInfoV8>
- mockHscsdCall7(0, mobileService, hscsdCallParams7, callInfo);
-
- TPckg<RMobileCall::TMobileHscsdCallParamsV7> pckgMockHscsdCallParams7(hscsdCallParams7);
-
- expectData.Close();
- mockHscsdCall7.SerialiseL(expectData);
-
- DialDataCallAndCancelL(line,pckgMockHscsdCallParams7,expectData,completeData);
-
-
- //------------------------------------------------------------------
- // TMobileHscsdCallParamsV8
-
- RMobileCall::TMobileHscsdCallParamsV8 hscsdCallParams8;
- hscsdCallParams8.iInterval = 4;
- hscsdCallParams8.iCug.iCugIndex = 0xFFFF;
-
- TMockLtsyCallData2<RMobileCall::TMobileHscsdCallParamsV8, RMobileCall::TMobileCallInfoV8>
- mockHscsdCall8(0, mobileService, hscsdCallParams8, callInfo);
-
- TPckg<RMobileCall::TMobileHscsdCallParamsV8> pckgMockHscsdCallParams8(hscsdCallParams8);
-
- expectData.Close();
- mockHscsdCall8.SerialiseL(expectData);
-
- DialDataCallAndCancelL(line,pckgMockHscsdCallParams8,expectData,completeData);
- CleanupStack::PopAndDestroy(4); // expectData, completeData, this, this
- }
-
-void
-CCTsyCallControlFU::DialDataCallAndCancelL(RLine& aLine,const TDesC8& aCallData,RBuf8& expectData,RBuf8& completeData)
- {
- // open new call
-
- TInt errorCode = KErrNone;
- TRequestStatus requestStatus;
- TRequestStatus mockLtsyStatus;
- _LIT(KPhoneNumber, "135468456456");
-
- TInt callId = 1;
- RMobilePhone::TMobileService mobileService = RMobilePhone::ECircuitDataService;
-
- TName name;
- RCall call;
- CleanupClosePushL(call);
- errorCode = call.OpenNewCall(aLine, name);
- ASSERT_EQUALS(KErrNone, errorCode);
-
- iMockLTSY.NotifyTerminated(mockLtsyStatus);
-
-
- iMockLTSY.ExpectL(EEtelCallDial, expectData);
-
- CallGetMobileCallInfoL(callId, mobileService, KPhoneNumber);
-
- call.Dial(requestStatus, aCallData, KPhoneNumber);
-
- User::WaitForRequest(mockLtsyStatus);
-
- TInt hangUpCause = KErrGsmReleaseByUser;
- TBool autoStChangeDisable = EFalse;
- TMockLtsyCallData2<TInt, TBool> mockHangupData(callId, mobileService,
- hangUpCause,
- autoStChangeDisable);
- expectData.Close();
- mockHangupData.SerialiseL(expectData);
- iMockLTSY.ExpectL(EEtelCallHangUp, expectData);
-
- call.CancelAsyncRequest(EEtelCallDial);
-
-
- iMockLTSY.NotifyTerminated(mockLtsyStatus);
- iMockLTSY.CompleteL(EMobileCallNotifyMobileCallStatusChange, KErrGsmReleaseByUser, completeData);
-
- User::WaitForRequest(requestStatus);
- User::WaitForRequest(requestStatus);
- ASSERT_EQUALS(KErrCancel, requestStatus.Int());
-
- call.Close();
- AssertMockLtsyStatusL();
- CleanupStack::PopAndDestroy(1);
- }
-
-
-
-
-/**
-@SYMTestCaseID BA-CTSY-CCON-CD-0008
-@SYMComponent telephony_ctsy
-@SYMTestCaseDesc Test support in CTSY for RCall::Dial with bad parameter data for data calls
-@SYMTestPriority High
-@SYMTestActions Invokes RCall::Dial with bad parameter data for data calls
-@SYMTestExpectedResults Pass
-@SYMTestType CT
-*/
-void CCTsyCallControlFU::TestDial0008L()
- {
-
-// This test should test sending bad parameter data for Dial
-// If this API does not have any parameters, then remove this test completely.
-
- OpenEtelServerL(EUseExtendedError);
- CleanupStack::PushL(TCleanupItem(Cleanup,this));
- OpenPhoneL();
-
- RBuf8 expectData;
- CleanupClosePushL(expectData);
-
- RBuf8 completeData;
- CleanupClosePushL(completeData);
-
- RLine line;
- RCall call;
-
- TInt errorCode = KErrNone;
- TRequestStatus requestStatus;
- TRequestStatus mockLtsyStatus;
-
- // open new line and call for KMmTsyDataLineName
- errorCode = OpenNewLineLC(iPhone, line, KMmTsyDataLineName);
- ASSERT_EQUALS(KErrNone, errorCode);
-
- TName name;
-
- _LIT(KPhoneNumber, "101632960000");
-
- TInt callId = 1;
- RMobilePhone::TMobileService mobileService = RMobilePhone::ECircuitDataService;
-
- TInt8 callParams; // bad param
- TPckg<TInt8> paramPckg(callParams);
-
- //-------------------------------------------------------------------------
- // Test A: Test passing wrong version of parameters to
- // RCall::Dial
- //-------------------------------------------------------------------------
-
- // open new call
- CleanupClosePushL(call);
- errorCode = call.OpenNewCall(line, name);
- ASSERT_EQUALS(KErrNone, errorCode);
-
- CallGetMobileCallInfoL(callId, mobileService, KPhoneNumber);
-
- call.Dial(requestStatus, paramPckg, KPhoneNumber);
- User::WaitForRequest(requestStatus);
- ASSERT_EQUALS(KErrArgument, requestStatus.Int());
-
- call.Close();
- CleanupStack::PopAndDestroy(1);
- CleanupStack::PopAndDestroy(4, this); // expectData, completeData, line
-
- }
-
-
-/**
-@SYMTestCaseID BA-CTSY-CCON-CD-0009
-@SYMComponent telephony_ctsy
-@SYMTestCaseDesc Test support in CTSY for multiple client requests to RCall::Dial for data calls
-@SYMTestPriority High
-@SYMTestActions Invokes multiple client requests to RCall::Dial for data calls
-@SYMTestExpectedResults Pass
-@SYMTestType CT
-*/
-void CCTsyCallControlFU::TestDial0009L()
- {
-
-
- OpenEtelServerL(EUseExtendedError);
- CleanupStack::PushL(TCleanupItem(Cleanup,this));
- OpenPhoneL();
-
- RBuf8 expectData;
- CleanupClosePushL(expectData);
-
- RBuf8 completeData;
- CleanupClosePushL(completeData);
-
- // Open second client
- RTelServer telServer2;
- TInt ret = telServer2.Connect();
- ASSERT_EQUALS(KErrNone, ret);
- CleanupClosePushL(telServer2);
-
- RMobilePhone phone2;
- ret = phone2.Open(iTelServer,KMmTsyPhoneName);
- ASSERT_EQUALS(KErrNone, ret);
- CleanupClosePushL(phone2);
-
- RLine line1;
- RLine line2;
-
- RCall call1;
- RCall call2;
-
- TInt errorCode = KErrNone;
- TRequestStatus requestStatus1;
- TRequestStatus requestStatus2;
-
- // open new line1 and call for KMmTsyDataLineName
- errorCode = OpenNewLineLC(iPhone, line1, KMmTsyDataLineName);
- ASSERT_EQUALS(KErrNone, errorCode);
-
- // open new line2 and call for KMmTsyDataLineName
- errorCode = OpenNewLineLC(phone2, line2, KMmTsyDataLineName);
- ASSERT_EQUALS(KErrNone, errorCode);
-
- TName name;
-
- _LIT(KPhoneNumber1, "101632960000");
- _LIT(KPhoneNumber2, "654654864531");
-
- TInt callId1 = 1;
- RMobilePhone::TMobileService mobileService = RMobilePhone::ECircuitDataService;
-
- RMobileCall::TMobileDataCallParamsV1 callParams;
- callParams.iInterval = 4;
- callParams.iCug.iCugIndex = 0xFFFF;
-
- RMobileCall::TMobileCallInfoV8 callInfo1;
- callInfo1.iDialledParty.iTelNumber.Copy(KPhoneNumber1);
- callInfo1.iService = mobileService;
- callInfo1.iValid = RMobileCall::KCallDialledParty |RMobileCall::KCallAlternating;
-
- RMobileCall::TMobileCallInfoV8 callInfo2;
- callInfo2.iDialledParty.iTelNumber.Copy(KPhoneNumber2);
- callInfo2.iService = mobileService;
- callInfo2.iValid = RMobileCall::KCallDialledParty |RMobileCall::KCallAlternating;
-
- TMockLtsyCallData2<RMobileCall::TMobileDataCallParamsV1, RMobileCall::TMobileCallInfoV8>
- mockData21(0, mobileService, callParams, callInfo1);
-
- TMockLtsyCallData0 mockData01(callId1, mobileService);
-
- TPckg<RMobileCall::TMobileDataCallParamsV1> pckgMockParams1(callParams);
-
- //-------------------------------------------------------------------------
- // Test A: Test multiple clients requesting RCall::Dial
- //-------------------------------------------------------------------------
-
- // call first clinet
- // open new call1
- CleanupClosePushL(call1);
- errorCode = call1.OpenNewCall(line1, name);
- ASSERT_EQUALS(KErrNone, errorCode);
-
- expectData.Close();
- mockData21.SerialiseL(expectData);
- iMockLTSY.ExpectL(EEtelCallDial, expectData);
-
- CallGetMobileCallInfoL(callId1, mobileService, KPhoneNumber1);
-
- mockData01.SerialiseL(completeData);
- iMockLTSY.CompleteL(EEtelCallDial, KErrNone, completeData);
-
- call1.Dial(requestStatus1, pckgMockParams1, KPhoneNumber1);
-
- // call second clinet
- // open new call
- CleanupClosePushL(call2);
- errorCode = call2.OpenNewCall(line2, name);
- ASSERT_EQUALS(KErrNone, errorCode);
-
- call2.Dial(requestStatus2, pckgMockParams1, KPhoneNumber2);
-
- User::WaitForRequest(requestStatus1);
- AssertMockLtsyStatusL();
- ASSERT_EQUALS(KErrNone, requestStatus1.Int());
-
- User::WaitForRequest(requestStatus2);
- AssertMockLtsyStatusL();
- ASSERT_EQUALS(KErrServerBusy, requestStatus2.Int());
-
- call1.Close();
- AssertMockLtsyStatusL();
- CleanupStack::PopAndDestroy(1);
-
- call2.Close();
- AssertMockLtsyStatusL();
- CleanupStack::PopAndDestroy(1);
-
- //-----------------------------------------------------------------------
- // TMobileDataCallParamsV2
- RMobileCall::TMobileDataCallParamsV2 dataCallParams2;
- dataCallParams2.iInterval = 4;
- dataCallParams2.iCug.iCugIndex = 0xFFFF;
-
- TMockLtsyCallData2<RMobileCall::TMobileDataCallParamsV2, RMobileCall::TMobileCallInfoV8>
- mockDataCall21(0, mobileService, dataCallParams2, callInfo1);
-
- TPckg<RMobileCall::TMobileDataCallParamsV2> pckgMockDataCallParams2(dataCallParams2);
-
- //-------------------------------------------------------------------------
- // Test A2: Test multiple clients requesting RCall::Dial
- //-------------------------------------------------------------------------
-
- // call first clinet
- // open new call1
- CleanupClosePushL(call1);
- errorCode = call1.OpenNewCall(line1, name);
- ASSERT_EQUALS(KErrNone, errorCode);
-
- expectData.Close();
- mockDataCall21.SerialiseL(expectData);
- iMockLTSY.ExpectL(EEtelCallDial, expectData);
-
- CallGetMobileCallInfoL(callId1, mobileService, KPhoneNumber1);
-
- mockData01.SerialiseL(completeData);
- iMockLTSY.CompleteL(EEtelCallDial, KErrNone, completeData);
-
- call1.Dial(requestStatus1, pckgMockDataCallParams2, KPhoneNumber1);
-
- // call second clinet
- // open new call
- CleanupClosePushL(call2);
- errorCode = call2.OpenNewCall(line2, name);
- ASSERT_EQUALS(KErrNone, errorCode);
-
- call2.Dial(requestStatus2, pckgMockDataCallParams2, KPhoneNumber2);
-
- User::WaitForRequest(requestStatus1);
- AssertMockLtsyStatusL();
- ASSERT_EQUALS(KErrNone, requestStatus1.Int());
-
- User::WaitForRequest(requestStatus2);
- AssertMockLtsyStatusL();
- ASSERT_EQUALS(KErrServerBusy, requestStatus2.Int());
-
- call1.Close();
- AssertMockLtsyStatusL();
- CleanupStack::PopAndDestroy(1);
-
- call2.Close();
- AssertMockLtsyStatusL();
- CleanupStack::PopAndDestroy(1);
-
- //-----------------------------------------------------------------------
- // TMobileDataCallParamsV8
-
- RMobileCall::TMobileDataCallParamsV8 dataCallParams8;
- dataCallParams8.iInterval = 2;
- dataCallParams8.iCug.iCugIndex = 0xFFFF;
- dataCallParams8.iSpeakerControl = RCall::EMonitorSpeakerControlAlwaysOff;
- dataCallParams8.iSpeakerVolume = RCall::EMonitorSpeakerVolumeMedium;
- dataCallParams8.iWaitForDialTone = RCall::EDialToneWait;
- dataCallParams8.iQoS = RMobileCall::EQosTransparentPreferred;
- dataCallParams8.iV42bisReq = RMobileCall::EV42bisTxDirection;
- dataCallParams8.iBearerMode = RMobileCall::EMulticallShareBearer;
- dataCallParams8.iSubAddress.Copy(_L("An Unknown SubAddress"));
- dataCallParams8.iCallParamOrigin = RMobileCall::EOriginatorSIM;
- dataCallParams8.iAlphaId.Copy(_L("Alpha Id"));
-
- RMobileCall::TMobileCallInfoV8 callInformation;
- callInformation.iDialledParty.iTelNumber.Copy(KPhoneNumber1);
- callInformation.iService = mobileService;
- callInformation.iValid |= RMobileCall::KCallDialledParty;
- callInformation.iValid |= RMobileCall::KCallAlternating;
- callInformation.iAlphaId.Copy(_L("Alpha Id"));
- callInformation.iValid |= RMobileCall::KCallAlphaId;
- callInformation.iCallParamOrigin = RMobileCall::EOriginatorSIM;
- callInformation.iValid |= RMobileCall::KCallParamOrigin;
-
- TMockLtsyCallData2<RMobileCall::TMobileDataCallParamsV8, RMobileCall::TMobileCallInfoV8>
- mockDataCall81(0, mobileService, dataCallParams8, callInformation);
-
- TPckg<RMobileCall::TMobileDataCallParamsV8> pckgMockDataCallParams8(dataCallParams8);
-
- //-------------------------------------------------------------------------
- // Test A3: Test multiple clients requesting RCall::Dial
- //-------------------------------------------------------------------------
-
- // call first clinet
- // open new call1
- CleanupClosePushL(call1);
- errorCode = call1.OpenNewCall(line1, name);
- ASSERT_EQUALS(KErrNone, errorCode);
-
- expectData.Close();
- mockDataCall81.SerialiseL(expectData);
- iMockLTSY.ExpectL(EEtelCallDial, expectData);
-
- CallGetMobileCallInfoL(callId1, mobileService, KPhoneNumber1);
-
- mockData01.SerialiseL(completeData);
- iMockLTSY.CompleteL(EEtelCallDial, KErrNone, completeData);
-
- call1.Dial(requestStatus1, pckgMockDataCallParams8, KPhoneNumber1);
-
- // call second clinet
- // open new call
- CleanupClosePushL(call2);
- errorCode = call2.OpenNewCall(line2, name);
- ASSERT_EQUALS(KErrNone, errorCode);
-
- call2.Dial(requestStatus2, pckgMockDataCallParams8, KPhoneNumber2);
-
- User::WaitForRequest(requestStatus1);
- AssertMockLtsyStatusL();
- ASSERT_EQUALS(KErrNone, requestStatus1.Int());
-
- User::WaitForRequest(requestStatus2);
- AssertMockLtsyStatusL();
- ASSERT_EQUALS(KErrServerBusy, requestStatus2.Int());
-
- call1.Close();
- AssertMockLtsyStatusL();
- CleanupStack::PopAndDestroy(1);
-
- call2.Close();
- AssertMockLtsyStatusL();
- CleanupStack::PopAndDestroy(1);
-
- // Done !
- CleanupStack::PopAndDestroy(7, this); // phone2, telServer2, expectData, completeData, this
- // line1, line2
- }
-
-
-/**
-@SYMTestCaseID BA-CTSY-CCON-CD-0009b
-@SYMComponent telephony_ctsy
-@SYMTestCaseDesc Test support in CTSY for multiple client requests to RCall::Dial for data calls with HscsdCallParams. It is in connection to BA-CTSY-CCON-CD-0009
-@SYMTestPriority High
-@SYMTestActions Invokes multiple client requests to RCall::Dial for data calls
-@SYMTestExpectedResults Pass
-@SYMTestType CT
-*/
-void CCTsyCallControlFU::TestDial0009bL()
- {
-
-
- OpenEtelServerL(EUseExtendedError);
- CleanupStack::PushL(TCleanupItem(Cleanup,this));
- OpenPhoneL();
-
- RBuf8 expectData;
- CleanupClosePushL(expectData);
-
- RBuf8 completeData;
- CleanupClosePushL(completeData);
-
- // Open second client
- RTelServer telServer2;
- TInt ret = telServer2.Connect();
- ASSERT_EQUALS(KErrNone, ret);
- CleanupClosePushL(telServer2);
-
- RMobilePhone phone2;
- ret = phone2.Open(iTelServer,KMmTsyPhoneName);
- ASSERT_EQUALS(KErrNone, ret);
- CleanupClosePushL(phone2);
-
- RLine line1;
- RLine line2;
-
- RCall call1;
- RCall call2;
-
- TInt errorCode = KErrNone;
- TRequestStatus requestStatus1;
- TRequestStatus requestStatus2;
-
- // open new line1 and call for KMmTsyDataLineName
- errorCode = OpenNewLineLC(iPhone, line1, KMmTsyDataLineName);
- ASSERT_EQUALS(KErrNone, errorCode);
-
- // open new line2 and call for KMmTsyDataLineName
- errorCode = OpenNewLineLC(phone2, line2, KMmTsyDataLineName);
- ASSERT_EQUALS(KErrNone, errorCode);
-
- TName name;
-
- _LIT(KPhoneNumber1, "101632960000");
- _LIT(KPhoneNumber2, "654654864531");
-
- TInt callId1 = 1;
- RMobilePhone::TMobileService mobileService = RMobilePhone::ECircuitDataService;
-
- RMobileCall::TMobileCallInfoV8 callInfo1;
- callInfo1.iDialledParty.iTelNumber.Copy(KPhoneNumber1);
- callInfo1.iService = mobileService;
- callInfo1.iValid = RMobileCall::KCallDialledParty |RMobileCall::KCallAlternating;
-
- RMobileCall::TMobileCallInfoV8 callInfo2;
- callInfo2.iDialledParty.iTelNumber.Copy(KPhoneNumber2);
- callInfo2.iService = mobileService;
- callInfo2.iValid = RMobileCall::KCallDialledParty |RMobileCall::KCallAlternating;
-
- //-----------------------------------------------------------------------
- // TMobileHscsdCallParamsV1
- RMobileCall::TMobileHscsdCallParamsV1 hscsdCallParams1;
- hscsdCallParams1.iInterval = 4;
- hscsdCallParams1.iCug.iCugIndex = 0xFFFF;
-
- TMockLtsyCallData2<RMobileCall::TMobileHscsdCallParamsV1, RMobileCall::TMobileCallInfoV8>
- mockHscsdCall11(0, mobileService, hscsdCallParams1, callInfo1);
-
- TPckg<RMobileCall::TMobileHscsdCallParamsV1> pckgMockHscsdCallParams1(hscsdCallParams1);
- TMockLtsyCallData0 mockData01(callId1, mobileService);
- //-------------------------------------------------------------------------
- // Test A4: Test multiple clients requesting RCall::Dial
- //-------------------------------------------------------------------------
-
- // call first clinet
- // open new call1
- CleanupClosePushL(call1);
- errorCode = call1.OpenNewCall(line1, name);
- ASSERT_EQUALS(KErrNone, errorCode);
-
- expectData.Close();
- mockHscsdCall11.SerialiseL(expectData);
- iMockLTSY.ExpectL(EEtelCallDial, expectData);
-
- CallGetMobileCallInfoL(callId1, mobileService, KPhoneNumber1);
-
- mockData01.SerialiseL(completeData);
- iMockLTSY.CompleteL(EEtelCallDial, KErrNone, completeData);
-
- call1.Dial(requestStatus1, pckgMockHscsdCallParams1, KPhoneNumber1);
-
- // call second clinet
- // open new call
- CleanupClosePushL(call2);
- errorCode = call2.OpenNewCall(line2, name);
- ASSERT_EQUALS(KErrNone, errorCode);
-
- call2.Dial(requestStatus2, pckgMockHscsdCallParams1, KPhoneNumber2);
-
- User::WaitForRequest(requestStatus1);
- AssertMockLtsyStatusL();
- ASSERT_EQUALS(KErrNone, requestStatus1.Int());
-
- User::WaitForRequest(requestStatus2);
- AssertMockLtsyStatusL();
- ASSERT_EQUALS(KErrServerBusy, requestStatus2.Int());
-
- call1.Close();
- AssertMockLtsyStatusL();
- CleanupStack::PopAndDestroy(1);
-
- call2.Close();
- AssertMockLtsyStatusL();
- CleanupStack::PopAndDestroy(1);
-
- //-----------------------------------------------------------------------
- // TMobileHscsdCallParamsV2
- RMobileCall::TMobileHscsdCallParamsV2 hscsdCallParams2;
- hscsdCallParams2.iInterval = 4;
- hscsdCallParams2.iCug.iCugIndex = 0xFFFF;
-
- TMockLtsyCallData2<RMobileCall::TMobileHscsdCallParamsV2, RMobileCall::TMobileCallInfoV8>
- mockHscsdCall21(0, mobileService, hscsdCallParams2, callInfo1);
-
- TPckg<RMobileCall::TMobileHscsdCallParamsV2> pckgMockHscsdCallParams2(hscsdCallParams2);
-
- //-------------------------------------------------------------------------
- // Test A5: Test multiple clients requesting RCall::Dial
- //-------------------------------------------------------------------------
-
- // call first clinet
- // open new call1
- CleanupClosePushL(call1);
- errorCode = call1.OpenNewCall(line1, name);
- ASSERT_EQUALS(KErrNone, errorCode);
-
- expectData.Close();
- mockHscsdCall21.SerialiseL(expectData);
- iMockLTSY.ExpectL(EEtelCallDial, expectData);
-
- CallGetMobileCallInfoL(callId1, mobileService, KPhoneNumber1);
-
- mockData01.SerialiseL(completeData);
- iMockLTSY.CompleteL(EEtelCallDial, KErrNone, completeData);
-
- call1.Dial(requestStatus1, pckgMockHscsdCallParams2, KPhoneNumber1);
-
- // call second clinet
- // open new call
- CleanupClosePushL(call2);
- errorCode = call2.OpenNewCall(line2, name);
- ASSERT_EQUALS(KErrNone, errorCode);
-
- call2.Dial(requestStatus2, pckgMockHscsdCallParams2, KPhoneNumber2);
-
- User::WaitForRequest(requestStatus1);
- AssertMockLtsyStatusL();
- ASSERT_EQUALS(KErrNone, requestStatus1.Int());
-
- User::WaitForRequest(requestStatus2);
- AssertMockLtsyStatusL();
- ASSERT_EQUALS(KErrServerBusy, requestStatus2.Int());
-
- call1.Close();
- AssertMockLtsyStatusL();
- CleanupStack::PopAndDestroy(1);
-
- call2.Close();
- AssertMockLtsyStatusL();
- CleanupStack::PopAndDestroy(1);
-
- //-----------------------------------------------------------------------
- // TMobileHscsdCallParamsV7
- RMobileCall::TMobileHscsdCallParamsV7 hscsdCallParams7;
- hscsdCallParams7.iInterval = 4;
- hscsdCallParams7.iCug.iCugIndex = 0xFFFF;
- hscsdCallParams7.iAlphaId.Copy(_L("Alpha Id"));
- hscsdCallParams7.iCallParamOrigin = RMobileCall::EOriginatorSIM;
-
- RMobileCall::TMobileCallInfoV8 callInformation;
- callInformation.iDialledParty.iTelNumber.Copy(KPhoneNumber1);
- callInformation.iService = mobileService;
- callInformation.iValid |= RMobileCall::KCallDialledParty;
- callInformation.iValid |= RMobileCall::KCallAlternating;
- callInformation.iAlphaId.Copy(_L("Alpha Id"));
- callInformation.iValid |= RMobileCall::KCallAlphaId;
- callInformation.iCallParamOrigin = RMobileCall::EOriginatorSIM;
- callInformation.iValid |= RMobileCall::KCallParamOrigin;
-
- TMockLtsyCallData2<RMobileCall::TMobileHscsdCallParamsV7, RMobileCall::TMobileCallInfoV8>
- mockHscsdCall71(0, mobileService, hscsdCallParams7, callInformation);
-
- TPckg<RMobileCall::TMobileHscsdCallParamsV7> pckgMockHscsdCallParams7(hscsdCallParams7);
-
- //-------------------------------------------------------------------------
- // Test A6: Test multiple clients requesting RCall::Dial
- //-------------------------------------------------------------------------
-
- // call first clinet
- // open new call1
- CleanupClosePushL(call1);
- errorCode = call1.OpenNewCall(line1, name);
- ASSERT_EQUALS(KErrNone, errorCode);
-
- expectData.Close();
- mockHscsdCall71.SerialiseL(expectData);
- iMockLTSY.ExpectL(EEtelCallDial, expectData);
-
- CallGetMobileCallInfoL(callId1, mobileService, KPhoneNumber1);
-
- mockData01.SerialiseL(completeData);
- iMockLTSY.CompleteL(EEtelCallDial, KErrNone, completeData);
-
- call1.Dial(requestStatus1, pckgMockHscsdCallParams7, KPhoneNumber1);
-
- // call second clinet
- // open new call
- CleanupClosePushL(call2);
- errorCode = call2.OpenNewCall(line2, name);
- ASSERT_EQUALS(KErrNone, errorCode);
-
- call2.Dial(requestStatus2, pckgMockHscsdCallParams7, KPhoneNumber2);
-
- User::WaitForRequest(requestStatus1);
- AssertMockLtsyStatusL();
- ASSERT_EQUALS(KErrNone, requestStatus1.Int());
-
- User::WaitForRequest(requestStatus2);
- AssertMockLtsyStatusL();
- ASSERT_EQUALS(KErrServerBusy, requestStatus2.Int());
-
- call1.Close();
- AssertMockLtsyStatusL();
- CleanupStack::PopAndDestroy(1);
-
- call2.Close();
- AssertMockLtsyStatusL();
- CleanupStack::PopAndDestroy(1);
-
- // Done !
- CleanupStack::PopAndDestroy(7, this); // phone2, telServer2, expectData, completeData, this
- // line1, line2
- }
-
-
-/**
-@SYMTestCaseID BA-CTSY-CCON-CD-0009c
-@SYMComponent telephony_ctsy
-@SYMTestCaseDesc Test support in CTSY for multiple client requests to RCall::Dial for data calls with HscsdCallParamsV8. It is in connection to Test support in CTSY for multiple client requests to RCall::Dial for data calls with HscsdCallParamsV8. It is in connection to BA-CTSY-CCON-CD-0009b
-@SYMTestPriority High
-@SYMTestActions Invokes multiple client requests to RCall::Dial for data calls
-@SYMTestExpectedResults Pass
-@SYMTestType CT
-*/
-void CCTsyCallControlFU::TestDial0009cL()
- {
-
- OpenEtelServerL(EUseExtendedError);
- CleanupStack::PushL(TCleanupItem(Cleanup,this));
- OpenPhoneL();
-
- RBuf8 expectData;
- CleanupClosePushL(expectData);
-
- RBuf8 completeData;
- CleanupClosePushL(completeData);
-
- // Open second client
- RTelServer telServer2;
- TInt ret = telServer2.Connect();
- ASSERT_EQUALS(KErrNone, ret);
- CleanupClosePushL(telServer2);
-
- RMobilePhone phone2;
- ret = phone2.Open(iTelServer,KMmTsyPhoneName);
- ASSERT_EQUALS(KErrNone, ret);
- CleanupClosePushL(phone2);
-
- RLine line1;
- RLine line2;
-
- RCall call1;
- RCall call2;
-
- TInt errorCode = KErrNone;
- TRequestStatus requestStatus1;
- TRequestStatus requestStatus2;
-
- // open new line1 and call for KMmTsyDataLineName
- errorCode = OpenNewLineLC(iPhone, line1, KMmTsyDataLineName);
- ASSERT_EQUALS(KErrNone, errorCode);
-
- // open new line2 and call for KMmTsyDataLineName
- errorCode = OpenNewLineLC(phone2, line2, KMmTsyDataLineName);
- ASSERT_EQUALS(KErrNone, errorCode);
-
- TName name;
-
- _LIT(KPhoneNumber1, "101632960000");
- _LIT(KPhoneNumber2, "654654864531");
-
- TInt callId1 = 1;
- RMobilePhone::TMobileService mobileService = RMobilePhone::ECircuitDataService;
-
- RMobileCall::TMobileCallInfoV8 callInformation;
- callInformation.iDialledParty.iTelNumber.Copy(KPhoneNumber1);
- callInformation.iService = mobileService;
- callInformation.iValid |= RMobileCall::KCallDialledParty;
- callInformation.iValid |= RMobileCall::KCallAlternating;
- callInformation.iAlphaId.Copy(_L("Alpha Id"));
- callInformation.iValid |= RMobileCall::KCallAlphaId;
- callInformation.iCallParamOrigin = RMobileCall::EOriginatorSIM;
- callInformation.iValid |= RMobileCall::KCallParamOrigin;
-
- //-----------------------------------------------------------------------
- // TMobileHscsdCallParamsV8
- RMobileCall::TMobileHscsdCallParamsV8 hscsdCallParams8;
- hscsdCallParams8.iInterval = 4;
- hscsdCallParams8.iCug.iCugIndex = 0xFFFF;
- hscsdCallParams8.iAlphaId.Copy(_L("Alpha Id"));
- hscsdCallParams8.iCallParamOrigin = RMobileCall::EOriginatorSIM;
-
- TMockLtsyCallData2<RMobileCall::TMobileHscsdCallParamsV8, RMobileCall::TMobileCallInfoV8>
- mockHscsdCall81(0, mobileService, hscsdCallParams8, callInformation);
-
- TPckg<RMobileCall::TMobileHscsdCallParamsV8> pckgMockHscsdCallParams8(hscsdCallParams8);
-
- //-------------------------------------------------------------------------
- // Test A7: Test multiple clients requesting RCall::Dial
- //-------------------------------------------------------------------------
-
- // call first clinet
- // open new call1
- CleanupClosePushL(call1);
- errorCode = call1.OpenNewCall(line1, name);
- ASSERT_EQUALS(KErrNone, errorCode);
-
- expectData.Close();
- mockHscsdCall81.SerialiseL(expectData);
- iMockLTSY.ExpectL(EEtelCallDial, expectData);
-
- CallGetMobileCallInfoL(callId1, mobileService, KPhoneNumber1);
- call1.Dial(requestStatus1, pckgMockHscsdCallParams8, KPhoneNumber1);
-
- TMockLtsyCallData0 mockData01(callId1, mobileService);
- mockData01.SerialiseL(completeData);
- iMockLTSY.CompleteL(EEtelCallDial, KErrNone, completeData);
-
- // call second clinet
- // open new call
- CleanupClosePushL(call2);
- errorCode = call2.OpenNewCall(line2, name);
- ASSERT_EQUALS(KErrNone, errorCode);
-
- call2.Dial(requestStatus2, pckgMockHscsdCallParams8, KPhoneNumber2);
-
- User::WaitForRequest(requestStatus1);
- AssertMockLtsyStatusL();
- ASSERT_EQUALS(KErrNone, requestStatus1.Int());
-
- User::WaitForRequest(requestStatus2);
- AssertMockLtsyStatusL();
- ASSERT_EQUALS(KErrServerBusy, requestStatus2.Int());
-
- call1.Close();
- AssertMockLtsyStatusL();
- CleanupStack::PopAndDestroy(1);
-
- call2.Close();
- AssertMockLtsyStatusL();
- CleanupStack::PopAndDestroy(1);
-
- // Done !
- CleanupStack::PopAndDestroy(7, this); // phone2, telServer2, expectData, completeData, this
- // line1, line2
- }
-
-
-
-/**
-@SYMTestCaseID BA-CTSY-CCON-CD-00010
-@SYMComponent telephony_ctsy
-@SYMTestCaseDesc Test support in CTSY for RCall::Dial with timeout for data calls
-@SYMTestPriority High
-@SYMTestActions Invokes RCall::Dial and tests for timeout for data calls
-@SYMTestExpectedResults Pass
-@SYMTestType CT
-*/
-void CCTsyCallControlFU::TestDial00010L()
- {
- OpenEtelServerL(EUseExtendedError);
- CleanupStack::PushL(TCleanupItem(Cleanup,this));
- OpenPhoneL();
-
- RBuf8 expectData;
- CleanupClosePushL(expectData);
-
- RBuf8 completeData;
- CleanupClosePushL(completeData);
-
- RLine line;
- RCall call;
-
- TInt errorCode = KErrNone;
- TRequestStatus requestStatus;
-
- // open new line and call for KMmTsyDataLineName
- errorCode = OpenNewLineLC(iPhone, line, KMmTsyDataLineName);
- ASSERT_EQUALS(KErrNone, errorCode);
-
- TName name;
-
- _LIT(KPhoneNumber, "101632960000");
-
- TInt callId = 1;
- RMobilePhone::TMobileService mobileService = RMobilePhone::ECircuitDataService;
-
- RMobileCall::TMobileDataCallParamsV1 callParams;
- callParams.iInterval = 4;
- callParams.iCug.iCugIndex = 0xFFFF;
-
- RMobileCall::TMobileCallInfoV1 callInfo;
- callInfo.iDialledParty.iTelNumber.Copy(KPhoneNumber);
- callInfo.iService = mobileService;
- callInfo.iValid = RMobileCall::KCallDialledParty;
-
- TMockLtsyCallData2<RMobileCall::TMobileDataCallParamsV1, RMobileCall::TMobileCallInfoV1>
- mockData2(0, mobileService, callParams, callInfo);
-
- TMockLtsyCallData0 mockData0(callId, mobileService);
- TPckg<RMobileCall::TMobileDataCallParamsV1> pckgMockParams1(callParams);
-
- //-------------------------------------------------------------------------
- // Test A: Test timeout of RCall::Dial
- //-------------------------------------------------------------------------
-
- // open new call
- CleanupClosePushL(call);
- errorCode = call.OpenNewCall(line, name);
- ASSERT_EQUALS(KErrNone, errorCode);
-
- expectData.Close();
- mockData2.SerialiseL(expectData);
- iMockLTSY.ExpectL(EEtelCallDial, expectData);
-
- CallGetMobileCallInfoL(callId, mobileService, KPhoneNumber);
-
- call.Dial(requestStatus, pckgMockParams1, KPhoneNumber);
-
- User::WaitForRequest(requestStatus);
- ASSERT_EQUALS(KErrTimedOut, requestStatus.Int());
-
- call.Close();
- AssertMockLtsyStatusL();
- CleanupStack::PopAndDestroy(1);
-
- CleanupStack::PopAndDestroy(4); // expectData, completeData, this, this
- }
-
-
-/**
-@SYMTestCaseID BA-CTSY-CCON-CD-00011
-@SYMComponent telephony_ctsy
-@SYMTestCaseDesc Test support in CTSY for RCall::Dial for fax calls
-@SYMTestPriority High
-@SYMTestActions Invokes RCall::Dial for fax calls
-@SYMTestExpectedResults Pass
-@SYMTestType CT
-*/
-void CCTsyCallControlFU::TestDial00011L()
- {
-
- OpenEtelServerL(EUseExtendedError);
- CleanupStack::PushL(TCleanupItem(Cleanup,this));
- OpenPhoneL();
-
- RBuf8 expectData;
- CleanupClosePushL(expectData);
-
- RBuf8 completeData;
- CleanupClosePushL(completeData);
-
- RLine line;
- RCall call;
-
- TInt errorCode = KErrNone;
- TRequestStatus requestStatus;
- TRequestStatus requestStatus2;
- TRequestStatus mockLtsyStatus;
-
- // open new line and call for KMmTsyVoice1LineName
- errorCode = OpenNewLineLC(iPhone, line, KMmTsyFaxLineName);
- ASSERT_EQUALS(KErrNone, errorCode);
-
- TName name;
-
- _LIT(KPhoneNumber, "101632960000");
-
- TInt callId = 1;
- RMobilePhone::TMobileService mobileService = RMobilePhone::EFaxService;
-
- RMobileCall::TMobileCallParamsV1 callParams;
- callParams.iInterval = 4;
- callParams.iCug.iCugIndex = 0xFFFF;
-
- RMobileCall::TMobileCallInfoV1 callInfo;
- callInfo.iDialledParty.iTelNumber.Copy(KPhoneNumber);
- callInfo.iService = mobileService;
- callInfo.iValid = RMobileCall::KCallDialledParty | RMobileCall::KCallAlternating;
-
- TMockLtsyCallData2<RMobileCall::TMobileCallParamsV1, RMobileCall::TMobileCallInfoV1>
- mockData2(0, mobileService, callParams, callInfo);
-
- TMockLtsyCallData0 mockData0(callId, mobileService);
- TPckg<RMobileCall::TMobileCallParamsV1> pckgMockParams1(callParams);
-
- //-------------------------------------------------------------------------
- // TEST A: failure to dispatch request to LTSY
- //-------------------------------------------------------------------------
-
- // open new call
- CleanupClosePushL(call);
- errorCode = call.OpenNewCall(line, name);
- ASSERT_EQUALS(KErrNone, errorCode);
-
- call.Dial(requestStatus, pckgMockParams1, KPhoneNumber);
- User::WaitForRequest(requestStatus);
- AssertMockLtsyStatusL();
- ASSERT_EQUALS(KErrNotSupported, requestStatus.Int());
-
- call.Close();
- AssertMockLtsyStatusL();
- CleanupStack::PopAndDestroy(1);
-
- //-------------------------------------------------------------------------
- // TEST E: Unsolicited completion of RCall::Dial
- // from LTSY.
- //-------------------------------------------------------------------------
-
- iMockLTSY.NotifyTerminated(mockLtsyStatus);
- expectData.Close();
- mockData0.SerialiseL(expectData);
- iMockLTSY.CompleteL(EEtelCallDial, KErrNone, expectData);
- User::WaitForRequest(mockLtsyStatus);
- AssertMockLtsyStatusL();
- ASSERT_EQUALS(KErrNone, mockLtsyStatus.Int());
-
- //-------------------------------------------------------------------------
- // TEST : to increase CMmFaxCallTsy::Dial coverage
- // covers "if( call->GetDialFlag() )" condition
- //-------------------------------------------------------------------------
-
- // open new call
- CleanupClosePushL(call);
- errorCode = call.OpenNewCall(line, name);
- ASSERT_EQUALS(KErrNone, errorCode);
-
- // open new call
- RCall call2;
- CleanupClosePushL(call2);
- errorCode = call2.OpenNewCall(line, name);
- ASSERT_EQUALS(KErrNone, errorCode);
-
- call.Dial(requestStatus, pckgMockParams1, KPhoneNumber);
-
- call2.Dial(requestStatus2, pckgMockParams1, KPhoneNumber);
-
- User::WaitForRequest(requestStatus);
- AssertMockLtsyStatusL();
- ASSERT_EQUALS(KErrNotSupported, requestStatus.Int());
-
- User::WaitForRequest(requestStatus2);
- AssertMockLtsyStatusL();
- ASSERT_EQUALS(KErrServerBusy, requestStatus2.Int());
-
- call.Close();
- AssertMockLtsyStatusL();
- CleanupStack::PopAndDestroy(1);
-
- call2.Close();
- AssertMockLtsyStatusL();
- CleanupStack::PopAndDestroy(1);
-
- //-------------------------------------------------------------------------
- // TEST : to increase CMmFaxCallTsy::Dial coverage
- // covers "if ( ERfsStateInfoInactive == iMmPhone->GetRfStateInfo() )" condition
- //-------------------------------------------------------------------------
-
- // open new call
- CleanupClosePushL(call);
- errorCode = call.OpenNewCall(line, name);
- ASSERT_EQUALS(KErrNone, errorCode);
-
- iMockLTSY.NotifyTerminated(mockLtsyStatus);
- TRfStateInfo rfInfo = ERfsStateInfoInactive;
- TMockLtsyData1<TRfStateInfo> mockData1(rfInfo);
- expectData.Close();
- mockData1.SerialiseL(expectData);
- iMockLTSY.CompleteL(EMmTsyBootGetRFStatusIPC, KErrNone, expectData);
- User::WaitForRequest(mockLtsyStatus);
- AssertMockLtsyStatusL();
- ASSERT_EQUALS(KErrNone, mockLtsyStatus.Int());
-
- RCall::TCallParams callParamsX;
- TPckg<RCall::TCallParams> pckgCallParamsX(callParamsX);
- callParamsX.iSpeakerControl = RCall::EMonitorSpeakerControlOnUntilCarrier;
- callParamsX.iSpeakerVolume = RCall::EMonitorSpeakerVolumeLow;
- callParamsX.iInterval = 100;
- callParamsX.iWaitForDialTone = RCall::EDialToneWait;
-
- call.Dial(requestStatus, pckgCallParamsX, KPhoneNumber);
- User::WaitForRequest(requestStatus);
- AssertMockLtsyStatusL();
- ASSERT_EQUALS(KErrGsmOfflineOpNotAllowed, requestStatus.Int());
-
- call.Close();
- AssertMockLtsyStatusL();
- CleanupStack::PopAndDestroy(1);
-
- //-------------------------------------------------------------------------
- // TEST : to increase CMmFaxCallTsy::Dial coverage
- // covers "else if ( RMobileCall::EStatusIdle != iMobileCallStatus )" condition
- //-------------------------------------------------------------------------
-
- TName incomingCallName;
- RMobileCall::TMobileCallStatus mobileCallStatus = RMobileCall::EStatusRinging;
-
- //-------------------------------------------------------------------------
- // create new incoming call
- errorCode = CreateIncomingCallL(line, callId, incomingCallName,
- mobileService, mobileCallStatus);
- ASSERT_EQUALS(KErrNone, errorCode);
- AssertMockLtsyStatusL();
- //-------------------------------------------------------------------------
-
- // open new call
- CleanupClosePushL(call);
- errorCode = call.OpenExistingCall(line, incomingCallName);
- ASSERT_EQUALS(KErrNone, errorCode);
-
- iMockLTSY.NotifyTerminated(mockLtsyStatus);
- rfInfo = ERfsStateInfoNormal;
- TMockLtsyData1<TRfStateInfo> mockData1X(rfInfo);
- expectData.Close();
- mockData1X.SerialiseL(expectData);
- iMockLTSY.CompleteL(EMmTsyBootGetRFStatusIPC, KErrNone, expectData);
- User::WaitForRequest(mockLtsyStatus);
- AssertMockLtsyStatusL();
- ASSERT_EQUALS(KErrNone, mockLtsyStatus.Int());
-
- call.Dial(requestStatus, pckgCallParamsX, KPhoneNumber);
-
- User::WaitForRequest(requestStatus);
- AssertMockLtsyStatusL();
- ASSERT_EQUALS(KErrNotReady, requestStatus.Int());
-
- //-------------------------------------------------------------------------
- // close incoming call
- TInt hangUpCause = KErrGsmReleaseByUser;
- TBool autoStChangeDisable = EFalse;
- RMobilePhone::TMobileService mobileServiceX = RMobilePhone::EFaxService;
- TMockLtsyCallData2<TInt, TBool> mockData2x(callId, mobileServiceX,
- hangUpCause,
- autoStChangeDisable);
- expectData.Close();
- mockData2x.SerialiseL(expectData);
- iMockLTSY.ExpectL(EEtelCallHangUp, expectData);
-
- call.Close();
- AssertMockLtsyStatusL();
- CleanupStack::PopAndDestroy(1);
-
- AssertMockLtsyStatusL();
- CleanupStack::PopAndDestroy(4, this); // expectData, completeData, line, this
- }
-
-/**
-@SYMTestCaseID BA-CTSY-CCON-CHU-0001
-@SYMComponent telephony_ctsy
-@SYMTestCaseDesc Test support in CTSY for RCall::HangUp for voice calls
-@SYMTestPriority High
-@SYMTestActions Invokes RCall::HangUp for voice calls
-@SYMTestExpectedResults Pass
-@SYMTestType CT
-*/
-void CCTsyCallControlFU::TestHangUp0001L()
- {
-
- OpenEtelServerL(EUseExtendedError);
- CleanupStack::PushL(TCleanupItem(Cleanup,this));
- OpenPhoneL();
-
- RBuf8 expectData;
- CleanupClosePushL(expectData);
-
- RBuf8 completeData;
- CleanupClosePushL(completeData);
-
- RLine line;
- RCall call;
-
- TInt errorCode = KErrNone;
- TRequestStatus requestStatus;
- TRequestStatus mockLtsyStatus;
-
- // open new line and call for KMmTsyVoice1LineName
- errorCode = OpenNewLineLC(iPhone, line, KMmTsyVoice1LineName);
- ASSERT_EQUALS(KErrNone, errorCode);
-
- TName incomingCallName;
- TInt callId = 1;
- TInt callId2 = 2;
- RMobilePhone::TMobileService mobileService = RMobilePhone::EVoiceService;
- RMobileCall::TMobileCallStatus mobileCallStatus = RMobileCall::EStatusRinging;
-
- TInt hangUpCause = KErrGsmBusyUserRequest;
- TBool autoStChangeDisable = ETrue;
- TMockLtsyCallData2<TInt, TBool> mockData2(callId, mobileService,
- hangUpCause,
- autoStChangeDisable);
-
- TMockLtsyCallData0 mockData0(callId, mobileService);
- TMockLtsyCallData0 mockData1(callId2, mobileService);
-
- //-------------------------------------------------------------------------
- // TEST A: failure to dispatch request to LTSY
- //-------------------------------------------------------------------------
-
- //-------------------------------------------------------------------------
- // create new incoming call
- errorCode = CreateIncomingCallL(line, callId, incomingCallName,
- mobileService, mobileCallStatus);
- ASSERT_EQUALS(KErrNone, errorCode);
-
- CleanupClosePushL(call);
- errorCode = call.OpenExistingCall(line, incomingCallName);
- ASSERT_EQUALS(KErrNone, errorCode);
- //-------------------------------------------------------------------------
-
- expectData.Close();
- mockData2.SerialiseL(expectData);
- iMockLTSY.ExpectL(EEtelCallHangUp, expectData, KErrNotSupported);
-
- call.HangUp(requestStatus);
- User::WaitForRequest(requestStatus);
- AssertMockLtsyStatusL();
- ASSERT_EQUALS(KErrNotSupported, requestStatus.Int());
-
- // close incoming call
- CloseIncomingCallL(call, callId, mobileService);
- AssertMockLtsyStatusL();
- CleanupStack::PopAndDestroy(1); // call
-
- //-------------------------------------------------------------------------
- // TEST C: Successful completion request of
- // RCall::HangUp when result is not cached.
- //-------------------------------------------------------------------------
-
- //-------------------------------------------------------------------------
- // create new incoming call
- errorCode = CreateIncomingCallL(line, callId, incomingCallName,
- mobileService, mobileCallStatus);
- ASSERT_EQUALS(KErrNone, errorCode);
-
- CleanupClosePushL(call);
- errorCode = call.OpenExistingCall(line, incomingCallName);
- ASSERT_EQUALS(KErrNone, errorCode);
- //-------------------------------------------------------------------------
-
- expectData.Close();
- mockData2.SerialiseL(expectData);
- iMockLTSY.ExpectL(EEtelCallHangUp, expectData);
-
- mockData0.SerialiseL(completeData);
- iMockLTSY.CompleteL(EEtelCallHangUp, KErrNone, completeData);
-
- call.HangUp(requestStatus);
- User::WaitForRequest(requestStatus);
- AssertMockLtsyStatusL();
- ASSERT_EQUALS(KErrNone, requestStatus.Int());
-
- // close incoming call
- CloseIncomingCallL(call, callId, mobileService);
- CleanupStack::PopAndDestroy(1); // call
-
- //-------------------------------------------------------------------------
- // TEST E: Unsolicited completion of RCall::HangUp
- // from LTSY.
- //-------------------------------------------------------------------------
-
- iMockLTSY.NotifyTerminated(mockLtsyStatus);
- completeData.Close();
- mockData0.SerialiseL(completeData);
- iMockLTSY.CompleteL(EEtelCallHangUp, KErrNone, completeData);
- User::WaitForRequest(mockLtsyStatus);
- AssertMockLtsyStatusL();
- ASSERT_EQUALS(KErrNone, mockLtsyStatus.Int());
-
- //-------------------------------------------------------------------------
- // TEST : to increase CMmVoiceCallTsy::Dial coverage
- // covers "if ( 0 < hangUpHandle || iHangUpFlag )" condition
- //-------------------------------------------------------------------------
-
- RCall call2;
- CleanupClosePushL(call2);
- TRequestStatus requestStatus2;
-
- //-------------------------------------------------------------------------
- // create new incoming call
- errorCode = CreateIncomingCallL(line, callId, incomingCallName,
- mobileService, mobileCallStatus);
- ASSERT_EQUALS(KErrNone, errorCode);
- AssertMockLtsyStatusL();
-
- errorCode = call.OpenExistingCall(line, incomingCallName);
- ASSERT_EQUALS(KErrNone, errorCode);
- AssertMockLtsyStatusL();
- //-------------------------------------------------------------------------
-
- //-------------------------------------------------------------------------
- errorCode = call2.OpenExistingCall(line, incomingCallName);
- ASSERT_EQUALS(KErrNone, errorCode);
- AssertMockLtsyStatusL();
- //-------------------------------------------------------------------------
-
- expectData.Close();
- mockData2.SerialiseL(expectData);
- iMockLTSY.ExpectL(EEtelCallHangUp, expectData);
- completeData.Close();
- mockData0.SerialiseL(completeData);
- iMockLTSY.CompleteL(EEtelCallHangUp, KErrGeneral, completeData);
- call.HangUp(requestStatus);
-
- call2.HangUp(requestStatus2);
-
- User::WaitForRequest(requestStatus);
- AssertMockLtsyStatusL();
- ASSERT_EQUALS(KErrGeneral, requestStatus.Int());
-
- User::WaitForRequest(requestStatus2);
- AssertMockLtsyStatusL();
- ASSERT_EQUALS(KErrServerBusy, requestStatus2.Int());
-
- // close incoming call
- call.Close();
- AssertMockLtsyStatusL();
-
- // close incoming call2
- CloseIncomingCallL(call2, callId, mobileService);
- CleanupStack::PopAndDestroy(1); // call2
-
- //-------------------------------------------------------------------------
- // TEST : to increase CMmVoiceCallTsy::Dial coverage
- // covers "if ( ( NULL != callList->GetMmCallByStatus(
- // RMobileCall::EStatusConnected ) ) &&
- // ( NULL != callList->GetMmCallByStatus(
- // RMobileCall::EStatusHold ) ) &&
- // ( NULL != callList->GetMmCallByStatus(
- // RMobileCall::EStatusRinging ) ) )" condition
- //-------------------------------------------------------------------------
-
- mobileCallStatus = RMobileCall::EStatusConnected;
- callId = 3;
-
- //-------------------------------------------------------------------------
- // create new incoming call
- errorCode = CreateIncomingCallL(line, callId, incomingCallName,
- mobileService, mobileCallStatus);
- ASSERT_EQUALS(KErrNone, errorCode);
- AssertMockLtsyStatusL();
- //-------------------------------------------------------------------------
-
- mobileCallStatus = RMobileCall::EStatusRinging;
- callId = 2;
-
- //-------------------------------------------------------------------------
- // create new incoming call
- errorCode = CreateIncomingCallL(line, callId, incomingCallName,
- mobileService, mobileCallStatus);
- ASSERT_EQUALS(KErrNone, errorCode);
- AssertMockLtsyStatusL();
-
- errorCode = call.OpenExistingCall(line, incomingCallName);
- ASSERT_EQUALS(KErrNone, errorCode);
- AssertMockLtsyStatusL();
- //-------------------------------------------------------------------------
-
- mobileCallStatus = RMobileCall::EStatusHold;
- callId = 1;
-
- //-------------------------------------------------------------------------
- // create new incoming call
- errorCode = CreateIncomingCallL(line, callId, incomingCallName,
- mobileService, mobileCallStatus);
- ASSERT_EQUALS(KErrNone, errorCode);
- AssertMockLtsyStatusL();
- //-------------------------------------------------------------------------
-
- callId = 2;
- hangUpCause = KErrGsmBusyUserRequest;
- autoStChangeDisable = ETrue;
- TMockLtsyCallData2<TInt, TBool> mockData2xx(callId, mobileService,
- hangUpCause,
- autoStChangeDisable);
- expectData.Close();
- mockData2xx.SerialiseL(expectData);
- iMockLTSY.ExpectL(EEtelCallHangUp, expectData);
- completeData.Close();
- mockData1.SerialiseL(completeData);
- iMockLTSY.CompleteL(EEtelCallHangUp, KErrNone, completeData);
- call.HangUp(requestStatus);
-
- User::WaitForRequest(requestStatus);
- AssertMockLtsyStatusL();
- ASSERT_EQUALS(KErrNone, requestStatus.Int());
-
- // close incoming call for RMobileCall::EStatusRinging
- callId = 2;
- CloseIncomingCallL(call, callId, mobileService);
-
- // open call for RMobileCall::EStatusHold
- errorCode = call.OpenExistingCall(line, incomingCallName);
- ASSERT_EQUALS(KErrNone, errorCode);
-
- // close incoming call for RMobileCall::EStatusHold
- callId = 1;
- CloseIncomingCallL(call, callId, mobileService);
-
- //-------------------------------------------------------------------------
- // TEST B: failure on completion of pending request from LTSY->CTSY
- //-------------------------------------------------------------------------
-
- callId = 1;
- mobileCallStatus = RMobileCall::EStatusRinging;
-
- //-------------------------------------------------------------------------
- // create new incoming call
- errorCode = CreateIncomingCallL(line, callId, incomingCallName,
- mobileService, mobileCallStatus);
- ASSERT_EQUALS(KErrNone, errorCode);
-
- CleanupClosePushL(call);
- errorCode = call.OpenExistingCall(line, incomingCallName);
- ASSERT_EQUALS(KErrNone, errorCode);
- //-------------------------------------------------------------------------
-
- hangUpCause = KErrGsmBusyUserRequest;
- autoStChangeDisable = ETrue;
- TMockLtsyCallData2<TInt, TBool> mockData2xxx(callId, mobileService,
- hangUpCause,
- autoStChangeDisable);
-
- expectData.Close();
- mockData2xxx.SerialiseL(expectData);
- iMockLTSY.ExpectL(EEtelCallHangUp, expectData);
-
- completeData.Close();
- mockData0.SerialiseL(completeData);
- iMockLTSY.CompleteL(EEtelCallHangUp, KErrGeneral, completeData);
-
- call.HangUp(requestStatus);
- User::WaitForRequest(requestStatus);
- AssertMockLtsyStatusL();
- ASSERT_EQUALS(KErrGeneral, requestStatus.Int());
-
- // close incoming call
- CloseIncomingCallL(call, callId, mobileService);
- AssertMockLtsyStatusL();
- CleanupStack::PopAndDestroy(1); // call
-
- //
- // Added for DEF139341 (Unexpected error note pops up after creating emergency call)
- // Tests that CTSY treats KErrGsmReleaseByUser as a normal return code, not as an error
- // (the client request should complete with KErrNone).
- //
-
- //-------------------------------------------------------------------------
- // create new incoming call
- errorCode = CreateIncomingCallL(line, callId, incomingCallName,
- mobileService, mobileCallStatus);
- ASSERT_EQUALS(KErrNone, errorCode);
-
- CleanupClosePushL(call);
- errorCode = call.OpenExistingCall(line, incomingCallName);
- ASSERT_EQUALS(KErrNone, errorCode);
- //-------------------------------------------------------------------------
-
- hangUpCause = KErrGsmBusyUserRequest;
- autoStChangeDisable = ETrue;
- TMockLtsyCallData2<TInt, TBool> mockData3xxx(callId, mobileService,
- hangUpCause,
- autoStChangeDisable);
-
- expectData.Close();
- mockData3xxx.SerialiseL(expectData);
- iMockLTSY.ExpectL(EEtelCallHangUp, expectData);
-
- completeData.Close();
- mockData0.SerialiseL(completeData);
- iMockLTSY.CompleteL(EEtelCallHangUp, KErrGsmReleaseByUser, completeData);
-
- call.HangUp(requestStatus);
- User::WaitForRequest(requestStatus);
- AssertMockLtsyStatusL();
- ASSERT_EQUALS(KErrNone, requestStatus.Int());
-
- // close incoming call
- CloseIncomingCallL(call, callId, mobileService);
- AssertMockLtsyStatusL();
- CleanupStack::PopAndDestroy(1); // call
- //
-
- AssertMockLtsyStatusL();
- CleanupStack::PopAndDestroy(4, this); // expectData, completeData, line, this
-
- }
-
-
-/**
-@SYMTestCaseID BA-CTSY-CCON-CHU-0002
-@SYMComponent telephony_ctsy
-@SYMTestCaseDesc Test support in CTSY for cancelling of RCall::HangUp for voice calls
-@SYMTestPriority High
-@SYMTestActions Invokes cancelling of RCall::HangUp for voice calls
-@SYMTestExpectedResults Pass
-@SYMTestType CT
-*/
-void CCTsyCallControlFU::TestHangUp0002L()
- {
-
- OpenEtelServerL(EUseExtendedError);
- CleanupStack::PushL(TCleanupItem(Cleanup,this));
- OpenPhoneL();
-
- RBuf8 expectData;
- CleanupClosePushL(expectData);
-
- RBuf8 completeData;
- CleanupClosePushL(completeData);
-
- RLine line;
- RCall call;
-
- TInt errorCode = KErrNone;
- TRequestStatus requestStatus;
- TRequestStatus mockLtsyStatus;
-
- // open new line and call for KMmTsyVoice1LineName
- errorCode = OpenNewLineLC(iPhone, line, KMmTsyVoice1LineName);
- ASSERT_EQUALS(KErrNone, errorCode);
-
- TName incomingCallName;
- TInt callId = 1;
- RMobilePhone::TMobileService mobileService = RMobilePhone::EVoiceService;
- RMobileCall::TMobileCallStatus mobileCallStatus = RMobileCall::EStatusRinging;
-
- TInt hangUpCause = KErrGsmBusyUserRequest;
- TBool autoStChangeDisable = ETrue;
- TMockLtsyCallData2<TInt, TBool> mockData2(callId, mobileService,
- hangUpCause,
- autoStChangeDisable);
-
- TMockLtsyCallData0 mockData0(callId, mobileService);
-
- //-------------------------------------------------------------------------
- // Test cancelling of RCall::HangUp
- //-------------------------------------------------------------------------
-
- //-------------------------------------------------------------------------
- // create new incoming call
- errorCode = CreateIncomingCallL(line, callId, incomingCallName,
- mobileService, mobileCallStatus);
- ASSERT_EQUALS(KErrNone, errorCode);
-
- CleanupClosePushL(call);
- errorCode = call.OpenExistingCall(line, incomingCallName);
- ASSERT_EQUALS(KErrNone, errorCode);
- //-------------------------------------------------------------------------
-
- iMockLTSY.NotifyTerminated(mockLtsyStatus);
-
- expectData.Close();
- mockData2.SerialiseL(expectData);
- iMockLTSY.ExpectL(EEtelCallHangUp, expectData);
-
- mockData0.SerialiseL(completeData);
- iMockLTSY.CompleteL(EEtelCallHangUp, KErrNone, completeData);
-
- call.HangUp(requestStatus);
-
- call.CancelAsyncRequest(EEtelCallHangUp);
-
- User::WaitForRequest(requestStatus);
- AssertMockLtsyStatusL();
- ASSERT_EQUALS(KErrNone, requestStatus.Int());
-
- // close incoming call
- CloseIncomingCallL(call, callId, mobileService);
- AssertMockLtsyStatusL();
- CleanupStack::PopAndDestroy(1);
-
- User::WaitForRequest(mockLtsyStatus);
-
- AssertMockLtsyStatusL();
- CleanupStack::PopAndDestroy(4, this); // expectData, completeData, line, this
- }
-
-/**
-@SYMTestCaseID BA-CTSY-CCON-CHU-0004
-@SYMComponent telephony_ctsy
-@SYMTestCaseDesc Test support in CTSY for multiple client requests to RCall::HangUp for voice calls
-@SYMTestPriority High
-@SYMTestActions Invokes multiple client requests to RCall::HangUp for voice calls
-@SYMTestExpectedResults Pass
-@SYMTestType CT
-*/
-void CCTsyCallControlFU::TestHangUp0004L()
- {
- OpenEtelServerL(EUseExtendedError);
- CleanupStack::PushL(TCleanupItem(Cleanup,this));
- OpenPhoneL();
-
- RBuf8 expectData;
- CleanupClosePushL(expectData);
-
- RBuf8 completeData;
- CleanupClosePushL(completeData);
-
- // Open second client
- RTelServer telServer2;
- TInt ret = telServer2.Connect();
- ASSERT_EQUALS(KErrNone, ret);
- CleanupClosePushL(telServer2);
-
- RMobilePhone phone2;
- ret = phone2.Open(iTelServer,KMmTsyPhoneName);
- ASSERT_EQUALS(KErrNone, ret);
- CleanupClosePushL(phone2);
-
- RCall call1;
- RCall call2;
- RLine line1;
- RLine line2;
-
- TInt errorCode = KErrNone;
- TRequestStatus requestStatus1;
- TRequestStatus requestStatus2;
-
- // open new line1
- errorCode = OpenNewLineLC(iPhone, line1, KMmTsyVoice1LineName);
- ASSERT_EQUALS(KErrNone, errorCode);
-
- // open new line2
- errorCode = OpenNewLineLC(phone2, line2, KMmTsyVoice1LineName);
- ASSERT_EQUALS(KErrNone, errorCode);
-
- TName incomingCallName1;
- TName incomingCallName2;
-
- TInt callId1 = 1;
- TInt callId2 = 2;
- RMobilePhone::TMobileService mobileService = RMobilePhone::EVoiceService;
- RMobileCall::TMobileCallStatus mobileCallStatus = RMobileCall::EStatusRinging;
-
- TInt hangUpCause = KErrGsmBusyUserRequest;
- TBool autoStChangeDisable = ETrue;
- TMockLtsyCallData2<TInt, TBool> mockData21(callId1, mobileService,
- hangUpCause,
- autoStChangeDisable);
- TMockLtsyCallData2<TInt, TBool> mockData22(callId2, mobileService,
- hangUpCause,
- autoStChangeDisable);
-
- TMockLtsyCallData0 mockData01(callId1, mobileService);
- TMockLtsyCallData0 mockData02(callId2, mobileService);
-
- //-------------------------------------------------------------------------
- // Test A: Test multiple clients requesting RCall::HangUp
- //-------------------------------------------------------------------------
-
- //-------------------------------------------------------------------------
- // create new incoming call1
- errorCode = CreateIncomingCallL(line1, callId1, incomingCallName1,
- mobileService, mobileCallStatus);
- ASSERT_EQUALS(KErrNone, errorCode);
-
- CleanupClosePushL(call1);
- errorCode = call1.OpenExistingCall(line1, incomingCallName1);
- ASSERT_EQUALS(KErrNone, errorCode);
- //-------------------------------------------------------------------------
-
- //-------------------------------------------------------------------------
- // create new incoming call2
- errorCode = CreateIncomingCallL(line2, callId2, incomingCallName2,
- mobileService, mobileCallStatus);
- ASSERT_EQUALS(KErrNone, errorCode);
-
- CleanupClosePushL(call2);
- errorCode = call2.OpenExistingCall(line2, incomingCallName2);
- ASSERT_EQUALS(KErrNone, errorCode);
- //-------------------------------------------------------------------------
-
- expectData.Close();
- mockData21.SerialiseL(expectData);
- iMockLTSY.ExpectL(EEtelCallHangUp, expectData);
- mockData01.SerialiseL(completeData);
- iMockLTSY.CompleteL(EEtelCallHangUp, KErrNone, completeData);
-
- call1.HangUp(requestStatus1);
-
- expectData.Close();
- mockData22.SerialiseL(expectData);
- iMockLTSY.ExpectL(EEtelCallHangUp, expectData);
- completeData.Close();
- mockData02.SerialiseL(completeData);
- iMockLTSY.CompleteL(EEtelCallHangUp, KErrNone, completeData);
-
- call2.HangUp(requestStatus2);
-
- User::WaitForRequest(requestStatus1);
- AssertMockLtsyStatusL();
- ASSERT_EQUALS(KErrNone, requestStatus1.Int());
-
- User::WaitForRequest(requestStatus2);
- AssertMockLtsyStatusL();
- ASSERT_EQUALS(KErrNone, requestStatus2.Int());
-
- // close incoming call1
- CloseIncomingCallL(call1, callId1, mobileService);
- AssertMockLtsyStatusL();
-
- // close incoming call2
- CloseIncomingCallL(call2, callId2, mobileService);
- AssertMockLtsyStatusL();
-
- CleanupStack::PopAndDestroy(2); // call1, call2
- CleanupStack::PopAndDestroy(7, this); // phone2, telServer2, expectData, completeData, this
- // line1, line2
-
- }
-
-
-/**
-@SYMTestCaseID BA-CTSY-CCON-CHU-0005
-@SYMComponent telephony_ctsy
-@SYMTestCaseDesc Test support in CTSY for RCall::HangUp with timeout for voice calls
-@SYMTestPriority High
-@SYMTestActions Invokes RCall::HangUp and tests for timeout for voice calls
-@SYMTestExpectedResults Pass
-@SYMTestType CT
-*/
-void CCTsyCallControlFU::TestHangUp0005L()
- {
- OpenEtelServerL(EUseExtendedError);
- CleanupStack::PushL(TCleanupItem(Cleanup,this));
- OpenPhoneL();
-
- RBuf8 expectData;
- CleanupClosePushL(expectData);
-
- RBuf8 completeData;
- CleanupClosePushL(completeData);
-
- RLine line;
- RCall call;
-
- TInt errorCode = KErrNone;
- TRequestStatus requestStatus;
- TRequestStatus mockLtsyStatus;
-
- // open new line
- errorCode = OpenNewLineLC(iPhone, line, KMmTsyVoice1LineName);
- ASSERT_EQUALS(KErrNone, errorCode);
-
- TName incomingCallName;
- TInt callId = 1;
- RMobilePhone::TMobileService mobileService = RMobilePhone::EVoiceService;
- RMobileCall::TMobileCallStatus mobileCallStatus = RMobileCall::EStatusRinging;
-
- TInt hangUpCause = KErrGsmBusyUserRequest;
- TBool autoStChangeDisable = ETrue;
- TMockLtsyCallData2<TInt, TBool> mockData2(callId, mobileService,
- hangUpCause,
- autoStChangeDisable);
-
- TMockLtsyCallData0 mockData0(callId, mobileService);
-
- //-------------------------------------------------------------------------
- // Test A: Test timeout of RCall::HangUp
- //-------------------------------------------------------------------------
-
- //-------------------------------------------------------------------------
- // create new incoming call
- errorCode = CreateIncomingCallL(line, callId, incomingCallName,
- mobileService, mobileCallStatus);
- ASSERT_EQUALS(KErrNone, errorCode);
-
- CleanupClosePushL(call);
- errorCode = call.OpenExistingCall(line, incomingCallName);
- ASSERT_EQUALS(KErrNone, errorCode);
- //-------------------------------------------------------------------------
-
- expectData.Close();
- mockData2.SerialiseL(expectData);
- iMockLTSY.ExpectL(EEtelCallHangUp, expectData);
-
- TTime t1,t2; //time stamps for measuring the Time Out
-
-
- t1.HomeTime(); // time stamp before request
- call.HangUp(requestStatus);
- User::WaitForRequest(requestStatus);
- t2.HomeTime(); // timestamp after request
-
- AssertMockLtsyStatusL();
- ASSERT_EQUALS(KErrTimedOut, requestStatus.Int());
- TTimeIntervalSeconds diff;
- TInt res = t2.SecondsFrom(t1,diff);
- ASSERT_EQUALS(KErrNone, res);
- if(diff.Int() < KMmCallHangUpTimeOut)
- {
- ERR_PRINTF3(_L("RCall::Hangup time out too short. Expected: %d Actual: %d "),KMmCallHangUpTimeOut, diff.Int());
- ASSERT(false);
- }
- // close incoming call
- CloseIncomingCallL(call, callId, mobileService);
- AssertMockLtsyStatusL();
- CleanupStack::PopAndDestroy(1);
-
- AssertMockLtsyStatusL();
- CleanupStack::PopAndDestroy(4, this); // expectData, completeData, line, this
-
- }
-
-
-/**
-@SYMTestCaseID BA-CTSY-CCON-CHU-0006
-@SYMComponent telephony_ctsy
-@SYMTestCaseDesc Test support in CTSY for RCall::HangUp for data calls
-@SYMTestPriority High
-@SYMTestActions Invokes RCall::HangUp for data calls
-@SYMTestExpectedResults Pass
-@SYMTestType CT
-*/
-void CCTsyCallControlFU::TestHangUp0006L()
- {
-
- OpenEtelServerL(EUseExtendedError);
- CleanupStack::PushL(TCleanupItem(Cleanup,this));
- OpenPhoneL();
-
- RBuf8 expectData;
- CleanupClosePushL(expectData);
-
- RBuf8 completeData;
- CleanupClosePushL(completeData);
-
- RLine line;
- RCall call;
-
- TInt errorCode = KErrNone;
- TRequestStatus requestStatus;
- TRequestStatus mockLtsyStatus;
-
- // open new line
- errorCode = OpenNewLineLC(iPhone, line, KMmTsyDataLineName);
- ASSERT_EQUALS(KErrNone, errorCode);
-
- TName incomingCallName;
- TInt callId = 1;
- RMobilePhone::TMobileService mobileService = RMobilePhone::ECircuitDataService;
- RMobileCall::TMobileCallStatus mobileCallStatus = RMobileCall::EStatusRinging;
-
- TInt hangUpCause = KErrGsmBusyUserRequest;
- TBool autoStChangeDisable = EFalse;
- TMockLtsyCallData2<TInt, TBool> mockData2(callId, mobileService,
- hangUpCause,
- autoStChangeDisable);
-
- TMockLtsyCallData0 mockData0(callId, mobileService);
-
- //-------------------------------------------------------------------------
- // TEST A: failure to dispatch request to LTSY
- //-------------------------------------------------------------------------
-
- //-------------------------------------------------------------------------
- // create new incoming call
- errorCode = CreateIncomingCallL(line, callId, incomingCallName,
- mobileService, mobileCallStatus);
- ASSERT_EQUALS(KErrNone, errorCode);
-
- CleanupClosePushL(call);
- errorCode = call.OpenExistingCall(line, incomingCallName);
- ASSERT_EQUALS(KErrNone, errorCode);
- //-------------------------------------------------------------------------
-
- expectData.Close();
- mockData2.SerialiseL(expectData);
- iMockLTSY.ExpectL(EEtelCallHangUp, expectData, KErrNotSupported);
-
- call.HangUp(requestStatus);
- User::WaitForRequest(requestStatus);
- AssertMockLtsyStatusL();
- ASSERT_EQUALS(KErrNotSupported, requestStatus.Int());
-
- //-------------------------------------------------------------------------
- // TEST C: Successful completion request of
- // RCall::HangUp when result is not cached.
- //-------------------------------------------------------------------------
-
- expectData.Close();
- mockData2.SerialiseL(expectData);
- iMockLTSY.ExpectL(EEtelCallHangUp, expectData);
- mockData0.SerialiseL(completeData);
- iMockLTSY.CompleteL(EEtelCallHangUp, KErrNone, completeData);
-
- call.HangUp(requestStatus);
- User::WaitForRequest(requestStatus);
- AssertMockLtsyStatusL();
- ASSERT_EQUALS(KErrNone, requestStatus.Int());
-
- //-------------------------------------------------------------------------
- // TEST E: Unsolicited completion of RCall::HangUp
- // from LTSY.
- //-------------------------------------------------------------------------
-
- iMockLTSY.NotifyTerminated(mockLtsyStatus);
- completeData.Close();
- mockData0.SerialiseL(completeData);
- iMockLTSY.CompleteL(EEtelCallHangUp, KErrNone, completeData);
- User::WaitForRequest(mockLtsyStatus);
- AssertMockLtsyStatusL();
- ASSERT_EQUALS(KErrNone, mockLtsyStatus.Int());
-
- //-------------------------------------------------------------------------
- // TEST : to increase CMmVoiceCallTsy::Dial coverage
- // covers "if ( 0 < hangUpHandle || iHangUpFlag )" condition
- //-------------------------------------------------------------------------
-
- RCall call2;
- CleanupClosePushL(call2);
- TRequestStatus requestStatus2;
-
- //-------------------------------------------------------------------------
- errorCode = call2.OpenExistingCall(line, incomingCallName);
- ASSERT_EQUALS(KErrNone, errorCode);
- AssertMockLtsyStatusL();
- //-------------------------------------------------------------------------
-
- expectData.Close();
- mockData2.SerialiseL(expectData);
- iMockLTSY.ExpectL(EEtelCallHangUp, expectData);
- completeData.Close();
- mockData0.SerialiseL(completeData);
- iMockLTSY.CompleteL(EEtelCallHangUp, KErrGeneral, completeData);
- call.HangUp(requestStatus);
-
- call2.HangUp(requestStatus2);
-
- User::WaitForRequest(requestStatus);
- AssertMockLtsyStatusL();
- ASSERT_EQUALS(KErrGeneral, requestStatus.Int());
-
- User::WaitForRequest(requestStatus2);
- AssertMockLtsyStatusL();
- ASSERT_EQUALS(KErrServerBusy, requestStatus2.Int());
-
- // close incoming call2
- call2.Close();
- AssertMockLtsyStatusL();
- CleanupStack::PopAndDestroy(1);
-
- //-------------------------------------------------------------------------
- // TEST : to increase CMmVoiceCallTsy::Dial coverage
- // covers "else if ( RCall::EStatusIdle == iCallStatus &&
- // EMultimodeCallReqHandleUnknown == dialHandle )" condition
- //-------------------------------------------------------------------------
-
- TInt callId2 = 2;
- mobileCallStatus = RMobileCall::EStatusIdle;
-
- //-------------------------------------------------------------------------
- // create new incoming call
- errorCode = CreateIncomingCallL(line, callId2, incomingCallName,
- mobileService, mobileCallStatus);
- ASSERT_EQUALS(KErrNone, errorCode);
-
- errorCode = call2.OpenExistingCall(line, incomingCallName);
- ASSERT_EQUALS(KErrNone, errorCode);
- AssertMockLtsyStatusL();
- //-------------------------------------------------------------------------
-
- call2.HangUp(requestStatus);
-
- User::WaitForRequest(requestStatus);
- AssertMockLtsyStatusL();
- ASSERT_EQUALS(KErrNotReady, requestStatus.Int());
-
- // close incoming call2
- call2.Close();
- AssertMockLtsyStatusL();
-
- //-------------------------------------------------------------------------
- // TEST B: failure on completion of pending request from LTSY->CTSY
- //-------------------------------------------------------------------------
-
- expectData.Close();
- mockData2.SerialiseL(expectData);
- iMockLTSY.ExpectL(EEtelCallHangUp, expectData);
- completeData.Close();
- mockData0.SerialiseL(completeData);
- iMockLTSY.CompleteL(EEtelCallHangUp, KErrGeneral, completeData);
-
- call.HangUp(requestStatus);
- User::WaitForRequest(requestStatus);
- AssertMockLtsyStatusL();
- ASSERT_EQUALS(KErrGeneral, requestStatus.Int());
-
-
-
- //
- // Added for DEF139341 (Unexpected error note pops up after creating emergency call)
- // Tests that CTSY treats KErrGsmReleaseByUser as a normal return code, not as an error
- // (the client request should complete with KErrNone).
- //
-
- //-------------------------------------------------------------------------
- // create new incoming call
- TInt callId3 = 3;
- mobileCallStatus = RMobileCall::EStatusRinging;
- errorCode = CreateIncomingCallL(line, callId3, incomingCallName,
- mobileService, mobileCallStatus);
- ASSERT_EQUALS(KErrNone, errorCode);
-
- RCall call3;
- CleanupClosePushL(call3);
- errorCode = call3.OpenExistingCall(line, incomingCallName);
- ASSERT_EQUALS(KErrNone, errorCode);
- //-------------------------------------------------------------------------
-
- TMockLtsyCallData2<TInt, TBool> mockData23(callId3, mobileService,
- hangUpCause,
- autoStChangeDisable);
-
- TMockLtsyCallData0 mockData03(callId3, mobileService);
-
- expectData.Close();
- mockData23.SerialiseL(expectData);
- iMockLTSY.ExpectL(EEtelCallHangUp, expectData);
- completeData.Close();
- mockData03.SerialiseL(completeData);
- iMockLTSY.CompleteL(EEtelCallHangUp, KErrGsmReleaseByUser, completeData);
-
- call3.HangUp(requestStatus);
- User::WaitForRequest(requestStatus);
- ASSERT_EQUALS(KErrNone, requestStatus.Int());
- //
-
- AssertMockLtsyStatusL();
- CleanupStack::PopAndDestroy(6, this); // call3, call, line, completeData, expectData, this
-
- }
-
-
-/**
-@SYMTestCaseID BA-CTSY-CCON-CHU-0007
-@SYMComponent telephony_ctsy
-@SYMTestCaseDesc Test support in CTSY for cancelling of RCall::HangUp for data calls
-@SYMTestPriority High
-@SYMTestActions Invokes cancelling of RCall::HangUp for data calls
-@SYMTestExpectedResults Pass
-@SYMTestType CT
-*/
-void CCTsyCallControlFU::TestHangUp0007L()
- {
-
- OpenEtelServerL(EUseExtendedError);
- CleanupStack::PushL(TCleanupItem(Cleanup,this));
- OpenPhoneL();
-
- RBuf8 expectData;
- CleanupClosePushL(expectData);
-
- RBuf8 completeData;
- CleanupClosePushL(completeData);
-
- RLine line;
- RCall call;
-
- TInt errorCode = KErrNone;
- TRequestStatus requestStatus;
- TRequestStatus mockLtsyStatus;
-
- // open new line and call for KMmTsyDataLineName
- errorCode = OpenNewLineLC(iPhone, line, KMmTsyDataLineName);
- ASSERT_EQUALS(KErrNone, errorCode);
-
- TName incomingCallName;
- TInt callId = 1;
- RMobilePhone::TMobileService mobileService = RMobilePhone::ECircuitDataService;
- RMobileCall::TMobileCallStatus mobileCallStatus = RMobileCall::EStatusRinging;
-
- TInt hangUpCause = KErrGsmBusyUserRequest;
- TBool autoStChangeDisable = EFalse;
- TMockLtsyCallData2<TInt, TBool> mockData2(callId, mobileService,
- hangUpCause,
- autoStChangeDisable);
-
- //-------------------------------------------------------------------------
- // Test cancelling of RCall::HangUp
- //-------------------------------------------------------------------------
-
- //-------------------------------------------------------------------------
- // create new incoming call
- errorCode = CreateIncomingCallL(line, callId, incomingCallName,
- mobileService, mobileCallStatus);
- ASSERT_EQUALS(KErrNone, errorCode);
-
- CleanupClosePushL(call);
- errorCode = call.OpenExistingCall(line, incomingCallName);
- ASSERT_EQUALS(KErrNone, errorCode);
- //-------------------------------------------------------------------------
-
- expectData.Close();
- mockData2.SerialiseL(expectData);
- iMockLTSY.ExpectL(EEtelCallHangUp, expectData);
-
- call.HangUp(requestStatus);
-
- // cancel hang-up
- // TSY has started a HangUp request and it is not possible to cancel this request
- call.CancelAsyncRequest(EEtelCallHangUp);
-
- // CTSY hangs up the call and it goes to idle state
- mobileCallStatus = RMobileCall::EStatusIdle;
- TMockLtsyCallData1<RMobileCall::TMobileCallStatus> mockCallData2(callId, mobileService, mobileCallStatus);
- mockCallData2.SerialiseL(completeData);
- iMockLTSY.NotifyTerminated(mockLtsyStatus);
- iMockLTSY.CompleteL(EMobileCallNotifyMobileCallStatusChange, KErrGsmBusyUserRequest, completeData);
- User::WaitForRequest(mockLtsyStatus);
- ASSERT_EQUALS(KErrNone, mockLtsyStatus.Int());
-
- User::WaitForRequest(requestStatus);
- ASSERT_EQUALS(KErrNone, requestStatus.Int());
- AssertMockLtsyStatusL();
-
- CleanupStack::PopAndDestroy(5, this); // call, line, expectData, completeData, this
- }
-
-/**
-@SYMTestCaseID BA-CTSY-CCON-CHU-0009
-@SYMComponent telephony_ctsy
-@SYMTestCaseDesc Test support in CTSY for multiple client requests to RCall::HangUp for data calls
-@SYMTestPriority High
-@SYMTestActions Invokes multiple client requests to RCall::HangUp for data calls
-@SYMTestExpectedResults Pass
-@SYMTestType CT
-*/
-void CCTsyCallControlFU::TestHangUp0009L()
- {
- OpenEtelServerL(EUseExtendedError);
- CleanupStack::PushL(TCleanupItem(Cleanup,this));
- OpenPhoneL();
-
- RBuf8 expectData;
- CleanupClosePushL(expectData);
-
- RBuf8 completeData;
- CleanupClosePushL(completeData);
-
- // Open second client
- RTelServer telServer2;
- TInt ret = telServer2.Connect();
- ASSERT_EQUALS(KErrNone, ret);
- CleanupClosePushL(telServer2);
-
- RMobilePhone phone2;
- ret = phone2.Open(iTelServer,KMmTsyPhoneName);
- ASSERT_EQUALS(KErrNone, ret);
- CleanupClosePushL(phone2);
-
- // Open third client
- RTelServer telServer3;
- ret = telServer3.Connect();
- ASSERT_EQUALS(KErrNone, ret);
- CleanupClosePushL(telServer3);
-
- RMobilePhone phone3;
- ret = phone3.Open(iTelServer,KMmTsyPhoneName);
- ASSERT_EQUALS(KErrNone, ret);
- CleanupClosePushL(phone3);
-
- RCall call1;
- RCall call2;
- RCall call3;
- RLine line1;
- RLine line2;
- RLine line3;
-
- TInt errorCode = KErrNone;
- TRequestStatus requestStatus1;
- TRequestStatus requestStatus2;
- TRequestStatus requestStatus3;
-
- // open new line1
- errorCode = OpenNewLineLC(iPhone, line1, KMmTsyDataLineName);
- ASSERT_EQUALS(KErrNone, errorCode);
-
- // open new line2
- errorCode = OpenNewLineLC(phone2, line2, KMmTsyDataLineName);
- ASSERT_EQUALS(KErrNone, errorCode);
-
- // open new line3
- errorCode = OpenNewLineLC(phone3, line3, KMmTsyDataLineName);
- ASSERT_EQUALS(KErrNone, errorCode);
-
- TName incomingCallName1;
- TName incomingCallName2;
- TName incomingCallName3;
-
- TInt callId1 = 1;
- TInt callId2 = 2;
- TInt callId3 = 3;
- RMobilePhone::TMobileService mobileService = RMobilePhone::ECircuitDataService;
- RMobileCall::TMobileCallStatus mobileCallStatus = RMobileCall::EStatusRinging;
-
- TInt hangUpCause = KErrGsmBusyUserRequest;
- TBool autoStChangeDisable = EFalse;
- TMockLtsyCallData2<TInt, TBool> mockData21(callId1, mobileService,
- hangUpCause,
- autoStChangeDisable);
- TMockLtsyCallData2<TInt, TBool> mockData22(callId2, mobileService,
- hangUpCause,
- autoStChangeDisable);
-
- TMockLtsyCallData0 mockData01(callId1, mobileService);
- TMockLtsyCallData0 mockData02(callId2, mobileService);
-
- //-------------------------------------------------------------------------
- // Test A: Test multiple clients requesting RCall::HangUp
- //-------------------------------------------------------------------------
-
- //-------------------------------------------------------------------------
- // create new incoming call1
- errorCode = CreateIncomingCallL(line1, callId1, incomingCallName1,
- mobileService, mobileCallStatus);
- ASSERT_EQUALS(KErrNone, errorCode);
-
- CleanupClosePushL(call1);
- errorCode = call1.OpenExistingCall(line1, incomingCallName1);
- ASSERT_EQUALS(KErrNone, errorCode);
- //-------------------------------------------------------------------------
-
- //-------------------------------------------------------------------------
- // create new incoming call2
- errorCode = CreateIncomingCallL(line2, callId2, incomingCallName2,
- mobileService, mobileCallStatus);
- ASSERT_EQUALS(KErrNone, errorCode);
-
- CleanupClosePushL(call2);
- errorCode = call2.OpenExistingCall(line2, incomingCallName2);
- ASSERT_EQUALS(KErrNone, errorCode);
- //-------------------------------------------------------------------------
-
- //-------------------------------------------------------------------------
- // create new incoming call3
-
- mobileCallStatus = RMobileCall::EStatusConnected;
- errorCode = CreateIncomingCallL(line3, callId3, incomingCallName3,
- mobileService, mobileCallStatus);
- ASSERT_EQUALS(KErrNone, errorCode);
-
- CleanupClosePushL(call3);
- errorCode = call3.OpenExistingCall(line3, incomingCallName3);
- ASSERT_EQUALS(KErrNone, errorCode);
- //-------------------------------------------------------------------------
-
- expectData.Close();
- mockData21.SerialiseL(expectData);
- iMockLTSY.ExpectL(EEtelCallHangUp, expectData);
- mockData01.SerialiseL(completeData);
- iMockLTSY.CompleteL(EEtelCallHangUp, KErrNone, completeData);
-
- call1.HangUp(requestStatus1);
-
- expectData.Close();
- mockData22.SerialiseL(expectData);
- iMockLTSY.ExpectL(EEtelCallHangUp, expectData);
- completeData.Close();
- mockData02.SerialiseL(completeData);
- iMockLTSY.CompleteL(EEtelCallHangUp, KErrNone, completeData);
-
- call2.HangUp(requestStatus2);
-
- hangUpCause = KErrGsmReleaseByUser;
- TMockLtsyCallData2<TInt, TBool> mockData23(callId3, mobileService,
- hangUpCause,
- autoStChangeDisable);
- TMockLtsyCallData0 mockData03(callId3, mobileService);
-
- expectData.Close();
- mockData23.SerialiseL(expectData);
- iMockLTSY.ExpectL(EEtelCallHangUp, expectData);
- completeData.Close();
- mockData03.SerialiseL(completeData);
- iMockLTSY.CompleteL(EEtelCallHangUp, KErrNone, completeData);
-
- call3.HangUp(requestStatus3);
-
- User::WaitForRequest(requestStatus1);
- ASSERT_EQUALS(KErrNone, requestStatus1.Int());
-
- User::WaitForRequest(requestStatus2);
- ASSERT_EQUALS(KErrNone, requestStatus2.Int());
-
- User::WaitForRequest(requestStatus3);
- AssertMockLtsyStatusL();
- ASSERT_EQUALS(KErrNone, requestStatus3.Int());
-
- CleanupStack::PopAndDestroy(3); // call1, call2, call3
- CleanupStack::PopAndDestroy(10, this); // phone2, telServer2, phone3, telServer3,
- // expectData, completeData, this
- // line1, line2, line3
- }
-
-
-/**
-@SYMTestCaseID BA-CTSY-CCON-CHU-00010
-@SYMComponent telephony_ctsy
-@SYMTestCaseDesc Test support in CTSY for RCall::HangUp with timeout for data calls
-@SYMTestPriority High
-@SYMTestActions Invokes RCall::HangUp and tests for timeout for data calls
-@SYMTestExpectedResults Pass
-@SYMTestType CT
-*/
-void CCTsyCallControlFU::TestHangUp00010L()
- {
- OpenEtelServerL(EUseExtendedError);
- CleanupStack::PushL(TCleanupItem(Cleanup,this));
- OpenPhoneL();
-
- RBuf8 expectData;
- CleanupClosePushL(expectData);
-
- RBuf8 completeData;
- CleanupClosePushL(completeData);
-
- RLine line;
- RCall call;
-
- TInt errorCode = KErrNone;
- TRequestStatus requestStatus;
- TRequestStatus mockLtsyStatus;
-
- // open new line
- errorCode = OpenNewLineLC(iPhone, line, KMmTsyDataLineName);
- ASSERT_EQUALS(KErrNone, errorCode);
-
- TName incomingCallName;
- TInt callId = 1;
- RMobilePhone::TMobileService mobileService = RMobilePhone::ECircuitDataService;
- RMobileCall::TMobileCallStatus mobileCallStatus = RMobileCall::EStatusRinging;
-
- TInt hangUpCause = KErrGsmBusyUserRequest;
- TBool autoStChangeDisable = EFalse;
- TMockLtsyCallData2<TInt, TBool> mockData2(callId, mobileService,
- hangUpCause,
- autoStChangeDisable);
-
- TMockLtsyCallData0 mockData0(callId, mobileService);
-
- //-------------------------------------------------------------------------
- // Test A: Test timeout of RCall::HangUp
- //-------------------------------------------------------------------------
-
- //-------------------------------------------------------------------------
- // create new incoming call
- errorCode = CreateIncomingCallL(line, callId, incomingCallName,
- mobileService, mobileCallStatus);
- ASSERT_EQUALS(KErrNone, errorCode);
-
- CleanupClosePushL(call);
- errorCode = call.OpenExistingCall(line, incomingCallName);
- ASSERT_EQUALS(KErrNone, errorCode);
- //-------------------------------------------------------------------------
-
- expectData.Close();
- mockData2.SerialiseL(expectData);
- iMockLTSY.ExpectL(EEtelCallHangUp, expectData);
-
- call.HangUp(requestStatus);
- User::WaitForRequest(requestStatus);
- AssertMockLtsyStatusL();
- ERR_PRINTF2(_L("<font color=Orange>$CTSYKnownFailure: defect id = %d</font>"), 100303);
- ASSERT_EQUALS(KErrTimedOut, requestStatus.Int());
-
- // close incoming call
- CloseIncomingCallL(call, callId, mobileService);
- AssertMockLtsyStatusL();
- CleanupStack::PopAndDestroy(1);
-
- AssertMockLtsyStatusL();
- CleanupStack::PopAndDestroy(4, this); // expectData, completeData, line, this
- }
-
-
-/**
-@SYMTestCaseID BA-CTSY-CCON-CHU-00011
-@SYMComponent telephony_ctsy
-@SYMTestCaseDesc Test support in CTSY for RCall::HangUp for fax calls
-@SYMTestPriority High
-@SYMTestActions Invokes RCall::HangUp for fax calls
-@SYMTestExpectedResults Pass
-@SYMTestType CT
-*/
-void CCTsyCallControlFU::TestHangUp00011L()
- {
-
- OpenEtelServerL(EUseExtendedError);
- CleanupStack::PushL(TCleanupItem(Cleanup,this));
- OpenPhoneL();
-
- RBuf8 expectData;
- CleanupClosePushL(expectData);
-
- RBuf8 completeData;
- CleanupClosePushL(completeData);
-
- RLine line;
- RCall call;
-
- TInt errorCode = KErrNone;
- TInt callId = 1;
- TName incomingCallName;
-
- TRequestStatus requestStatus;
- TRequestStatus mockLtsyStatus;
-
- // open new line for KMmTsyVoice1LineName
- errorCode = OpenNewLineLC(iPhone, line, KMmTsyFaxLineName);
- ASSERT_EQUALS(KErrNone, errorCode);
-
- RMobilePhone::TMobileService mobileService = RMobilePhone::EFaxService;
- RMobileCall::TMobileCallStatus mobileCallStatus = RMobileCall::EStatusRinging;
-
- TInt hangUpCause = KErrGsmBusyUserRequest;
- TBool autoStChangeDisable = EFalse;
- TMockLtsyCallData2<TInt, TBool> mockData2(callId, mobileService,
- hangUpCause,
- autoStChangeDisable);
-
- TMockLtsyCallData0 mockData0(callId, mobileService);
-
- //-------------------------------------------------------------------------
- // TEST A: failure to dispatch request to LTSY
- //-------------------------------------------------------------------------
-
- //-------------------------------------------------------------------------
- // create new incoming call
- errorCode = CreateIncomingCallL(line, callId, incomingCallName,
- mobileService, mobileCallStatus);
- ASSERT_EQUALS(KErrNone, errorCode);
-
- errorCode = call.OpenExistingCall(line, incomingCallName);
- CleanupClosePushL(call);
- ASSERT_EQUALS(KErrNone, errorCode);
- //-------------------------------------------------------------------------
-
- expectData.Close();
- mockData2.SerialiseL(expectData);
- iMockLTSY.ExpectL(EEtelCallHangUp, expectData, KErrNotSupported);
-
- call.HangUp(requestStatus);
- User::WaitForRequest(requestStatus);
- AssertMockLtsyStatusL();
- ASSERT_EQUALS(KErrNotSupported, requestStatus.Int());
-
- //-------------------------------------------------------------------------
- // TEST C: Successful completion request of
- // RCall::HangUp when result is not cached.
- //-------------------------------------------------------------------------
-
- expectData.Close();
- mockData2.SerialiseL(expectData);
- iMockLTSY.ExpectL(EEtelCallHangUp, expectData);
-
- mockData0.SerialiseL(completeData);
- iMockLTSY.CompleteL(EEtelCallHangUp, KErrNone, completeData);
-
- call.HangUp(requestStatus);
- User::WaitForRequest(requestStatus);
- AssertMockLtsyStatusL();
- ASSERT_EQUALS(KErrNone, requestStatus.Int());
-
- //-------------------------------------------------------------------------
- // TEST E: Unsolicited completion of RCall::HangUp
- // from LTSY.
- //-------------------------------------------------------------------------
-
- iMockLTSY.NotifyTerminated(mockLtsyStatus);
- completeData.Close();
- mockData0.SerialiseL(completeData);
- iMockLTSY.CompleteL(EEtelCallHangUp, KErrNone, completeData);
- User::WaitForRequest(mockLtsyStatus);
- AssertMockLtsyStatusL();
- ASSERT_EQUALS(KErrNone, mockLtsyStatus.Int());
-
- //-------------------------------------------------------------------------
- // TEST : to increase CMmVoiceCallTsy::Dial coverage
- // covers "if ( 0 < hangUpHandle )" condition
- //-------------------------------------------------------------------------
-
- RCall call2;
- TRequestStatus requestStatus2;
-
- //-------------------------------------------------------------------------
- errorCode = call2.OpenExistingCall(line, incomingCallName);
- CleanupClosePushL(call2);
- ASSERT_EQUALS(KErrNone, errorCode);
- AssertMockLtsyStatusL();
- //-------------------------------------------------------------------------
-
- expectData.Close();
- mockData2.SerialiseL(expectData);
- iMockLTSY.ExpectL(EEtelCallHangUp, expectData);
- completeData.Close();
- mockData0.SerialiseL(completeData);
- iMockLTSY.CompleteL(EEtelCallHangUp, KErrGeneral, completeData);
- call.HangUp(requestStatus);
-
- call2.HangUp(requestStatus2);
-
- User::WaitForRequest(requestStatus);
- AssertMockLtsyStatusL();
- ASSERT_EQUALS(KErrGeneral, requestStatus.Int());
-
- User::WaitForRequest(requestStatus2);
- AssertMockLtsyStatusL();
- ASSERT_EQUALS(KErrServerBusy, requestStatus2.Int());
-
- // close incoming call2
- call2.Close();
- AssertMockLtsyStatusL();
-
- //-------------------------------------------------------------------------
- // TEST B: failure on completion of pending request from LTSY->CTSY
- //-------------------------------------------------------------------------
-
- expectData.Close();
- mockData2.SerialiseL(expectData);
- iMockLTSY.ExpectL(EEtelCallHangUp, expectData);
-
- completeData.Close();
- mockData0.SerialiseL(completeData);
- iMockLTSY.CompleteL(EEtelCallHangUp, KErrGeneral, completeData);
-
- call.HangUp(requestStatus);
- User::WaitForRequest(requestStatus);
- AssertMockLtsyStatusL();
- ASSERT_EQUALS(KErrGeneral, requestStatus.Int());
-
-
- //
- // Added for DEF139341 (Unexpected error note pops up after creating emergency call)
- // Tests that CTSY treats KErrGsmReleaseByUser as a normal return code, not as an error
- // (the client request should complete with KErrNone).
- //
-
- //-------------------------------------------------------------------------
- // create new incoming call
- TInt callId3 = 3;
- mobileCallStatus = RMobileCall::EStatusRinging;
- errorCode = CreateIncomingCallL(line, callId3, incomingCallName,
- mobileService, mobileCallStatus);
- ASSERT_EQUALS(KErrNone, errorCode);
-
- RCall call3;
- CleanupClosePushL(call3);
- errorCode = call3.OpenExistingCall(line, incomingCallName);
- ASSERT_EQUALS(KErrNone, errorCode);
- //-------------------------------------------------------------------------
-
- TMockLtsyCallData2<TInt, TBool> mockData23(callId3, mobileService,
- hangUpCause,
- autoStChangeDisable);
-
- TMockLtsyCallData0 mockData03(callId3, mobileService);
-
- expectData.Close();
- mockData23.SerialiseL(expectData);
- iMockLTSY.ExpectL(EEtelCallHangUp, expectData);
- completeData.Close();
- mockData03.SerialiseL(completeData);
- iMockLTSY.CompleteL(EEtelCallHangUp, KErrGsmReleaseByUser, completeData);
-
- call3.HangUp(requestStatus);
- User::WaitForRequest(requestStatus);
- ASSERT_EQUALS(KErrNone, requestStatus.Int());
- //
-
- AssertMockLtsyStatusL();
- CleanupStack::PopAndDestroy(7, this); // expectData, completeData, this, line, call, call2, call3
-
- }
-
-/**
-@SYMTestCaseID BA-CTSY-CCON-CHU-00011b
-@SYMComponent telephony_ctsy
-@SYMTestCaseDesc Test support in CTSY for RCall::HangUp for fax calls
-@SYMTestPriority High
-@SYMTestActions Invokes RCall::HangUp for fax calls
-@SYMTestExpectedResults Pass
-@SYMTestType CT
-*/
-void CCTsyCallControlFU::TestHangUp00011bL()
- {
- OpenEtelServerL(EUseExtendedError);
- CleanupStack::PushL(TCleanupItem(Cleanup,this));
- OpenPhoneL();
-
- RBuf8 expectData;
- CleanupClosePushL(expectData);
-
- RBuf8 completeData;
- CleanupClosePushL(completeData);
-
- RLine line;
- RCall call;
-
- TInt errorCode = KErrNone;
- TInt callId = 1;
- TName incomingCallName;
-
- TRequestStatus requestStatus;
- TRequestStatus mockLtsyStatus;
-
- // open new line for KMmTsyVoice1LineName
- errorCode = OpenNewLineLC(iPhone, line, KMmTsyFaxLineName);
- ASSERT_EQUALS(KErrNone, errorCode);
-
- RMobilePhone::TMobileService mobileService = RMobilePhone::EFaxService;
- RMobileCall::TMobileCallStatus mobileCallStatus = RMobileCall::EStatusIdle;
-
- TInt hangUpCause = KErrGsmBusyUserRequest;
- TBool autoStChangeDisable = EFalse;
- TMockLtsyCallData2<TInt, TBool> mockData2(callId, mobileService,
- hangUpCause,
- autoStChangeDisable);
-
- TMockLtsyCallData0 mockData0(callId, mobileService);
-
-
- //-------------------------------------------------------------------------
- // TEST : to increase CMmVoiceCallTsy::Dial coverage
- // covers "else if ( RCall::EStatusIdle == iCallStatus &&
- // EMultimodeCallReqHandleUnknown == dialHandle )" condition
- //-------------------------------------------------------------------------
-
- //-------------------------------------------------------------------------
- // create new incoming call
- errorCode = CreateIncomingCallL(line, callId, incomingCallName,
- mobileService, mobileCallStatus);
- ASSERT_EQUALS(KErrNone, errorCode);
-
-
- errorCode = call.OpenExistingCall(line, incomingCallName);
- CleanupClosePushL(call);
- AssertMockLtsyStatusL();
- ASSERT_EQUALS(KErrNone, errorCode);
- //-------------------------------------------------------------------------
-
- call.HangUp(requestStatus);
-
- User::WaitForRequest(requestStatus);
- AssertMockLtsyStatusL();
- ASSERT_EQUALS(KErrNotReady, requestStatus.Int());
-
- CleanupStack::PopAndDestroy(5, this); // expectData, completeData, this, line, call
- }
-
-/**
-@SYMTestCaseID BA-CTSY-CCON-CHU-00011c
-@SYMComponent telephony_ctsy
-@SYMTestCaseDesc Test support in CTSY for RCall::HangUp for fax calls
-@SYMTestPriority High
-@SYMTestActions Invokes RCall::HangUp for fax calls
-@SYMTestExpectedResults Pass
-@SYMTestType CT
-*/
-void CCTsyCallControlFU::TestHangUp00011cL()
- {
- OpenEtelServerL(EUseExtendedError);
- CleanupStack::PushL(TCleanupItem(Cleanup,this));
- OpenPhoneL();
-
- RBuf8 expectData;
- CleanupClosePushL(expectData);
-
- RBuf8 completeData;
- CleanupClosePushL(completeData);
-
- RLine line;
- RCall call;
-
- TInt errorCode = KErrNone;
- TInt callId = 1;
- TName incomingCallName;
-
- TRequestStatus requestStatus;
- TRequestStatus mockLtsyStatus;
-
- // open new line for KMmTsyFaxLineName
- errorCode = OpenNewLineLC(iPhone, line, KMmTsyFaxLineName);
- ASSERT_EQUALS(KErrNone, errorCode);
-
- RMobilePhone::TMobileService mobileService = RMobilePhone::EFaxService;
- RMobileCall::TMobileCallStatus mobileCallStatus = RMobileCall::EStatusConnected;
-
- TInt hangUpCause = KErrGsmReleaseByUser;
- TBool autoStChangeDisable = EFalse;
- TMockLtsyCallData2<TInt, TBool> mockData2(callId, mobileService,
- hangUpCause,
- autoStChangeDisable);
-
- TMockLtsyCallData0 mockData0(callId, mobileService);
-
-
- //-------------------------------------------------------------------------
- // TEST : to increase CMmVoiceCallTsy::Dial coverage
- // covers "if ( RCall::EStatusRinging == iCallStatus )" condition
- //-------------------------------------------------------------------------
-
- // create new incoming call
- errorCode = CreateIncomingCallL(line, callId, incomingCallName,
- mobileService, mobileCallStatus);
- ASSERT_EQUALS(KErrNone, errorCode);
-
-
- errorCode = call.OpenExistingCall(line, incomingCallName);
- CleanupClosePushL(call);
- AssertMockLtsyStatusL();
- ASSERT_EQUALS(KErrNone, errorCode);
- //-------------------------------------------------------------------------
-
- expectData.Close();
- mockData2.SerialiseL(expectData);
- iMockLTSY.ExpectL(EEtelCallHangUp, expectData);
-
- mockData0.SerialiseL(completeData);
- iMockLTSY.CompleteL(EEtelCallHangUp, KErrNone, completeData);
-
- call.HangUp(requestStatus);
-
- User::WaitForRequest(requestStatus);
- AssertMockLtsyStatusL();
- ASSERT_EQUALS(KErrNone, requestStatus.Int());
-
- CleanupStack::PopAndDestroy(5, this); // expectData, completeData, this, line, call
- }
-
-
-/**
-@SYMTestCaseID BA-CTSY-CCON-CHU-00012
-@SYMComponent telephony_ctsy
-@SYMTestCaseDesc Test support in CTSY for cancelling of RCall::HangUp for fax calls
-@SYMTestPriority High
-@SYMTestActions Invokes cancelling of RCall::HangUp for fax calls
-@SYMTestExpectedResults Pass
-@SYMTestType CT
-*/
-void CCTsyCallControlFU::TestHangUp00012L()
- {
-
- OpenEtelServerL(EUseExtendedError);
- CleanupStack::PushL(TCleanupItem(Cleanup,this));
- OpenPhoneL();
-
- RBuf8 expectData;
- CleanupClosePushL(expectData);
-
- RBuf8 completeData;
- CleanupClosePushL(completeData);
-
- RLine line;
- RCall call;
-
- TInt errorCode = KErrNone;
- TRequestStatus requestStatus;
- TRequestStatus mockLtsyStatus;
-
- // open new line and call for KMmTsyFaxLineName
- errorCode = OpenNewLineLC(iPhone, line, KMmTsyFaxLineName);
- ASSERT_EQUALS(KErrNone, errorCode);
-
- TName incomingCallName;
- TInt callId = 1;
- RMobilePhone::TMobileService mobileService = RMobilePhone::EFaxService;
- RMobileCall::TMobileCallStatus mobileCallStatus = RMobileCall::EStatusRinging;
-
- TInt hangUpCause = KErrGsmBusyUserRequest;
- TBool autoStChangeDisable = EFalse;
- TMockLtsyCallData2<TInt, TBool> mockData2(callId, mobileService,
- hangUpCause,
- autoStChangeDisable);
-
- //-------------------------------------------------------------------------
- // Test cancelling of RCall::HangUp
- //-------------------------------------------------------------------------
-
- //-------------------------------------------------------------------------
- // create new incoming call
- errorCode = CreateIncomingCallL(line, callId, incomingCallName,
- mobileService, mobileCallStatus);
- ASSERT_EQUALS(KErrNone, errorCode);
-
- CleanupClosePushL(call);
- errorCode = call.OpenExistingCall(line, incomingCallName);
- ASSERT_EQUALS(KErrNone, errorCode);
- //-------------------------------------------------------------------------
-
- expectData.Close();
- mockData2.SerialiseL(expectData);
- iMockLTSY.ExpectL(EEtelCallHangUp, expectData);
-
- call.HangUp(requestStatus);
-
- // cancel hang-up
- // TSY has started a HangUp request and it is not possible to cancel this request
- call.CancelAsyncRequest(EEtelCallHangUp);
-
- // CTSY hangs up the call and it goes to idle state
- mobileCallStatus = RMobileCall::EStatusIdle;
- TMockLtsyCallData1<RMobileCall::TMobileCallStatus> mockCallData2(callId, mobileService, mobileCallStatus);
- mockCallData2.SerialiseL(completeData);
- iMockLTSY.NotifyTerminated(mockLtsyStatus);
- iMockLTSY.CompleteL(EMobileCallNotifyMobileCallStatusChange, KErrGsmBusyUserRequest, completeData);
- User::WaitForRequest(mockLtsyStatus);
- ASSERT_EQUALS(KErrNone, mockLtsyStatus.Int());
-
- User::WaitForRequest(requestStatus);
- ASSERT_EQUALS(KErrNone, requestStatus.Int());
- AssertMockLtsyStatusL();
-
- CleanupStack::PopAndDestroy(5, this); // call, line, expectData, completeData, this
- }
-
-/**
-@SYMTestCaseID BA-CTSY-CCON-CHU-00014
-@SYMComponent telephony_ctsy
-@SYMTestCaseDesc Test support in CTSY for multiple client requests to RCall::HangUp for fax calls
-@SYMTestPriority High
-@SYMTestActions Invokes multiple client requests to RCall::HangUp for fax calls
-@SYMTestExpectedResults Pass
-@SYMTestType CT
-*/
-void CCTsyCallControlFU::TestHangUp00014L()
- {
-
-
- OpenEtelServerL(EUseExtendedError);
- CleanupStack::PushL(TCleanupItem(Cleanup,this));
- OpenPhoneL();
-
- RBuf8 expectData;
- CleanupClosePushL(expectData);
-
- RBuf8 completeData;
- CleanupClosePushL(completeData);
-
- // Open second client
- RTelServer telServer2;
- TInt ret = telServer2.Connect();
- ASSERT_EQUALS(KErrNone, ret);
- CleanupClosePushL(telServer2);
-
- RMobilePhone phone2;
- ret = phone2.Open(iTelServer,KMmTsyPhoneName);
- ASSERT_EQUALS(KErrNone, ret);
- CleanupClosePushL(phone2);
-
- RCall call1;
- RCall call2;
- RLine line1;
- RLine line2;
-
- TInt errorCode = KErrNone;
- TRequestStatus requestStatus1;
- TRequestStatus requestStatus2;
-
- // open new line1
- errorCode = OpenNewLineLC(iPhone, line1, KMmTsyFaxLineName);
- ASSERT_EQUALS(KErrNone, errorCode);
-
- // open new line2
- errorCode = OpenNewLineLC(phone2, line2, KMmTsyFaxLineName);
- ASSERT_EQUALS(KErrNone, errorCode);
-
- TName incomingCallName1;
- TName incomingCallName2;
-
- TInt callId1 = 1;
- TInt callId2 = 2;
- RMobilePhone::TMobileService mobileService = RMobilePhone::EFaxService;
- RMobileCall::TMobileCallStatus mobileCallStatus = RMobileCall::EStatusRinging;
-
- TInt hangUpCause = KErrGsmBusyUserRequest;
- TBool autoStChangeDisable = EFalse;
- TMockLtsyCallData2<TInt, TBool> mockData21(callId1, mobileService,
- hangUpCause,
- autoStChangeDisable);
- TMockLtsyCallData2<TInt, TBool> mockData22(callId2, mobileService,
- hangUpCause,
- autoStChangeDisable);
-
- TMockLtsyCallData0 mockData01(callId1, mobileService);
- TMockLtsyCallData0 mockData02(callId2, mobileService);
-
- //-------------------------------------------------------------------------
- // Test A: Test multiple clients requesting RCall::HangUp
- //-------------------------------------------------------------------------
-
- // create new incoming call1
- errorCode = CreateIncomingCallL(line1, callId1, incomingCallName1,
- mobileService, mobileCallStatus);
- ASSERT_EQUALS(KErrNone, errorCode);
-
- CleanupClosePushL(call1);
- errorCode = call1.OpenExistingCall(line1, incomingCallName1);
- ASSERT_EQUALS(KErrNone, errorCode);
-
- // create new incoming call2
- errorCode = CreateIncomingCallL(line2, callId2, incomingCallName2,
- mobileService, mobileCallStatus);
- ASSERT_EQUALS(KErrNone, errorCode);
-
- CleanupClosePushL(call2);
- errorCode = call2.OpenExistingCall(line2, incomingCallName2);
- ASSERT_EQUALS(KErrNone, errorCode);
-
- expectData.Close();
- mockData21.SerialiseL(expectData);
- iMockLTSY.ExpectL(EEtelCallHangUp, expectData);
- mockData01.SerialiseL(completeData);
- iMockLTSY.CompleteL(EEtelCallHangUp, KErrNone, completeData);
-
- call1.HangUp(requestStatus1);
-
- expectData.Close();
- mockData22.SerialiseL(expectData);
- iMockLTSY.ExpectL(EEtelCallHangUp, expectData);
- completeData.Close();
- mockData02.SerialiseL(completeData);
- iMockLTSY.CompleteL(EEtelCallHangUp, KErrNone, completeData);
-
- call2.HangUp(requestStatus2);
-
- User::WaitForRequest(requestStatus1);
- ASSERT_EQUALS(KErrNone, requestStatus1.Int());
-
- User::WaitForRequest(requestStatus2);
- ASSERT_EQUALS(KErrNone, requestStatus2.Int());
-
- CleanupStack::PopAndDestroy(2); // call1, call2
- CleanupStack::PopAndDestroy(7, this); // phone2, telServer2, expectData, completeData, this
- // line1, line2
- }
-
-
-/**
-@SYMTestCaseID BA-CTSY-CCON-CHU-00015
-@SYMComponent telephony_ctsy
-@SYMTestCaseDesc Test support in CTSY for RCall::HangUp with timeout for fax calls
-@SYMTestPriority High
-@SYMTestActions Invokes RCall::HangUp and tests for timeout for fax calls
-@SYMTestExpectedResults Pass
-@SYMTestType CT
-*/
-void CCTsyCallControlFU::TestHangUp00015L()
- {
- OpenEtelServerL(EUseExtendedError);
- CleanupStack::PushL(TCleanupItem(Cleanup,this));
- OpenPhoneL();
-
- RBuf8 expectData;
- CleanupClosePushL(expectData);
-
- RBuf8 completeData;
- CleanupClosePushL(completeData);
-
- RLine line;
- RCall call;
-
- TInt errorCode = KErrNone;
- TRequestStatus requestStatus;
- TRequestStatus mockLtsyStatus;
-
- // open new line
- errorCode = OpenNewLineLC(iPhone, line, KMmTsyFaxLineName);
- ASSERT_EQUALS(KErrNone, errorCode);
-
- TName incomingCallName;
- TInt callId = 1;
- RMobilePhone::TMobileService mobileService = RMobilePhone::EFaxService;
- RMobileCall::TMobileCallStatus mobileCallStatus = RMobileCall::EStatusRinging;
-
- TInt hangUpCause = KErrGsmBusyUserRequest;
- TBool autoStChangeDisable = EFalse;
- TMockLtsyCallData2<TInt, TBool> mockData2(callId, mobileService,
- hangUpCause,
- autoStChangeDisable);
-
- TMockLtsyCallData0 mockData0(callId, mobileService);
-
- //-------------------------------------------------------------------------
- // Test A: Test timeout of RCall::HangUp
- //-------------------------------------------------------------------------
-
- //-------------------------------------------------------------------------
- // create new incoming call
- errorCode = CreateIncomingCallL(line, callId, incomingCallName,
- mobileService, mobileCallStatus);
- ASSERT_EQUALS(KErrNone, errorCode);
-
- CleanupClosePushL(call);
- errorCode = call.OpenExistingCall(line, incomingCallName);
- ASSERT_EQUALS(KErrNone, errorCode);
- //-------------------------------------------------------------------------
-
- expectData.Close();
- mockData2.SerialiseL(expectData);
- iMockLTSY.ExpectL(EEtelCallHangUp, expectData);
-
- call.HangUp(requestStatus);
- User::WaitForRequest(requestStatus);
- AssertMockLtsyStatusL();
- ERR_PRINTF2(_L("<font color=Orange>$CTSYKnownFailure: defect id = %d</font>"), 100303);
- ASSERT_EQUALS(KErrTimedOut, requestStatus.Int());
-
- // close incoming call
- CloseIncomingCallL(call, callId, mobileService);
- AssertMockLtsyStatusL();
- CleanupStack::PopAndDestroy(1);
-
- AssertMockLtsyStatusL();
- CleanupStack::PopAndDestroy(4, this); // expectData, completeData, line, this
- }
-
-
-/**
-@SYMTestCaseID BA-CTSY-CCON-CH-0001
-@SYMComponent telephony_ctsy
-@SYMTestCaseDesc Test support in CTSY for RMobileCall::Hold for voice calls
-@SYMTestPriority High
-@SYMTestActions Invokes RMobileCall::Hold for voice calls
-@SYMTestExpectedResults Pass
-@SYMTestType CT
-*/
-void CCTsyCallControlFU::TestHold0001L()
- {
-
- OpenEtelServerL(EUseExtendedError);
- CleanupStack::PushL(TCleanupItem(Cleanup,this));
- OpenPhoneL();
-
- RBuf8 expectData;
- CleanupClosePushL(expectData);
-
- RBuf8 completeData;
- CleanupClosePushL(completeData);
-
- RLine line;
- RMobileCall call;
- CleanupClosePushL(call);
-
- TInt errorCode = KErrNone;
- TInt callId = 1;
- TName incomingCallName;
- TRequestStatus requestStatus;
- TRequestStatus mockLtsyStatus;
-
- // open new line and call for KMmTsyVoice1LineName
- errorCode = OpenNewLineLC(iPhone, line, KMmTsyVoice1LineName);
- ASSERT_EQUALS(KErrNone, errorCode);
-
- RMobileCall::TMobileCallStatus mobileCallStatus = RMobileCall::EStatusRinging;
- RMobilePhone::TMobileService mobileService = RMobilePhone::EVoiceService;
-
- TMockLtsyCallData0 mockData0(callId, mobileService);
-
- //-------------------------------------------------------------------------
- // TEST A: failure to dispatch request to LTSY
- //-------------------------------------------------------------------------
-
- //-------------------------------------------------------------------------
- // create new incoming call
- errorCode = CreateIncomingCallL(line, callId, incomingCallName,
- mobileService, mobileCallStatus);
- ASSERT_EQUALS(KErrNone, errorCode);
- AssertMockLtsyStatusL();
-
- errorCode = call.OpenExistingCall(line, incomingCallName);
- ASSERT_EQUALS(KErrNone, errorCode);
- AssertMockLtsyStatusL();
- //-------------------------------------------------------------------------
-
- expectData.Close();
- mockData0.SerialiseL(expectData);
- iMockLTSY.ExpectL(EMobileCallHold, expectData, KErrNotSupported);
- call.Hold(requestStatus);
-
- User::WaitForRequest(requestStatus);
- AssertMockLtsyStatusL();
- ASSERT_EQUALS(KErrNotSupported, requestStatus.Int());
-
- // close incoming call
- CloseIncomingCallL(call, callId, mobileService);
-
- //-------------------------------------------------------------------------
- // TEST B: failure on completion of pending request from LTSY->CTSY
- //-------------------------------------------------------------------------
-
- //-------------------------------------------------------------------------
- // create new incoming call
- errorCode = CreateIncomingCallL(line, callId, incomingCallName,
- mobileService, mobileCallStatus);
- ASSERT_EQUALS(KErrNone, errorCode);
- AssertMockLtsyStatusL();
-
- errorCode = call.OpenExistingCall(line, incomingCallName);
- ASSERT_EQUALS(KErrNone, errorCode);
- AssertMockLtsyStatusL();
- //-------------------------------------------------------------------------
-
- expectData.Close();
- mockData0.SerialiseL(expectData);
- iMockLTSY.ExpectL(EMobileCallHold, expectData);
- iMockLTSY.CompleteL(EMobileCallHold, KErrGeneral, expectData);
- call.Hold(requestStatus);
-
- User::WaitForRequest(requestStatus);
- AssertMockLtsyStatusL();
- ASSERT_EQUALS(KErrGeneral, requestStatus.Int());
-
- // close incoming call
- CloseIncomingCallL(call, callId, mobileService);
-
- //-------------------------------------------------------------------------
- // TEST C: Successful completion request of
- // RMobileCall::Hold when result is not cached.
- //-------------------------------------------------------------------------
-
- //-------------------------------------------------------------------------
- // create new incoming call
- errorCode = CreateIncomingCallL(line, callId, incomingCallName,
- mobileService, mobileCallStatus);
- ASSERT_EQUALS(KErrNone, errorCode);
- AssertMockLtsyStatusL();
-
- errorCode = call.OpenExistingCall(line, incomingCallName);
- ASSERT_EQUALS(KErrNone, errorCode);
- AssertMockLtsyStatusL();
- //-------------------------------------------------------------------------
-
- expectData.Close();
- mockData0.SerialiseL(expectData);
- iMockLTSY.ExpectL(EMobileCallHold, expectData);
- iMockLTSY.CompleteL(EMobileCallHold, KErrNone, expectData);
- call.Hold(requestStatus);
-
- User::WaitForRequest(requestStatus);
- AssertMockLtsyStatusL();
- ASSERT_EQUALS(KErrNone, requestStatus.Int());
-
- // close incoming call
- CloseIncomingCallL(call, callId, mobileService);
-
- //-------------------------------------------------------------------------
- // TEST E: Unsolicited completion of RMobileCall::Hold
- // from LTSY.
- //-------------------------------------------------------------------------
-
- iMockLTSY.NotifyTerminated(mockLtsyStatus);
- expectData.Close();
- mockData0.SerialiseL(expectData);
- iMockLTSY.CompleteL(EMobileCallHold, KErrNone, expectData);
- User::WaitForRequest(mockLtsyStatus);
- AssertMockLtsyStatusL();
- ASSERT_EQUALS(KErrNone, mockLtsyStatus.Int());
-
- AssertMockLtsyStatusL();
- CleanupStack::PopAndDestroy(5, this); // expectData, completeData, call, line
-
- }
-
-
-/**
-@SYMTestCaseID BA-CTSY-CCON-CH-0002
-@SYMComponent telephony_ctsy
-@SYMTestCaseDesc Test support in CTSY for cancelling of RMobileCall::Hold for voice calls
-@SYMTestPriority High
-@SYMTestActions Invokes cancelling of RMobileCall::Hold for voice calls
-@SYMTestExpectedResults Pass
-@SYMTestType CT
-*/
-void CCTsyCallControlFU::TestHold0002L()
- {
-
- OpenEtelServerL(EUseExtendedError);
- CleanupStack::PushL(TCleanupItem(Cleanup,this));
- OpenPhoneL();
-
- RBuf8 expectData;
- CleanupClosePushL(expectData);
-
- RLine line;
- RMobileCall call;
- CleanupClosePushL(call);
-
- TInt errorCode = KErrNone;
- TInt callId = 1;
- TName incomingCallName;
-
- TRequestStatus requestStatus;
- TRequestStatus mockLtsyStatus;
-
- RMobileCall::TMobileCallStatus mobileCallStatus = RMobileCall::EStatusRinging;
- RMobilePhone::TMobileService mobileService = RMobilePhone::EVoiceService;
-
- TMockLtsyCallData0 mockData0(callId, mobileService);
-
- //-------------------------------------------------------------------------
- // Test cancelling of RCall::AnswerIncomingCall
- //-------------------------------------------------------------------------
-
- // open new line for KMmTsyVoice1LineName
- errorCode = OpenNewLineLC(iPhone, line, KMmTsyVoice1LineName);
- ASSERT_EQUALS(KErrNone, errorCode);
-
- //-------------------------------------------------------------------------
- // create new incoming call
- errorCode = CreateIncomingCallL(line, callId, incomingCallName,
- mobileService, mobileCallStatus);
- ASSERT_EQUALS(KErrNone, errorCode);
- AssertMockLtsyStatusL();
-
- errorCode = call.OpenExistingCall(line, incomingCallName);
- ASSERT_EQUALS(KErrNone, errorCode);
- AssertMockLtsyStatusL();
- //-------------------------------------------------------------------------
-
- iMockLTSY.NotifyTerminated(mockLtsyStatus);
-
-
- expectData.Close();
- mockData0.SerialiseL(expectData);
- iMockLTSY.ExpectL(EMobileCallHold, expectData);
- iMockLTSY.CompleteL(EMobileCallHold, KErrNone, expectData);
-
- call.Hold(requestStatus);
-
- call.CancelAsyncRequest(EMobileCallHold);
-
- User::WaitForRequest(requestStatus);
- AssertMockLtsyStatusL();
-
- //TSY has started a request and it is not possible to then cancel this
- //request. The best thing for the TSY to do in this case is to proceed
- //as though the Cancel never happened. The server's call to the TSY
- //cancel function will return synchronously. The TSY then continues to
- //wait for the original acknowledgement and when it receives it,
- //the TSY will complete the original request.
- ASSERT_EQUALS(KErrNone, requestStatus.Int());
-
- User::WaitForRequest(mockLtsyStatus);
-
- CleanupStack::PopAndDestroy(4); // expectData, this, call, line
- }
-
-/**
-@SYMTestCaseID BA-CTSY-CCON-CH-0004
-@SYMComponent telephony_ctsy
-@SYMTestCaseDesc Test support in CTSY for multiple client requests to RMobileCall::Hold for voice calls
-@SYMTestPriority High
-@SYMTestActions Invokes multiple client requests to RMobileCall::Hold for voice calls
-@SYMTestExpectedResults Pass
-@SYMTestType CT
-*/
-void CCTsyCallControlFU::TestHold0004L()
- {
-
-
- OpenEtelServerL(EUseExtendedError);
- CleanupStack::PushL(TCleanupItem(Cleanup,this));
- OpenPhoneL();
-
- RBuf8 expectData;
- CleanupClosePushL(expectData);
-
- // Open second client
- RTelServer telServer2;
- TInt ret = telServer2.Connect();
- ASSERT_EQUALS(KErrNone, ret);
- CleanupClosePushL(telServer2);
-
- RMobilePhone phone2;
- ret = phone2.Open(iTelServer,KMmTsyPhoneName);
- ASSERT_EQUALS(KErrNone, ret);
- CleanupClosePushL(phone2);
-
- RLine line1;
- RLine line2;
-
- RMobileCall call1;
- CleanupClosePushL(call1);
-
- RMobileCall call2;
- CleanupClosePushL(call2);
-
- TInt errorCode = KErrNone;
-
- TInt callId1 = 1;
- TName incomingCallName1;
-
- TInt callId2 = 2;
- TName incomingCallName2;
-
- TRequestStatus requestStatus1;
- TRequestStatus requestStatus2;
-
- // open new line1 for KMmTsyVoice1LineName
- errorCode = OpenNewLineLC(iPhone, line1, KMmTsyVoice1LineName);
- ASSERT_EQUALS(KErrNone, errorCode);
-
- // open new line2 for KMmTsyVoice1LineName
- errorCode = OpenNewLineLC(phone2, line2, KMmTsyVoice1LineName);
- ASSERT_EQUALS(KErrNone, errorCode);
-
- RMobileCall::TMobileCallStatus mobileCallStatus = RMobileCall::EStatusRinging;
- RMobilePhone::TMobileService mobileService = RMobilePhone::EVoiceService;
-
- TMockLtsyCallData0 mockData01(callId1, mobileService);
- TMockLtsyCallData0 mockData02(callId2, mobileService);
-
- //-------------------------------------------------------------------------
- // Test A: Test multiple clients requesting RCall::AnswerIncomingCall
- //-------------------------------------------------------------------------
-
- //-------------------------------------------------------------------------
- // create new incoming call1
- errorCode = CreateIncomingCallL(line1, callId1, incomingCallName1,
- mobileService, mobileCallStatus);
- ASSERT_EQUALS(KErrNone, errorCode);
- AssertMockLtsyStatusL();
-
- errorCode = call1.OpenExistingCall(line1, incomingCallName1);
- ASSERT_EQUALS(KErrNone, errorCode);
- AssertMockLtsyStatusL();
- //-------------------------------------------------------------------------
-
- //-------------------------------------------------------------------------
- // create new incoming call2
- errorCode = CreateIncomingCallL(line2, callId2, incomingCallName2,
- mobileService, mobileCallStatus);
- ASSERT_EQUALS(KErrNone, errorCode);
- AssertMockLtsyStatusL();
-
- errorCode = call2.OpenExistingCall(line2, incomingCallName2);
- ASSERT_EQUALS(KErrNone, errorCode);
- AssertMockLtsyStatusL();
- //-------------------------------------------------------------------------
-
- expectData.Close();
- mockData01.SerialiseL(expectData);
- iMockLTSY.ExpectL(EMobileCallHold, expectData);
- iMockLTSY.CompleteL(EMobileCallHold, KErrNone, expectData);
-
- call1.Hold(requestStatus1);
-
- expectData.Close();
- mockData02.SerialiseL(expectData);
- iMockLTSY.ExpectL(EMobileCallHold, expectData);
- iMockLTSY.CompleteL(EMobileCallHold, KErrNone, expectData);
-
- call2.Hold(requestStatus2);
-
- User::WaitForRequest(requestStatus1);
- ASSERT_EQUALS(KErrNone, requestStatus1.Int());
-
- User::WaitForRequest(requestStatus2);
- AssertMockLtsyStatusL();
- ASSERT_EQUALS(KErrNone, requestStatus2.Int());
-
- // Done !
- CleanupStack::PopAndDestroy(4); // line1, line2, call1, call2
- CleanupStack::PopAndDestroy(4, this); // phone2, telServer2, expectData, this
- }
-
-
-/**
-@SYMTestCaseID BA-CTSY-CCON-CH-0005
-@SYMComponent telephony_ctsy
-@SYMTestCaseDesc Test support in CTSY for RMobileCall::Hold with timeout for voice calls
-@SYMTestPriority High
-@SYMTestActions Invokes RMobileCall::Hold and tests for timeout for voice calls
-@SYMTestExpectedResults Pass
-@SYMTestType CT
-*/
-void CCTsyCallControlFU::TestHold0005L()
- {
- OpenEtelServerL(EUseExtendedError);
- CleanupStack::PushL(TCleanupItem(Cleanup,this));
- OpenPhoneL();
-
- RBuf8 expectData;
- CleanupClosePushL(expectData);
-
- RLine line;
- RMobileCall call;
- CleanupClosePushL(call);
-
- TInt errorCode = KErrNone;
- TInt callId = 1;
- TName incomingCallName;
-
- TRequestStatus requestStatus;
- TRequestStatus mockLtsyStatus;
-
- // open new line for KMmTsyVoice1LineName
- errorCode = OpenNewLineLC(iPhone, line, KMmTsyVoice1LineName);
- ASSERT_EQUALS(KErrNone, errorCode);
-
- RMobileCall::TMobileCallStatus mobileCallStatus = RMobileCall::EStatusRinging;
- RMobilePhone::TMobileService mobileService = RMobilePhone::EVoiceService;
-
- TMockLtsyCallData0 mockData0(callId, mobileService);
-
- //-------------------------------------------------------------------------
- // Test A: Test timeout of RCall::AnswerIncomingCall
- //-------------------------------------------------------------------------
-
- //-------------------------------------------------------------------------
- // create new incoming call
- errorCode = CreateIncomingCallL(line, callId, incomingCallName,
- mobileService, mobileCallStatus);
- ASSERT_EQUALS(KErrNone, errorCode);
- AssertMockLtsyStatusL();
-
- errorCode = call.OpenExistingCall(line, incomingCallName);
- ASSERT_EQUALS(KErrNone, errorCode);
- AssertMockLtsyStatusL();
- //-------------------------------------------------------------------------
-
- expectData.Close();
- mockData0.SerialiseL(expectData);
- iMockLTSY.ExpectL(EMobileCallHold, expectData);
- call.Hold(requestStatus);
-
- User::WaitForRequest(requestStatus);
- AssertMockLtsyStatusL();
- ASSERT_EQUALS(KErrTimedOut, requestStatus.Int());
-
- CleanupStack::PopAndDestroy(4, this); // expectData, this, line, call
- }
-
-
-/**
-@SYMTestCaseID BA-CTSY-CCON-CH-0006
-@SYMComponent telephony_ctsy
-@SYMTestCaseDesc Test support in CTSY for RMobileCall::Hold for data calls
-@SYMTestPriority High
-@SYMTestActions Invokes RMobileCall::Hold for data calls
-@SYMTestExpectedResults Pass
-@SYMTestType CT
-*/
-void CCTsyCallControlFU::TestHold0006L()
- {
-
- OpenEtelServerL(EUseExtendedError);
- CleanupStack::PushL(TCleanupItem(Cleanup,this));
- OpenPhoneL();
-
- RBuf8 expectData;
- CleanupClosePushL(expectData);
-
- RLine line;
- RMobileCall call;
- CleanupClosePushL(call);
-
- TInt errorCode = KErrNone;
- TInt callId = 1;
- TName incomingCallName;
-
- TRequestStatus requestStatus;
- TRequestStatus mockLtsyStatus;
-
- // open new line for KMmTsyVoice1LineName
- errorCode = OpenNewLineLC(iPhone, line, KMmTsyDataLineName);
- ASSERT_EQUALS(KErrNone, errorCode);
-
- RMobilePhone::TMobileService mobileService = RMobilePhone::ECircuitDataService;
- RMobileCall::TMobileCallStatus mobileCallStatus = RMobileCall::EStatusRinging;
-
- TMockLtsyCallData0 mockData0(callId, mobileService);
-
- //-------------------------------------------------------------------------
- // TEST A: failure to dispatch request to LTSY
- //-------------------------------------------------------------------------
-
- //-------------------------------------------------------------------------
- // create new incoming call
- errorCode = CreateIncomingCallL(line, callId, incomingCallName,
- mobileService, mobileCallStatus);
- ASSERT_EQUALS(KErrNone, errorCode);
-
- errorCode = call.OpenExistingCall(line, incomingCallName);
- ASSERT_EQUALS(KErrNone, errorCode);
- //-------------------------------------------------------------------------
-
- call.Hold(requestStatus);
-
- User::WaitForRequest(requestStatus);
- AssertMockLtsyStatusL();
- ASSERT_EQUALS(KErrNotSupported, requestStatus.Int());
-
- AssertMockLtsyStatusL();
- CleanupStack::PopAndDestroy(4); // expectData, call, line
- }
-
-/**
-@SYMTestCaseID BA-CTSY-CCON-CH-00011
-@SYMComponent telephony_ctsy
-@SYMTestCaseDesc Test support in CTSY for RMobileCall::Hold for fax calls
-@SYMTestPriority High
-@SYMTestActions Invokes RMobileCall::Hold for fax calls
-@SYMTestExpectedResults Pass
-@SYMTestType CT
-*/
-void CCTsyCallControlFU::TestHold00011L()
- {
-
- OpenEtelServerL(EUseExtendedError);
- CleanupStack::PushL(TCleanupItem(Cleanup,this));
- OpenPhoneL();
-
- RBuf8 expectData;
- CleanupClosePushL(expectData);
-
- RLine line;
- RMobileCall call;
- CleanupClosePushL(call);
-
- TInt errorCode = KErrNone;
- TInt callId = 1;
- TName incomingCallName;
-
- TRequestStatus requestStatus;
- TRequestStatus mockLtsyStatus;
-
- // open new line for KMmTsyVoice1LineName
- errorCode = OpenNewLineLC(iPhone, line, KMmTsyFaxLineName);
- ASSERT_EQUALS(KErrNone, errorCode);
-
- RMobilePhone::TMobileService mobileService = RMobilePhone::EFaxService;
- RMobileCall::TMobileCallStatus mobileCallStatus = RMobileCall::EStatusRinging;
-
- TMockLtsyCallData0 mockData0(callId, mobileService);
-
- //-------------------------------------------------------------------------
- // TEST A: failure to dispatch request to LTSY
- //-------------------------------------------------------------------------
-
- //-------------------------------------------------------------------------
- // create new incoming call
- errorCode = CreateIncomingCallL(line, callId, incomingCallName,
- mobileService, mobileCallStatus);
- ASSERT_EQUALS(KErrNone, errorCode);
-
- errorCode = call.OpenExistingCall(line, incomingCallName);
- ASSERT_EQUALS(KErrNone, errorCode);
- //-------------------------------------------------------------------------
-
- call.Hold(requestStatus);
-
- User::WaitForRequest(requestStatus);
- AssertMockLtsyStatusL();
- ASSERT_EQUALS(KErrNotSupported, requestStatus.Int());
-
- AssertMockLtsyStatusL();
- CleanupStack::PopAndDestroy(4); // expectData, call, line
- }
-
-/**
-@SYMTestCaseID BA-CTSY-CCON-CH-0001a
-@SYMComponent telephony_ctsy
-@SYMTestCaseDesc Test support in CTSY for RMobileCall::Hold and RMobileCall::AnswerIncomingCall fails because call waiting is disabled
-@SYMTestPriority High
-@SYMTestActions Invokes RMobileCall::Hold for voice and data calls
-@SYMTestExpectedResults Pass
-@SYMTestType CT
-*/
-void CCTsyCallControlFU::TestHold0001aL()
- {
- //Test voice call functionality
- TInt ret = TestAnsweringFailsBecauseHoldDoesNotWorkL( KMmTsyVoice1LineName );
- ASSERT_EQUALS(KErrNone, ret);
-
- //Test data call functionality
- ret = TestAnsweringFailsBecauseHoldDoesNotWorkL( KMmTsyDataLineName );
- ASSERT_EQUALS(KErrNone, ret);
- }
-
-/**
-@SYMTestCaseID BA-CTSY-CCON-CS-0001
-@SYMComponent telephony_ctsy
-@SYMTestCaseDesc Test support in CTSY for RMobileCall::Swap for voice calls
-@SYMTestPriority High
-@SYMTestActions Invokes RMobileCall::Swap for voice calls
-@SYMTestExpectedResults Pass
-@SYMTestType CT
-*/
-void CCTsyCallControlFU::TestSwap0001L()
- {
-
- OpenEtelServerL(EUseExtendedError);
- CleanupStack::PushL(TCleanupItem(Cleanup,this));
- OpenPhoneL();
-
- RBuf8 expectData;
- CleanupClosePushL(expectData);
-
- RBuf8 completeData;
- CleanupClosePushL(completeData);
-
- RLine line;
- RMobileCall call;
- CleanupClosePushL(call);
-
- TInt errorCode = KErrNone;
- TInt callId = 1;
- TName incomingCallName;
- TRequestStatus requestStatus;
- TRequestStatus mockLtsyStatus;
-
- // open new line and call for KMmTsyVoice1LineName
- errorCode = OpenNewLineLC(iPhone, line, KMmTsyVoice1LineName);
- ASSERT_EQUALS(KErrNone, errorCode);
-
- RMobileCall::TMobileCallStatus mobileCallStatus = RMobileCall::EStatusRinging;
- RMobilePhone::TMobileService mobileService = RMobilePhone::EVoiceService;
-
- TMockLtsyCallData0 mockData0(callId, mobileService);
-
- //-------------------------------------------------------------------------
- // TEST A: failure to dispatch request to LTSY
- //-------------------------------------------------------------------------
-
- //-------------------------------------------------------------------------
- // create new incoming call
- errorCode = CreateIncomingCallL(line, callId, incomingCallName,
- mobileService, mobileCallStatus);
- ASSERT_EQUALS(KErrNone, errorCode);
- AssertMockLtsyStatusL();
-
- errorCode = call.OpenExistingCall(line, incomingCallName);
- ASSERT_EQUALS(KErrNone, errorCode);
- AssertMockLtsyStatusL();
- //-------------------------------------------------------------------------
-
- expectData.Close();
- mockData0.SerialiseL(expectData);
- iMockLTSY.ExpectL(EMobileCallSwap, expectData, KErrNotSupported);
- call.Swap(requestStatus);
-
- User::WaitForRequest(requestStatus);
- AssertMockLtsyStatusL();
- ASSERT_EQUALS(KErrNotSupported, requestStatus.Int());
-
- // close incoming call
- CloseIncomingCallL(call, callId, mobileService);
-
- //-------------------------------------------------------------------------
- // TEST B: failure on completion of pending request from LTSY->CTSY
- //-------------------------------------------------------------------------
-
- //-------------------------------------------------------------------------
- // create new incoming call
- errorCode = CreateIncomingCallL(line, callId, incomingCallName,
- mobileService, mobileCallStatus);
- ASSERT_EQUALS(KErrNone, errorCode);
- AssertMockLtsyStatusL();
-
- errorCode = call.OpenExistingCall(line, incomingCallName);
- ASSERT_EQUALS(KErrNone, errorCode);
- AssertMockLtsyStatusL();
- //-------------------------------------------------------------------------
-
- expectData.Close();
- mockData0.SerialiseL(expectData);
- iMockLTSY.ExpectL(EMobileCallSwap, expectData);
- iMockLTSY.CompleteL(EMobileCallSwap, KErrGeneral, expectData);
- call.Swap(requestStatus);
-
- User::WaitForRequest(requestStatus);
- AssertMockLtsyStatusL();
- ASSERT_EQUALS(KErrGeneral, requestStatus.Int());
-
- // close incoming call
- CloseIncomingCallL(call, callId, mobileService);
-
- //-------------------------------------------------------------------------
- // TEST C: Successful completion request of
- // RMobileCall::Swap when result is not cached.
- //-------------------------------------------------------------------------
-
- //-------------------------------------------------------------------------
- // create new incoming call
- errorCode = CreateIncomingCallL(line, callId, incomingCallName,
- mobileService, mobileCallStatus);
- ASSERT_EQUALS(KErrNone, errorCode);
- AssertMockLtsyStatusL();
-
- errorCode = call.OpenExistingCall(line, incomingCallName);
- ASSERT_EQUALS(KErrNone, errorCode);
- AssertMockLtsyStatusL();
- //-------------------------------------------------------------------------
-
- expectData.Close();
- mockData0.SerialiseL(expectData);
- iMockLTSY.ExpectL(EMobileCallSwap, expectData);
- iMockLTSY.CompleteL(EMobileCallSwap, KErrNone, expectData);
- call.Swap(requestStatus);
-
- User::WaitForRequest(requestStatus);
- AssertMockLtsyStatusL();
- ASSERT_EQUALS(KErrNone, requestStatus.Int());
-
- // close incoming call
- CloseIncomingCallL(call, callId, mobileService);
-
- //-------------------------------------------------------------------------
- // TEST E: Unsolicited completion of RMobileCall::Swap
- // from LTSY.
- //-------------------------------------------------------------------------
-
- iMockLTSY.NotifyTerminated(mockLtsyStatus);
- expectData.Close();
- mockData0.SerialiseL(expectData);
- iMockLTSY.CompleteL(EMobileCallSwap, KErrNone, expectData);
- User::WaitForRequest(mockLtsyStatus);
- AssertMockLtsyStatusL();
- ASSERT_EQUALS(KErrNone, mockLtsyStatus.Int());
-
- AssertMockLtsyStatusL();
- CleanupStack::PopAndDestroy(5, this); // expectData, completeData, call, line
-
- }
-
-
-/**
-@SYMTestCaseID BA-CTSY-CCON-CS-0002
-@SYMComponent telephony_ctsy
-@SYMTestCaseDesc Test support in CTSY for cancelling of RMobileCall::Swap for voice calls
-@SYMTestPriority High
-@SYMTestActions Invokes cancelling of RMobileCall::Swap for voice calls
-@SYMTestExpectedResults Pass
-@SYMTestType CT
-*/
-void CCTsyCallControlFU::TestSwap0002L()
- {
-
-// This test should test cancellation of Swap
-// If this API does not have a cancel, the test step should be completely removed.
-
- OpenEtelServerL(EUseExtendedError);
- CleanupStack::PushL(TCleanupItem(Cleanup,this));
- OpenPhoneL();
-
- RBuf8 expectData;
- CleanupClosePushL(expectData);
-
- RLine line;
- RMobileCall call;
- CleanupClosePushL(call);
-
- TInt errorCode = KErrNone;
- TInt callId = 1;
- TName incomingCallName;
-
- TRequestStatus requestStatus;
- TRequestStatus mockLtsyStatus;
-
- RMobileCall::TMobileCallStatus mobileCallStatus = RMobileCall::EStatusRinging;
- RMobilePhone::TMobileService mobileService = RMobilePhone::EVoiceService;
-
- //-------------------------------------------------------------------------
- // Test cancelling of RCall::AnswerIncomingCall
- //-------------------------------------------------------------------------
-
- // open new line for KMmTsyVoice1LineName
- errorCode = OpenNewLineLC(iPhone, line, KMmTsyVoice1LineName);
- ASSERT_EQUALS(KErrNone, errorCode);
-
- //-------------------------------------------------------------------------
- // create new incoming call
- errorCode = CreateIncomingCallL(line, callId, incomingCallName,
- mobileService, mobileCallStatus);
- ASSERT_EQUALS(KErrNone, errorCode);
- AssertMockLtsyStatusL();
-
- errorCode = call.OpenExistingCall(line, incomingCallName);
- ASSERT_EQUALS(KErrNone, errorCode);
- AssertMockLtsyStatusL();
- //-------------------------------------------------------------------------
-
- iMockLTSY.NotifyTerminated(mockLtsyStatus);
- TMockLtsyCallData0 mockData0(callId, mobileService);
- expectData.Close();
- mockData0.SerialiseL(expectData);
-
- iMockLTSY.ExpectL(EMobileCallSwap, expectData);
- iMockLTSY.CompleteL(EMobileCallSwap, KErrNone, expectData);
-
- call.Swap(requestStatus);
-
- call.CancelAsyncRequest(EMobileCallSwap);
-
- User::WaitForRequest(requestStatus);
- AssertMockLtsyStatusL();
- // see CMmVoiceCallTsy::CancelService in line 508 in file CMmVoiceCallTsy.cpp
- ASSERT_EQUALS(KErrNone, requestStatus.Int());
-
- User::WaitForRequest(mockLtsyStatus);
-
- CleanupStack::PopAndDestroy(4); // expectData, this, call, line
-
- }
-
-/**
-@SYMTestCaseID BA-CTSY-CCON-CS-0004
-@SYMComponent telephony_ctsy
-@SYMTestCaseDesc Test support in CTSY for multiple client requests to RMobileCall::Swap for voice calls
-@SYMTestPriority High
-@SYMTestActions Invokes multiple client requests to RMobileCall::Swap for voice calls
-@SYMTestExpectedResults Pass
-@SYMTestType CT
-*/
-void CCTsyCallControlFU::TestSwap0004L()
- {
- OpenEtelServerL(EUseExtendedError);
- CleanupStack::PushL(TCleanupItem(Cleanup,this));
- OpenPhoneL();
-
- RBuf8 expectData;
- CleanupClosePushL(expectData);
-
- // Open second client
- RTelServer telServer2;
- TInt ret = telServer2.Connect();
- ASSERT_EQUALS(KErrNone, ret);
- CleanupClosePushL(telServer2);
-
- RMobilePhone phone2;
- ret = phone2.Open(iTelServer,KMmTsyPhoneName);
- ASSERT_EQUALS(KErrNone, ret);
- CleanupClosePushL(phone2);
-
- RLine line1;
- RLine line2;
-
- RMobileCall call1;
- CleanupClosePushL(call1);
-
- RMobileCall call2;
- CleanupClosePushL(call2);
-
- TInt errorCode = KErrNone;
-
- TInt callId1 = 1;
- TName incomingCallName1;
-
- TInt callId2 = 2;
- TName incomingCallName2;
-
- TRequestStatus requestStatus1;
- TRequestStatus requestStatus2;
-
- // open new line1 for KMmTsyVoice1LineName
- errorCode = OpenNewLineLC(iPhone, line1, KMmTsyVoice1LineName);
- ASSERT_EQUALS(KErrNone, errorCode);
-
- // open new line2 for KMmTsyVoice1LineName
- errorCode = OpenNewLineLC(phone2, line2, KMmTsyVoice1LineName);
- ASSERT_EQUALS(KErrNone, errorCode);
-
- RMobileCall::TMobileCallStatus mobileCallStatus = RMobileCall::EStatusRinging;
- RMobilePhone::TMobileService mobileService = RMobilePhone::EVoiceService;
-
- //-------------------------------------------------------------------------
- // Test A: Test multiple clients requesting RCall::AnswerIncomingCall
- //-------------------------------------------------------------------------
-
- //-------------------------------------------------------------------------
- // create new incoming call1
- errorCode = CreateIncomingCallL(line1, callId1, incomingCallName1,
- mobileService, mobileCallStatus);
- ASSERT_EQUALS(KErrNone, errorCode);
- AssertMockLtsyStatusL();
-
- errorCode = call1.OpenExistingCall(line1, incomingCallName1);
- ASSERT_EQUALS(KErrNone, errorCode);
- AssertMockLtsyStatusL();
- //-------------------------------------------------------------------------
-
- //-------------------------------------------------------------------------
- // create new incoming call2
- errorCode = CreateIncomingCallL(line2, callId2, incomingCallName2,
- mobileService, mobileCallStatus);
- ASSERT_EQUALS(KErrNone, errorCode);
- AssertMockLtsyStatusL();
-
- errorCode = call2.OpenExistingCall(line2, incomingCallName2);
- ASSERT_EQUALS(KErrNone, errorCode);
- AssertMockLtsyStatusL();
- //-------------------------------------------------------------------------
-
- TMockLtsyCallData0 mockData01(callId1, mobileService);
- expectData.Close();
- mockData01.SerialiseL(expectData);
- iMockLTSY.ExpectL(EMobileCallSwap, expectData);
- iMockLTSY.CompleteL(EMobileCallSwap, KErrNone, expectData);
-
- call1.Swap(requestStatus1);
-
- TMockLtsyCallData0 mockData02(callId2, mobileService);
- expectData.Close();
- mockData02.SerialiseL(expectData);
- iMockLTSY.ExpectL(EMobileCallSwap, expectData);
- iMockLTSY.CompleteL(EMobileCallSwap, KErrNone, expectData);
-
- call2.Swap(requestStatus2);
-
- User::WaitForRequest(requestStatus1);
- ASSERT_EQUALS(KErrNone, requestStatus1.Int());
-
- User::WaitForRequest(requestStatus2);
- AssertMockLtsyStatusL();
- ASSERT_EQUALS(KErrNone, requestStatus2.Int());
-
- // Done !
- CleanupStack::PopAndDestroy(4); // line1, line2, call1, call2
- CleanupStack::PopAndDestroy(4, this); // phone2, telServer2, expectData, this
- }
-
-
-/**
-@SYMTestCaseID BA-CTSY-CCON-CS-0005
-@SYMComponent telephony_ctsy
-@SYMTestCaseDesc Test support in CTSY for RMobileCall::Swap with timeout for voice calls
-@SYMTestPriority High
-@SYMTestActions Invokes RMobileCall::Swap and tests for timeout for voice calls
-@SYMTestExpectedResults Pass
-@SYMTestType CT
-*/
-void CCTsyCallControlFU::TestSwap0005L()
- {
- OpenEtelServerL(EUseExtendedError);
- CleanupStack::PushL(TCleanupItem(Cleanup,this));
- OpenPhoneL();
-
- RBuf8 expectData;
- CleanupClosePushL(expectData);
-
- RLine line;
- RMobileCall call;
- CleanupClosePushL(call);
-
- TInt errorCode = KErrNone;
- TInt callId = 1;
- TName incomingCallName;
-
- TRequestStatus requestStatus;
- TRequestStatus mockLtsyStatus;
-
- // open new line for KMmTsyVoice1LineName
- errorCode = OpenNewLineLC(iPhone, line, KMmTsyVoice1LineName);
- ASSERT_EQUALS(KErrNone, errorCode);
-
- RMobileCall::TMobileCallStatus mobileCallStatus = RMobileCall::EStatusRinging;
- RMobilePhone::TMobileService mobileService = RMobilePhone::EVoiceService;
-
- //-------------------------------------------------------------------------
- // Test A: Test timeout of RMobileCall::Swap
- //-------------------------------------------------------------------------
-
- //-------------------------------------------------------------------------
- // create new incoming call
- errorCode = CreateIncomingCallL(line, callId, incomingCallName,
- mobileService, mobileCallStatus);
- ASSERT_EQUALS(KErrNone, errorCode);
- AssertMockLtsyStatusL();
-
- errorCode = call.OpenExistingCall(line, incomingCallName);
- ASSERT_EQUALS(KErrNone, errorCode);
- AssertMockLtsyStatusL();
- //-------------------------------------------------------------------------
-
- TMockLtsyCallData0 mockData0(callId, mobileService);
- expectData.Close();
- mockData0.SerialiseL(expectData);
- iMockLTSY.ExpectL(EMobileCallSwap, expectData);
-
- call.Swap(requestStatus);
-
- User::WaitForRequest(requestStatus);
- AssertMockLtsyStatusL();
- ASSERT_EQUALS(KErrTimedOut, requestStatus.Int());
-
- CleanupStack::PopAndDestroy(4, this); // expectData, this, line, call
- }
-
-
-/**
-@SYMTestCaseID BA-CTSY-CCON-CS-0006
-@SYMComponent telephony_ctsy
-@SYMTestCaseDesc Test support in CTSY for RMobileCall::Swap for data calls
-@SYMTestPriority High
-@SYMTestActions Invokes RMobileCall::Swap for data calls
-@SYMTestExpectedResults Pass
-@SYMTestType CT
-*/
-void CCTsyCallControlFU::TestSwap0006L()
- {
- OpenEtelServerL(EUseExtendedError);
- CleanupStack::PushL(TCleanupItem(Cleanup,this));
- OpenPhoneL();
-
- RBuf8 expectData;
- CleanupClosePushL(expectData);
-
- RLine line;
- RMobileCall call;
- CleanupClosePushL(call);
-
- TInt errorCode = KErrNone;
- TInt callId = 1;
- TName incomingCallName;
-
- TRequestStatus requestStatus;
- TRequestStatus mockLtsyStatus;
-
- // open new line for data
- errorCode = OpenNewLineLC(iPhone, line, KMmTsyDataLineName);
- ASSERT_EQUALS(KErrNone, errorCode);
-
- RMobilePhone::TMobileService mobileService = RMobilePhone::ECircuitDataService;
- RMobileCall::TMobileCallStatus mobileCallStatus = RMobileCall::EStatusRinging;
-
- TMockLtsyCallData0 mockData0(callId, mobileService);
-
- //-------------------------------------------------------------------------
- // TEST A: failure to dispatch request to LTSY
- //-------------------------------------------------------------------------
-
- //-------------------------------------------------------------------------
- // create new incoming call
- errorCode = CreateIncomingCallL(line, callId, incomingCallName,
- mobileService, mobileCallStatus);
- ASSERT_EQUALS(KErrNone, errorCode);
-
- errorCode = call.OpenExistingCall(line, incomingCallName);
- ASSERT_EQUALS(KErrNone, errorCode);
- //-------------------------------------------------------------------------
-
- // see line 252 in function CMmDataCallTsy::DoExtFuncL in file CMmDataCallTsy.cpp
- call.Swap(requestStatus);
-
- User::WaitForRequest(requestStatus);
- AssertMockLtsyStatusL();
- ASSERT_EQUALS(KErrNotSupported, requestStatus.Int());
-
- AssertMockLtsyStatusL();
- CleanupStack::PopAndDestroy(4); // expectData, call, line
- }
-
-/**
-@SYMTestCaseID BA-CTSY-CCON-CS-00011
-@SYMComponent telephony_ctsy
-@SYMTestCaseDesc Test support in CTSY for RMobileCall::Swap for fax calls
-@SYMTestPriority High
-@SYMTestActions Invokes RMobileCall::Swap for fax calls
-@SYMTestExpectedResults Pass
-@SYMTestType CT
-*/
-void CCTsyCallControlFU::TestSwap00011L()
- {
- OpenEtelServerL(EUseExtendedError);
- CleanupStack::PushL(TCleanupItem(Cleanup,this));
- OpenPhoneL();
-
- RBuf8 expectData;
- CleanupClosePushL(expectData);
-
- RLine line;
- RMobileCall call;
- CleanupClosePushL(call);
-
- TInt errorCode = KErrNone;
- TInt callId = 1;
- TName incomingCallName;
-
- TRequestStatus requestStatus;
- TRequestStatus mockLtsyStatus;
-
- // open new line for data
- errorCode = OpenNewLineLC(iPhone, line, KMmTsyFaxLineName);
- ASSERT_EQUALS(KErrNone, errorCode);
-
- RMobilePhone::TMobileService mobileService = RMobilePhone::EFaxService;
- RMobileCall::TMobileCallStatus mobileCallStatus = RMobileCall::EStatusRinging;
-
- TMockLtsyCallData0 mockData0(callId, mobileService);
-
- //-------------------------------------------------------------------------
- // TEST A: failure to dispatch request to LTSY
- //-------------------------------------------------------------------------
-
- //-------------------------------------------------------------------------
- // create new incoming call
- errorCode = CreateIncomingCallL(line, callId, incomingCallName,
- mobileService, mobileCallStatus);
- ASSERT_EQUALS(KErrNone, errorCode);
-
- errorCode = call.OpenExistingCall(line, incomingCallName);
- ASSERT_EQUALS(KErrNone, errorCode);
- //-------------------------------------------------------------------------
-
- // see line 265 in function CMmFaxCallTsy::DoExtFuncL in file CMmFaxCallTsy.cpp
- call.Swap(requestStatus);
-
- User::WaitForRequest(requestStatus);
- AssertMockLtsyStatusL();
- ASSERT_EQUALS(KErrNotSupported, requestStatus.Int());
-
- AssertMockLtsyStatusL();
- CleanupStack::PopAndDestroy(4); // expectData, call, line
- }
-
-/**
-@SYMTestCaseID BA-CTSY-CCON-CR-0001
-@SYMComponent telephony_ctsy
-@SYMTestCaseDesc Test support in CTSY for RMobileCall::Resume for voice calls
-@SYMTestPriority High
-@SYMTestActions Invokes RMobileCall::Resume for voice calls
-@SYMTestExpectedResults Pass
-@SYMTestType CT
-*/
-void CCTsyCallControlFU::TestResume0001L()
- {
-
- OpenEtelServerL(EUseExtendedError);
- CleanupStack::PushL(TCleanupItem(Cleanup,this));
- OpenPhoneL();
-
- RBuf8 expectData;
- CleanupClosePushL(expectData);
-
- RBuf8 completeData;
- CleanupClosePushL(completeData);
-
- RLine line;
- RMobileCall call;
- CleanupClosePushL(call);
-
- TInt errorCode = KErrNone;
- TInt callId = 1;
- TName incomingCallName;
- TRequestStatus requestStatus;
- TRequestStatus mockLtsyStatus;
-
- // open new line and call for KMmTsyVoice1LineName
- errorCode = OpenNewLineLC(iPhone, line, KMmTsyVoice1LineName);
- ASSERT_EQUALS(KErrNone, errorCode);
-
- RMobileCall::TMobileCallStatus mobileCallStatus = RMobileCall::EStatusRinging;
- RMobilePhone::TMobileService mobileService = RMobilePhone::EVoiceService;
-
- TMockLtsyCallData0 mockData0(callId, mobileService);
-
-
- //-------------------------------------------------------------------------
- // TEST A: failure to dispatch request to LTSY
- //-------------------------------------------------------------------------
-
- //-------------------------------------------------------------------------
- // create new incoming call
- errorCode = CreateIncomingCallL(line, callId, incomingCallName,
- mobileService, mobileCallStatus);
- ASSERT_EQUALS(KErrNone, errorCode);
- AssertMockLtsyStatusL();
-
- errorCode = call.OpenExistingCall(line, incomingCallName);
- ASSERT_EQUALS(KErrNone, errorCode);
- AssertMockLtsyStatusL();
- //-------------------------------------------------------------------------
-
- expectData.Close();
- mockData0.SerialiseL(expectData);
- iMockLTSY.ExpectL(EMobileCallResume, expectData, KErrNotSupported);
- call.Resume(requestStatus);
-
- User::WaitForRequest(requestStatus);
- AssertMockLtsyStatusL();
- ASSERT_EQUALS(KErrNotSupported, requestStatus.Int());
-
- // close incoming call
- CloseIncomingCallL(call, callId, mobileService);
-
- //-------------------------------------------------------------------------
- // TEST B: failure on completion of pending request from LTSY->CTSY
- //-------------------------------------------------------------------------
-
- //-------------------------------------------------------------------------
- // create new incoming call
- errorCode = CreateIncomingCallL(line, callId, incomingCallName,
- mobileService, mobileCallStatus);
- ASSERT_EQUALS(KErrNone, errorCode);
- AssertMockLtsyStatusL();
-
- errorCode = call.OpenExistingCall(line, incomingCallName);
- ASSERT_EQUALS(KErrNone, errorCode);
- AssertMockLtsyStatusL();
- //-------------------------------------------------------------------------
-
- expectData.Close();
- mockData0.SerialiseL(expectData);
- iMockLTSY.ExpectL(EMobileCallResume, expectData);
- iMockLTSY.CompleteL(EMobileCallResume, KErrGeneral, expectData);
- call.Resume(requestStatus);
-
- User::WaitForRequest(requestStatus);
- AssertMockLtsyStatusL();
- ASSERT_EQUALS(KErrGeneral, requestStatus.Int());
-
- // close incoming call
- CloseIncomingCallL(call, callId, mobileService);
-
- //-------------------------------------------------------------------------
- // TEST C: Successful completion request of
- // RMobileCall::Resume when result is not cached.
- //-------------------------------------------------------------------------
-
- //-------------------------------------------------------------------------
- // create new incoming call
- errorCode = CreateIncomingCallL(line, callId, incomingCallName,
- mobileService, mobileCallStatus);
- ASSERT_EQUALS(KErrNone, errorCode);
- AssertMockLtsyStatusL();
-
- errorCode = call.OpenExistingCall(line, incomingCallName);
- ASSERT_EQUALS(KErrNone, errorCode);
- AssertMockLtsyStatusL();
- //-------------------------------------------------------------------------
-
- expectData.Close();
- mockData0.SerialiseL(expectData);
- iMockLTSY.ExpectL(EMobileCallResume, expectData);
- iMockLTSY.CompleteL(EMobileCallResume, KErrNone, expectData);
- call.Resume(requestStatus);
-
- User::WaitForRequest(requestStatus);
- AssertMockLtsyStatusL();
- ASSERT_EQUALS(KErrNone, requestStatus.Int());
-
- // close incoming call
- CloseIncomingCallL(call, callId, mobileService);
-
- //-------------------------------------------------------------------------
- // TEST E: Unsolicited completion of RMobileCall::Resume
- // from LTSY.
- //-------------------------------------------------------------------------
-
- iMockLTSY.NotifyTerminated(mockLtsyStatus);
- expectData.Close();
- mockData0.SerialiseL(expectData);
- iMockLTSY.CompleteL(EMobileCallResume, KErrNone, expectData);
- User::WaitForRequest(mockLtsyStatus);
- AssertMockLtsyStatusL();
- ASSERT_EQUALS(KErrNone, mockLtsyStatus.Int());
-
- AssertMockLtsyStatusL();
- CleanupStack::PopAndDestroy(5, this); // expectData, completeData, line, this, call
-
- }
-
-
-/**
-@SYMTestCaseID BA-CTSY-CCON-CR-0002
-@SYMComponent telephony_ctsy
-@SYMTestCaseDesc Test support in CTSY for cancelling of RMobileCall::Resume for voice calls
-@SYMTestPriority High
-@SYMTestActions Invokes cancelling of RMobileCall::Resume for voice calls
-@SYMTestExpectedResults Pass
-@SYMTestType CT
-*/
-void CCTsyCallControlFU::TestResume0002L()
- {
-
- OpenEtelServerL(EUseExtendedError);
- CleanupStack::PushL(TCleanupItem(Cleanup,this));
- OpenPhoneL();
-
- RBuf8 expectData;
- CleanupClosePushL(expectData);
-
- RLine line;
- RMobileCall call;
- CleanupClosePushL(call);
-
- TInt errorCode = KErrNone;
- TInt callId = 1;
- TName incomingCallName;
-
- TRequestStatus requestStatus;
- TRequestStatus mockLtsyStatus;
-
- RMobileCall::TMobileCallStatus mobileCallStatus = RMobileCall::EStatusRinging;
- RMobilePhone::TMobileService mobileService = RMobilePhone::EVoiceService;
-
- //-------------------------------------------------------------------------
- // Test cancelling of RCall::AnswerIncomingCall
- //-------------------------------------------------------------------------
-
- // open new line for KMmTsyVoice1LineName
- errorCode = OpenNewLineLC(iPhone, line, KMmTsyVoice1LineName);
- ASSERT_EQUALS(KErrNone, errorCode);
-
- //-------------------------------------------------------------------------
- // create new incoming call
- errorCode = CreateIncomingCallL(line, callId, incomingCallName,
- mobileService, mobileCallStatus);
- ASSERT_EQUALS(KErrNone, errorCode);
- AssertMockLtsyStatusL();
-
- errorCode = call.OpenExistingCall(line, incomingCallName);
- ASSERT_EQUALS(KErrNone, errorCode);
- AssertMockLtsyStatusL();
- //-------------------------------------------------------------------------
-
- iMockLTSY.NotifyTerminated(mockLtsyStatus);
- TMockLtsyCallData0 mockData0(callId, mobileService);
- expectData.Close();
- mockData0.SerialiseL(expectData);
-
- iMockLTSY.ExpectL(EMobileCallResume, expectData);
- iMockLTSY.CompleteL(EMobileCallResume, KErrNone, expectData);
-
- call.Resume(requestStatus);
-
- call.CancelAsyncRequest(EMobileCallResume);
-
- User::WaitForRequest(requestStatus);
- AssertMockLtsyStatusL();
- // see CMmVoiceCallTsy::CancelService in line 507 in file CMmVoiceCallTsy.cpp
- ASSERT_EQUALS(KErrNone, requestStatus.Int());
-
- User::WaitForRequest(mockLtsyStatus);
-
- CleanupStack::PopAndDestroy(4); // expectData, this, call, line
- }
-
-/**
-@SYMTestCaseID BA-CTSY-CCON-CR-0004
-@SYMComponent telephony_ctsy
-@SYMTestCaseDesc Test support in CTSY for multiple client requests to RMobileCall::Resume for voice calls
-@SYMTestPriority High
-@SYMTestActions Invokes multiple client requests to RMobileCall::Resume for voice calls
-@SYMTestExpectedResults Pass
-@SYMTestType CT
-*/
-void CCTsyCallControlFU::TestResume0004L()
- {
- OpenEtelServerL(EUseExtendedError);
- CleanupStack::PushL(TCleanupItem(Cleanup,this));
- OpenPhoneL();
-
- RBuf8 expectData;
- CleanupClosePushL(expectData);
-
- // Open second client
- RTelServer telServer2;
- TInt ret = telServer2.Connect();
- ASSERT_EQUALS(KErrNone, ret);
- CleanupClosePushL(telServer2);
-
- RMobilePhone phone2;
- ret = phone2.Open(iTelServer,KMmTsyPhoneName);
- ASSERT_EQUALS(KErrNone, ret);
- CleanupClosePushL(phone2);
-
- RLine line1;
- RLine line2;
-
- RMobileCall call1;
- CleanupClosePushL(call1);
-
- RMobileCall call2;
- CleanupClosePushL(call2);
-
- TInt errorCode = KErrNone;
-
- TInt callId1 = 1;
- TName incomingCallName1;
-
- TInt callId2 = 2;
- TName incomingCallName2;
-
- TRequestStatus requestStatus1;
- TRequestStatus requestStatus2;
-
- // open new line1 for KMmTsyVoice1LineName
- errorCode = OpenNewLineLC(iPhone, line1, KMmTsyVoice1LineName);
- ASSERT_EQUALS(KErrNone, errorCode);
-
- // open new line2 for KMmTsyVoice1LineName
- errorCode = OpenNewLineLC(phone2, line2, KMmTsyVoice1LineName);
- ASSERT_EQUALS(KErrNone, errorCode);
-
- RMobileCall::TMobileCallStatus mobileCallStatus = RMobileCall::EStatusRinging;
- RMobilePhone::TMobileService mobileService = RMobilePhone::EVoiceService;
-
- //-------------------------------------------------------------------------
- // Test A: Test multiple clients requesting RCall::AnswerIncomingCall
- //-------------------------------------------------------------------------
-
- //-------------------------------------------------------------------------
- // create new incoming call1
- errorCode = CreateIncomingCallL(line1, callId1, incomingCallName1,
- mobileService, mobileCallStatus);
- ASSERT_EQUALS(KErrNone, errorCode);
- AssertMockLtsyStatusL();
-
- errorCode = call1.OpenExistingCall(line1, incomingCallName1);
- ASSERT_EQUALS(KErrNone, errorCode);
- AssertMockLtsyStatusL();
- //-------------------------------------------------------------------------
-
- //-------------------------------------------------------------------------
- // create new incoming call2
- errorCode = CreateIncomingCallL(line2, callId2, incomingCallName2,
- mobileService, mobileCallStatus);
- ASSERT_EQUALS(KErrNone, errorCode);
- AssertMockLtsyStatusL();
-
- errorCode = call2.OpenExistingCall(line2, incomingCallName2);
- ASSERT_EQUALS(KErrNone, errorCode);
- AssertMockLtsyStatusL();
- //-------------------------------------------------------------------------
-
- TMockLtsyCallData0 mockData01(callId1, mobileService);
- expectData.Close();
- mockData01.SerialiseL(expectData);
- iMockLTSY.ExpectL(EMobileCallResume, expectData);
- iMockLTSY.CompleteL(EMobileCallResume, KErrNone, expectData);
-
- call1.Resume(requestStatus1);
-
- TMockLtsyCallData0 mockData02(callId2, mobileService);
- expectData.Close();
- mockData02.SerialiseL(expectData);
- iMockLTSY.ExpectL(EMobileCallResume, expectData);
- iMockLTSY.CompleteL(EMobileCallResume, KErrNone, expectData);
-
- call2.Resume(requestStatus2);
-
- User::WaitForRequest(requestStatus1);
- ASSERT_EQUALS(KErrNone, requestStatus1.Int());
-
- User::WaitForRequest(requestStatus2);
- AssertMockLtsyStatusL();
- ASSERT_EQUALS(KErrNone, requestStatus2.Int());
-
- // Done !
- CleanupStack::PopAndDestroy(4); // line1, line2, call1, call2
- CleanupStack::PopAndDestroy(4, this); // phone2, telServer2, expectData, this
- }
-
-
-/**
-@SYMTestCaseID BA-CTSY-CCON-CR-0005
-@SYMComponent telephony_ctsy
-@SYMTestCaseDesc Test support in CTSY for RMobileCall::Resume with timeout for voice calls
-@SYMTestPriority High
-@SYMTestActions Invokes RMobileCall::Resume and tests for timeout for voice calls
-@SYMTestExpectedResults Pass
-@SYMTestType CT
-*/
-void CCTsyCallControlFU::TestResume0005L()
- {
- OpenEtelServerL(EUseExtendedError);
- CleanupStack::PushL(TCleanupItem(Cleanup,this));
- OpenPhoneL();
-
- RBuf8 expectData;
- CleanupClosePushL(expectData);
-
- RLine line;
- RMobileCall call;
- CleanupClosePushL(call);
-
- TInt errorCode = KErrNone;
- TInt callId = 1;
- TName incomingCallName;
-
- TRequestStatus requestStatus;
- TRequestStatus mockLtsyStatus;
-
- // open new line for KMmTsyVoice1LineName
- errorCode = OpenNewLineLC(iPhone, line, KMmTsyVoice1LineName);
- ASSERT_EQUALS(KErrNone, errorCode);
-
- RMobileCall::TMobileCallStatus mobileCallStatus = RMobileCall::EStatusRinging;
- RMobilePhone::TMobileService mobileService = RMobilePhone::EVoiceService;
-
- //-------------------------------------------------------------------------
- // Test A: Test timeout of RCall::AnswerIncomingCall
- //-------------------------------------------------------------------------
-
- //-------------------------------------------------------------------------
- // create new incoming call
- errorCode = CreateIncomingCallL(line, callId, incomingCallName,
- mobileService, mobileCallStatus);
- ASSERT_EQUALS(KErrNone, errorCode);
- AssertMockLtsyStatusL();
-
- errorCode = call.OpenExistingCall(line, incomingCallName);
- ASSERT_EQUALS(KErrNone, errorCode);
- AssertMockLtsyStatusL();
- //-------------------------------------------------------------------------
-
- TMockLtsyCallData0 mockData0(callId, mobileService);
- expectData.Close();
- mockData0.SerialiseL(expectData);
- iMockLTSY.ExpectL(EMobileCallResume, expectData);
-
- call.Resume(requestStatus);
-
- User::WaitForRequest(requestStatus);
- AssertMockLtsyStatusL();
- ASSERT_EQUALS(KErrTimedOut, requestStatus.Int());
-
- CleanupStack::PopAndDestroy(4, this); // expectData, this, line, call
- }
-
-
-/**
-@SYMTestCaseID BA-CTSY-CCON-CR-0006
-@SYMComponent telephony_ctsy
-@SYMTestCaseDesc Test support in CTSY for RMobileCall::Resume for data calls
-@SYMTestPriority High
-@SYMTestActions Invokes RMobileCall::Resume for data calls
-@SYMTestExpectedResults Pass
-@SYMTestType CT
-*/
-void CCTsyCallControlFU::TestResume0006L()
- {
-
- OpenEtelServerL(EUseExtendedError);
- CleanupStack::PushL(TCleanupItem(Cleanup,this));
- OpenPhoneL();
-
- RBuf8 expectData;
- CleanupClosePushL(expectData);
-
- RLine line;
- RMobileCall call;
- CleanupClosePushL(call);
-
- TInt errorCode = KErrNone;
- TInt callId = 1;
- TName incomingCallName;
-
- TRequestStatus requestStatus;
- TRequestStatus mockLtsyStatus;
-
- // open new line for data
- errorCode = OpenNewLineLC(iPhone, line, KMmTsyDataLineName);
- ASSERT_EQUALS(KErrNone, errorCode);
-
- RMobilePhone::TMobileService mobileService = RMobilePhone::ECircuitDataService;
- RMobileCall::TMobileCallStatus mobileCallStatus = RMobileCall::EStatusRinging;
-
- TMockLtsyCallData0 mockData0(callId, mobileService);
-
- //-------------------------------------------------------------------------
- // TEST A: failure to dispatch request to LTSY
- //-------------------------------------------------------------------------
-
- //-------------------------------------------------------------------------
- // create new incoming call
- errorCode = CreateIncomingCallL(line, callId, incomingCallName,
- mobileService, mobileCallStatus);
- ASSERT_EQUALS(KErrNone, errorCode);
-
- errorCode = call.OpenExistingCall(line, incomingCallName);
- ASSERT_EQUALS(KErrNone, errorCode);
- //-------------------------------------------------------------------------
-
- // see EMobileCallResume case in function CMmDataCallTsy::DoExtFuncL in file CMmDataCallTsy.cpp
- call.Resume(requestStatus);
-
- User::WaitForRequest(requestStatus);
- AssertMockLtsyStatusL();
- ASSERT_EQUALS(KErrNotSupported, requestStatus.Int());
-
- AssertMockLtsyStatusL();
- CleanupStack::PopAndDestroy(4); // expectData, call, line
- }
-
-/**
-@SYMTestCaseID BA-CTSY-CCON-CR-00011
-@SYMComponent telephony_ctsy
-@SYMTestCaseDesc Test support in CTSY for RMobileCall::Resume for fax calls
-@SYMTestPriority High
-@SYMTestActions Invokes RMobileCall::Resume for fax calls
-@SYMTestExpectedResults Pass
-@SYMTestType CT
-*/
-void CCTsyCallControlFU::TestResume00011L()
- {
-
- OpenEtelServerL(EUseExtendedError);
- CleanupStack::PushL(TCleanupItem(Cleanup,this));
- OpenPhoneL();
-
- RBuf8 expectData;
- CleanupClosePushL(expectData);
-
- RLine line;
- RMobileCall call;
- CleanupClosePushL(call);
-
- TInt errorCode = KErrNone;
- TInt callId = 1;
- TName incomingCallName;
-
- TRequestStatus requestStatus;
- TRequestStatus mockLtsyStatus;
-
- // open new line for data
- errorCode = OpenNewLineLC(iPhone, line, KMmTsyFaxLineName);
- ASSERT_EQUALS(KErrNone, errorCode);
-
- RMobilePhone::TMobileService mobileService = RMobilePhone::EFaxService;
- RMobileCall::TMobileCallStatus mobileCallStatus = RMobileCall::EStatusRinging;
-
- TMockLtsyCallData0 mockData0(callId, mobileService);
-
- //-------------------------------------------------------------------------
- // TEST A: failure to dispatch request to LTSY
- //-------------------------------------------------------------------------
-
- //-------------------------------------------------------------------------
- // create new incoming call
- errorCode = CreateIncomingCallL(line, callId, incomingCallName,
- mobileService, mobileCallStatus);
- ASSERT_EQUALS(KErrNone, errorCode);
-
- errorCode = call.OpenExistingCall(line, incomingCallName);
- ASSERT_EQUALS(KErrNone, errorCode);
- //-------------------------------------------------------------------------
-
- // see EMobileCallResume case in function CMmFaxCallTsy::DoExtFuncL in file CMmFaxCallTsy.cpp
- call.Resume(requestStatus);
-
- User::WaitForRequest(requestStatus);
- AssertMockLtsyStatusL();
- ASSERT_EQUALS(KErrNotSupported, requestStatus.Int());
-
- AssertMockLtsyStatusL();
- CleanupStack::PopAndDestroy(4); // expectData, call, line
- }
-
-/**
-@SYMTestCaseID BA-CTSY-CCON-CDF-0001
-@SYMComponent telephony_ctsy
-@SYMTestCaseDesc Test support in CTSY for RMobileCall::Deflect for voice calls
-@SYMTestPriority High
-@SYMTestActions Invokes RMobileCall::Deflect for voice calls
-@SYMTestExpectedResults Pass
-@SYMTestType CT
-*/
-void CCTsyCallControlFU::TestDeflect0001L()
- {
-
- OpenEtelServerL(EUseExtendedError);
- CleanupStack::PushL(TCleanupItem(Cleanup,this));
- OpenPhoneL();
-
- RBuf8 expectData;
- CleanupClosePushL(expectData);
-
- RLine line;
- RMobileCall call;
- CleanupClosePushL(call);
-
- TInt errorCode = KErrNone;
- TInt callId = 1;
- TName incomingCallName;
-
- TRequestStatus requestStatus;
- TRequestStatus mockLtsyStatus;
-
- // open new line for data
- errorCode = OpenNewLineLC(iPhone, line, KMmTsyVoice1LineName);
- ASSERT_EQUALS(KErrNone, errorCode);
-
- RMobilePhone::TMobileService mobileService = RMobilePhone::EVoiceService;
- RMobileCall::TMobileCallStatus mobileCallStatus = RMobileCall::EStatusRinging;
-
- TMockLtsyCallData0 mockData0(callId, mobileService);
-
- //-------------------------------------------------------------------------
- // Test API is not supported
- //-------------------------------------------------------------------------
-
- //-------------------------------------------------------------------------
- // create new incoming call
- errorCode = CreateIncomingCallL(line, callId, incomingCallName,
- mobileService, mobileCallStatus);
- ASSERT_EQUALS(KErrNone, errorCode);
-
- errorCode = call.OpenExistingCall(line, incomingCallName);
- ASSERT_EQUALS(KErrNone, errorCode);
- //-------------------------------------------------------------------------
-
- RMobileCall::TMobileCallDeflect deflectType = RMobileCall::EDeflectUnspecified;
- RMobilePhone::TMobileAddress destination;
- call.Deflect(requestStatus, deflectType, destination);
-
- User::WaitForRequest(requestStatus);
- AssertMockLtsyStatusL();
- ASSERT_EQUALS(KErrNotSupported, requestStatus.Int());
-
- AssertMockLtsyStatusL();
- CleanupStack::PopAndDestroy(4); // expectData, call, line
- }
-
-
-/**
-@SYMTestCaseID BA-CTSY-CCON-CDF-0002
-@SYMComponent telephony_ctsy
-@SYMTestCaseDesc Test support in CTSY for RMobileCall::Deflect for data calls
-@SYMTestPriority High
-@SYMTestActions Invokes RMobileCall::Deflect for data calls
-@SYMTestExpectedResults Pass
-@SYMTestType CT
-*/
-void CCTsyCallControlFU::TestDeflect0002L()
- {
-
- OpenEtelServerL(EUseExtendedError);
- CleanupStack::PushL(TCleanupItem(Cleanup,this));
- OpenPhoneL();
-
- RBuf8 expectData;
- CleanupClosePushL(expectData);
-
- RLine line;
- RMobileCall call;
- CleanupClosePushL(call);
-
- TInt errorCode = KErrNone;
- TInt callId = 1;
- TName incomingCallName;
-
- TRequestStatus requestStatus;
- TRequestStatus mockLtsyStatus;
-
- // open new line for data
- errorCode = OpenNewLineLC(iPhone, line, KMmTsyDataLineName);
- ASSERT_EQUALS(KErrNone, errorCode);
-
- RMobilePhone::TMobileService mobileService = RMobilePhone::ECircuitDataService;
- RMobileCall::TMobileCallStatus mobileCallStatus = RMobileCall::EStatusRinging;
-
- TMockLtsyCallData0 mockData0(callId, mobileService);
-
- //-------------------------------------------------------------------------
- // Test API is not supported
- //-------------------------------------------------------------------------
-
- //-------------------------------------------------------------------------
- // create new incoming call
- errorCode = CreateIncomingCallL(line, callId, incomingCallName,
- mobileService, mobileCallStatus);
- ASSERT_EQUALS(KErrNone, errorCode);
-
- errorCode = call.OpenExistingCall(line, incomingCallName);
- ASSERT_EQUALS(KErrNone, errorCode);
- //-------------------------------------------------------------------------
-
- RMobileCall::TMobileCallDeflect deflectType = RMobileCall::EDeflectUnspecified;
- RMobilePhone::TMobileAddress destination;
- call.Deflect(requestStatus, deflectType, destination);
-
- User::WaitForRequest(requestStatus);
- AssertMockLtsyStatusL();
- ASSERT_EQUALS(KErrNotSupported, requestStatus.Int());
-
- AssertMockLtsyStatusL();
- CleanupStack::PopAndDestroy(4); // expectData, call, line
- }
-
-
-/**
-@SYMTestCaseID BA-CTSY-CCON-CDF-0003
-@SYMComponent telephony_ctsy
-@SYMTestCaseDesc Test support in CTSY for RMobileCall::Deflect for fax calls
-@SYMTestPriority High
-@SYMTestActions Invokes RMobileCall::Deflect for fax calls
-@SYMTestExpectedResults Pass
-@SYMTestType CT
-*/
-void CCTsyCallControlFU::TestDeflect0003L()
- {
-
- OpenEtelServerL(EUseExtendedError);
- CleanupStack::PushL(TCleanupItem(Cleanup,this));
- OpenPhoneL();
-
- RBuf8 expectData;
- CleanupClosePushL(expectData);
-
- RLine line;
- RMobileCall call;
- CleanupClosePushL(call);
-
- TInt errorCode = KErrNone;
- TInt callId = 1;
- TName incomingCallName;
-
- TRequestStatus requestStatus;
- TRequestStatus mockLtsyStatus;
-
- // open new line for data
- errorCode = OpenNewLineLC(iPhone, line, KMmTsyFaxLineName);
- ASSERT_EQUALS(KErrNone, errorCode);
-
- RMobilePhone::TMobileService mobileService = RMobilePhone::EFaxService;
- RMobileCall::TMobileCallStatus mobileCallStatus = RMobileCall::EStatusRinging;
-
- TMockLtsyCallData0 mockData0(callId, mobileService);
-
- //-------------------------------------------------------------------------
- // Test API is not supported
- //-------------------------------------------------------------------------
-
- //-------------------------------------------------------------------------
- // create new incoming call
- errorCode = CreateIncomingCallL(line, callId, incomingCallName,
- mobileService, mobileCallStatus);
- ASSERT_EQUALS(KErrNone, errorCode);
-
- errorCode = call.OpenExistingCall(line, incomingCallName);
- ASSERT_EQUALS(KErrNone, errorCode);
- //-------------------------------------------------------------------------
-
- RMobileCall::TMobileCallDeflect deflectType = RMobileCall::EDeflectUnspecified;
- RMobilePhone::TMobileAddress destination;
- call.Deflect(requestStatus, deflectType, destination);
-
- User::WaitForRequest(requestStatus);
- AssertMockLtsyStatusL();
- ASSERT_EQUALS(KErrNotSupported, requestStatus.Int());
-
- AssertMockLtsyStatusL();
- CleanupStack::PopAndDestroy(4); // expectData, call, line
- }
-
-
-/**
-@SYMTestCaseID BA-CTSY-CCON-CT-0001
-@SYMComponent telephony_ctsy
-@SYMTestCaseDesc Test support in CTSY for RMobileCall::Transfer for voice calls
-@SYMTestPriority High
-@SYMTestActions Invokes RMobileCall::Transfer for voice calls
-@SYMTestExpectedResults Pass
-@SYMTestType CT
-*/
-void CCTsyCallControlFU::TestTransfer0001L()
- {
-
- OpenEtelServerL(EUseExtendedError);
- CleanupStack::PushL(TCleanupItem(Cleanup,this));
- OpenPhoneL();
-
- RBuf8 expectData;
- CleanupClosePushL(expectData);
-
- RBuf8 completeData;
- CleanupClosePushL(completeData);
-
- RLine line;
- RMobileCall call;
- CleanupClosePushL(call);
- RMobileCall call2;
- CleanupClosePushL(call2);
-
- TInt errorCode = KErrNone;
- TInt callId(1);
- TName incomingCallName;
- TRequestStatus requestStatus;
- TRequestStatus requestNotify;
-
- // open new line and call for KMmTsyVoice1LineName
- errorCode = OpenNewLineLC(iPhone, line, KMmTsyVoice1LineName);
- ASSERT_EQUALS(KErrNone, errorCode);
-
- RMobileCall::TMobileCallStatus mobileCallStatus = RMobileCall::EStatusRinging; //RMobileCall::EStatusRinging;
- RMobilePhone::TMobileService mobileService = RMobilePhone::EVoiceService;
-
- //-------------------------------------------------------------------------
- // create new incoming call
- errorCode = CreateIncomingCallL(line, callId, incomingCallName,
- mobileService, mobileCallStatus);
- ASSERT_EQUALS(KErrNone, errorCode);
-
- errorCode = call2.OpenExistingCall(line, incomingCallName);
- ASSERT_EQUALS(KErrNone, errorCode);
- //-------------------------------------------------------------------------
-
- mobileCallStatus = RMobileCall::EStatusHold;
- callId = 2;
-
- //-------------------------------------------------------------------------
- // TEST A: failure to dispatch request to LTSY
- //-------------------------------------------------------------------------
-
- //-------------------------------------------------------------------------
- // create new incoming call
- errorCode = CreateIncomingCallL(line, callId, incomingCallName,
- mobileService, mobileCallStatus);
- ASSERT_EQUALS(KErrNone, errorCode);
-
- errorCode = call.OpenExistingCall(line, incomingCallName);
- ASSERT_EQUALS(KErrNone, errorCode);
- //-------------------------------------------------------------------------
-
- TMockLtsyCallData0 mockData0(callId, mobileService);
- expectData.Close();
- mockData0.SerialiseL(expectData);
- iMockLTSY.ExpectL(EMobileCallTransfer, expectData, KErrNotSupported);
-
- call.Transfer(requestStatus);
-
- User::WaitForRequest(requestStatus);
- AssertMockLtsyStatusL();
- ASSERT_EQUALS(KErrNotSupported, requestStatus.Int());
-
- // close incoming call
- CloseIncomingCallL(call, callId, mobileService);
-
- //-------------------------------------------------------------------------
- // TEST B: failure on completion of pending request from LTSY->CTSY
- //-------------------------------------------------------------------------
-
- //-------------------------------------------------------------------------
- // create new incoming call
- errorCode = CreateIncomingCallL(line, callId, incomingCallName,
- mobileService, mobileCallStatus);
- ASSERT_EQUALS(KErrNone, errorCode);
- AssertMockLtsyStatusL();
-
- errorCode = call.OpenExistingCall(line, incomingCallName);
- ASSERT_EQUALS(KErrNone, errorCode);
- AssertMockLtsyStatusL();
- //-------------------------------------------------------------------------
-
- expectData.Close();
- mockData0.SerialiseL(expectData);
- iMockLTSY.ExpectL(EMobileCallTransfer, expectData);
- iMockLTSY.CompleteL(EMobileCallTransfer, KErrGeneral, expectData);
- call.Transfer(requestStatus);
-
- User::WaitForRequest(requestStatus);
- AssertMockLtsyStatusL();
- ASSERT_EQUALS(KErrGeneral, requestStatus.Int());
-
- // close incoming call
- CloseIncomingCallL(call, callId, mobileService);
-
- //-------------------------------------------------------------------------
- // TEST C: Successful completion request of
- // RMobileCall::Transfer when result is not cached.
- //-------------------------------------------------------------------------
-
- //-------------------------------------------------------------------------
- // create new incoming call
- errorCode = CreateIncomingCallL(line, callId, incomingCallName,
- mobileService, mobileCallStatus);
- ASSERT_EQUALS(KErrNone, errorCode);
- AssertMockLtsyStatusL();
-
- errorCode = call.OpenExistingCall(line, incomingCallName);
- ASSERT_EQUALS(KErrNone, errorCode);
- AssertMockLtsyStatusL();
- //-------------------------------------------------------------------------
-
- expectData.Close();
- mockData0.SerialiseL(expectData);
- iMockLTSY.ExpectL(EMobileCallTransfer, expectData);
- iMockLTSY.CompleteL(EMobileCallTransfer, KErrNone, expectData);
- call.Transfer(requestStatus);
-
- User::WaitForRequest(requestStatus);
- AssertMockLtsyStatusL();
- ASSERT_EQUALS(KErrNone, requestStatus.Int());
-
- // close incoming call
- CloseIncomingCallL(call, callId, mobileService);
-
- //-------------------------------------------------------------------------
- // TEST E: Unsolicited completion of RMobileCall::Transfer
- // from LTSY.
- //-------------------------------------------------------------------------
-
- TRequestStatus mockLtsyStatus;
-
- iMockLTSY.NotifyTerminated(mockLtsyStatus);
- expectData.Close();
- mockData0.SerialiseL(expectData);
- iMockLTSY.CompleteL(EMobileCallTransfer, KErrNone, expectData);
- User::WaitForRequest(mockLtsyStatus);
- AssertMockLtsyStatusL();
- ASSERT_EQUALS(KErrNone, mockLtsyStatus.Int());
-
- AssertMockLtsyStatusL();
- CleanupStack::PopAndDestroy(6, this); // expectData, completeData, call, line, call2
- }
-
-
-/**
-@SYMTestCaseID BA-CTSY-CCON-CT-0002
-@SYMComponent telephony_ctsy
-@SYMTestCaseDesc Test support in CTSY for cancelling of RMobileCall::Transfer for voice calls
-@SYMTestPriority High
-@SYMTestActions Invokes cancelling of RMobileCall::Transfer for voice calls
-@SYMTestExpectedResults Pass
-@SYMTestType CT
-*/
-void CCTsyCallControlFU::TestTransfer0002L()
- {
-
- OpenEtelServerL(EUseExtendedError);
- CleanupStack::PushL(TCleanupItem(Cleanup,this));
- OpenPhoneL();
-
- RBuf8 expectData;
- CleanupClosePushL(expectData);
-
- RLine line;
- RMobileCall call;
- CleanupClosePushL(call);
- RMobileCall call2;
- CleanupClosePushL(call2);
-
- TInt errorCode = KErrNone;
- TInt callId = 1;
- TName incomingCallName;
-
- TRequestStatus requestStatus;
- TRequestStatus mockLtsyStatus;
-
- RMobileCall::TMobileCallStatus mobileCallStatus = RMobileCall::EStatusRinging;
- RMobilePhone::TMobileService mobileService = RMobilePhone::EVoiceService;
-
- // open new line for KMmTsyVoice1LineName
- errorCode = OpenNewLineLC(iPhone, line, KMmTsyVoice1LineName);
- ASSERT_EQUALS(KErrNone, errorCode);
-
- //-------------------------------------------------------------------------
- // create new incoming call
- errorCode = CreateIncomingCallL(line, callId, incomingCallName,
- mobileService, mobileCallStatus);
- ASSERT_EQUALS(KErrNone, errorCode);
-
- errorCode = call2.OpenExistingCall(line, incomingCallName);
- ASSERT_EQUALS(KErrNone, errorCode);
- //-------------------------------------------------------------------------
-
- mobileCallStatus = RMobileCall::EStatusHold;
- callId = 2;
-
- //-------------------------------------------------------------------------
- // Test cancelling of RMobileCall::Transfer
- //-------------------------------------------------------------------------
-
- //-------------------------------------------------------------------------
- // create new incoming call
- errorCode = CreateIncomingCallL(line, callId, incomingCallName,
- mobileService, mobileCallStatus);
- ASSERT_EQUALS(KErrNone, errorCode);
- AssertMockLtsyStatusL();
-
- errorCode = call.OpenExistingCall(line, incomingCallName);
- ASSERT_EQUALS(KErrNone, errorCode);
- AssertMockLtsyStatusL();
- //-------------------------------------------------------------------------
-
- iMockLTSY.NotifyTerminated(mockLtsyStatus);
- TMockLtsyCallData0 mockData0(callId, mobileService);
- expectData.Close();
- mockData0.SerialiseL(expectData);
-
- iMockLTSY.ExpectL(EMobileCallTransfer, expectData);
- iMockLTSY.CompleteL(EMobileCallTransfer, KErrNone, expectData);
-
- call.Transfer(requestStatus);
-
- call.CancelAsyncRequest(EMobileCallTransfer);
-
- User::WaitForRequest(requestStatus);
- AssertMockLtsyStatusL();
- // see CMmVoiceCallTsy::CancelService in file CMmVoiceCallTsy.cpp
- ASSERT_EQUALS(KErrNone, requestStatus.Int());
-
- User::WaitForRequest(mockLtsyStatus);
-
- CleanupStack::PopAndDestroy(5); // expectData, this, call, line, call2
- }
-
-/**
-@SYMTestCaseID BA-CTSY-CCON-CT-0004
-@SYMComponent telephony_ctsy
-@SYMTestCaseDesc Test support in CTSY for multiple client requests to RMobileCall::Transfer for voice calls
-@SYMTestPriority High
-@SYMTestActions Invokes multiple client requests to RMobileCall::Transfer for voice calls
-@SYMTestExpectedResults Pass
-@SYMTestType CT
-*/
-void CCTsyCallControlFU::TestTransfer0004L()
- {
- OpenEtelServerL(EUseExtendedError);
- CleanupStack::PushL(TCleanupItem(Cleanup,this));
- OpenPhoneL();
-
- RBuf8 expectData;
- CleanupClosePushL(expectData);
-
- RBuf8 completeData;
- CleanupClosePushL(completeData);
-
- // 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);
-
- RLine line11;
- RLine line12;
- RLine line22;
-
- RMobileCall call11;
- CleanupClosePushL(call11);
-
- RMobileCall call12;
- CleanupClosePushL(call12);
-
- RMobileCall call22;
- CleanupClosePushL(call22);
-
- TInt errorCode = KErrNone;
-
- TInt callId1 = 1;
- TInt callId2 = 2;
- TName incomingCallName1;
- TName incomingCallName2;
-
- TRequestStatus requestStatus1;
- TRequestStatus requestStatus2;
- TRequestStatus mockLtsyStatus;
-
- // open new line11 for KMmTsyVoice1LineName
- errorCode = OpenNewLineLC(iPhone, line11, KMmTsyVoice1LineName);
- ASSERT_EQUALS(KErrNone, errorCode);
-
- // open new line12 for KMmTsyVoice2LineName
- errorCode = OpenNewLineLC(iPhone, line12, KMmTsyVoice2LineName);
- ASSERT_EQUALS(KErrNone, errorCode);
-
- // open new line22 for KMmTsyVoice2LineName
- errorCode = OpenNewLineLC(phone2, line22, KMmTsyVoice2LineName);
- ASSERT_EQUALS(KErrNone, errorCode);
-
- RMobileCall::TMobileCallStatus mobileCallStatus = RMobileCall::EStatusRinging;
- RMobilePhone::TMobileService mobileService = RMobilePhone::EVoiceService;
-
- //-------------------------------------------------------------------------
- // create new incoming call
- errorCode = CreateIncomingCallL(line11, callId1, incomingCallName1,
- mobileService, mobileCallStatus);
- ASSERT_EQUALS(KErrNone, errorCode);
-
- errorCode = call11.OpenExistingCall(line11, incomingCallName1);
- ASSERT_EQUALS(KErrNone, errorCode);
- //-------------------------------------------------------------------------
-
- mobileCallStatus = RMobileCall::EStatusHold;
- mobileService = RMobilePhone::EAuxVoiceService;
- //-------------------------------------------------------------------------
- // create new incoming call12 for iPhone
- errorCode = CreateIncomingCallL(line12, callId2, incomingCallName2,
- mobileService, mobileCallStatus);
- ASSERT_EQUALS(KErrNone, errorCode);
- AssertMockLtsyStatusL();
-
- errorCode = call12.OpenExistingCall(line12, incomingCallName2);
- ASSERT_EQUALS(KErrNone, errorCode);
- AssertMockLtsyStatusL();
- //-------------------------------------------------------------------------
-
- RLine::TCallInfo callInfo22;
- errorCode = line22.GetCallInfo(0, callInfo22);
- ASSERT_EQUALS(KErrNone, errorCode);
-
- errorCode = call22.OpenExistingCall(line22, callInfo22.iCallName);
- ASSERT_EQUALS(KErrNone, errorCode);
- AssertMockLtsyStatusL();
-
- //-------------------------------------------------------------------------
- // Test A: Test multiple clients requesting RMobileCall::Transfer
- //-------------------------------------------------------------------------
-
- TMockLtsyCallData0 mockData(callId2, mobileService);
- expectData.Close();
- mockData.SerialiseL(expectData);
- iMockLTSY.ExpectL(EMobileCallTransfer, expectData);
- iMockLTSY.CompleteL(EMobileCallTransfer, KErrNone, expectData, 10);
-
- call12.Transfer(requestStatus1);
- call22.Transfer(requestStatus2);
-
- User::WaitForRequest(requestStatus1);
- User::WaitForRequest(requestStatus2);
-
- ASSERT_EQUALS(KErrNone, requestStatus1.Int());
- ASSERT_EQUALS(KErrServerBusy, requestStatus2.Int());
-
- AssertMockLtsyStatusL();
-
- CleanupStack::PopAndDestroy(6); // line11, line12, line22, call11, call12, call22
- CleanupStack::PopAndDestroy(5, this); // phone2, telServer2, expectData, this, completeData
- }
-
-
-/**
-@SYMTestCaseID BA-CTSY-CCON-CT-0005
-@SYMComponent telephony_ctsy
-@SYMTestCaseDesc Test support in CTSY for RMobileCall::Transfer with timeout for voice calls
-@SYMTestPriority High
-@SYMTestActions Invokes RMobileCall::Transfer and tests for timeout for voice calls
-@SYMTestExpectedResults Pass
-@SYMTestType CT
-*/
-void CCTsyCallControlFU::TestTransfer0005L()
- {
- OpenEtelServerL(EUseExtendedError);
- CleanupStack::PushL(TCleanupItem(Cleanup,this));
- OpenPhoneL();
-
- RBuf8 expectData;
- CleanupClosePushL(expectData);
-
- RLine line;
-
- RMobileCall call;
- CleanupClosePushL(call);
-
- RMobileCall call2;
- CleanupClosePushL(call2);
-
- TInt errorCode = KErrNone;
- TInt callId = 1;
- TName incomingCallName;
-
- TRequestStatus requestStatus;
- TRequestStatus mockLtsyStatus;
-
- // open new line for KMmTsyVoice1LineName
- errorCode = OpenNewLineLC(iPhone, line, KMmTsyVoice1LineName);
- ASSERT_EQUALS(KErrNone, errorCode);
-
- RMobileCall::TMobileCallStatus mobileCallStatus = RMobileCall::EStatusRinging;
- RMobilePhone::TMobileService mobileService = RMobilePhone::EVoiceService;
-
- //-------------------------------------------------------------------------
- // create new incoming call
- errorCode = CreateIncomingCallL(line, callId, incomingCallName,
- mobileService, mobileCallStatus);
- ASSERT_EQUALS(KErrNone, errorCode);
- AssertMockLtsyStatusL();
-
- errorCode = call2.OpenExistingCall(line, incomingCallName);
- ASSERT_EQUALS(KErrNone, errorCode);
- AssertMockLtsyStatusL();
- //-------------------------------------------------------------------------
-
- //-------------------------------------------------------------------------
- // Test A: Test timeout of RMobileCall::Transfer
- //-------------------------------------------------------------------------
-
- mobileCallStatus = RMobileCall::EStatusHold;
- callId = 2;
-
- //-------------------------------------------------------------------------
- // create new incoming call
- errorCode = CreateIncomingCallL(line, callId, incomingCallName,
- mobileService, mobileCallStatus);
- ASSERT_EQUALS(KErrNone, errorCode);
- AssertMockLtsyStatusL();
-
- errorCode = call.OpenExistingCall(line, incomingCallName);
- ASSERT_EQUALS(KErrNone, errorCode);
- AssertMockLtsyStatusL();
- //-------------------------------------------------------------------------
-
- TMockLtsyCallData0 mockData0(callId, mobileService);
- expectData.Close();
- mockData0.SerialiseL(expectData);
- iMockLTSY.ExpectL(EMobileCallTransfer, expectData);
-
- call.Transfer(requestStatus);
-
- User::WaitForRequest(requestStatus);
- AssertMockLtsyStatusL();
- ASSERT_EQUALS(KErrTimedOut, requestStatus.Int());
-
- CleanupStack::PopAndDestroy(5, this); // expectData, this, line, call, call2
- }
-
-
-/**
-@SYMTestCaseID BA-CTSY-CCON-CT-0006
-@SYMComponent telephony_ctsy
-@SYMTestCaseDesc Test support in CTSY for RMobileCall::Transfer for data calls
-@SYMTestPriority High
-@SYMTestActions Invokes RMobileCall::Transfer for data calls
-@SYMTestExpectedResults Pass
-@SYMTestType CT
-*/
-void CCTsyCallControlFU::TestTransfer0006L()
- {
- OpenEtelServerL(EUseExtendedError);
- CleanupStack::PushL(TCleanupItem(Cleanup,this));
- OpenPhoneL();
-
- RBuf8 expectData;
- CleanupClosePushL(expectData);
-
- RBuf8 completeData;
- CleanupClosePushL(completeData);
-
- RLine line;
- RMobileCall call;
- CleanupClosePushL(call);
-
- RMobileCall ringingCall;
- CleanupClosePushL(ringingCall);
-
- TInt errorCode = KErrNone;
- TInt callId = 1;
- TName incomingCallName;
- TRequestStatus requestStatus;
- TRequestStatus requestNotify;
-
- // open new line and call for KMmTsyDataLineName
- errorCode = OpenNewLineLC(iPhone, line, KMmTsyDataLineName);
- ASSERT_EQUALS(KErrNone, errorCode);
-
- RMobileCall::TMobileCallStatus mobileCallStatus = RMobileCall::EStatusRinging;
- RMobilePhone::TMobileService mobileService = RMobilePhone::ECircuitDataService;
-
- //-------------------------------------------------------------------------
- // create new incoming call
- errorCode = CreateIncomingCallL(line, callId, incomingCallName,
- mobileService, mobileCallStatus);
- ASSERT_EQUALS(KErrNone, errorCode);
-
- errorCode = ringingCall.OpenExistingCall(line, incomingCallName);
- ASSERT_EQUALS(KErrNone, errorCode);
- //-------------------------------------------------------------------------
-
- callId = 2;
- mobileCallStatus = RMobileCall::EStatusHold;
-
- //-------------------------------------------------------------------------
- // TEST A: failure to dispatch request to LTSY
- //-------------------------------------------------------------------------
-
- //-------------------------------------------------------------------------
- // create new incoming call
- errorCode = CreateIncomingCallL(line, callId, incomingCallName,
- mobileService, mobileCallStatus);
- ASSERT_EQUALS(KErrNone, errorCode);
-
- errorCode = call.OpenExistingCall(line, incomingCallName);
- ASSERT_EQUALS(KErrNone, errorCode);
- //-------------------------------------------------------------------------
-
- call.Transfer(requestStatus);
-
- User::WaitForRequest(requestStatus);
- AssertMockLtsyStatusL();
- ASSERT_EQUALS(KErrNotReady, requestStatus.Int());
-
- // close incoming call
- CloseIncomingCallL(call, callId, RMobilePhone::ECircuitDataService);
-
- //-------------------------------------------------------------------------
- // TEST E: Unsolicited completion of RMobileCall::Transfer
- // from LTSY.
- //-------------------------------------------------------------------------
-
- TRequestStatus mockLtsyStatus;
-
- iMockLTSY.NotifyTerminated(mockLtsyStatus);
- TMockLtsyCallData0 mockData0(callId, mobileService);
- expectData.Close();
- mockData0.SerialiseL(expectData);
- iMockLTSY.CompleteL(EMobileCallTransfer, KErrNone, expectData);
- User::WaitForRequest(mockLtsyStatus);
- AssertMockLtsyStatusL();
- ASSERT_EQUALS(KErrNone, mockLtsyStatus.Int());
-
- CleanupStack::PopAndDestroy(6, this); // expectData, completeData, call, line, ringingCall
- }
-
-
-/**
-@SYMTestCaseID BA-CTSY-CCON-CT-0009
-@SYMComponent telephony_ctsy
-@SYMTestCaseDesc Test support in CTSY for multiple client requests to RMobileCall::Transfer for data calls
-@SYMTestPriority High
-@SYMTestActions Invokes multiple client requests to RMobileCall::Transfer for data calls
-@SYMTestExpectedResults Pass
-@SYMTestType CT
-*/
-void CCTsyCallControlFU::TestTransfer0009L()
- {
-
-
- OpenEtelServerL(EUseExtendedError);
- CleanupStack::PushL(TCleanupItem(Cleanup,this));
- OpenPhoneL();
-
- RBuf8 expectData;
- CleanupClosePushL(expectData);
-
- // Open second client
- RTelServer telServer2;
- TInt ret = telServer2.Connect();
- ASSERT_EQUALS(KErrNone, ret);
- CleanupClosePushL(telServer2);
-
- RMobilePhone phone2;
- ret = phone2.Open(iTelServer,KMmTsyPhoneName);
- ASSERT_EQUALS(KErrNone, ret);
- CleanupClosePushL(phone2);
-
- RLine line1;
- RLine line2;
-
- RMobileCall call1;
- CleanupClosePushL(call1);
- RMobileCall call2;
- CleanupClosePushL(call2);
- RMobileCall call3;
- CleanupClosePushL(call3);
- RMobileCall call4;
- CleanupClosePushL(call4);
-
- TInt errorCode = KErrNone;
-
- TInt callId1 = 1;
- TInt callId2 = 2;
- TInt callId3 = 3;
- TInt callId4 = 4;
- TName incomingCallName1;
- TName incomingCallName2;
- TName incomingCallName3;
- TName incomingCallName4;
-
- TRequestStatus requestStatus1;
- TRequestStatus requestStatus2;
-
- // open new line1 for KMmTsyDataLineName
- errorCode = OpenNewLineLC(iPhone, line1, KMmTsyDataLineName);
- ASSERT_EQUALS(KErrNone, errorCode);
-
- // open new line2 for KMmTsyDataLineName
- errorCode = OpenNewLineLC(phone2, line2, KMmTsyDataLineName);
- ASSERT_EQUALS(KErrNone, errorCode);
-
- RMobileCall::TMobileCallStatus mobileCallStatusHold = RMobileCall::EStatusRinging;
- RMobilePhone::TMobileService mobileService = RMobilePhone::ECircuitDataService;
-
- //-------------------------------------------------------------------------
- errorCode = CreateIncomingCallL(line1, callId1, incomingCallName1,
- mobileService, mobileCallStatusHold);
- ASSERT_EQUALS(KErrNone, errorCode);
- AssertMockLtsyStatusL();
-
- errorCode = call1.OpenExistingCall(line1, incomingCallName1);
- ASSERT_EQUALS(KErrNone, errorCode);
- AssertMockLtsyStatusL();
- //-------------------------------------------------------------------------
-
- //-------------------------------------------------------------------------
- // create new incoming call2 for phone2
- errorCode = CreateIncomingCallL(line2, callId2, incomingCallName2,
- mobileService, mobileCallStatusHold);
- ASSERT_EQUALS(KErrNone, errorCode);
- AssertMockLtsyStatusL();
-
- errorCode = call2.OpenExistingCall(line2, incomingCallName2);
- ASSERT_EQUALS(KErrNone, errorCode);
- AssertMockLtsyStatusL();
- //-------------------------------------------------------------------------
-
- //-------------------------------------------------------------------------
- // Test A: Test multiple clients requesting RMobileCall::Transfer
- //-------------------------------------------------------------------------
-
- mobileCallStatusHold = RMobileCall::EStatusHold;
-
- //-------------------------------------------------------------------------
- // create new incoming call1 for iPhone
- errorCode = CreateIncomingCallL(line1, callId3, incomingCallName3,
- mobileService, mobileCallStatusHold);
- ASSERT_EQUALS(KErrNone, errorCode);
- AssertMockLtsyStatusL();
-
- errorCode = call3.OpenExistingCall(line1, incomingCallName3);
- ASSERT_EQUALS(KErrNone, errorCode);
- AssertMockLtsyStatusL();
- //-------------------------------------------------------------------------
-
- //-------------------------------------------------------------------------
- errorCode = CreateIncomingCallL(line2, callId4, incomingCallName4,
- mobileService, mobileCallStatusHold);
- ASSERT_EQUALS(KErrNone, errorCode);
- AssertMockLtsyStatusL();
-
- errorCode = call4.OpenExistingCall(line2, incomingCallName4);
- ASSERT_EQUALS(KErrNone, errorCode);
- AssertMockLtsyStatusL();
- //-------------------------------------------------------------------------
-
- call3.Transfer(requestStatus1);
- call4.Transfer(requestStatus2);
-
- User::WaitForRequest(requestStatus1);
- AssertMockLtsyStatusL();
- ASSERT_EQUALS(KErrNotReady, requestStatus1.Int());
-
- User::WaitForRequest(requestStatus2);
- AssertMockLtsyStatusL();
- ASSERT_EQUALS(KErrNotReady, requestStatus2.Int());
-
- // Done !
- CleanupStack::PopAndDestroy(6); // line1, line2, call1, call2, call3, call4
- CleanupStack::PopAndDestroy(4, this); // phone2, telServer2, expectData, this
- }
-
-/**
-@SYMTestCaseID BA-CTSY-CCON-CT-00011
-@SYMComponent telephony_ctsy
-@SYMTestCaseDesc Test support in CTSY for RMobileCall::Transfer for fax calls
-@SYMTestPriority High
-@SYMTestActions Invokes RMobileCall::Transfer for fax calls
-@SYMTestExpectedResults Pass
-@SYMTestType CT
-*/
-void CCTsyCallControlFU::TestTransfer00011L()
- {
-
- OpenEtelServerL(EUseExtendedError);
- CleanupStack::PushL(TCleanupItem(Cleanup,this));
- OpenPhoneL();
-
- RBuf8 expectData;
- CleanupClosePushL(expectData);
-
- RBuf8 completeData;
- CleanupClosePushL(completeData);
-
- RLine line;
- RMobileCall call;
- CleanupClosePushL(call);
- RMobileCall ringingCall;
- CleanupClosePushL(ringingCall);
-
- TInt errorCode = KErrNone;
- TInt callId = 1;
- TName incomingCallName;
- TRequestStatus requestStatus;
- TRequestStatus requestNotify;
-
- // open new line and call for KMmTsyFaxLineName
- errorCode = OpenNewLineLC(iPhone, line, KMmTsyFaxLineName);
- ASSERT_EQUALS(KErrNone, errorCode);
-
- RMobileCall::TMobileCallStatus mobileCallStatus = RMobileCall::EStatusRinging;
- RMobilePhone::TMobileService mobileService = RMobilePhone::EFaxService;
-
- //-------------------------------------------------------------------------
- // create new incoming call
- errorCode = CreateIncomingCallL(line, callId, incomingCallName,
- mobileService, mobileCallStatus);
- ASSERT_EQUALS(KErrNone, errorCode);
-
- errorCode = ringingCall.OpenExistingCall(line, incomingCallName);
- ASSERT_EQUALS(KErrNone, errorCode);
- //-------------------------------------------------------------------------
-
- //-------------------------------------------------------------------------
- // TEST A: failure to dispatch request to LTSY
- //-------------------------------------------------------------------------
-
- mobileCallStatus = RMobileCall::EStatusHold;
- callId = 2;
-
- /*
- * Can't create incoming call with call status equal RMobileCall::EStatusHold.
- * Destructor of CMmCallTsy is called for inclomming call (callId = 1)
- * with call status equal RMobileCall::EStatusRinging by call of RCall::Close().
- */
-
-// ERR_PRINTF2(_L("<font color=Orange>$CTSYKnownFailure: defect id = %d</font>"), 100804);
-
- //ASSERT_TRUE(false);
-
- //-------------------------------------------------------------------------
- // create new incoming call
- errorCode = CreateIncomingCallL(line, callId, incomingCallName,
- mobileService, mobileCallStatus);
- ASSERT_EQUALS(KErrNone, errorCode);
-
- errorCode = call.OpenExistingCall(line, incomingCallName);
- ASSERT_EQUALS(KErrNone, errorCode);
- //-------------------------------------------------------------------------
-
- call.Transfer(requestStatus);
-
- User::WaitForRequest(requestStatus);
- AssertMockLtsyStatusL();
- ASSERT_EQUALS(KErrNotSupported, requestStatus.Int());
-
- AssertMockLtsyStatusL();
- CleanupStack::PopAndDestroy(6, this); // expectData, completeData, call, line, ringingCall
- }
-
-
-/**
-@SYMTestCaseID BA-CTSY-CCON-MTAC-0001
-@SYMComponent telephony_ctsy
-@SYMTestCaseDesc Test support in CTSY for RMobilePhone::TerminateAllCalls
-@SYMTestPriority High
-@SYMTestActions Invokes RMobilePhone::TerminateAllCalls
-@SYMTestExpectedResults Pass
-@SYMTestType CT
-*/
-void CCTsyCallControlFU::TestTerminateAllCalls0001L()
- {
- OpenEtelServerL(EUseExtendedError);
- CleanupStack::PushL(TCleanupItem(Cleanup,this));
- OpenPhoneL();
-
- RBuf8 expectData;
- CleanupClosePushL(expectData); // PUSH
-
- TRequestStatus requestStatus;
-
- //-----------------------------------------------------------------------
- // TEST 0: with no active calls
- //----------------------------------------------------------------------
-
- iPhone.TerminateAllCalls(requestStatus);
- User::WaitForRequest(requestStatus);
- ASSERT_EQUALS(KErrNone, requestStatus.Int());
- AssertMockLtsyStatusL();
-
- //-------------------------------------------------------------------------
- // TEST A: failure to dispatch request to LTSY
- //-------------------------------------------------------------------------
-
- // open new line and call for KMmTsyVoice1LineName
- RLine line;
- RCall call;
- TInt errorCode = OpenNewLineLC(iPhone, line, KMmTsyVoice1LineName); // PUSH
- ASSERT_EQUALS(KErrNone, errorCode);
-
- // create new incoming call
- TName incomingCallName;
- TInt callId = 1;
- errorCode = CreateIncomingCallL(line, callId, incomingCallName,
- RMobilePhone::EVoiceService, RMobileCall::EStatusConnecting);
-
- ASSERT_EQUALS(KErrNone, errorCode);
-
- CleanupClosePushL(call); // PUSH
- errorCode = call.OpenExistingCall(line, incomingCallName);
- ASSERT_EQUALS(KErrNone, errorCode);
- //-------------------------------------------------------------------------
-
- TMockLtsyData1<TInt> mockData(callId);
- mockData.SerialiseL(expectData);
- iMockLTSY.ExpectL(ECtsyPhoneTerminateAllCallsReq, expectData, KErrNotSupported);
- iPhone.TerminateAllCalls(requestStatus);
-
- User::WaitForRequest(requestStatus);
- ASSERT_EQUALS(KErrNotSupported, requestStatus.Int());
- AssertMockLtsyStatusL();
-
-
-
- //-------------------------------------------------------------------------
- // TEST B: failure on completion of pending request from LTSY->CTSY
- //-------------------------------------------------------------------------
- iMockLTSY.ExpectL(ECtsyPhoneTerminateAllCallsReq, expectData);
- iMockLTSY.CompleteL(ECtsyPhoneTerminateAllCallsComp, KErrGeneral);
-
- iPhone.TerminateAllCalls(requestStatus);
-
- User::WaitForRequest(requestStatus);
- ASSERT_EQUALS(KErrGeneral, requestStatus.Int());
- AssertMockLtsyStatusL();
-
- //-------------------------------------------------------------------------
- // TEST C: Successful completion request of
- // RMobilePhone::TerminateAllCalls.
- //-------------------------------------------------------------------------
-
- iMockLTSY.ExpectL(ECtsyPhoneTerminateAllCallsReq, expectData);
- iMockLTSY.CompleteL(ECtsyPhoneTerminateAllCallsComp, KErrNone);
-
- iPhone.TerminateAllCalls(requestStatus);
- User::WaitForRequest(requestStatus);
- ASSERT_EQUALS(KErrNone, requestStatus.Int());
- AssertMockLtsyStatusL();
-
- //-------------------------------------------------------------------------
- // TEST E: Unsolicited completion of RMobilePhone::TerminateAllCalls
- // from LTSY.
- //-------------------------------------------------------------------------
-
- TRequestStatus mockLtsyStatus;
- iMockLTSY.NotifyTerminated(mockLtsyStatus);
- iMockLTSY.CompleteL(ECtsyPhoneTerminateAllCallsComp, KErrNone);
- User::WaitForRequest(mockLtsyStatus);
- ASSERT_EQUALS(KErrNone, mockLtsyStatus.Int());
- AssertMockLtsyStatusL();
-
- CleanupStack::PopAndDestroy(4, this); // call, line, expectData, this
- }
-
-/**
-@SYMTestCaseID BA-CTSY-CCON-MTAC-0002
-@SYMComponent telephony_ctsy
-@SYMTestCaseDesc Test support in CTSY for cancelling RMobilePhone::TerminateAllCalls
-@SYMTestPriority High
-@SYMTestActions Invokes RMobilePhone::TerminateAllCalls and cancels it
-@SYMTestExpectedResults Pass
-@SYMTestType CT
-*/
-void CCTsyCallControlFU::TestTerminateAllCalls0002L()
- {
- OpenEtelServerL(EUseExtendedError);
- CleanupStack::PushL(TCleanupItem(Cleanup,this));
- OpenPhoneL();
-
- RBuf8 expectData;
- CleanupClosePushL(expectData); // PUSH
-
- //-------------------------------------------------------------------------
-
- // open new line and call for KMmTsyVoice1LineName
- RLine line;
- RCall call;
- TInt errorCode = OpenNewLineLC(iPhone, line, KMmTsyVoice1LineName); // PUSH
- ASSERT_EQUALS(KErrNone, errorCode);
-
- // create new incoming call
- TName incomingCallName;
- TInt callId = 1;
- errorCode = CreateIncomingCallL(line, callId, incomingCallName,
- RMobilePhone::EVoiceService, RMobileCall::EStatusConnecting);
-
- ASSERT_EQUALS(KErrNone, errorCode);
-
- CleanupClosePushL(call); // PUSH
- errorCode = call.OpenExistingCall(line, incomingCallName);
- ASSERT_EQUALS(KErrNone, errorCode);
- //-------------------------------------------------------------------------
-
- //-------------------------------------------------------------------------
- // Test A: cancelling of RMobilePhone::TerminateAllCalls
- //-------------------------------------------------------------------------
-
- TMockLtsyData1<TInt> mockData(callId);
- mockData.SerialiseL(expectData);
-
- TRequestStatus mockLtsyStatus;
- iMockLTSY.NotifyTerminated(mockLtsyStatus);
-
- // Expect call down to LTSY for this IPC
- iMockLTSY.ExpectL(ECtsyPhoneTerminateAllCallsReq, expectData);
-
- // Queue response to be delayed to give time for cancel to come through
- iMockLTSY.CompleteL(ECtsyPhoneTerminateAllCallsComp, KErrNone, 10);
-
- TRequestStatus requestStatus;
- iPhone.TerminateAllCalls(requestStatus);
- iPhone.CancelAsyncRequest(EMobilePhoneTerminateAllCalls);
- User::WaitForRequest(requestStatus);
- ASSERT_EQUALS(KErrNone, requestStatus.Int());
- AssertMockLtsyStatusL();
-
- User::WaitForRequest(mockLtsyStatus);
- AssertMockLtsyStatusL();
-
- CleanupStack::PopAndDestroy(4, this); // call, line, expectData, this
- }
-
-/**
-@SYMTestCaseID BA-CTSY-CCON-MTAC-0004
-@SYMComponent telephony_ctsy
-@SYMTestCaseDesc Test support in CTSY for multiple client requests of RMobilePhone::TerminateAllCalls
-@SYMTestPriority High
-@SYMTestActions Invokes RMobilePhone::TerminateAllCalls on multiple clients
-@SYMTestExpectedResults Pass
-@SYMTestType CT
-*/
-void CCTsyCallControlFU::TestTerminateAllCalls0004L()
- {
-
- 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(iTelServer,KMmTsyPhoneName);
- ASSERT_EQUALS(KErrNone, ret);
- CleanupClosePushL(phone2);
-
- //
- // set up line and call for first client
-
- RLine line;
- RCall call;
- TInt errorCode = OpenNewLineLC(iPhone, line, KMmTsyVoice1LineName); // PUSH
- ASSERT_EQUALS(KErrNone, errorCode);
-
- // create new incoming call
- TName incomingCallName;
- TInt callId = 1;
- errorCode = CreateIncomingCallL(line, callId, incomingCallName,
- RMobilePhone::EVoiceService, RMobileCall::EStatusConnecting);
-
- ASSERT_EQUALS(KErrNone, errorCode);
-
- CleanupClosePushL(call); // PUSH
- errorCode = call.OpenExistingCall(line, incomingCallName);
- ASSERT_EQUALS(KErrNone, errorCode);
-
- //
- // set up call for second client
-
- RLine line2;
- RCall call2;
- errorCode = OpenNewLineLC(phone2, line2, KMmTsyVoice1LineName); // PUSH
- ASSERT_EQUALS(KErrNone, errorCode);
-
- // create new incoming call
- TName incomingCallName2;
- TInt callId2 = 2;
- errorCode = CreateIncomingCallL(line2, callId2, incomingCallName2,
- RMobilePhone::EVoiceService, RMobileCall::EStatusConnecting);
-
- ASSERT_EQUALS(KErrNone, errorCode);
-
- CleanupClosePushL(call2); // PUSH
- errorCode = call2.OpenExistingCall(line2, incomingCallName2);
- ASSERT_EQUALS(KErrNone, errorCode);
-
- // let's start testing...
-
- RBuf8 expectData;
- CleanupClosePushL(expectData); // PUSH
- TMockLtsyData1<TInt> mockData(callId);
- mockData.SerialiseL(expectData);
-
- //RBuf8 expectData2;
- //CleanupClosePushL(expectData2); // PUSH
- //TMockLtsyData1<TInt> mockData2(callId2);
- //mockData2.SerialiseL(expectData2);
-
- iMockLTSY.ExpectL(ECtsyPhoneTerminateAllCallsReq, expectData);
- iMockLTSY.CompleteL(ECtsyPhoneTerminateAllCallsComp, KErrNone, 20);
- TRequestStatus requestStatus;
- TRequestStatus requestStatus2;
- iPhone.TerminateAllCalls(requestStatus);
- phone2.TerminateAllCalls(requestStatus2);
-
- User::WaitForRequest(requestStatus);
- ASSERT_EQUALS(KErrNone, requestStatus.Int());
-
- User::WaitForRequest(requestStatus2);
- ASSERT_EQUALS(KErrServerBusy, requestStatus2.Int());
-
- AssertMockLtsyStatusL();
-
- CleanupStack::PopAndDestroy(8, this); // expectData,
- // call2, line2, call, line,
- // phone2, telServer2, this
- }
-
-/**
-@SYMTestCaseID BA-CTSY-CCON-MTAC-0005
-@SYMComponent telephony_ctsy
-@SYMTestCaseDesc Test support in CTSY for RMobilePhone::TerminateAllCalls with timeout.
-@SYMTestPriority High
-@SYMTestActions Invokes RMobilePhone::TerminateAllCalls and tests for timeout.
-@SYMTestExpectedResults Pass
-@SYMTestType CT
-*/
-void CCTsyCallControlFU::TestTerminateAllCalls0005L()
- {
- OpenEtelServerL(EUseExtendedError);
- CleanupStack::PushL(TCleanupItem(Cleanup,this));
- OpenPhoneL();
-
- RBuf8 expectData;
- CleanupClosePushL(expectData); // PUSH
-
-
- // open new line and call for KMmTsyVoice1LineName
- RLine line;
- RCall call;
- TInt errorCode = OpenNewLineLC(iPhone, line, KMmTsyVoice1LineName); // PUSH
- ASSERT_EQUALS(KErrNone, errorCode);
-
-
- // create new incoming call
- TName incomingCallName;
- TInt callId = 1;
- errorCode = CreateIncomingCallL(line, callId, incomingCallName,
- RMobilePhone::EVoiceService, RMobileCall::EStatusConnecting);
-
- ASSERT_EQUALS(KErrNone, errorCode);
-
- CleanupClosePushL(call); // PUSH
- errorCode = call.OpenExistingCall(line, incomingCallName);
- ASSERT_EQUALS(KErrNone, errorCode);
- //-------------------------------------------------------------------------
-
- TMockLtsyData1<TInt> mockData(callId);
- mockData.SerialiseL(expectData);
- //-------------------------------------------------------------------------
- // Test A: Test timeout of RMobilePhone::TerminateAllCalls
- //-------------------------------------------------------------------------
-
- TRequestStatus requestStatus;
- iMockLTSY.ExpectL(ECtsyPhoneTerminateAllCallsReq, expectData);
- iPhone.TerminateAllCalls(requestStatus);
- User::WaitForRequest(requestStatus);
- AssertMockLtsyStatusL();
- ASSERT_EQUALS(KErrTimedOut, requestStatus.Int());
-
- CleanupStack::PopAndDestroy(4, this); // call, line, expectData, this
- }
-
-/**
-@SYMTestCaseID BA-CTSY-CCON-MTACTC-0001
-@SYMComponent telephony_ctsy
-@SYMTestCaseDesc Test support in CTSY for RMobilePhone::TerminateActiveCalls When the call status is EStatusHold
-@SYMTestPriority High
-@SYMTestActions Invokes RMobilePhone::TerminateActiveCalls
-@SYMTestExpectedResults Pass
-@SYMTestType CT
-*/
-void CCTsyCallControlFU::TestTerminateActiveCalls0001L()
- {
- OpenEtelServerL(EUseExtendedError);
- CleanupStack::PushL(TCleanupItem(Cleanup,this));
- OpenPhoneL();
-
- RBuf8 expectData;
- CleanupClosePushL(expectData); // PUSH
-
- TRequestStatus requestStatus;
-
- //-----------------------------------------------------------------------
- // TEST 0: with no active calls
- //----------------------------------------------------------------------
- iMockLTSY.ExpectL(ECtsyPhoneTerminateActiveCallsReq,KErrNone);
- iMockLTSY.CompleteL(ECtsyPhoneTerminateActiveCallsComp, KErrNone);
- iPhone.TerminateActiveCalls(requestStatus);
- User::WaitForRequest(requestStatus);
- ASSERT_EQUALS(KErrNone, requestStatus.Int());
- AssertMockLtsyStatusL();
-
- //-------------------------------------------------------------------------
- // TEST A: failure to dispatch request to LTSY
- //-------------------------------------------------------------------------
-
- // open new line and call for KMmTsyVoice1LineName
- RLine line;
- RCall call;
- TInt errorCode = OpenNewLineLC(iPhone, line, KMmTsyVoice1LineName); // PUSH
- ASSERT_EQUALS(KErrNone, errorCode);
-
- // create new incoming call
- TName incomingCallName;
- TInt callId = 1;
- errorCode = CreateIncomingCallL(line, callId, incomingCallName,
- RMobilePhone::EVoiceService, RMobileCall::EStatusHold);
-
- ASSERT_EQUALS(KErrNone, errorCode);
-
- CleanupClosePushL(call); // PUSH
- errorCode = call.OpenExistingCall(line, incomingCallName);
- ASSERT_EQUALS(KErrNone, errorCode);
- //-------------------------------------------------------------------------
-
- TMockLtsyData1<TInt> mockData(callId);
- mockData.SerialiseL(expectData);
- iMockLTSY.ExpectL(ECtsyPhoneTerminateActiveCallsReq, expectData, KErrNotSupported);
- iPhone.TerminateActiveCalls(requestStatus);
-
- User::WaitForRequest(requestStatus);
- ASSERT_EQUALS(KErrNotSupported, requestStatus.Int());
- AssertMockLtsyStatusL();
-
-
-
- //-------------------------------------------------------------------------
- // TEST B: failure on completion of pending request from LTSY->CTSY
- //-------------------------------------------------------------------------
- iMockLTSY.ExpectL(ECtsyPhoneTerminateActiveCallsReq, expectData);
- iMockLTSY.CompleteL(ECtsyPhoneTerminateActiveCallsComp, KErrGeneral);
-
- iPhone.TerminateActiveCalls(requestStatus);
-
- User::WaitForRequest(requestStatus);
- ASSERT_EQUALS(KErrGeneral, requestStatus.Int());
- AssertMockLtsyStatusL();
-
- //-------------------------------------------------------------------------
- // TEST C: Successful completion request of
- // RMobilePhone::TerminateActiveCalls.
- //-------------------------------------------------------------------------
-
- iMockLTSY.ExpectL(ECtsyPhoneTerminateActiveCallsReq, expectData);
- iMockLTSY.CompleteL(ECtsyPhoneTerminateActiveCallsComp, KErrNone);
-
- iPhone.TerminateActiveCalls(requestStatus);
- User::WaitForRequest(requestStatus);
- ASSERT_EQUALS(KErrNone, requestStatus.Int());
- AssertMockLtsyStatusL();
-
- //-------------------------------------------------------------------------
- // TEST E: Unsolicited completion of RMobilePhone::TerminateActiveCalls
- // from LTSY.
- //-------------------------------------------------------------------------
-
- TRequestStatus mockLtsyStatus;
- iMockLTSY.NotifyTerminated(mockLtsyStatus);
- iMockLTSY.CompleteL(ECtsyPhoneTerminateActiveCallsComp, KErrNone);
- User::WaitForRequest(mockLtsyStatus);
- ASSERT_EQUALS(KErrNone, mockLtsyStatus.Int());
- AssertMockLtsyStatusL();
-
- CleanupStack::PopAndDestroy(4, this); // call, line, expectData, this
- }
-
-
-/**
-@SYMTestCaseID BA-CTSY-CCON-MTACTC-000B1
-@SYMComponent telephony_ctsy
-@SYMTestCaseDesc Test support in CTSY for RMobilePhone::TerminateActiveCalls When the call status is EStatusRinging
-@SYMTestPriority High
-@SYMTestActions Invokes RMobilePhone::TerminateActiveCalls
-@SYMTestExpectedResults Pass
-@SYMTestType CT
-*/
-void CCTsyCallControlFU::TestTerminateActiveCalls0001bL()
- {
- OpenEtelServerL(EUseExtendedError);
- CleanupStack::PushL(TCleanupItem(Cleanup,this));
- OpenPhoneL();
-
- RBuf8 expectData;
- CleanupClosePushL(expectData); // PUSH
-
- TRequestStatus requestStatus;
- // open new line and call for KMmTsyVoice1LineName
- RLine line;
- RCall call;
- TInt errorCode = OpenNewLineLC(iPhone, line, KMmTsyVoice1LineName); // PUSH
- ASSERT_EQUALS(KErrNone, errorCode);
-
- // create new incoming call
- TName incomingCallName;
- TInt callId = 1;
- errorCode = CreateIncomingCallL(line, callId, incomingCallName,
- RMobilePhone::EVoiceService, RMobileCall::EStatusRinging);
-
- ASSERT_EQUALS(KErrNone, errorCode);
- CleanupClosePushL(call); // PUSH
- errorCode = call.OpenExistingCall(line, incomingCallName);
- ASSERT_EQUALS(KErrNone, errorCode);
- iMockLTSY.ExpectL(ECtsyPhoneTerminateActiveCallsReq,KErrNone);
- iMockLTSY.CompleteL(ECtsyPhoneTerminateActiveCallsComp, KErrNone);
- iPhone.TerminateActiveCalls(requestStatus);
- User::WaitForRequest(requestStatus);
- ASSERT_EQUALS(KErrNone, requestStatus.Int());
- AssertMockLtsyStatusL();
-
- CleanupStack::PopAndDestroy(4, this); // call, line, expectData, this
- }
-
-/**
-@SYMTestCaseID BA-CTSY-CCON-MTACTC-000C1
-@SYMComponent telephony_ctsy
-@SYMTestCaseDesc Test support in CTSY for RMobilePhone::TerminateActiveCalls When the call status is EStatusConnecting
-@SYMTestPriority High
-@SYMTestActions Invokes RMobilePhone::TerminateActiveCalls
-@SYMTestExpectedResults Pass
-@SYMTestType CT
-*/
-void CCTsyCallControlFU::TestTerminateActiveCalls0001cL()
- {
- OpenEtelServerL(EUseExtendedError);
- CleanupStack::PushL(TCleanupItem(Cleanup,this));
- OpenPhoneL();
-
- RBuf8 expectData;
- CleanupClosePushL(expectData); // PUSH
-
- TRequestStatus requestStatus;
- // open new line and call for KMmTsyVoice1LineName
- RLine line;
- TInt errorCode = OpenNewLineLC(iPhone, line, KMmTsyVoice1LineName); // PUSH
- ASSERT_EQUALS(KErrNone, errorCode);
-
- // create new incoming call
- TName incomingCallName;
- TInt callId = 1;
- errorCode = CreateIncomingCallL(line, callId, incomingCallName,
- RMobilePhone::EVoiceService, RMobileCall::EStatusConnecting);
-
- ASSERT_EQUALS(KErrNone, errorCode);
- RCall call;
- CleanupClosePushL(call); // PUSH
- errorCode = call.OpenExistingCall(line, incomingCallName);
- ASSERT_EQUALS(KErrNone, errorCode);
- iMockLTSY.ExpectL(ECtsyPhoneTerminateActiveCallsReq,KErrNone);
- iMockLTSY.CompleteL(ECtsyPhoneTerminateActiveCallsComp, KErrNone);
- iPhone.TerminateActiveCalls(requestStatus);
- User::WaitForRequest(requestStatus);
- ASSERT_EQUALS(KErrNone, requestStatus.Int());
- AssertMockLtsyStatusL();
-
- CleanupStack::PopAndDestroy(4, this); // call, line, expectData, this
- }
-
-
-
-/**
-@SYMTestCaseID BA-CTSY-CCON-MTACTC-0002
-@SYMComponent telephony_ctsy
-@SYMTestCaseDesc Test support in CTSY for cancelling RMobilePhone::TerminateActiveCalls
-@SYMTestPriority High
-@SYMTestActions Invokes RMobilePhone::TerminateActiveCalls and cancels it
-@SYMTestExpectedResults Pass
-@SYMTestType CT
-*/
-void CCTsyCallControlFU::TestTerminateActiveCalls0002L()
- {
- OpenEtelServerL(EUseExtendedError);
- CleanupStack::PushL(TCleanupItem(Cleanup,this));
- OpenPhoneL();
-
- RBuf8 expectData;
- CleanupClosePushL(expectData); // PUSH
-
- //-------------------------------------------------------------------------
-
- // open new line and call for KMmTsyVoice1LineName
- RLine line;
- RCall call;
- TInt errorCode = OpenNewLineLC(iPhone, line, KMmTsyVoice1LineName); // PUSH
- ASSERT_EQUALS(KErrNone, errorCode);
-
- // create new incoming call
- TName incomingCallName;
- TInt callId = 1;
- errorCode = CreateIncomingCallL(line, callId, incomingCallName,
- RMobilePhone::EVoiceService, RMobileCall::EStatusHold);
-
- ASSERT_EQUALS(KErrNone, errorCode);
-
- CleanupClosePushL(call); // PUSH
- errorCode = call.OpenExistingCall(line, incomingCallName);
- ASSERT_EQUALS(KErrNone, errorCode);
- //-------------------------------------------------------------------------
-
- //-------------------------------------------------------------------------
- // Test A: cancelling of RMobilePhone::TerminateActiveCalls
- //-------------------------------------------------------------------------
-
- TMockLtsyData1<TInt> mockData(callId);
- mockData.SerialiseL(expectData);
-
- TRequestStatus mockLtsyStatus;
- iMockLTSY.NotifyTerminated(mockLtsyStatus);
-
- // Expect call down to LTSY for this IPC
- iMockLTSY.ExpectL(ECtsyPhoneTerminateActiveCallsReq, expectData);
-
- // Queue response to be delayed to give time for cancel to come through
- // There is no interface for cancelling the simple TerminateActiveCalls request once passed to LTSY,
- // however this test will still emulate the completion of the request which will finally return from LTSY regardless.
-
- iMockLTSY.CompleteL(ECtsyPhoneTerminateActiveCallsComp, KErrNone, 10);
-
- TRequestStatus requestStatus;
- iPhone.TerminateActiveCalls(requestStatus);
- iPhone.CancelAsyncRequest(EMobilePhoneTerminateActiveCalls);
- User::WaitForRequest(requestStatus);
- INFO_PRINTF2(_L("requestStatus.Int() %d"),(requestStatus.Int()));
- ASSERT_EQUALS(KErrNone, requestStatus.Int());
-
- AssertMockLtsyStatusL();
-
- User::WaitForRequest(mockLtsyStatus);
- INFO_PRINTF2(_L("mockLtsyStatus.Int() %d"),(mockLtsyStatus.Int()));
-
- AssertMockLtsyStatusL();
-
- CleanupStack::PopAndDestroy(4, this); // call, line, expectData, this
- }
-
-/**
-@SYMTestCaseID BA-CTSY-CCON-MTACTC-0004
-@SYMComponent telephony_ctsy
-@SYMTestCaseDesc Test support in CTSY for multiple client requests of RMobilePhone::TerminateActiveCalls
-@SYMTestPriority High
-@SYMTestActions Invokes RMobilePhone::TerminateActiveCalls on multiple clients
-@SYMTestExpectedResults Pass
-@SYMTestType CT
-*/
-void CCTsyCallControlFU::TestTerminateActiveCalls0004L()
- {
-
- 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(iTelServer,KMmTsyPhoneName);
- ASSERT_EQUALS(KErrNone, ret);
- CleanupClosePushL(phone2);
-
- //
- // set up line and call for first client
-
- RLine line;
- RCall call;
- TInt errorCode = OpenNewLineLC(iPhone, line, KMmTsyVoice1LineName); // PUSH
- ASSERT_EQUALS(KErrNone, errorCode);
-
- // create new incoming call
- TName incomingCallName;
- TInt callId = 1;
- errorCode = CreateIncomingCallL(line, callId, incomingCallName,
- RMobilePhone::EVoiceService, RMobileCall::EStatusHold);
-
- ASSERT_EQUALS(KErrNone, errorCode);
-
- CleanupClosePushL(call); // PUSH
- errorCode = call.OpenExistingCall(line, incomingCallName);
- ASSERT_EQUALS(KErrNone, errorCode);
-
- //
- // set up call for second client
-
- RLine line2;
- RCall call2;
- errorCode = OpenNewLineLC(phone2, line2, KMmTsyVoice1LineName); // PUSH
- ASSERT_EQUALS(KErrNone, errorCode);
-
- // create new incoming call
- TName incomingCallName2;
- TInt callId2 = 2;
- errorCode = CreateIncomingCallL(line2, callId2, incomingCallName2,
- RMobilePhone::EVoiceService, RMobileCall::EStatusHold);
-
- ASSERT_EQUALS(KErrNone, errorCode);
-
- CleanupClosePushL(call2); // PUSH
- errorCode = call2.OpenExistingCall(line2, incomingCallName2);
- ASSERT_EQUALS(KErrNone, errorCode);
-
- // let's start testing...
-
- RBuf8 expectData;
- CleanupClosePushL(expectData); // PUSH
- TMockLtsyData1<TInt> mockData(callId);
- mockData.SerialiseL(expectData);
-
- iMockLTSY.ExpectL(ECtsyPhoneTerminateActiveCallsReq, expectData);
- iMockLTSY.CompleteL(ECtsyPhoneTerminateActiveCallsComp, KErrNone, 20);
- TRequestStatus requestStatus;
- TRequestStatus requestStatus2;
- iPhone.TerminateActiveCalls(requestStatus);
- phone2.TerminateActiveCalls(requestStatus2);
-
- User::WaitForRequest(requestStatus);
- ASSERT_EQUALS(KErrNone, requestStatus.Int());
-
- User::WaitForRequest(requestStatus2);
- ASSERT_EQUALS(KErrServerBusy, requestStatus2.Int());
-
- AssertMockLtsyStatusL();
-
- CleanupStack::PopAndDestroy(8, this); // expectData,
- // call2, line2, call, line,
- // phone2, telServer2, this
- }
-
-/**
-@SYMTestCaseID BA-CTSY-CCON-MTACTC-0005
-@SYMComponent telephony_ctsy
-@SYMTestCaseDesc Test support in CTSY for RMobilePhone::TerminateActiveCalls with timeout.
-@SYMTestPriority High
-@SYMTestActions Invokes RMobilePhone::TerminateActiveCalls and tests for timeout.
-@SYMTestExpectedResults Pass
-@SYMTestType CT
-*/
-void CCTsyCallControlFU::TestTerminateActiveCalls0005L()
- {
- OpenEtelServerL(EUseExtendedError);
- CleanupStack::PushL(TCleanupItem(Cleanup,this));
- OpenPhoneL();
-
- RBuf8 expectData;
- CleanupClosePushL(expectData); // PUSH
-
-
- // open new line and call for KMmTsyVoice1LineName
- RLine line;
- RCall call;
- TInt errorCode = OpenNewLineLC(iPhone, line, KMmTsyVoice1LineName); // PUSH
- ASSERT_EQUALS(KErrNone, errorCode);
-
-
- // create new incoming call
- TName incomingCallName;
- TInt callId = 1;
- errorCode = CreateIncomingCallL(line, callId, incomingCallName,
- RMobilePhone::EVoiceService, RMobileCall::EStatusHold);
-
- ASSERT_EQUALS(KErrNone, errorCode);
-
- CleanupClosePushL(call); // PUSH
- errorCode = call.OpenExistingCall(line, incomingCallName);
- ASSERT_EQUALS(KErrNone, errorCode);
- //-------------------------------------------------------------------------
-
- TMockLtsyData1<TInt> mockData(callId);
- mockData.SerialiseL(expectData);
- //-------------------------------------------------------------------------
- // Test A: Test timeout of RMobilePhone::TerminateActiveCalls
- //-------------------------------------------------------------------------
-
- TRequestStatus requestStatus;
- iMockLTSY.ExpectL(ECtsyPhoneTerminateActiveCallsReq, expectData);
- iPhone.TerminateActiveCalls(requestStatus);
- User::WaitForRequest(requestStatus);
- AssertMockLtsyStatusL();
- ASSERT_EQUALS(KErrTimedOut, requestStatus.Int());
-
- CleanupStack::PopAndDestroy(4, this); // call, line, expectData, this
- }
-
-/**
-@SYMTestCaseID BA-CTSY-CCON-MSICT-0001
-@SYMComponent telephony_ctsy
-@SYMTestCaseDesc Test support in CTSY for RMobilePhone::SetIncomingCallType
-@SYMTestPriority High
-@SYMTestActions Invokes RMobilePhone::SetIncomingCallType
-@SYMTestExpectedResults Pass
-@SYMTestType CT
-*/
-void CCTsyCallControlFU::TestSetIncomingCallType0001L()
- {
-
- OpenEtelServerL(EUseExtendedError);
- CleanupStack::PushL(TCleanupItem(Cleanup,this));
- OpenPhoneL();
-
- TRequestStatus requestStatus;
-
- RMobilePhone::TMobilePhoneIncomingCallType callType = RMobilePhone::EIncomingTypeNotSpecified;
-
- RMobileCall::TMobileDataCallParamsV1 dataCallParamsV1;
- TPckg<RMobileCall::TMobileDataCallParamsV1> dataCallParamsV1Pckg(dataCallParamsV1);
-
- //-------------------------------------------------------------------------
- // Test API is not supported
- //-------------------------------------------------------------------------
-
- iPhone.SetIncomingCallType(requestStatus, callType, dataCallParamsV1Pckg);
-
- User::WaitForRequest(requestStatus);
- AssertMockLtsyStatusL();
- ASSERT_EQUALS(KErrNotSupported, requestStatus.Int());
-
- AssertMockLtsyStatusL();
- CleanupStack::PopAndDestroy(1, this); // this
-
- }
-
-
-/**
-@SYMTestCaseID BA-CTSY-CCON-CAICI-0001
-@SYMComponent telephony_ctsy
-@SYMTestCaseDesc Test support in CTSY for RMobileCall::AnswerIncomingCallISV for voice calls
-@SYMTestPriority High
-@SYMTestActions Invokes RMobileCall::AnswerIncomingCallISV for voice calls
-@SYMTestExpectedResults Pass
-@SYMTestType CT
-*/
-void CCTsyCallControlFU::TestAnswerIncomingCallISV0001L()
- {
-
- OpenEtelServerL(EUseExtendedError);
- CleanupStack::PushL(TCleanupItem(Cleanup,this));
- OpenPhoneL();
-
- RBuf8 expectData;
- CleanupClosePushL(expectData);
-
- RBuf8 completeData;
- CleanupClosePushL(completeData);
-
- RLine line;
- RMobileCall call;
- CleanupClosePushL(call);
-
- TInt errorCode = KErrNone;
- TInt callId = 1;
- TName incomingCallName;
- TRequestStatus requestStatus;
- TRequestStatus requestNotify;
-
- // open new line and call for KMmTsyVoice1LineName
- errorCode = OpenNewLineLC(iPhone, line, KMmTsyVoice1LineName);
- ASSERT_EQUALS(KErrNone, errorCode);
-
- RMobileCall::TMobileCallStatus mobileCallStatus = RMobileCall::EStatusRinging;
- RMobilePhone::TMobileService mobileService = RMobilePhone::EVoiceService;
-
- TMockLtsyCallData0 mockData0(callId, mobileService);
-
- RMobileCall::TEtel3rdPartyMobileCallParamsV1 callParams;
- TPckg<RMobileCall::TEtel3rdPartyMobileCallParamsV1> callParamsPckg(callParams);
-
- //-------------------------------------------------------------------------
- // TEST A: failure to dispatch request to LTSY
- //-------------------------------------------------------------------------
-
- //-------------------------------------------------------------------------
- // create new incoming call
- errorCode = CreateIncomingCallL(line, callId, incomingCallName,
- mobileService, mobileCallStatus);
- ASSERT_EQUALS(KErrNone, errorCode);
- AssertMockLtsyStatusL();
-
- errorCode = call.OpenExistingCall(line, incomingCallName);
- ASSERT_EQUALS(KErrNone, errorCode);
- AssertMockLtsyStatusL();
- //-------------------------------------------------------------------------
-
- expectData.Close();
- mockData0.SerialiseL(expectData);
- iMockLTSY.ExpectL(EMobileCallAnswerISV, expectData, KErrNotSupported);
- call.AnswerIncomingCallISV(requestStatus, callParamsPckg);
-
- User::WaitForRequest(requestStatus);
- AssertMockLtsyStatusL();
- ASSERT_EQUALS(KErrNotSupported, requestStatus.Int());
-
- // close incoming call
- CloseIncomingCallL(call, callId, mobileService);
-
- //-------------------------------------------------------------------------
- // TEST B: failure on completion of pending request from LTSY->CTSY
- //-------------------------------------------------------------------------
-
- //-------------------------------------------------------------------------
- // create new incoming call
- errorCode = CreateIncomingCallL(line, callId, incomingCallName,
- mobileService, mobileCallStatus);
- ASSERT_EQUALS(KErrNone, errorCode);
- AssertMockLtsyStatusL();
-
- errorCode = call.OpenExistingCall(line, incomingCallName);
- ASSERT_EQUALS(KErrNone, errorCode);
- AssertMockLtsyStatusL();
- //-------------------------------------------------------------------------
-
- expectData.Close();
- mockData0.SerialiseL(expectData);
- iMockLTSY.ExpectL(EMobileCallAnswerISV, expectData);
- iMockLTSY.CompleteL(EMobileCallAnswerISV, KErrGeneral, expectData);
- call.AnswerIncomingCallISV(requestStatus, callParamsPckg);
-
- User::WaitForRequest(requestStatus);
- AssertMockLtsyStatusL();
- ASSERT_EQUALS(KErrGeneral, requestStatus.Int());
-
- // close incoming call
- CloseIncomingCallL(call, callId, mobileService);
-
- //-------------------------------------------------------------------------
- // TEST C: Successful completion request of
- // RMobileCall::AnswerIncomingCallISV when result is not cached.
- //-------------------------------------------------------------------------
-
- //-------------------------------------------------------------------------
- // create new incoming call
- errorCode = CreateIncomingCallL(line, callId, incomingCallName,
- mobileService, mobileCallStatus);
- ASSERT_EQUALS(KErrNone, errorCode);
- AssertMockLtsyStatusL();
-
- errorCode = call.OpenExistingCall(line, incomingCallName);
- ASSERT_EQUALS(KErrNone, errorCode);
- AssertMockLtsyStatusL();
- //-------------------------------------------------------------------------
-
- expectData.Close();
- mockData0.SerialiseL(expectData);
- iMockLTSY.ExpectL(EMobileCallAnswerISV, expectData);
- iMockLTSY.CompleteL(EMobileCallAnswerISV, KErrNone, expectData);
- call.AnswerIncomingCallISV(requestStatus, callParamsPckg);
-
- User::WaitForRequest(requestStatus);
- AssertMockLtsyStatusL();
- ASSERT_EQUALS(KErrNone, requestStatus.Int());
-
- // close incoming call
- CloseIncomingCallL(call, callId, mobileService);
-
- //-------------------------------------------------------------------------
- // TEST E: Unsolicited completion of RMobileCall::AnswerIncomingCallISV
- // from LTSY.
- //-------------------------------------------------------------------------
-
- TRequestStatus mockLtsyStatus;
-
- iMockLTSY.NotifyTerminated(mockLtsyStatus);
- expectData.Close();
- mockData0.SerialiseL(expectData);
- iMockLTSY.CompleteL(EMobileCallAnswerISV, KErrNone, expectData);
- User::WaitForRequest(mockLtsyStatus);
- AssertMockLtsyStatusL();
- ASSERT_EQUALS(KErrNone, mockLtsyStatus.Int());
-
- //-------------------------------------------------------------------------
- // TEST to increase coverage
- //-------------------------------------------------------------------------
-
- RMobileCall call2;
- CleanupClosePushL(call2);
- TRequestStatus requestStatus2;
-
- //-------------------------------------------------------------------------
- // create new incoming call
- errorCode = CreateIncomingCallL(line, callId, incomingCallName,
- mobileService, mobileCallStatus);
- ASSERT_EQUALS(KErrNone, errorCode);
- AssertMockLtsyStatusL();
-
- errorCode = call.OpenExistingCall(line, incomingCallName);
- ASSERT_EQUALS(KErrNone, errorCode);
- AssertMockLtsyStatusL();
- //-------------------------------------------------------------------------
-
- //-------------------------------------------------------------------------
- errorCode = call2.OpenExistingCall(line, incomingCallName);
- ASSERT_EQUALS(KErrNone, errorCode);
- AssertMockLtsyStatusL();
- //-------------------------------------------------------------------------
-
- expectData.Close();
- mockData0.SerialiseL(expectData);
- iMockLTSY.ExpectL(EMobileCallAnswerISV, expectData);
- iMockLTSY.CompleteL(EMobileCallAnswerISV, KErrNone, expectData);
- call.AnswerIncomingCallISV(requestStatus, callParamsPckg);
-
- call2.AnswerIncomingCallISV(requestStatus2, callParamsPckg);
-
- User::WaitForRequest(requestStatus);
- ASSERT_EQUALS(KErrNone, requestStatus.Int());
-
- User::WaitForRequest(requestStatus2);
- AssertMockLtsyStatusL();
- ASSERT_EQUALS(KErrServerBusy, requestStatus2.Int());
-
- call.Close();
- CloseIncomingCallL(call2, callId, mobileService);
-
- //-------------------------------------------------------------------------
- // TEST : to increase CMmVoiceCallTsy::AnswerIncomingCall coverage
- // covers "else if( activeCall &&
- // ( !( KETelExt3rdPartyV1 == activeCall->GetExtensionId() ) &&
- // ( KETelExt3rdPartyV1 == extensionId ) ) )" condition
- //-------------------------------------------------------------------------
-
- mobileCallStatus = RMobileCall::EStatusConnected;
-
- //-------------------------------------------------------------------------
- // create new incoming call1
- errorCode = CreateIncomingCallL(line, callId, incomingCallName,
- mobileService, mobileCallStatus);
- ASSERT_EQUALS(KErrNone, errorCode);
- AssertMockLtsyStatusL();
-
- errorCode = call.OpenExistingCall(line, incomingCallName);
- ASSERT_EQUALS(KErrNone, errorCode);
- AssertMockLtsyStatusL();
- //-------------------------------------------------------------------------
-
- call.AnswerIncomingCallISV(requestStatus, callParamsPckg);
-
- User::WaitForRequest(requestStatus);
- ASSERT_EQUALS(KErrNotSupported, requestStatus.Int());
-
- AssertMockLtsyStatusL();
- CleanupStack::PopAndDestroy(6, this); // expectData, completeData, call, line, call2
-
- }
-
-
-/**
-@SYMTestCaseID BA-CTSY-CCON-CAICI-0002
-@SYMComponent telephony_ctsy
-@SYMTestCaseDesc Test support in CTSY for cancelling of RMobileCall::AnswerIncomingCallISV for voice calls
-@SYMTestPriority High
-@SYMTestActions Invokes cancelling of RMobileCall::AnswerIncomingCallISV for voice calls
-@SYMTestExpectedResults Pass
-@SYMTestType CT
-*/
-void CCTsyCallControlFU::TestAnswerIncomingCallISV0002L()
- {
- OpenEtelServerL(EUseExtendedError);
- CleanupStack::PushL(TCleanupItem(Cleanup,this));
- OpenPhoneL();
-
- RBuf8 expectData;
- CleanupClosePushL(expectData);
-
- RBuf8 completeData;
- CleanupClosePushL(completeData);
-
- RLine line;
- RMobileCall call;
- CleanupClosePushL(call);
-
- TInt errorCode = KErrNone;
- TInt callId = 1;
- TName incomingCallName;
-
- TRequestStatus requestStatus;
- TRequestStatus mockLtsyStatus;
-
- RMobileCall::TMobileCallStatus mobileCallStatus = RMobileCall::EStatusRinging;
- RMobilePhone::TMobileService mobileService = RMobilePhone::EVoiceService;
-
- TMockLtsyCallData0 mockData0(callId, mobileService);
-
- RMobileCall::TEtel3rdPartyMobileCallParamsV1 callParams;
- TPckg<RMobileCall::TEtel3rdPartyMobileCallParamsV1> callParamsPckg(callParams);
-
- //-------------------------------------------------------------------------
- // Test cancelling of RCall::AnswerIncomingCallISV
- //-------------------------------------------------------------------------
-
- // open new line for KMmTsyVoice1LineName
- errorCode = OpenNewLineLC(iPhone, line, KMmTsyVoice1LineName);
- ASSERT_EQUALS(KErrNone, errorCode);
-
- //-------------------------------------------------------------------------
- // create new incoming call
- errorCode = CreateIncomingCallL(line, callId, incomingCallName,
- mobileService, mobileCallStatus);
- ASSERT_EQUALS(KErrNone, errorCode);
- AssertMockLtsyStatusL();
-
- errorCode = call.OpenExistingCall(line, incomingCallName);
- ASSERT_EQUALS(KErrNone, errorCode);
- AssertMockLtsyStatusL();
- //-------------------------------------------------------------------------
-
- iMockLTSY.NotifyTerminated(mockLtsyStatus);
-
- expectData.Close();
- mockData0.SerialiseL(expectData);
- iMockLTSY.ExpectL(EMobileCallAnswerISV, expectData);
-
- call.AnswerIncomingCallISV(requestStatus, callParamsPckg);
-
- TInt hangUpCause = KErrGsmBusyUserRequest;
- TBool autoStChangeDisable = ETrue;
- TMockLtsyCallData2<TInt, TBool> mockData2(callId, mobileService,
- hangUpCause,
- autoStChangeDisable);
-
- expectData.Close();
- mockData2.SerialiseL(expectData);
- iMockLTSY.ExpectL(EEtelCallHangUp, expectData);
-
- mockData0.SerialiseL(completeData);
- iMockLTSY.CompleteL(EEtelCallHangUp, KErrNone, completeData);
-
- call.CancelAsyncRequest(EMobileCallAnswerISV);
-
- User::WaitForRequest(requestStatus);
- AssertMockLtsyStatusL();
- ASSERT_EQUALS(KErrCancel, requestStatus.Int());
-
- User::WaitForRequest(mockLtsyStatus);
-
- CleanupStack::PopAndDestroy(5); // expectData, completeData, this, call, line
- }
-
-
-/**
-@SYMTestCaseID BA-CTSY-CCON-CAICI-0004
-@SYMComponent telephony_ctsy
-@SYMTestCaseDesc Test support in CTSY for multiple client requests to RMobileCall::AnswerIncomingCallISV for voice calls
-@SYMTestPriority High
-@SYMTestActions Invokes multiple client requests to RMobileCall::AnswerIncomingCallISV for voice calls
-@SYMTestExpectedResults Pass
-@SYMTestType CT
-*/
-void CCTsyCallControlFU::TestAnswerIncomingCallISV0004L()
- {
- OpenEtelServerL(EUseExtendedError);
- CleanupStack::PushL(TCleanupItem(Cleanup,this));
- OpenPhoneL();
-
- RBuf8 expectData;
- CleanupClosePushL(expectData);
-
- // Open second client
- RTelServer telServer2;
- TInt ret = telServer2.Connect();
- ASSERT_EQUALS(KErrNone, ret);
- CleanupClosePushL(telServer2);
-
- RMobilePhone phone2;
- ret = phone2.Open(iTelServer,KMmTsyPhoneName);
- ASSERT_EQUALS(KErrNone, ret);
- CleanupClosePushL(phone2);
-
- RLine line1;
- RLine line2;
-
- RMobileCall call1;
- CleanupClosePushL(call1);
-
- RMobileCall call2;
- CleanupClosePushL(call2);
-
- TInt errorCode = KErrNone;
-
- TInt callId1 = 1;
- TName incomingCallName1;
-
- TInt callId2 = 2;
- TName incomingCallName2;
-
- TRequestStatus requestStatus1;
- TRequestStatus requestStatus2;
-
- // open new line1 for KMmTsyVoice1LineName
- errorCode = OpenNewLineLC(iPhone, line1, KMmTsyVoice1LineName);
- ASSERT_EQUALS(KErrNone, errorCode);
-
- // open new line2 for KMmTsyVoice1LineName
- errorCode = OpenNewLineLC(phone2, line2, KMmTsyVoice1LineName);
- ASSERT_EQUALS(KErrNone, errorCode);
-
- RMobileCall::TMobileCallStatus mobileCallStatus = RMobileCall::EStatusRinging;
- RMobilePhone::TMobileService mobileService = RMobilePhone::EVoiceService;
-
- //-------------------------------------------------------------------------
- // Test A: Test multiple clients requesting RCall::AnswerIncomingCall
- //-------------------------------------------------------------------------
-
- //-------------------------------------------------------------------------
- // create new incoming call1
- errorCode = CreateIncomingCallL(line1, callId1, incomingCallName1,
- mobileService, mobileCallStatus);
- ASSERT_EQUALS(KErrNone, errorCode);
- AssertMockLtsyStatusL();
-
- errorCode = call1.OpenExistingCall(line1, incomingCallName1);
- ASSERT_EQUALS(KErrNone, errorCode);
- AssertMockLtsyStatusL();
- //-------------------------------------------------------------------------
-
- //-------------------------------------------------------------------------
- // create new incoming call2
- errorCode = CreateIncomingCallL(line2, callId2, incomingCallName2,
- mobileService, mobileCallStatus);
- ASSERT_EQUALS(KErrNone, errorCode);
- AssertMockLtsyStatusL();
-
- errorCode = call2.OpenExistingCall(line2, incomingCallName2);
- ASSERT_EQUALS(KErrNone, errorCode);
- AssertMockLtsyStatusL();
- //-------------------------------------------------------------------------
-
- TMockLtsyCallData0 mockData01(callId1, mobileService);
- expectData.Close();
- mockData01.SerialiseL(expectData);
- iMockLTSY.ExpectL(EMobileCallAnswerISV, expectData);
- iMockLTSY.CompleteL(EMobileCallAnswerISV, KErrNone, expectData);
-
- RMobileCall::TEtel3rdPartyMobileCallParamsV1 callParamsV1;
- TPckg<RMobileCall::TEtel3rdPartyMobileCallParamsV1> mmParamsPckgV1(callParamsV1);
- call1.AnswerIncomingCallISV(requestStatus1, mmParamsPckgV1);
-
- TMockLtsyCallData0 mockData02(callId2, mobileService);
- expectData.Close();
- mockData02.SerialiseL(expectData);
- iMockLTSY.ExpectL(EMobileCallAnswerISV, expectData);
- iMockLTSY.CompleteL(EMobileCallAnswerISV, KErrNone, expectData);
-
- call2.AnswerIncomingCallISV(requestStatus2, mmParamsPckgV1);
-
- User::WaitForRequest(requestStatus1);
- AssertMockLtsyStatusL();
- ASSERT_EQUALS(KErrNone, requestStatus1.Int());
-
- User::WaitForRequest(requestStatus2);
- AssertMockLtsyStatusL();
- ASSERT_EQUALS(KErrNone, requestStatus2.Int());
-
- // Done !
- CleanupStack::PopAndDestroy(4); // line1, line2, call1, call2
- CleanupStack::PopAndDestroy(4, this); // phone2, telServer2, expectData, this
- }
-
-
-/**
-@SYMTestCaseID BA-CTSY-CCON-CAICI-0005
-@SYMComponent telephony_ctsy
-@SYMTestCaseDesc Test support in CTSY for RMobileCall::AnswerIncomingCallISV with timeout for voice calls
-@SYMTestPriority High
-@SYMTestActions Invokes RMobileCall::AnswerIncomingCallISV and tests for timeout for voice calls
-@SYMTestExpectedResults Pass
-@SYMTestType CT
-*/
-void CCTsyCallControlFU::TestAnswerIncomingCallISV0005L()
- {
- OpenEtelServerL(EUseExtendedError);
- CleanupStack::PushL(TCleanupItem(Cleanup,this));
- OpenPhoneL();
-
- RBuf8 expectData;
- CleanupClosePushL(expectData);
-
- RLine line;
- RMobileCall call;
- CleanupClosePushL(call);
-
- TInt errorCode = KErrNone;
- TInt callId = 1;
- TName incomingCallName;
-
- TRequestStatus requestStatus;
- TRequestStatus mockLtsyStatus;
-
- // open new line for KMmTsyVoice1LineName
- errorCode = OpenNewLineLC(iPhone, line, KMmTsyVoice1LineName);
- ASSERT_EQUALS(KErrNone, errorCode);
-
- RMobileCall::TMobileCallStatus mobileCallStatus = RMobileCall::EStatusRinging;
- RMobilePhone::TMobileService mobileService = RMobilePhone::EVoiceService;
-
- //-------------------------------------------------------------------------
- // Test A: Test timeout of RMobileCall::AnswerIncomingCallISV
- //-------------------------------------------------------------------------
-
- //-------------------------------------------------------------------------
- // create new incoming call
- errorCode = CreateIncomingCallL(line, callId, incomingCallName,
- mobileService, mobileCallStatus);
- ASSERT_EQUALS(KErrNone, errorCode);
- AssertMockLtsyStatusL();
-
- errorCode = call.OpenExistingCall(line, incomingCallName);
- ASSERT_EQUALS(KErrNone, errorCode);
- AssertMockLtsyStatusL();
- //-------------------------------------------------------------------------
-
- TMockLtsyCallData0 mockData0(callId, mobileService);
- expectData.Close();
- mockData0.SerialiseL(expectData);
- iMockLTSY.ExpectL(EMobileCallAnswerISV, expectData);
-
- RMobileCall::TEtel3rdPartyMobileCallParamsV1 callParamsV1;
- TPckg<RMobileCall::TEtel3rdPartyMobileCallParamsV1> mmParamsPckgV1(callParamsV1);
- call.AnswerIncomingCallISV(requestStatus, mmParamsPckgV1);
-
- User::WaitForRequest(requestStatus);
- AssertMockLtsyStatusL();
- ASSERT_EQUALS(KErrTimedOut, requestStatus.Int());
-
- CleanupStack::PopAndDestroy(4, this); // expectData, this, line, call
- }
-
-
-/**
-@SYMTestCaseID BA-CTSY-CCON-CAICI-0006
-@SYMComponent telephony_ctsy
-@SYMTestCaseDesc Test support in CTSY for RMobileCall::AnswerIncomingCallISV for data calls
-@SYMTestPriority High
-@SYMTestActions Invokes RMobileCall::AnswerIncomingCallISV for data calls
-@SYMTestExpectedResults Pass
-@SYMTestType CT
-*/
-void CCTsyCallControlFU::TestAnswerIncomingCallISV0006L()
- {
- OpenEtelServerL(EUseExtendedError);
- CleanupStack::PushL(TCleanupItem(Cleanup,this));
- OpenPhoneL();
-
- RBuf8 expectData;
- CleanupClosePushL(expectData);
-
- RLine line;
- RMobileCall call;
- CleanupClosePushL(call);
-
- TInt errorCode = KErrNone;
- TInt callId = 1;
- TName incomingCallName;
-
- TRequestStatus requestStatus;
- TRequestStatus mockLtsyStatus;
-
- // open new line for KMmTsyDataLineName
- errorCode = OpenNewLineLC(iPhone, line, KMmTsyDataLineName);
- ASSERT_EQUALS(KErrNone, errorCode);
-
- RMobilePhone::TMobileService mobileService = RMobilePhone::ECircuitDataService;
- RMobileCall::TMobileCallStatus mobileCallStatus = RMobileCall::EStatusRinging;
-
- //-------------------------------------------------------------------------
- // TEST A: failure to dispatch request to LTSY
- //-------------------------------------------------------------------------
-
- //-------------------------------------------------------------------------
- // create new incoming call
- errorCode = CreateIncomingCallL(line, callId, incomingCallName,
- mobileService, mobileCallStatus);
- ASSERT_EQUALS(KErrNone, errorCode);
-
- errorCode = call.OpenExistingCall(line, incomingCallName);
- ASSERT_EQUALS(KErrNone, errorCode);
- //-------------------------------------------------------------------------
-
- RMobileCall::TEtel3rdPartyMobileCallParamsV1 callParamsV1;
- TPckg<RMobileCall::TEtel3rdPartyMobileCallParamsV1> mmParamsPckgV1(callParamsV1);
- call.AnswerIncomingCallISV(requestStatus, mmParamsPckgV1);
-
- User::WaitForRequest(requestStatus);
- ASSERT_EQUALS(KErrNotSupported, requestStatus.Int());
-
- AssertMockLtsyStatusL();
- CleanupStack::PopAndDestroy(4, this); // expectData, this, line, call
-
- }
-
-/**
-@SYMTestCaseID BA-CTSY-CCON-CAICI-00011
-@SYMComponent telephony_ctsy
-@SYMTestCaseDesc Test support in CTSY for RMobileCall::AnswerIncomingCallISV for fax calls
-@SYMTestPriority High
-@SYMTestActions Invokes RMobileCall::AnswerIncomingCallISV for fax calls
-@SYMTestExpectedResults Pass
-@SYMTestType CT
-*/
-void CCTsyCallControlFU::TestAnswerIncomingCallISV00011L()
- {
-
- OpenEtelServerL(EUseExtendedError);
- CleanupStack::PushL(TCleanupItem(Cleanup,this));
- OpenPhoneL();
-
- RBuf8 expectData;
- CleanupClosePushL(expectData);
-
- RLine line;
- RMobileCall call;
- CleanupClosePushL(call);
-
- TInt errorCode = KErrNone;
- TInt callId = 1;
- TName incomingCallName;
-
- TRequestStatus requestStatus;
- TRequestStatus mockLtsyStatus;
-
- // open new line for KMmTsyFaxLineName
- errorCode = OpenNewLineLC(iPhone, line, KMmTsyFaxLineName);
- ASSERT_EQUALS(KErrNone, errorCode);
-
- RMobilePhone::TMobileService mobileService = RMobilePhone::EFaxService;
- RMobileCall::TMobileCallStatus mobileCallStatus = RMobileCall::EStatusRinging;
-
- RMobileCall::TEtel3rdPartyMobileCallParamsV1 callParamsV1;
- TPckg<RMobileCall::TEtel3rdPartyMobileCallParamsV1> mmParamsPckgV1(callParamsV1);
- TMockLtsyCallData0 mockData0(callId, mobileService);
-
- //-------------------------------------------------------------------------
- // TEST A: failure to dispatch request to LTSY
- //-------------------------------------------------------------------------
-
- //-------------------------------------------------------------------------
- // create new incoming call
- errorCode = CreateIncomingCallL(line, callId, incomingCallName,
- mobileService, mobileCallStatus);
- ASSERT_EQUALS(KErrNone, errorCode);
-
- errorCode = call.OpenExistingCall(line, incomingCallName);
- ASSERT_EQUALS(KErrNone, errorCode);
- //-------------------------------------------------------------------------
- expectData.Close();
- mockData0.SerialiseL(expectData);
- call.AnswerIncomingCallISV(requestStatus, mmParamsPckgV1);
-
- User::WaitForRequest(requestStatus);
- ASSERT_EQUALS(KErrNotSupported, requestStatus.Int());
-
- AssertMockLtsyStatusL();
- CleanupStack::PopAndDestroy(4, this); // expectData, this, call, line
-
- }
-
-/**
-@SYMTestCaseID BA-CTSY-CCON-CDI-0001
-@SYMComponent telephony_ctsy
-@SYMTestCaseDesc Test support in CTSY for RMobileCall::DialISV for voice calls
-@SYMTestPriority High
-@SYMTestActions Invokes RMobileCall::DialISV for voice calls
-@SYMTestExpectedResults Pass
-@SYMTestType CT
-*/
-void CCTsyCallControlFU::TestDialISV0001L()
- {
- OpenEtelServerL(EUseExtendedError);
- CleanupStack::PushL(TCleanupItem(Cleanup,this));
- OpenPhoneL();
-
- RBuf8 expectData;
- CleanupClosePushL(expectData);
-
- RBuf8 completeData;
- CleanupClosePushL(completeData);
-
- RMobileLine line;
- RMobileCall call;
-
- TInt errorCode = KErrNone;
- TRequestStatus requestStatus;
- TRequestStatus mockLtsyStatus;
-
- // open new line for KMmTsyVoice1LineName
- errorCode = line.Open(iPhone, KMmTsyVoice1LineName);
- CleanupClosePushL(line);
- ASSERT_EQUALS(KErrNone, errorCode);
-
- _LIT(KDoubleColon, "::");
-
- TName name;
- name = KMmTsyPhoneName;
- name.Append(KDoubleColon);
- name.Append(KMmTsyVoice1LineName);
- name.Append(KDoubleColon);
-
- _LIT(KPhoneNumber, "101632960000");
-
- TInt callId = 1;
- RMobilePhone::TMobileService mobileService = RMobilePhone::EVoiceService;
-
- RMobileCall::TEtel3rdPartyMobileCallParamsV1 callParams;
- callParams.iIdRestrict = RMobileCall::ESendMyId;
- callParams.iAutoRedial = ETrue;
- TPckg<RMobileCall::TEtel3rdPartyMobileCallParamsV1> pckgCallParams(callParams);
-
- RMobileCall::TMobileCallInfoV1 callInfo;
- callInfo.iDialledParty.iTelNumber.Copy(KPhoneNumber);
- callInfo.iService = mobileService;
- callInfo.iValid = RMobileCall::KCallDialledParty | RMobileCall::KCallAlternating;
-
- RMmCustomAPI::TEmerNumberCheckMode emerNumberCheckMode;
- emerNumberCheckMode.iCheckMode = RMmCustomAPI::EEmerNumberCheckNormal;
- emerNumberCheckMode.iNumber.Copy(KPhoneNumber);
-
- RMmCustomAPI::TMobileTelNumber* telNumberPtr = NULL;
-
- TMockLtsyData1<RMmCustomAPI::TEmerNumberCheckMode> expectLtsyData1(emerNumberCheckMode);
-
- TMockLtsyCallData2<RMobileCall::TEtel3rdPartyMobileCallParamsV1, RMobileCall::TMobileCallInfoV1>
- expectLtsyData2(0, mobileService, callParams, callInfo);
-
- TMockLtsyCallData0 completeLtsyData1(callId, mobileService);
-
- TMockLtsyData1< RMmCustomAPI::TMobileTelNumber* > completeLtsyData2(telNumberPtr);
-
- //-------------------------------------------------------------------------
- // TEST E: Unsolicited completion of RCall::Dial
- // from LTSY.
- //-------------------------------------------------------------------------
-
- iMockLTSY.NotifyTerminated(mockLtsyStatus);
- expectData.Close();
- completeLtsyData1.SerialiseL(expectData);
- iMockLTSY.CompleteL(EMobileCallDialISV, KErrNone, expectData);
- User::WaitForRequest(mockLtsyStatus);
- AssertMockLtsyStatusL();
- ASSERT_EQUALS(KErrNone, mockLtsyStatus.Int());
-
- //-------------------------------------------------------------------------
- // TEST A: Try to make RMobileCall::DialISV request in case where
- // CustomTSY is not opened. This should fail because in DialISV case TSY
- // checks dialling number type using CustomTSY.
- //-------------------------------------------------------------------------
-
- // open new call
- CleanupClosePushL(call);
- errorCode = call.OpenNewCall(line, name);
- ASSERT_EQUALS(KErrNone, errorCode);
-
- call.DialISV(requestStatus, pckgCallParams, KPhoneNumber);
- User::WaitForRequest(requestStatus);
- AssertMockLtsyStatusL();
- ASSERT_EQUALS(KErrNotReady, requestStatus.Int());
-
- //-------------------------------------------------------------------------
- // TEST C: Successful completion request of
- // RMobileCall::DialISV when result is not cached.
- //-------------------------------------------------------------------------
-
- //-------------------------------------------------------------------------
- // CustomTSY must be open before DialISV is requested
- iMockLTSY.ExpectL(ECustomGetIccCallForwardingStatusIPC);
-
- RMmCustomAPI::TViagCacheRecordId currentlyRetrievedCache;
- currentlyRetrievedCache.iCacheId = 1;
- currentlyRetrievedCache.iRecordId = 0;
- TMockLtsyData1 <RMmCustomAPI::TViagCacheRecordId> ltsyData2(currentlyRetrievedCache);
- expectData.Close();
- ltsyData2.SerialiseL(expectData);
- iMockLTSY.ExpectL(EReadViagHomeZoneCacheIPC, expectData);
-
- RMmCustomAPI customAPI;
- customAPI.Open(iPhone);
- CleanupClosePushL(customAPI);
- AssertMockLtsyStatusL();
- //-------------------------------------------------------------------------
-
- completeData.Close();
- completeLtsyData2.SerialiseL(completeData);
- iMockLTSY.CompleteL(ECustomCheckEmergencyNumberIPC, KErrNone, completeData);
-
- expectData.Close();
- expectLtsyData1.SerialiseL(expectData);
- iMockLTSY.ExpectL(ECustomCheckEmergencyNumberIPC, expectData);
-
- expectData.Close();
- expectLtsyData1.SerialiseL(expectData);
- iMockLTSY.ExpectL(EMobileCallDialISV, expectData);
-
- CallGetMobileCallInfoL(callId, mobileService, KPhoneNumber);
-
- completeData.Close();
- completeLtsyData1.SerialiseL(completeData);
- iMockLTSY.CompleteL(EMobileCallDialISV, KErrNone, completeData);
-
- call.DialISV(requestStatus, pckgCallParams, KPhoneNumber);
- User::WaitForRequest(requestStatus);
- AssertMockLtsyStatusL();
- ASSERT_EQUALS(KErrNone, requestStatus.Int());
-
- call.Close();
-
- AssertMockLtsyStatusL();
- CleanupStack::PopAndDestroy(6, this); // this, expectData, completeData, line, call, customAPI
-
- }
-
-/**
-@SYMTestCaseID BA-CTSY-CCON-CDI-0006
-@SYMComponent telephony_ctsy
-@SYMTestCaseDesc Test support in CTSY for RMobileCall::DialISV for data calls
-@SYMTestPriority High
-@SYMTestActions Invokes RMobileCall::DialISV for data calls
-@SYMTestExpectedResults Pass
-@SYMTestType CT
-*/
-void CCTsyCallControlFU::TestDialISV0006L()
- {
-
- OpenEtelServerL(EUseExtendedError);
- CleanupStack::PushL(TCleanupItem(Cleanup,this));
- OpenPhoneL();
-
- RBuf8 expectData;
- CleanupClosePushL(expectData);
-
- RBuf8 completeData;
- CleanupClosePushL(completeData);
-
- RMobileLine line;
- RMobileCall call;
-
- TInt errorCode = KErrNone;
- TRequestStatus requestStatus;
- TRequestStatus mockLtsyStatus;
-
- // open new line for KMmTsyDataLineName
- errorCode = line.Open(iPhone, KMmTsyDataLineName);
- CleanupClosePushL(line);
- ASSERT_EQUALS(KErrNone, errorCode);
-
- _LIT(KDoubleColon, "::");
-
- TName name;
- name = KMmTsyPhoneName;
- name.Append(KDoubleColon);
- name.Append(KMmTsyDataLineName);
- name.Append(KDoubleColon);
-
- _LIT(KPhoneNumber, "101632960000");
-
- TInt callId = 1;
- RMobilePhone::TMobileService mobileService = RMobilePhone::ECircuitDataService;
-
- RMobileCall::TEtel3rdPartyMobileCallParamsV1 callParams;
-
- RMobileCall::TMobileCallInfoV1 callInfo;
- callInfo.iDialledParty.iTelNumber.Copy(KPhoneNumber);
- callInfo.iService = mobileService;
- callInfo.iValid = RMobileCall::KCallDialledParty;
-
- TMockLtsyCallData2<RMobileCall::TEtel3rdPartyMobileCallParamsV1, RMobileCall::TMobileCallInfoV1>
- mockData2(0, mobileService, callParams, callInfo);
-
- TMockLtsyCallData0 mockData0(callId, mobileService);
-
- TPckg<RMobileCall::TEtel3rdPartyMobileCallParamsV1> pckgCallParams(callParams);
-
- //-------------------------------------------------------------------------
- // TEST A: failure to dispatch request to LTSY
- //-------------------------------------------------------------------------
-
- // open new call
- CleanupClosePushL(call);
- errorCode = call.OpenNewCall(line, name);
- ASSERT_EQUALS(KErrNone, errorCode);
-
- call.DialISV(requestStatus, pckgCallParams, KPhoneNumber);
- User::WaitForRequest(requestStatus);
- ASSERT_EQUALS(KErrNotSupported, requestStatus.Int());
-
- call.Close();
- AssertMockLtsyStatusL();
- CleanupStack::PopAndDestroy(1);
-
- //-------------------------------------------------------------------------
- // TEST E: Unsolicited completion of RMobileCall::DialISV
- // from LTSY.
- //-------------------------------------------------------------------------
-
- iMockLTSY.NotifyTerminated(mockLtsyStatus);
- expectData.Close();
- mockData0.SerialiseL(expectData);
- iMockLTSY.CompleteL(EMobileCallDialISV, KErrNone, expectData);
- User::WaitForRequest(mockLtsyStatus);
- AssertMockLtsyStatusL();
- ASSERT_EQUALS(KErrNone, mockLtsyStatus.Int());
-
- AssertMockLtsyStatusL();
- CleanupStack::PopAndDestroy(4, this); // expectData, completeData, line
-
- }
-
-/**
-@SYMTestCaseID BA-CTSY-CCON-CDI-00011
-@SYMComponent telephony_ctsy
-@SYMTestCaseDesc Test support in CTSY for RMobileCall::DialISV for fax calls
-@SYMTestPriority High
-@SYMTestActions Invokes RMobileCall::DialISV for fax calls
-@SYMTestExpectedResults Pass
-@SYMTestType CT
-*/
-void CCTsyCallControlFU::TestDialISV00011L()
- {
-
- OpenEtelServerL(EUseExtendedError);
- CleanupStack::PushL(TCleanupItem(Cleanup,this));
- OpenPhoneL();
-
- RBuf8 expectData;
- CleanupClosePushL(expectData);
-
- RBuf8 completeData;
- CleanupClosePushL(completeData);
-
- RMobileLine line;
- RMobileCall call;
-
- TInt errorCode = KErrNone;
- TRequestStatus requestStatus;
- TRequestStatus mockLtsyStatus;
-
- // open new line for KMmTsyDataLineName
- errorCode = line.Open(iPhone, KMmTsyFaxLineName);
- CleanupClosePushL(line);
- ASSERT_EQUALS(KErrNone, errorCode);
-
- _LIT(KDoubleColon, "::");
-
- TName name;
- name = KMmTsyPhoneName;
- name.Append(KDoubleColon);
- name.Append(KMmTsyFaxLineName);
- name.Append(KDoubleColon);
-
- _LIT(KPhoneNumber, "101632960000");
-
- TInt callId = 1;
- RMobilePhone::TMobileService mobileService = RMobilePhone::EFaxService;
-
- RMobileCall::TEtel3rdPartyMobileCallParamsV1 callParams;
-
- RMobileCall::TMobileCallInfoV1 callInfo;
- callInfo.iDialledParty.iTelNumber.Copy(KPhoneNumber);
- callInfo.iService = mobileService;
- callInfo.iValid = RMobileCall::KCallDialledParty;
-
- TMockLtsyCallData2<RMobileCall::TEtel3rdPartyMobileCallParamsV1, RMobileCall::TMobileCallInfoV1>
- mockData2(0, mobileService, callParams, callInfo);
-
- TMockLtsyCallData0 mockData0(callId, mobileService);
-
- TPckg<RMobileCall::TEtel3rdPartyMobileCallParamsV1> pckgCallParams(callParams);
-
- //-------------------------------------------------------------------------
- // TEST A: failure to dispatch request to LTSY
- //-------------------------------------------------------------------------
-
- // open new call
- CleanupClosePushL(call);
- errorCode = call.OpenNewCall(line, name);
- ASSERT_EQUALS(KErrNone, errorCode);
-
- call.DialISV(requestStatus, pckgCallParams, KPhoneNumber);
- User::WaitForRequest(requestStatus);
- ASSERT_EQUALS(KErrNotSupported, requestStatus.Int());
-
- call.Close();
- AssertMockLtsyStatusL();
- CleanupStack::PopAndDestroy(1);
-
- //-------------------------------------------------------------------------
- // TEST E: Unsolicited completion of RMobileCall::DialISV
- // from LTSY.
- //-------------------------------------------------------------------------
-
- iMockLTSY.NotifyTerminated(mockLtsyStatus);
- expectData.Close();
- mockData0.SerialiseL(expectData);
- iMockLTSY.CompleteL(EMobileCallDialISV, KErrNone, expectData);
- User::WaitForRequest(mockLtsyStatus);
- AssertMockLtsyStatusL();
- ASSERT_EQUALS(KErrNone, mockLtsyStatus.Int());
-
- AssertMockLtsyStatusL();
- CleanupStack::PopAndDestroy(4, this); // expectData, completeData, line
-
- }
-
-
-/**
-@SYMTestCaseID BA-CTSY-CCON-CDCC-0001
-@SYMComponent telephony_ctsy
-@SYMTestCaseDesc Test support in CTSY for RMobileCall::DialCallControl for voice calls
-@SYMTestPriority High
-@SYMTestActions Invokes RMobileCall::DialCallControl for voice calls
-@SYMTestExpectedResults Pass
-@SYMTestType CT
-*/
-void CCTsyCallControlFU::TestDialCallControl0001L()
- {
-
- OpenEtelServerL(EUseExtendedError);
- CleanupStack::PushL(TCleanupItem(Cleanup,this));
- OpenPhoneL();
-
- RBuf8 expectData;
- CleanupClosePushL(expectData);
-
- RBuf8 completeData;
- CleanupClosePushL(completeData);
-
- RMobileLine line;
- RMobileCall call;
-
- TInt errorCode = KErrNone;
- TRequestStatus requestStatus;
- TRequestStatus mockLtsyStatus;
-
- // Open new line for KMmTsyVoice1LineName
- errorCode = line.Open(iPhone, KMmTsyVoice1LineName);
- CleanupClosePushL(line);
- ASSERT_EQUALS(KErrNone, errorCode);
-
- _LIT(KDoubleColon, "::");
-
- TName name;
- name = KMmTsyPhoneName;
- name.Append(KDoubleColon);
- name.Append(KMmTsyVoice1LineName);
- name.Append(KDoubleColon);
-
- _LIT(KPhoneNumber, "101632960000");
-
- TInt callId = 1;
- RMobilePhone::TMobileService mobileService = RMobilePhone::EVoiceService;
-
- RMobileCall::TMobileCallParamsV7 callParams;
-
- RMobileCall::TMobileCallInfoV8 callInfo;
- callInfo.iDialledParty.iTelNumber.Copy(KPhoneNumber);
- callInfo.iService = mobileService;
- callInfo.iValid = RMobileCall::KCallDialledParty | RMobileCall::KCallAlternating;
-
- TMockLtsyCallData2<RMobileCall::TMobileCallParamsV7, RMobileCall::TMobileCallInfoV8>
- mockData2(0, mobileService, callParams, callInfo);
-
- TMockLtsyCallData0 mockData0(callId, mobileService);
-
- TPckg<RMobileCall::TMobileCallParamsV7> pckgCallParams(callParams);
-
- //-------------------------------------------------------------------------
- // TEST A: failure to dispatch request to LTSY
- //-------------------------------------------------------------------------
-
- // Open new call
- CleanupClosePushL(call);
- errorCode = call.OpenNewCall(line, name);
- ASSERT_EQUALS(KErrNone, errorCode);
-
- call.DialCallControl(requestStatus, pckgCallParams, KPhoneNumber);
- User::WaitForRequest(requestStatus);
-
- // This is not a defect. DialCallControl fails because feature is not
- // supported by CTSY.
- ASSERT_EQUALS(KErrNotSupported, requestStatus.Int());
-
-
- call.Close();
- AssertMockLtsyStatusL();
- CleanupStack::PopAndDestroy(1); // call
-
- //-------------------------------------------------------------------------
- // TEST E: Unsolicited completion of RMobileCall::DialCallControl
- // from LTSY.
- //-------------------------------------------------------------------------
-
- iMockLTSY.NotifyTerminated(mockLtsyStatus);
- expectData.Close();
- mockData0.SerialiseL(expectData);
- iMockLTSY.CompleteL(EMobileCallDialCallControl, KErrNone, expectData);
- User::WaitForRequest(mockLtsyStatus);
- AssertMockLtsyStatusL();
- ASSERT_EQUALS(KErrNone, mockLtsyStatus.Int());
-
- CleanupStack::PopAndDestroy(4, this); // expectData, completeData, line, this
-
- }
-
-/**
-@SYMTestCaseID BA-CTSY-CCON-CDCC-0006
-@SYMComponent telephony_ctsy
-@SYMTestCaseDesc Test support in CTSY for RMobileCall::DialCallControl for data calls
-@SYMTestPriority High
-@SYMTestActions Invokes RMobileCall::DialCallControl for data calls
-@SYMTestExpectedResults Pass
-@SYMTestType CT
-*/
-void CCTsyCallControlFU::TestDialCallControl0006L()
- {
-
- OpenEtelServerL(EUseExtendedError);
- CleanupStack::PushL(TCleanupItem(Cleanup,this));
- OpenPhoneL();
-
- RBuf8 expectData;
- CleanupClosePushL(expectData);
-
- RBuf8 completeData;
- CleanupClosePushL(completeData);
-
- RMobileLine line;
- RMobileCall call;
-
- TInt errorCode = KErrNone;
- TRequestStatus requestStatus;
- TRequestStatus mockLtsyStatus;
-
- // Open new line for KMmTsyDataLineName
- errorCode = line.Open(iPhone, KMmTsyDataLineName);
- CleanupClosePushL(line);
- ASSERT_EQUALS(KErrNone, errorCode);
-
- _LIT(KDoubleColon, "::");
-
- TName name;
- name = KMmTsyPhoneName;
- name.Append(KDoubleColon);
- name.Append(KMmTsyDataLineName);
- name.Append(KDoubleColon);
-
- _LIT(KPhoneNumber, "101632960000");
-
- TInt callId = 1;
- RMobilePhone::TMobileService mobileService = RMobilePhone::ECircuitDataService;
-
- RMobileCall::TMobileCallParamsV7 callParams;
-
- RMobileCall::TMobileCallInfoV8 callInfo;
- callInfo.iDialledParty.iTelNumber.Copy(KPhoneNumber);
- callInfo.iService = mobileService;
- callInfo.iValid = RMobileCall::KCallDialledParty | RMobileCall::KCallAlternating;
-
- TMockLtsyCallData2<RMobileCall::TMobileCallParamsV7, RMobileCall::TMobileCallInfoV8>
- mockData2(0, mobileService, callParams, callInfo);
-
- TMockLtsyCallData0 mockData0(callId, mobileService);
-
- TPckg<RMobileCall::TMobileCallParamsV7> pckgCallParams(callParams);
-
- //-------------------------------------------------------------------------
- // TEST A: failure to dispatch request to LTSY
- //-------------------------------------------------------------------------
-
- // Open new call
- CleanupClosePushL(call);
- errorCode = call.OpenNewCall(line, name);
- ASSERT_EQUALS(KErrNone, errorCode);
-
- call.DialCallControl(requestStatus, pckgCallParams, KPhoneNumber);
- User::WaitForRequest(requestStatus);
-
- // This is not a defect. DialCallControl fails because feature is not
- // supported by CTSY.
- ASSERT_EQUALS(KErrNotSupported, requestStatus.Int());
-
- call.Close();
- AssertMockLtsyStatusL();
- CleanupStack::PopAndDestroy(1); // call
-
- //-------------------------------------------------------------------------
- // TEST E: Unsolicited completion of RMobileCall::DialISV
- // from LTSY.
- //-------------------------------------------------------------------------
-
- iMockLTSY.NotifyTerminated(mockLtsyStatus);
- expectData.Close();
- mockData0.SerialiseL(expectData);
- iMockLTSY.CompleteL(EMobileCallDialCallControl, KErrNone, expectData);
- User::WaitForRequest(mockLtsyStatus);
- AssertMockLtsyStatusL();
- ASSERT_EQUALS(KErrNone, mockLtsyStatus.Int());
-
- CleanupStack::PopAndDestroy(4, this); // expectData, completeData, line, call
-
- }
-
-/**
-@SYMTestCaseID BA-CTSY-CCON-CDCC-00011
-@SYMComponent telephony_ctsy
-@SYMTestCaseDesc Test support in CTSY for RMobileCall::DialCallControl for fax calls
-@SYMTestPriority High
-@SYMTestActions Invokes RMobileCall::DialCallControl for fax calls
-@SYMTestExpectedResults Pass
-@SYMTestType CT
-*/
-void CCTsyCallControlFU::TestDialCallControl00011L()
- {
-
- OpenEtelServerL(EUseExtendedError);
- CleanupStack::PushL(TCleanupItem(Cleanup,this));
- OpenPhoneL();
-
- RBuf8 expectData;
- CleanupClosePushL(expectData);
-
- RBuf8 completeData;
- CleanupClosePushL(completeData);
-
- RMobileLine line;
- RMobileCall call;
-
- TInt errorCode = KErrNone;
- TRequestStatus requestStatus;
- TRequestStatus mockLtsyStatus;
-
- // Open new line for KMmTsyFaxLineName
- errorCode = line.Open(iPhone, KMmTsyFaxLineName);
- CleanupClosePushL(line);
- ASSERT_EQUALS(KErrNone, errorCode);
-
- _LIT(KDoubleColon, "::");
-
- TName name;
- name = KMmTsyPhoneName;
- name.Append(KDoubleColon);
- name.Append(KMmTsyFaxLineName);
- name.Append(KDoubleColon);
-
- _LIT(KPhoneNumber, "101632960000");
-
- TInt callId = 1;
- RMobilePhone::TMobileService mobileService = RMobilePhone::EFaxService;
-
- RMobileCall::TMobileCallParamsV7 callParams;
-
- RMobileCall::TMobileCallInfoV8 callInfo;
- callInfo.iDialledParty.iTelNumber.Copy(KPhoneNumber);
- callInfo.iService = mobileService;
- callInfo.iValid = RMobileCall::KCallDialledParty | RMobileCall::KCallAlternating;
-
- TMockLtsyCallData2<RMobileCall::TMobileCallParamsV7, RMobileCall::TMobileCallInfoV8>
- mockData2(0, mobileService, callParams, callInfo);
-
- TMockLtsyCallData0 mockData0(callId, mobileService);
-
- TPckg<RMobileCall::TMobileCallParamsV7> pckgCallParams(callParams);
-
- //-------------------------------------------------------------------------
- // TEST A: failure to dispatch request to LTSY
- //-------------------------------------------------------------------------
-
- // Open new call
- CleanupClosePushL(call);
- errorCode = call.OpenNewCall(line, name);
- ASSERT_EQUALS(KErrNone, errorCode);
-
- call.DialCallControl(requestStatus, pckgCallParams, KPhoneNumber);
- User::WaitForRequest(requestStatus);
-
- // This is not a defect. DialCallControl fails because feature is not
- // supported by CTSY.
- ASSERT_EQUALS(KErrNotSupported, requestStatus.Int());
-
- call.Close();
- AssertMockLtsyStatusL();
- CleanupStack::PopAndDestroy(1); //call
-
- //-------------------------------------------------------------------------
- // TEST E: Unsolicited completion of RMobileCall::DialISV
- // from LTSY.
- //-------------------------------------------------------------------------
-
- iMockLTSY.NotifyTerminated(mockLtsyStatus);
- expectData.Close();
- mockData0.SerialiseL(expectData);
- iMockLTSY.CompleteL(EMobileCallDialCallControl, KErrNone, expectData);
- User::WaitForRequest(mockLtsyStatus);
- AssertMockLtsyStatusL();
- ASSERT_EQUALS(KErrNone, mockLtsyStatus.Int());
-
- CleanupStack::PopAndDestroy(4, this); // expectData, completeData, line, this
- }
-
-/*
- * Test case where answering fails because automatic hold does not work.
- *
- * @param aLineName Line name
- * @return KErrNone if successful, otherwise another of the system-wide error
- */
-TInt CCTsyCallControlFU::TestAnsweringFailsBecauseHoldDoesNotWorkL( const TDesC& aLineName )
- {
- OpenEtelServerL(EUseExtendedError);
- CleanupStack::PushL(TCleanupItem(Cleanup,this));
- OpenPhoneL();
-
- RBuf8 expectData;
- CleanupClosePushL(expectData);
-
- RBuf8 completeData;
- CleanupClosePushL(completeData);
-
- RMobilePhone phone2;
- TInt ret = phone2.Open(iTelServer,KMmTsyPhoneName);
- ASSERT_EQUALS(KErrNone, ret);
- CleanupClosePushL(phone2);
-
- RLine line1;
- RLine line2;
-
- //Open new line1 for aLineName
- TInt errorCode = OpenNewLineLC(iPhone, line1, aLineName);
- ASSERT_EQUALS(KErrNone, errorCode);
-
- //Open new line2 for KMmTsyVoice1LineName
- errorCode = OpenNewLineLC(phone2, line2, KMmTsyVoice1LineName);
- ASSERT_EQUALS(KErrNone, errorCode);
-
- RMobileCall call1;
- CleanupClosePushL(call1);
-
- RMobileCall call2;
- CleanupClosePushL(call2);
-
- _LIT(KPhoneNumber, "101632960000");
-
- RMobileCall::TMobileCallStatus mobileCallStatus = RMobileCall::EStatusRinging;
- RMobilePhone::TMobileService mobileService1;
- RMobilePhone::TMobileService mobileService2 = RMobilePhone::EVoiceService;
-
- TInt callId1 = 1;
- TName callName1;
-
- TInt callId2 = 2;
- TName callName2;
-
- TRequestStatus requestStatus;
- TRequestStatus mockLtsyStatus;
-
- //-------------------------------------------------------------------------
- // Create first call outgoing voice or data call
-
- errorCode = call1.OpenNewCall(line1, callName1);
- ASSERT_EQUALS(KErrNone, errorCode);
-
- if ( !aLineName.Compare( KMmTsyDataLineName ) )
- {
- //Dial data call
- mobileService1 = RMobilePhone::ECircuitDataService;
-
- CallGetMobileCallInfoL(callId1, mobileService1, KPhoneNumber);
-
- RMobileCall::TMobileDataCallParamsV1 callParams;
- callParams.iInterval = 4;
- callParams.iCug.iCugIndex = 0xFFFF;
-
- RMobileCall::TMobileCallInfoV8 callInfo;
- callInfo.iDialledParty.iTelNumber.Copy(KPhoneNumber);
- callInfo.iService = mobileService1;
- callInfo.iValid = RMobileCall::KCallDialledParty | RMobileCall::KCallAlternating ;
-
- TMockLtsyCallData2<RMobileCall::TMobileDataCallParamsV1, RMobileCall::TMobileCallInfoV8>
- mockData0(0, mobileService1, callParams, callInfo);
-
- TPckg<RMobileCall::TMobileDataCallParamsV1> pckgCallParams(callParams);
-
- mockData0.SerialiseL(expectData);
- iMockLTSY.ExpectL(EEtelCallDial, expectData, KErrNone);
-
- call1.Dial(requestStatus, pckgCallParams, KPhoneNumber);
- }
- else
- {
- //Dial voice call
- mobileService1 = RMobilePhone::EVoiceService;
-
- CallGetMobileCallInfoL(callId1, mobileService1, KPhoneNumber);
-
- RMobileCall::TMobileCallParamsV1 callParams;
- callParams.iInterval = 4;
- callParams.iCug.iCugIndex = 0xFFFF;
- TPckg<RMobileCall::TMobileCallParamsV1> pckgCallParams(callParams);
-
- RMobileCall::TMobileCallInfoV8 callInfo;
- callInfo.iDialledParty.iTelNumber.Copy(KPhoneNumber);
- callInfo.iService = mobileService1;
- callInfo.iValid = RMobileCall::KCallDialledParty | RMobileCall::KCallAlternating;
-
- TMockLtsyCallData2<RMobileCall::TMobileCallParamsV1, RMobileCall::TMobileCallInfoV8>
- mockData1(0, mobileService1, callParams, callInfo);
-
- mockData1.SerialiseL(expectData);
- iMockLTSY.ExpectL(EEtelCallDial, expectData, KErrNone);
-
- call1.Dial(requestStatus, pckgCallParams, KPhoneNumber);
- }
-
- //Change call1 status to connected
- mobileCallStatus = RMobileCall::EStatusDialling;
- TMockLtsyCallData1<RMobileCall::TMobileCallStatus> mockData2(callId1, mobileService1, mobileCallStatus);
- completeData.Close();
- mockData2.SerialiseL(completeData);
- iMockLTSY.NotifyTerminated(mockLtsyStatus);
- iMockLTSY.CompleteL(EMobileCallNotifyMobileCallStatusChange, KErrNone, completeData);
- User::WaitForRequest(mockLtsyStatus);
- ASSERT_EQUALS(KErrNone, mockLtsyStatus.Int());
-
- mobileCallStatus = RMobileCall::EStatusConnecting;
- TMockLtsyCallData1<RMobileCall::TMobileCallStatus> mockData3(callId1, mobileService1, mobileCallStatus);
- completeData.Close();
- mockData3.SerialiseL(completeData);
- iMockLTSY.NotifyTerminated(mockLtsyStatus);
- iMockLTSY.CompleteL(EMobileCallNotifyMobileCallStatusChange, KErrNone, completeData);
- User::WaitForRequest(mockLtsyStatus);
- ASSERT_EQUALS(KErrNone, mockLtsyStatus.Int());
-
- mobileCallStatus = RMobileCall::EStatusConnected;
- TMockLtsyCallData1<RMobileCall::TMobileCallStatus> mockData4(callId1, mobileService1, mobileCallStatus);
- completeData.Close();
- mockData4.SerialiseL(completeData);
- iMockLTSY.NotifyTerminated(mockLtsyStatus);
- iMockLTSY.CompleteL(EMobileCallNotifyMobileCallStatusChange, KErrNone, completeData);
- User::WaitForRequest(mockLtsyStatus);
- ASSERT_EQUALS(KErrNone, mockLtsyStatus.Int());
-
- if ( !aLineName.Compare( KMmTsyDataLineName ) )
- {
- //Dial request for voice call is completed automatically by CTSY when call goes to connected state
- //Complete here data call Dial.
- TMockLtsyCallData0 mockData5(callId1, mobileService1);
- mockData5.SerialiseL(completeData);
- iMockLTSY.CompleteL(EEtelCallDial, KErrNone, completeData);
- }
-
- User::WaitForRequest(requestStatus);
- AssertMockLtsyStatusL();
- ASSERT_EQUALS(KErrNone, requestStatus.Int());
-
- //Check that call1 is active
- call1.GetMobileCallStatus(mobileCallStatus);
- ASSERT_EQUALS(RMobileCall::EStatusConnected, mobileCallStatus);
- AssertMockLtsyStatusL();
-
- //-------------------------------------------------------------------------
-
-
- //-------------------------------------------------------------------------
- // Create second incoming voice call.
-
- mobileCallStatus = RMobileCall::EStatusRinging;
- errorCode = CreateIncomingCallL(line2, callId2, callName2,
- mobileService2, mobileCallStatus);
- ASSERT_EQUALS(KErrNone, errorCode);
- AssertMockLtsyStatusL();
-
- errorCode = call2.OpenExistingCall(line2, callName2);
- ASSERT_EQUALS(KErrNone, errorCode);
- AssertMockLtsyStatusL();
-
- //-------------------------------------------------------------------------
-
- //-------------------------------------------------------------------------
- // TEST A: AnswerIncomingCall for call2 is completed with error KErrMMEtelCallForbidden
- // because automatic hold for call1 fails.
- //-------------------------------------------------------------------------
-
- //There is now one active call and one ringing call. Cellular software sets
- //active call1 to hold automatically when ringing call is answered. Normally this operation
- //succeeds. In DoCoMo network hold operation fails in this situation if call waiting is
- //disabled.
-
- //Background: Incoming call indication should not come from network if there is already an active call
- //and call waiting is disabled. However in DoCoMo network incoming call indication comes
- //through but answering to this call fails because hold operation for active call does not work.
-
- //Expected functionality: In this case CTSY should complete AnswerIncomingCall request with
- //error and active call should stay in active state.
-
- TMockLtsyCallData0 mockData6(callId2, mobileService2);
- expectData.Close();
- mockData6.SerialiseL(expectData);
- iMockLTSY.ExpectL(EEtelCallAnswer, expectData);
-
- RMobileCall::TMobileCallParamsV1 callParamsV1;
- TPckg<RMobileCall::TMobileCallParamsV1> mmParamsPckgV1(callParamsV1);
- call2.AnswerIncomingCall(requestStatus, mmParamsPckgV1);
-
- //Incoming call goes to answering state.
- mobileCallStatus = RMobileCall::EStatusAnswering;
- TMockLtsyCallData1<RMobileCall::TMobileCallStatus> mockData7(callId2, mobileService2, mobileCallStatus);
- completeData.Close();
- mockData7.SerialiseL(completeData);
- iMockLTSY.NotifyTerminated(mockLtsyStatus);
- iMockLTSY.CompleteL(EMobileCallNotifyMobileCallStatusChange, KErrNone, completeData);
- User::WaitForRequest(mockLtsyStatus);
-
- //Network rejects hold operation for active call.
- mobileCallStatus = RMobileCall::EStatusConnected;
- TMockLtsyCallData1<RMobileCall::TMobileCallStatus> mockData8(callId1, mobileService1, mobileCallStatus);
- completeData.Close();
- mockData8.SerialiseL(completeData);
- iMockLTSY.NotifyTerminated(mockLtsyStatus);
- iMockLTSY.CompleteL(EMobileCallNotifyMobileCallStatusChange, KErrMMEtelCallForbidden, completeData);
-
- //AnswerIncomingCall should be completed with error.
- User::WaitForRequest(requestStatus);
- User::WaitForRequest(mockLtsyStatus);
- ASSERT_EQUALS(KErrMMEtelCallForbidden, requestStatus.Int());
- AssertMockLtsyStatusL();
-
- //Check that call1 is still in active state.
- call1.GetMobileCallStatus(mobileCallStatus);
- ASSERT_EQUALS(RMobileCall::EStatusConnected, mobileCallStatus);
- AssertMockLtsyStatusL();
-
- //-------------------------------------------------------------------------
- // Hangup calls
-
- TInt hangUpCause = KErrGsmReleaseByUser;
- TBool autoStChangeDisable = ETrue;
- TMockLtsyCallData2<TInt, TBool> mockData9(callId2, mobileService2, hangUpCause, autoStChangeDisable);
- expectData.Close();
- mockData9.SerialiseL(expectData);
- iMockLTSY.ExpectL(EEtelCallHangUp, expectData);
-
- call2.HangUp(requestStatus);
-
- //Change call2 status to disconnecting
- mobileCallStatus = RMobileCall::EStatusDisconnecting;
- TMockLtsyCallData1<RMobileCall::TMobileCallStatus> mockData10(callId2, mobileService2, mobileCallStatus);
- completeData.Close();
- mockData10.SerialiseL(completeData);
- iMockLTSY.NotifyTerminated(mockLtsyStatus);
- iMockLTSY.CompleteL(EMobileCallNotifyMobileCallStatusChange, KErrNone, completeData);
- User::WaitForRequest(mockLtsyStatus);
- ASSERT_EQUALS(KErrNone, mockLtsyStatus.Int());
-
- //Change call2 status to idle
- mobileCallStatus = RMobileCall::EStatusIdle;
- TMockLtsyCallData1<RMobileCall::TMobileCallStatus> mockData11(callId2, mobileService2, mobileCallStatus);
- completeData.Close();
- mockData11.SerialiseL(completeData);
- iMockLTSY.NotifyTerminated(mockLtsyStatus);
- iMockLTSY.CompleteL(EMobileCallNotifyMobileCallStatusChange, KErrNone, completeData);
- User::WaitForRequest(mockLtsyStatus);
- ASSERT_EQUALS(KErrNone, mockLtsyStatus.Int());
-
- //HangUp complete for call2
- User::WaitForRequest(requestStatus);
- AssertMockLtsyStatusL();
- ASSERT_EQUALS(KErrNone, requestStatus.Int());
-
- // Only the voice line is needing this flag.
- if ( !aLineName.Compare( KMmTsyDataLineName ) )
- {
- autoStChangeDisable = EFalse;
- }
- else
- {
- autoStChangeDisable = ETrue;
- }
-
- TMockLtsyCallData2<TInt, TBool> mockData12(callId1, mobileService1, hangUpCause, autoStChangeDisable);
- expectData.Close();
- mockData12.SerialiseL(expectData);
- iMockLTSY.ExpectL(EEtelCallHangUp, expectData);
-
- call1.HangUp(requestStatus);
-
- //Change call1 status to disconnecting
- mobileCallStatus = RMobileCall::EStatusDisconnecting;
- TMockLtsyCallData1<RMobileCall::TMobileCallStatus> mockData13(callId1, mobileService1, mobileCallStatus);
- completeData.Close();
- mockData13.SerialiseL(completeData);
- iMockLTSY.NotifyTerminated(mockLtsyStatus);
- iMockLTSY.CompleteL(EMobileCallNotifyMobileCallStatusChange, KErrNone, completeData);
- User::WaitForRequest(mockLtsyStatus);
- ASSERT_EQUALS(KErrNone, mockLtsyStatus.Int());
-
- //Change call1 status to idle
- mobileCallStatus = RMobileCall::EStatusIdle;
- TMockLtsyCallData1<RMobileCall::TMobileCallStatus> mockData14(callId1, mobileService1, mobileCallStatus);
- completeData.Close();
- mockData14.SerialiseL(completeData);
- iMockLTSY.NotifyTerminated(mockLtsyStatus);
- iMockLTSY.CompleteL(EMobileCallNotifyMobileCallStatusChange, KErrNone, completeData);
-
- // when call becomes idle, remaining duration of the call is added to life time param in LTSY:
- TUint32 duration2 = 4; // this is a dummy value, which won't be checked by mocksy engine
- TMockLtsyData1<TUint32> ltsyData2( duration2 );
- expectData.Close();
- ltsyData2.SerialiseL(expectData);
- iMockLTSY.ExpectL(EMmTsyUpdateLifeTimeIPC, expectData);
-
- User::WaitForRequest(mockLtsyStatus);
- ASSERT_EQUALS(KErrNone, mockLtsyStatus.Int());
-
- //HangUp complete for call1
- User::WaitForRequest(requestStatus);
- AssertMockLtsyStatusL();
- ASSERT_EQUALS(KErrNone, requestStatus.Int());
-
- //-------------------------------------------------------------------------
-
- // Done !
- CleanupStack::PopAndDestroy(8, this); // call2, call1, line2, line1, phone2,
- // completeData, expectData, this
- return KErrNone;
- }
-
-/*
- * Opens a phone subsession by name.
- *
- * @param aPhone The phone from which the line is to be opened.
- * @param On return, contains the new line.
- * @param aName The name of the phone to be opened
- * @return KErrNone if successful, otherwise another of the system-wide error
- */
-
-TInt CCTsyCallControlFU::OpenNewLineLC(RMobilePhone& aPhone, RLine& aLine, const TDesC& aLineName)
- {
- TInt errorCode = KErrNone;
-
- // Open new line
- errorCode = aLine.Open(aPhone, aLineName);
- CleanupClosePushL(aLine);
-
- return errorCode;
- }
-
-/*
- * This function creates an incomming call for line and returns a name of call.
- *
- * @param aLine The line from which the call is to be created.
- * @param aCallId ID of call.
- * @param aIncomingCallName On return, contains the new name of incomming call.
- * @param aMobileService Applicability of request to a mobile service group.
- * @param aMobileCallStatus Describes the possible call states.
- * @return KErrNone if successful, otherwise another of the system-wide error
- */
-
-TInt CCTsyCallControlFU::CreateIncomingCallL(RLine& aLine,
- const TInt aCallId,
- TName& aIncomingCallName,
- RMobilePhone::TMobileService aMobileService,
- RMobileCall::TMobileCallStatus aMobileCallStatus)
- {
- RBuf8 completeData;
-
- TRequestStatus requestNotify;
- TRequestStatus mockLtsyStatus;
-
- //-------------------------------------------------------------------------
- // call CMmVoiceLineTsy::CompleteNotifyIncomingCall for set iCallId > 0.
-
- aLine.NotifyIncomingCall(requestNotify, aIncomingCallName);
-
- iMockLTSY.NotifyTerminated(mockLtsyStatus);
- RMobileCall::TMobileCallInfoV1 mobileCallInfo;
- TMockLtsyCallData1<RMobileCall::TMobileCallInfoV1> mockCallData1(aCallId, aMobileService, mobileCallInfo);
- CleanupClosePushL(completeData);
- mockCallData1.SerialiseL(completeData);
- iMockLTSY.CompleteL(EEtelLineNotifyIncomingCall, KErrNone, completeData);
- User::WaitForRequest(mockLtsyStatus);
- AssertMockLtsyStatusL();
- ASSERT_EQUALS(KErrNone, mockLtsyStatus.Int());
-
- User::WaitForRequest(requestNotify);
- AssertMockLtsyStatusL();
- ASSERT_EQUALS(KErrNone, requestNotify.Int());
-
- //-------------------------------------------------------------------------
-
- //-------------------------------------------------------------------------
- // call CMmVoiceCallTsy::CompleteNotifyStatusChange for set
- // iMobileCallStatus = RMobileCall::EStatusRinging.
- TMockLtsyCallData1<RMobileCall::TMobileCallStatus> mockCallData2(aCallId, aMobileService, aMobileCallStatus);
- completeData.Close();
- mockCallData2.SerialiseL(completeData);
-
- iMockLTSY.NotifyTerminated(mockLtsyStatus);
- iMockLTSY.CompleteL(EMobileCallNotifyMobileCallStatusChange, KErrNone, completeData);
- User::WaitForRequest(mockLtsyStatus);
- AssertMockLtsyStatusL();
- ASSERT_EQUALS(KErrNone, mockLtsyStatus.Int());
- //-------------------------------------------------------------------------
-
- AssertMockLtsyStatusL();
- CleanupStack::PopAndDestroy(1); // completeData
-
- return KErrNone;
- }
-
-/*
- * This function closes an incomming call by aCallId.
- *
- * @param aCall The incomming call which is to be closed.
- * @param aCallId ID of call.
- * @param aMobileService Applicability of request to a mobile service group.
- */
-
-void CCTsyCallControlFU::CloseIncomingCallL(RCall& aCall, const TInt aCallId,
- RMobilePhone::TMobileService aMobileService)
- {
- RBuf8 expectData;
- CleanupClosePushL(expectData);
-
- TInt hangUpCause = KErrGsmReleaseByUser;
- TBool autoStChangeDisable = EFalse;
- TMockLtsyCallData2<TInt, TBool> mockData2(aCallId, aMobileService,
- hangUpCause,
- autoStChangeDisable);
- expectData.Close();
- mockData2.SerialiseL(expectData);
- iMockLTSY.ExpectL(EEtelCallHangUp, expectData);
-
- aCall.Close();
- AssertMockLtsyStatusL();
-
- CleanupStack::PopAndDestroy(1); // expectData
- }
-
-// ExpectL and CopmleteL must precede this function.
-void CCTsyCallControlFU::CallGetMobileCallInfoL(TInt aCallId,
- RMobilePhone::TMobileService aService,
- const TDesC &aTelNumber)
- {
- _LIT(KNullDesC , "");
-
- RBuf8 data;
- CleanupClosePushL(data);
-
- RMobileCall::TMobileCallInfoV1 callInfo;
- callInfo.iDialledParty.iTelNumber.Copy(aTelNumber);
- callInfo.iService = aService;
- callInfo.iEmergency = EFalse;
- callInfo.iRemoteParty.iCallingName = KNullDesC;
- callInfo.iRemoteParty.iRemoteIdStatus = RMobileCall::ERemoteIdentityUnknown;
- callInfo.iRemoteParty.iRemoteNumber.iTelNumber = KNullDesC;
- callInfo.iRemoteParty.iRemoteNumber.iNumberPlan = RMobilePhone::EUnknownNumberingPlan;
- callInfo.iRemoteParty.iRemoteNumber.iTypeOfNumber = RMobilePhone::EUnknownNumber;
- callInfo.iForwarded = EFalse;
- callInfo.iValid = RMobileCall::KCallDialledParty | RMobileCall::KCallRemoteParty;
-
- TMockLtsyCallData1<RMobileCall::TMobileCallInfoV1> callInfoData(aCallId, aService, callInfo);
- callInfoData.SerialiseL(data);
-
- iMockLTSY.CompleteL(EMobileCallGetMobileCallInfo, KErrNone, data);
-
- CleanupStack::PopAndDestroy(1);
- }
-
-/**
-@SYMTestCaseID BA-CTSY-CCON-CEC-0001
-@SYMComponent telephony_ctsy
-@SYMTestCaseDesc Test increase coverage for RLine::EnumerateCall for voice
-@SYMTestPriority High
-@SYMTestActions Invokes RLine::EnumerateCall for voice
-@SYMTestExpectedResults Pass
-@SYMTestType CT
-*/
-void CCTsyCallControlFU::TestEnumerateCall0001L()
- {
- AuxEnumerateCallL(KMmTsyVoice1LineName);
- }
-
-/**
-@SYMTestCaseID BA-CTSY-CCON-CEC-0006
-@SYMComponent telephony_ctsy
-@SYMTestCaseDesc Test increase coverage for RLine::EnumerateCall for data
-@SYMTestPriority High
-@SYMTestActions Invokes RLine::EnumerateCall for data
-@SYMTestExpectedResults Pass
-@SYMTestType CT
-*/
-void CCTsyCallControlFU::TestEnumerateCall0006L()
- {
- AuxEnumerateCallL(KMmTsyDataLineName);
- }
-
-/**
-@SYMTestCaseID BA-CTSY-CCON-CEC-00011
-@SYMComponent telephony_ctsy
-@SYMTestCaseDesc Test increase coverage for RLine::EnumerateCall for fax
-@SYMTestPriority High
-@SYMTestActions Invokes RLine::EnumerateCall for fax
-@SYMTestExpectedResults Pass
-@SYMTestType CT
-*/
-void CCTsyCallControlFU::TestEnumerateCall00011L()
- {
- AuxEnumerateCallL(KMmTsyFaxLineName);
- }
-
-/**
-@SYMTestCaseID BA-CTSY-CCON-CNHC-0001
-@SYMComponent telephony_ctsy
-@SYMTestCaseDesc Test increase coverage for RLine::NotifyHookChange for voice
-@SYMTestPriority High
-@SYMTestActions Invokes RLine::NotifyHookChange for voice
-@SYMTestExpectedResults Pass
-@SYMTestType CT
-*/
-void CCTsyCallControlFU::TestNotifyHookChange0001L()
- {
- AuxNotifyHookChangeL(KMmTsyVoice1LineName);
- }
-
-/**
-@SYMTestCaseID BA-CTSY-CCON-CNHC-0006
-@SYMComponent telephony_ctsy
-@SYMTestCaseDesc Test increase coverage for RLine::NotifyHookChange for data
-@SYMTestPriority High
-@SYMTestActions Invokes RLine::NotifyHookChange for data
-@SYMTestExpectedResults Pass
-@SYMTestType CT
-*/
-void CCTsyCallControlFU::TestNotifyHookChange0006L()
- {
- AuxNotifyHookChangeL(KMmTsyDataLineName);
- }
-
-/**
-@SYMTestCaseID BA-CTSY-CCON-CNHC-00011
-@SYMComponent telephony_ctsy
-@SYMTestCaseDesc Test increase coverage for RLine::NotifyHookChange for fax
-@SYMTestPriority High
-@SYMTestActions Invokes RLine::NotifyHookChange for fax
-@SYMTestExpectedResults Pass
-@SYMTestType CT
-*/
-void CCTsyCallControlFU::TestNotifyHookChange00011L()
- {
- AuxNotifyHookChangeL(KMmTsyFaxLineName);
- }
-
-/**
-@SYMTestCaseID BA-CTSY-CCON-CCNSC-0001
-@SYMComponent telephony_ctsy
-@SYMTestCaseDesc Test increase coverage for CMmLineTsy::CompleteNotifyStatusChange for voice
-@SYMTestPriority High
-@SYMTestActions Invokes CMmLineTsy::CompleteNotifyStatusChange for voice
-@SYMTestExpectedResults Pass
-@SYMTestType CT
-*/
-void CCTsyCallControlFU::TestCompleteNotifyStatusChange0001L()
- {
- AuxCompleteNotifyStatusChangeL(KMmTsyVoice1LineName);
- }
-
-void CCTsyCallControlFU::AuxEnumerateCallL(const TDesC& aName)
- {
-
- if (aName.Compare(KMmTsyVoice1LineName) != 0 &&
- aName.Compare(KMmTsyDataLineName) != 0 &&
- aName.Compare(KMmTsyFaxLineName) != 0)
- return;
-
- OpenEtelServerL(EUseExtendedError);
- CleanupStack::PushL(TCleanupItem(Cleanup,this));
- OpenPhoneL();
-
- RMobileLine line;
-
- // open new line for KMmTsyDataLineName
- TInt errorCode = OpenNewLineLC(iPhone, line, aName);
- ASSERT_EQUALS(KErrNone, errorCode);
-
- TInt index(0);
-
- //-------------------------------------------------------------------------
- // TEST C: Successful completion request of
- // RLine::EnumerateCall when result is not cached.
- //-------------------------------------------------------------------------
-
- errorCode = line.EnumerateCall(index);
- ASSERT_EQUALS(KErrNone, errorCode);
-
- CleanupStack::PopAndDestroy(2, this); // line, this
- }
-
-void CCTsyCallControlFU::AuxNotifyHookChangeL(const TDesC& aName)
- {
-
- if (aName.Compare(KMmTsyVoice1LineName) != 0 &&
- aName.Compare(KMmTsyDataLineName) != 0 &&
- aName.Compare(KMmTsyFaxLineName) != 0)
- return;
-
- OpenEtelServerL(EUseExtendedError);
- CleanupStack::PushL(TCleanupItem(Cleanup,this));
- OpenPhoneL();
-
- RMobileLine line;
-
- TRequestStatus requestStatus;
- TRequestStatus mockLtsyStatus;
-
- RCall::THookStatus hookStatus;
-
- TInt errorCode = OpenNewLineLC(iPhone, line, aName);
- ASSERT_EQUALS(KErrNone, errorCode);
-
- line.NotifyHookChange(requestStatus, hookStatus);
-
- User::WaitForRequest(requestStatus);
- AssertMockLtsyStatusL();
- ASSERT_EQUALS(KErrNotSupported, requestStatus.Int());
-
- line.NotifyHookChangeCancel();
-
- CleanupStack::PopAndDestroy(2, this); // line, this
- }
-
-void CCTsyCallControlFU::AuxCompleteNotifyStatusChangeL(const TDesC& aName)
- {
-
- RMobilePhone::TMobileService mobileService = RMobilePhone::EServiceUnspecified;
-
- if (aName.Compare(KMmTsyVoice1LineName) == 0)
- {
- mobileService = RMobilePhone::EVoiceService;
- }
- else if (aName.Compare(KMmTsyDataLineName) == 0)
- {
- mobileService = RMobilePhone::ECircuitDataService;
- }
- else if (aName.Compare(KMmTsyFaxLineName) == 0)
- {
- mobileService = RMobilePhone::EFaxService;
- }
- else
- return;
-
- OpenEtelServerL(EUseExtendedError);
- CleanupStack::PushL(TCleanupItem(Cleanup,this));
- OpenPhoneL();
-
- RMobileLine line;
- RCall call;
- RMobileCall::TMobileCallStatus mobileCallStatus(RMobileCall::EStatusUnknown);
- TName callName;
- TInt callId(1);
- RBuf8 completeData;
- CleanupClosePushL(completeData);
-
- TRequestStatus mockLtsyStatus;
- TRequestStatus requestNotify;
-
- TInt errorCode = OpenNewLineLC(iPhone, line, aName);
- ASSERT_EQUALS(KErrNone, errorCode);
-
- //-------------------------------------------------------------------------
-
- line.NotifyIncomingCall(requestNotify, callName);
-
- iMockLTSY.NotifyTerminated(mockLtsyStatus);
- RMobileCall::TMobileCallInfoV1 mobileCallInfo;
- TMockLtsyCallData1<RMobileCall::TMobileCallInfoV1> mockCallData1(callId, mobileService, mobileCallInfo);
- mockCallData1.SerialiseL(completeData);
- iMockLTSY.CompleteL(EEtelLineNotifyIncomingCall, KErrNone, completeData);
- User::WaitForRequest(mockLtsyStatus);
- AssertMockLtsyStatusL();
- ASSERT_EQUALS(KErrNone, mockLtsyStatus.Int());
-
- User::WaitForRequest(requestNotify);
- AssertMockLtsyStatusL();
- ASSERT_EQUALS(KErrNone, requestNotify.Int());
-
- RArray<RMobileCall::TMobileCallStatus> arrayCallStatus;
- CleanupClosePushL(arrayCallStatus);
-
- arrayCallStatus.AppendL(RMobileCall::EStatusDialling);
- arrayCallStatus.AppendL(RMobileCall::EStatusAnswering);
- arrayCallStatus.AppendL(RMobileCall::EStatusConnecting);
-
- for (TInt i = 0; i < arrayCallStatus.Count(); i++)
- {
-
- mobileCallStatus = arrayCallStatus[i];
-
- TMockLtsyCallData1<RMobileCall::TMobileCallStatus> mockCallData2(callId, mobileService, mobileCallStatus);
- completeData.Close();
- mockCallData2.SerialiseL(completeData);
-
- iMockLTSY.NotifyTerminated(mockLtsyStatus);
- iMockLTSY.CompleteL(EMobileCallNotifyMobileCallStatusChange, KErrNone, completeData);
- User::WaitForRequest(mockLtsyStatus);
- AssertMockLtsyStatusL();
- ASSERT_EQUALS(KErrNone, mockLtsyStatus.Int());
-
- }
-
- CleanupStack::PopAndDestroy(4, this); // line, this, completeName
- // arrayCallStatus
- }
-
-/**
-@SYMTestCaseID BA-CTSY-CCON-CNUA-0001
-@SYMComponent telephony_ctsy
-@SYMTestCaseDesc Test: generating a call with duration to update life time param of total call time
-@SYMTestPriority High
-@SYMTestActions Invokes updating life time param with every specified interval of sec elapsed
- and with the reminder of time when call status becomes idle (in case of the conference call
- it's the last call)
-@SYMTestExpectedResults Pass
-@SYMTestType CT
-*/
-void CCTsyCallControlFU::TestUpdateLifeTime0001L()
- {
-
- OpenEtelServerL(EUseExtendedError);
- CleanupStack::PushL(TCleanupItem(Cleanup,this));
- OpenPhoneL();
-
- RBuf8 expectData;
- CleanupClosePushL(expectData);
-
- RBuf8 completeData;
- CleanupClosePushL(completeData);
-
- RLine line;
- RMobileCall call;
-
- TInt errorCode = KErrNone;
- TRequestStatus requestStatus;
- TRequestStatus requestStatus2;
- TRequestStatus mockLtsyStatus;
-
- // open new line and call for KMmTsyVoice1LineName
- errorCode = OpenNewLineLC(iPhone, line, KMmTsyVoice1LineName);
- ASSERT_EQUALS(KErrNone, errorCode);
-
- TName name;
-
- // we are preparing to dial the call:
-
- _LIT(KPhoneNumber, "101632960000");
-
- TInt callId = 1;
- RMobilePhone::TMobileService mobileService = RMobilePhone::EVoiceService;
-
- RMobileCall::TMobileCallParamsV7 callParams;
- RMobileCall::TMobileCallParamsV7Pckg pckgCallParams(callParams);
- RMobileCall::TMobileCallInfoV8 callInfo;
- callParams.iSpeakerControl = RCall::EMonitorSpeakerControlOnUntilCarrier;
- callParams.iSpeakerVolume = RCall::EMonitorSpeakerVolumeLow;
- callParams.iInterval = 100;
- callParams.iWaitForDialTone = RCall::EDialToneWait;
- callParams.iIdRestrict = RMobileCall::EIdRestrictDefault;
- callParams.iCug.iExplicitInvoke = EFalse;
- callParams.iCug.iCugIndex = 0xFFFF;
- callParams.iCug.iSuppressPrefCug = EFalse;
- callParams.iCug.iSuppressOA = EFalse;
- callParams.iAutoRedial = EFalse;
-
- callInfo.iValid = RMobileCall::KCallDialledParty | RMobileCall::KCallAlternating;
- callInfo.iService = mobileService;
- callInfo.iStatus = RMobileCall::EStatusUnknown;
- callInfo.iCallId =-1;
- callInfo.iExitCode =0;
- callInfo.iEmergency =0;
- callInfo.iForwarded =0;
- callInfo.iPrivacy = RMobilePhone::EPrivacyUnspecified;
- callInfo.iAlternatingCall = RMobilePhone::EAlternatingModeUnspecified;
- callInfo.iDialledParty.iTelNumber.Copy(KPhoneNumber);
-
- TMockLtsyCallData2<RMobileCall::TMobileCallParamsV1, RMobileCall::TMobileCallInfoV1>
- mockData2(0, mobileService, callParams, callInfo);
-
- TMockLtsyCallData0 mockData0(callId, mobileService);
-
- RCall::TCallParams callDialParams;
- TPckg<RCall::TCallParams> pckgCallDialParams(callDialParams);
- callDialParams.iSpeakerControl = RCall::EMonitorSpeakerControlOnUntilCarrier;
- callDialParams.iSpeakerVolume = RCall::EMonitorSpeakerVolumeLow;
- callDialParams.iInterval = 100;
- callDialParams.iWaitForDialTone = RCall::EDialToneWait;
-
- // open new call
- CleanupClosePushL(call);
- errorCode = call.OpenNewCall(line, name);
- ASSERT_EQUALS(KErrNone, errorCode);
-
- expectData.Close();
- mockData2.SerialiseL(expectData);
- iMockLTSY.ExpectL(EEtelCallDial, expectData);
-
- CallGetMobileCallInfoL(callId, mobileService, KPhoneNumber);
-
- completeData.Close();
- mockData0.SerialiseL(completeData);
- iMockLTSY.CompleteL(EEtelCallDial, KErrNone, completeData);
-
- // with a notifications we make sure the state of the call will become: connected
- TRequestStatus reqState1, reqState2, reqState3;
- RMobileCall::TMobileCallStatus status;
- call.NotifyMobileCallStatusChange(reqState1, status);
-
- // we are dialing the call:
- call.Dial(requestStatus, pckgCallDialParams, KPhoneNumber);
-
- RMobileCall::TMobileCallStatus mobileCallStatus = RMobileCall::EStatusDialling;
- TMockLtsyCallData1<RMobileCall::TMobileCallStatus> mockCallData4(callId, mobileService, mobileCallStatus);
- completeData.Close();
- mockCallData4.SerialiseL(completeData);
-
- iMockLTSY.NotifyTerminated(mockLtsyStatus);
- iMockLTSY.CompleteL(EMobileCallNotifyMobileCallStatusChange, KErrNone, completeData);
- User::WaitForRequest(mockLtsyStatus);
- AssertMockLtsyStatusL();
- ASSERT_EQUALS(KErrNone, mockLtsyStatus.Int());
-
- User::WaitForRequest(reqState1);
- call.NotifyMobileCallStatusChange(reqState2, status);
-
- mobileCallStatus = RMobileCall::EStatusConnecting;
- TMockLtsyCallData1<RMobileCall::TMobileCallStatus> mockCallData5(callId, mobileService, mobileCallStatus);
- completeData.Close();
- mockCallData5.SerialiseL(completeData);
-
- iMockLTSY.NotifyTerminated(mockLtsyStatus);
- iMockLTSY.CompleteL(EMobileCallNotifyMobileCallStatusChange, KErrNone, completeData);
- User::WaitForRequest(mockLtsyStatus);
- AssertMockLtsyStatusL();
- ASSERT_EQUALS(KErrNone, mockLtsyStatus.Int());
-
- User::WaitForRequest(reqState2);
- call.NotifyMobileCallStatusChange(reqState3, status);
-
- mobileCallStatus = RMobileCall::EStatusConnected;
- TMockLtsyCallData1<RMobileCall::TMobileCallStatus> mockCallData6(callId, mobileService, mobileCallStatus);
- completeData.Close();
- mockCallData6.SerialiseL(completeData);
-
- iMockLTSY.NotifyTerminated(mockLtsyStatus);
- iMockLTSY.CompleteL(EMobileCallNotifyMobileCallStatusChange, KErrNone, completeData);
- User::WaitForRequest(mockLtsyStatus);
- AssertMockLtsyStatusL();
- ASSERT_EQUALS(KErrNone, mockLtsyStatus.Int());
-
- // status call becomes 'connected' here...
-
- User::WaitForRequest(reqState3);
-
- // completion of the Dial() request:
- User::WaitForRequest(requestStatus);
-
- // Here we will trigger call duration of 15sec. Timer interval causing update
- // of life time parameter is set to 10 sec: so we will have a one update caused
- // by firing timer. The remainding duration ~5sec will be triggered by
- // the call status becoming idle.
- TUint32 duration = 10;
- TMockLtsyData1<TUint32> ltsyData( duration );
- expectData.Close();
- ltsyData.SerialiseL(expectData);
- // firing timer will cause this:
- iMockLTSY.ExpectL(EMmTsyUpdateLifeTimeIPC, expectData);
-
- // 15 sec call duration was chosen to trigger timer firing 1 update plus last update,
- // when call becomes idle...
- User::After(15000000);
-
- // completion of the timer firing event:
- TRequestStatus mockLtsyStatus2;
- iMockLTSY.NotifyTerminated(mockLtsyStatus2);
- iMockLTSY.CompleteL(EMmTsyUpdateLifeTimeIPC, KErrNone);
-
- User::WaitForRequest(mockLtsyStatus2);
- ASSERT_EQUALS(KErrNone, mockLtsyStatus2.Int());
- AssertMockLtsyStatusL();
-
- //
-
- // preparing call state to become 'idle' eventually:
- TRequestStatus notifyCallStatus;
- RMobileCall::TMobileCallStatus callStatus = RMobileCall::EStatusUnknown;
- call.NotifyMobileCallStatusChange(notifyCallStatus, callStatus);
-
- // hangup call is going to LTSY:
- TInt hangUpCause = KErrGsmReleaseByUser;
- TBool autoStChangeDisable = ETrue;
- TMockLtsyCallData2<TInt, TBool> mockData3(callId, mobileService,
- hangUpCause,
- autoStChangeDisable);
- expectData.Close();
- mockData3.SerialiseL(expectData);
- iMockLTSY.ExpectL(EEtelCallHangUp, expectData);
-
- TRequestStatus hangupStatus;
- call.HangUp(hangupStatus); //<--------- hang up triggers status changes
-
- callStatus = RMobileCall::EStatusDisconnecting;
- TMockLtsyCallData1<RMobileCall::TMobileCallStatus> mockCallData7(callId, mobileService, callStatus);
- completeData.Close();
- mockCallData7.SerialiseL(completeData);
-
- iMockLTSY.NotifyTerminated(mockLtsyStatus);
- iMockLTSY.CompleteL(EMobileCallNotifyMobileCallStatusChange, KErrNone, completeData);
- User::WaitForRequest(mockLtsyStatus);
- AssertMockLtsyStatusL();
- ASSERT_EQUALS(KErrNone, mockLtsyStatus.Int());
-
- User::WaitForRequest(notifyCallStatus);
- ASSERT_EQUALS(KErrNone, notifyCallStatus.Int());
- ASSERT_EQUALS(RMobileCall::EStatusDisconnecting, callStatus); // <------------disconnecting status
-
- call.NotifyMobileCallStatusChange(notifyCallStatus, callStatus);
-
- callStatus = RMobileCall::EStatusIdle;
- TMockLtsyCallData1<RMobileCall::TMobileCallStatus> mockCallData8(callId, mobileService, callStatus);
- completeData.Close();
- mockCallData8.SerialiseL(completeData);
-
- iMockLTSY.NotifyTerminated(mockLtsyStatus);
- iMockLTSY.CompleteL(EMobileCallNotifyMobileCallStatusChange, KErrNone, completeData);
-
- // when call becomes idle, remaining duration of the call is added to life time param in LTSY:
- TUint32 duration2 = 4; // this is a dummy value, which won't be checked by mocksy engine
- TMockLtsyData1<TUint32> ltsyData2( duration2 );
- expectData.Close();
- ltsyData2.SerialiseL(expectData);
- iMockLTSY.ExpectL(EMmTsyUpdateLifeTimeIPC, expectData);
-
- User::WaitForRequest(mockLtsyStatus);
- // we did set a sleep time for 15sec, but after stopping timer it may give us 14 sec or 15 sec
- // we can not determine the correct value for the mockLTSY;
- // we tell mocksy engine to ignore duration param value
- AssertMockLtsyStatusL();
- ASSERT_EQUALS(KErrNone, mockLtsyStatus.Int());
-
- User::WaitForRequest(notifyCallStatus);
- ASSERT_EQUALS(KErrNone, notifyCallStatus.Int());
- ASSERT_EQUALS(RMobileCall::EStatusIdle, callStatus); // <-------- idle status
-
- User::WaitForRequest(hangupStatus);
- ASSERT_EQUALS(KErrNone, hangupStatus.Int()); // <--- then hang up is finished
-
- call.GetMobileCallStatus(callStatus);
- ASSERT_EQUALS(RMobileCall::EStatusIdle, callStatus);
-
- //
-
- TRequestStatus mockLtsyStatus3;
- iMockLTSY.NotifyTerminated(mockLtsyStatus3);
- iMockLTSY.CompleteL(EMmTsyUpdateLifeTimeIPC, KErrNone);
-
- User::WaitForRequest(mockLtsyStatus3);
- ASSERT_EQUALS(KErrNone, mockLtsyStatus3.Int());
-
- call.Close();
-
- AssertMockLtsyStatusL();
- CleanupStack::PopAndDestroy(1);
- CleanupStack::PopAndDestroy(4, this);
- }
-
-
-
+// Copyright (c) 2007-2009 Nokia Corporation and/or its subsidiary(-ies).
+// All rights reserved.
+// This component and the accompanying materials are made available
+// under the terms of "Eclipse Public License v1.0"
+// which accompanies this distribution, and is available
+// at the URL "http://www.eclipse.org/legal/epl-v10.html".
+//
+// Initial Contributors:
+// Nokia Corporation - initial contribution.
+//
+// Contributors:
+//
+// Description:
+// The TEFUnit test suite for CallControl in the Common TSY.
+//
+//
+
+/**
+ @file
+*/
+
+#include "cctsycallcontrolfu.h"
+#include <etel.h>
+#include <etelmm.h>
+#include <et_clsvr.h>
+#include <ctsy/mmtsy_names.h>
+#include <ctsy/serviceapi/mmtsy_ipcdefs.h>
+#include "tmockltsydata.h"
+#include <ctsy/serviceapi/gsmerror.h>
+#include <etelmmerr.h>
+#include "MmTsy_timeoutdefs.h"
+
+CTestSuite* CCTsyCallControlFU::CreateSuiteL(const TDesC& aName)
+ {
+ SUB_SUITE;
+
+ ADD_TEST_STEP_ISO_CPP(CCTsyCallControlFU, TestAnswerIncomingCall0001L);
+ ADD_TEST_STEP_ISO_CPP(CCTsyCallControlFU, TestAnswerIncomingCall0002L);
+ ADD_TEST_STEP_ISO_CPP(CCTsyCallControlFU, TestAnswerIncomingCall0004L);
+ ADD_TEST_STEP_ISO_CPP(CCTsyCallControlFU, TestAnswerIncomingCall0005L);
+ ADD_TEST_STEP_ISO_CPP(CCTsyCallControlFU, TestAnswerIncomingCall0006L);
+ ADD_TEST_STEP_ISO_CPP(CCTsyCallControlFU, TestAnswerIncomingCall0007L);
+ ADD_TEST_STEP_ISO_CPP(CCTsyCallControlFU, TestAnswerIncomingCall0008L);
+ ADD_TEST_STEP_ISO_CPP(CCTsyCallControlFU, TestAnswerIncomingCall0009L);
+ ADD_TEST_STEP_ISO_CPP(CCTsyCallControlFU, TestAnswerIncomingCall00010L);
+ ADD_TEST_STEP_ISO_CPP(CCTsyCallControlFU, TestAnswerIncomingCall00011L);
+ ADD_TEST_STEP_ISO_CPP(CCTsyCallControlFU, TestDial0001L);
+ ADD_TEST_STEP_ISO_CPP(CCTsyCallControlFU, TestDial0001bL);
+ ADD_TEST_STEP_ISO_CPP(CCTsyCallControlFU, TestDial0001cL);
+ ADD_TEST_STEP_ISO_CPP(CCTsyCallControlFU, TestDial0002L);
+ ADD_TEST_STEP_ISO_CPP(CCTsyCallControlFU, TestDial0003L);
+ ADD_TEST_STEP_ISO_CPP(CCTsyCallControlFU, TestDial0004L);
+ ADD_TEST_STEP_ISO_CPP(CCTsyCallControlFU, TestDial0005L);
+ ADD_TEST_STEP_ISO_CPP(CCTsyCallControlFU, TestDial0006L);
+ ADD_TEST_STEP_ISO_CPP(CCTsyCallControlFU, TestDial0006bL);
+ ADD_TEST_STEP_ISO_CPP(CCTsyCallControlFU, TestDial0006cL);
+ ADD_TEST_STEP_ISO_CPP(CCTsyCallControlFU, TestDial0006dL);
+ ADD_TEST_STEP_ISO_CPP(CCTsyCallControlFU, TestDial0006eL);
+ ADD_TEST_STEP_ISO_CPP(CCTsyCallControlFU, TestDial0006fL);
+ ADD_TEST_STEP_ISO_CPP(CCTsyCallControlFU, TestDial0006gL);
+ ADD_TEST_STEP_ISO_CPP(CCTsyCallControlFU, TestDial0006hL);
+ ADD_TEST_STEP_ISO_CPP(CCTsyCallControlFU, TestDial0006iL);
+ ADD_TEST_STEP_ISO_CPP(CCTsyCallControlFU, TestDial0007L);
+ ADD_TEST_STEP_ISO_CPP(CCTsyCallControlFU, TestDial0008L);
+ ADD_TEST_STEP_ISO_CPP(CCTsyCallControlFU, TestDial0009L);
+ ADD_TEST_STEP_ISO_CPP(CCTsyCallControlFU, TestDial0009bL);
+ ADD_TEST_STEP_ISO_CPP(CCTsyCallControlFU, TestDial0009cL);
+ ADD_TEST_STEP_ISO_CPP(CCTsyCallControlFU, TestDial00010L);
+ ADD_TEST_STEP_ISO_CPP(CCTsyCallControlFU, TestDial00011L);
+ ADD_TEST_STEP_ISO_CPP(CCTsyCallControlFU, TestHangUp0001L);
+ ADD_TEST_STEP_ISO_CPP(CCTsyCallControlFU, TestHangUp0002L);
+ ADD_TEST_STEP_ISO_CPP(CCTsyCallControlFU, TestHangUp0004L);
+ ADD_TEST_STEP_ISO_CPP(CCTsyCallControlFU, TestHangUp0005L);
+ ADD_TEST_STEP_ISO_CPP(CCTsyCallControlFU, TestHangUp0006L);
+ ADD_TEST_STEP_ISO_CPP(CCTsyCallControlFU, TestHangUp0007L);
+ ADD_TEST_STEP_ISO_CPP(CCTsyCallControlFU, TestHangUp0009L);
+ ADD_TEST_STEP_ISO_CPP(CCTsyCallControlFU, TestHangUp00010L);
+ ADD_TEST_STEP_ISO_CPP(CCTsyCallControlFU, TestHangUp00011L);
+ ADD_TEST_STEP_ISO_CPP(CCTsyCallControlFU, TestHangUp00011bL);
+ ADD_TEST_STEP_ISO_CPP(CCTsyCallControlFU, TestHangUp00011cL);
+ ADD_TEST_STEP_ISO_CPP(CCTsyCallControlFU, TestHangUp00012L);
+ ADD_TEST_STEP_ISO_CPP(CCTsyCallControlFU, TestHangUp00014L);
+ ADD_TEST_STEP_ISO_CPP(CCTsyCallControlFU, TestHangUp00015L);
+ ADD_TEST_STEP_ISO_CPP(CCTsyCallControlFU, TestHold0001L);
+ ADD_TEST_STEP_ISO_CPP(CCTsyCallControlFU, TestHold0002L);
+ ADD_TEST_STEP_ISO_CPP(CCTsyCallControlFU, TestHold0004L);
+ ADD_TEST_STEP_ISO_CPP(CCTsyCallControlFU, TestHold0005L);
+ ADD_TEST_STEP_ISO_CPP(CCTsyCallControlFU, TestHold0006L);
+ ADD_TEST_STEP_ISO_CPP(CCTsyCallControlFU, TestHold00011L);
+ ADD_TEST_STEP_ISO_CPP(CCTsyCallControlFU, TestHold0001aL);
+ ADD_TEST_STEP_ISO_CPP(CCTsyCallControlFU, TestSwap0001L);
+ ADD_TEST_STEP_ISO_CPP(CCTsyCallControlFU, TestSwap0002L);
+ ADD_TEST_STEP_ISO_CPP(CCTsyCallControlFU, TestSwap0004L);
+ ADD_TEST_STEP_ISO_CPP(CCTsyCallControlFU, TestSwap0005L);
+ ADD_TEST_STEP_ISO_CPP(CCTsyCallControlFU, TestSwap0006L);
+ ADD_TEST_STEP_ISO_CPP(CCTsyCallControlFU, TestSwap00011L);
+ ADD_TEST_STEP_ISO_CPP(CCTsyCallControlFU, TestResume0001L);
+ ADD_TEST_STEP_ISO_CPP(CCTsyCallControlFU, TestResume0002L);
+ ADD_TEST_STEP_ISO_CPP(CCTsyCallControlFU, TestResume0004L);
+ ADD_TEST_STEP_ISO_CPP(CCTsyCallControlFU, TestResume0005L);
+ ADD_TEST_STEP_ISO_CPP(CCTsyCallControlFU, TestResume0006L);
+ ADD_TEST_STEP_ISO_CPP(CCTsyCallControlFU, TestResume00011L);
+ ADD_TEST_STEP_ISO_CPP(CCTsyCallControlFU, TestDeflect0001L);
+ ADD_TEST_STEP_ISO_CPP(CCTsyCallControlFU, TestDeflect0002L);
+ ADD_TEST_STEP_ISO_CPP(CCTsyCallControlFU, TestDeflect0003L);
+ ADD_TEST_STEP_ISO_CPP(CCTsyCallControlFU, TestTransfer0001L);
+ ADD_TEST_STEP_ISO_CPP(CCTsyCallControlFU, TestTransfer0002L);
+ ADD_TEST_STEP_ISO_CPP(CCTsyCallControlFU, TestTransfer0004L);
+ ADD_TEST_STEP_ISO_CPP(CCTsyCallControlFU, TestTransfer0005L);
+ ADD_TEST_STEP_ISO_CPP(CCTsyCallControlFU, TestTransfer0006L);
+ ADD_TEST_STEP_ISO_CPP(CCTsyCallControlFU, TestTransfer0009L);
+ ADD_TEST_STEP_ISO_CPP(CCTsyCallControlFU, TestTransfer00011L);
+ ADD_TEST_STEP_ISO_CPP(CCTsyCallControlFU, TestTerminateAllCalls0001L);
+ ADD_TEST_STEP_ISO_CPP(CCTsyCallControlFU, TestTerminateAllCalls0002L);
+ ADD_TEST_STEP_ISO_CPP(CCTsyCallControlFU, TestTerminateAllCalls0004L);
+ ADD_TEST_STEP_ISO_CPP(CCTsyCallControlFU, TestTerminateAllCalls0005L);
+ ADD_TEST_STEP_ISO_CPP(CCTsyCallControlFU, TestTerminateActiveCalls0001L);
+ ADD_TEST_STEP_ISO_CPP(CCTsyCallControlFU, TestTerminateActiveCalls0001bL);
+ ADD_TEST_STEP_ISO_CPP(CCTsyCallControlFU, TestTerminateActiveCalls0001cL);
+ ADD_TEST_STEP_ISO_CPP(CCTsyCallControlFU, TestTerminateActiveCalls0002L);
+ ADD_TEST_STEP_ISO_CPP(CCTsyCallControlFU, TestTerminateActiveCalls0004L);
+ ADD_TEST_STEP_ISO_CPP(CCTsyCallControlFU, TestTerminateActiveCalls0005L);
+ ADD_TEST_STEP_ISO_CPP(CCTsyCallControlFU, TestSetIncomingCallType0001L);
+ ADD_TEST_STEP_ISO_CPP(CCTsyCallControlFU, TestAnswerIncomingCallISV0001L);
+ ADD_TEST_STEP_ISO_CPP(CCTsyCallControlFU, TestAnswerIncomingCallISV0002L);
+ ADD_TEST_STEP_ISO_CPP(CCTsyCallControlFU, TestAnswerIncomingCallISV0004L);
+ ADD_TEST_STEP_ISO_CPP(CCTsyCallControlFU, TestAnswerIncomingCallISV0005L);
+ ADD_TEST_STEP_ISO_CPP(CCTsyCallControlFU, TestAnswerIncomingCallISV0006L);
+ ADD_TEST_STEP_ISO_CPP(CCTsyCallControlFU, TestAnswerIncomingCallISV00011L);
+ ADD_TEST_STEP_ISO_CPP(CCTsyCallControlFU, TestDialISV0001L);
+ ADD_TEST_STEP_ISO_CPP(CCTsyCallControlFU, TestDialISV0006L);
+ ADD_TEST_STEP_ISO_CPP(CCTsyCallControlFU, TestDialISV00011L);
+ ADD_TEST_STEP_ISO_CPP(CCTsyCallControlFU, TestDialCallControl0001L);
+ ADD_TEST_STEP_ISO_CPP(CCTsyCallControlFU, TestDialCallControl0006L);
+ ADD_TEST_STEP_ISO_CPP(CCTsyCallControlFU, TestDialCallControl00011L);
+ ADD_TEST_STEP_ISO_CPP(CCTsyCallControlFU, TestEnumerateCall0001L);
+ ADD_TEST_STEP_ISO_CPP(CCTsyCallControlFU, TestEnumerateCall0006L);
+ ADD_TEST_STEP_ISO_CPP(CCTsyCallControlFU, TestEnumerateCall00011L);
+ ADD_TEST_STEP_ISO_CPP(CCTsyCallControlFU, TestNotifyHookChange0001L);
+ ADD_TEST_STEP_ISO_CPP(CCTsyCallControlFU, TestNotifyHookChange0006L);
+ ADD_TEST_STEP_ISO_CPP(CCTsyCallControlFU, TestNotifyHookChange00011L);
+ ADD_TEST_STEP_ISO_CPP(CCTsyCallControlFU, TestCompleteNotifyStatusChange0001L);
+ ADD_TEST_STEP_ISO_CPP(CCTsyCallControlFU, TestUpdateLifeTime0001L);
+
+ END_SUITE;
+ }
+
+
+//
+// Actual test cases
+//
+
+
+/**
+@SYMTestCaseID BA-CTSY-CCON-CAIC-0001
+@SYMComponent telephony_ctsy
+@SYMTestCaseDesc Test support in CTSY for RCall::AnswerIncomingCall for voice calls
+@SYMTestPriority High
+@SYMTestActions Invokes RCall::AnswerIncomingCall for voice calls
+@SYMTestExpectedResults Pass
+@SYMTestType CT
+*/
+void CCTsyCallControlFU::TestAnswerIncomingCall0001L()
+ {
+
+ OpenEtelServerL(EUseExtendedError);
+ CleanupStack::PushL(TCleanupItem(Cleanup,this));
+ OpenPhoneL();
+
+ RBuf8 expectData;
+ CleanupClosePushL(expectData);
+
+ RBuf8 completeData;
+ CleanupClosePushL(completeData);
+
+ RLine line;
+ RCall call;
+ CleanupClosePushL(call);
+
+ TInt errorCode = KErrNone;
+ TInt callId = 1;
+ TName incomingCallName;
+ TRequestStatus requestStatus;
+ TRequestStatus requestNotify;
+
+ // open new line and call for KMmTsyVoice1LineName
+ errorCode = OpenNewLineLC(iPhone, line, KMmTsyVoice1LineName);
+ ASSERT_EQUALS(KErrNone, errorCode);
+
+ RMobileCall::TMobileCallStatus mobileCallStatus = RMobileCall::EStatusRinging;
+ RMobilePhone::TMobileService mobileService = RMobilePhone::EVoiceService;
+
+ //-------------------------------------------------------------------------
+ // TEST A: failure to dispatch request to LTSY
+ //-------------------------------------------------------------------------
+
+ //-------------------------------------------------------------------------
+ // create new incoming call
+ errorCode = CreateIncomingCallL(line, callId, incomingCallName,
+ mobileService, mobileCallStatus);
+ ASSERT_EQUALS(KErrNone, errorCode);
+
+ errorCode = call.OpenExistingCall(line, incomingCallName);
+ ASSERT_EQUALS(KErrNone, errorCode);
+ //-------------------------------------------------------------------------
+
+ TMockLtsyCallData0 mockData0(callId, mobileService);
+
+ expectData.Close();
+ mockData0.SerialiseL(expectData);
+ iMockLTSY.ExpectL(EEtelCallAnswer, expectData, KErrNotSupported);
+
+ RMobileCall::TMobileCallParamsV1 callParamsV1;
+ TPckg<RMobileCall::TMobileCallParamsV1> mmParamsPckgV1(callParamsV1);
+ call.AnswerIncomingCall(requestStatus, mmParamsPckgV1);
+
+ User::WaitForRequest(requestStatus);
+ AssertMockLtsyStatusL();
+ ASSERT_EQUALS(KErrNotSupported, requestStatus.Int());
+
+ // close incoming call
+ CloseIncomingCallL(call, callId, mobileService);
+
+ //-------------------------------------------------------------------------
+ // TEST B: failure on completion of pending request from LTSY->CTSY
+ //-------------------------------------------------------------------------
+
+ //-------------------------------------------------------------------------
+ // create new incoming call
+ errorCode = CreateIncomingCallL(line, callId, incomingCallName,
+ mobileService, mobileCallStatus);
+ ASSERT_EQUALS(KErrNone, errorCode);
+ AssertMockLtsyStatusL();
+
+ errorCode = call.OpenExistingCall(line, incomingCallName);
+ ASSERT_EQUALS(KErrNone, errorCode);
+ AssertMockLtsyStatusL();
+ //-------------------------------------------------------------------------
+
+ expectData.Close();
+ mockData0.SerialiseL(expectData);
+ iMockLTSY.ExpectL(EEtelCallAnswer, expectData);
+ iMockLTSY.CompleteL(EEtelCallAnswer, KErrGeneral, expectData);
+ call.AnswerIncomingCall(requestStatus, mmParamsPckgV1);
+
+ User::WaitForRequest(requestStatus);
+ AssertMockLtsyStatusL();
+ ASSERT_EQUALS(KErrGeneral, requestStatus.Int());
+
+ // close incoming call
+ CloseIncomingCallL(call, callId, mobileService);
+
+ //-------------------------------------------------------------------------
+ // TEST C: Successful completion request of
+ // RCall::AnswerIncomingCall when result is not cached.
+ //-------------------------------------------------------------------------
+
+ //-------------------------------------------------------------------------
+ // create new incoming call
+ errorCode = CreateIncomingCallL(line, callId, incomingCallName,
+ mobileService, mobileCallStatus);
+ ASSERT_EQUALS(KErrNone, errorCode);
+ AssertMockLtsyStatusL();
+
+ errorCode = call.OpenExistingCall(line, incomingCallName);
+ ASSERT_EQUALS(KErrNone, errorCode);
+ AssertMockLtsyStatusL();
+ //-------------------------------------------------------------------------
+
+ expectData.Close();
+ mockData0.SerialiseL(expectData);
+ iMockLTSY.ExpectL(EEtelCallAnswer, expectData);
+ iMockLTSY.CompleteL(EEtelCallAnswer, KErrNone, expectData);
+ call.AnswerIncomingCall(requestStatus, mmParamsPckgV1);
+
+ User::WaitForRequest(requestStatus);
+ AssertMockLtsyStatusL();
+ ASSERT_EQUALS(KErrNone, requestStatus.Int());
+
+ // close incoming call
+ CloseIncomingCallL(call, callId, mobileService);
+
+ //-------------------------------------------------------------------------
+ // TEST E: Unsolicited completion of RCall::AnswerIncomingCall
+ // from LTSY.
+ //-------------------------------------------------------------------------
+
+ TRequestStatus mockLtsyStatus;
+
+ iMockLTSY.NotifyTerminated(mockLtsyStatus);
+ expectData.Close();
+ mockData0.SerialiseL(expectData);
+ iMockLTSY.CompleteL(EEtelCallAnswer, KErrNone, expectData);
+ User::WaitForRequest(mockLtsyStatus);
+ AssertMockLtsyStatusL();
+ ASSERT_EQUALS(KErrNone, mockLtsyStatus.Int());
+
+ //-------------------------------------------------------------------------
+ // TEST : Call AnswerIncomingCall with null description
+ //-------------------------------------------------------------------------
+
+ //-------------------------------------------------------------------------
+ // create new incoming call
+ errorCode = CreateIncomingCallL(line, callId, incomingCallName,
+ mobileService, mobileCallStatus);
+ ASSERT_EQUALS(KErrNone, errorCode);
+ AssertMockLtsyStatusL();
+
+ errorCode = call.OpenExistingCall(line, incomingCallName);
+ ASSERT_EQUALS(KErrNone, errorCode);
+ AssertMockLtsyStatusL();
+ //-------------------------------------------------------------------------
+
+ expectData.Close();
+ mockData0.SerialiseL(expectData);
+ iMockLTSY.ExpectL(EEtelCallAnswer, expectData);
+ iMockLTSY.CompleteL(EEtelCallAnswer, KErrNone, expectData);
+
+ TPtr8 null(NULL,0);
+ call.AnswerIncomingCall(requestStatus, null);
+
+ User::WaitForRequest(requestStatus);
+ AssertMockLtsyStatusL();
+ ASSERT_EQUALS(KErrNone, requestStatus.Int());
+
+ // close incoming call
+ CloseIncomingCallL(call, callId, mobileService);
+
+ //-------------------------------------------------------------------------
+ // TEST : to increase CMmVoiceCallTsy::AnswerIncomingCall coverage
+ // covers "if ( 0 < answerCallHandle )" condition
+ //-------------------------------------------------------------------------
+
+ RCall call2;
+ CleanupClosePushL(call2);
+ TRequestStatus requestStatus2;
+
+ //-------------------------------------------------------------------------
+ // create new incoming call
+ errorCode = CreateIncomingCallL(line, callId, incomingCallName,
+ mobileService, mobileCallStatus);
+ ASSERT_EQUALS(KErrNone, errorCode);
+ AssertMockLtsyStatusL();
+
+ errorCode = call.OpenExistingCall(line, incomingCallName);
+ ASSERT_EQUALS(KErrNone, errorCode);
+ AssertMockLtsyStatusL();
+ //-------------------------------------------------------------------------
+
+ //-------------------------------------------------------------------------
+ errorCode = call2.OpenExistingCall(line, incomingCallName);
+ ASSERT_EQUALS(KErrNone, errorCode);
+ AssertMockLtsyStatusL();
+ //-------------------------------------------------------------------------
+
+ expectData.Close();
+ mockData0.SerialiseL(expectData);
+ iMockLTSY.ExpectL(EEtelCallAnswer, expectData);
+ iMockLTSY.CompleteL(EEtelCallAnswer, KErrNone, expectData);
+ call.AnswerIncomingCall(requestStatus, mmParamsPckgV1);
+
+ call2.AnswerIncomingCall(requestStatus2, mmParamsPckgV1);
+
+ User::WaitForRequest(requestStatus);
+ ASSERT_EQUALS(KErrNone, requestStatus.Int());
+
+ User::WaitForRequest(requestStatus2);
+ ASSERT_EQUALS(KErrServerBusy, requestStatus2.Int());
+
+ call.Close();
+
+ CloseIncomingCallL(call2, callId, mobileService);
+ AssertMockLtsyStatusL();
+
+ //-------------------------------------------------------------------------
+ // TEST : to increase CMmVoiceCallTsy::AnswerIncomingCall coverage
+ // covers "else if( activeCall &&
+ // ( !( KETelExt3rdPartyV1 == activeCall->GetExtensionId() ) &&
+ // ( KETelExt3rdPartyV1 == extensionId ) ) )" condition
+ //-------------------------------------------------------------------------
+
+ mobileCallStatus = RMobileCall::EStatusRinging;
+
+ // create new incoming call1
+ errorCode = CreateIncomingCallL(line, callId, incomingCallName,
+ mobileService, mobileCallStatus);
+ ASSERT_EQUALS(KErrNone, errorCode);
+ AssertMockLtsyStatusL();
+
+ RMobileCall call1;
+ CleanupClosePushL(call1);
+ errorCode = call1.OpenExistingCall(line, incomingCallName);
+ ASSERT_EQUALS(KErrNone, errorCode);
+ AssertMockLtsyStatusL();
+
+ //-------------------------------------------------------------------------
+
+ TName incomingCallName2;
+ TInt callId2 = 2;
+ mobileCallStatus = RMobileCall::EStatusConnected;
+
+ // create new incoming call2
+ errorCode = CreateIncomingCallL(line, callId2, incomingCallName2,
+ mobileService, mobileCallStatus);
+ ASSERT_EQUALS(KErrNone, errorCode);
+ AssertMockLtsyStatusL();
+
+ errorCode = call2.OpenExistingCall(line, incomingCallName2);
+ ASSERT_EQUALS(KErrNone, errorCode);
+ AssertMockLtsyStatusL();
+ //-------------------------------------------------------------------------
+
+ call2.AnswerIncomingCall(requestStatus2, mmParamsPckgV1);
+
+ RMobileCall::TEtel3rdPartyMobileCallParamsV1 callParams;
+ TPckg<RMobileCall::TEtel3rdPartyMobileCallParamsV1> callParamsPckg(callParams);
+ call1.AnswerIncomingCallISV(requestStatus, callParamsPckg);
+
+ User::WaitForRequest(requestStatus);
+ ASSERT_EQUALS(KErrGsmNotAllowed, requestStatus.Int());
+
+ User::WaitForRequest(requestStatus2);
+ ASSERT_EQUALS(KErrNotSupported, requestStatus2.Int());
+
+ AssertMockLtsyStatusL();
+ CleanupStack::PopAndDestroy(7, this); // expectData, completeData, call, line, call2
+ // this, call1
+
+ }
+
+
+/**
+@SYMTestCaseID BA-CTSY-CCON-CAIC-0002
+@SYMComponent telephony_ctsy
+@SYMTestCaseDesc Test support in CTSY for cancelling of RCall::AnswerIncomingCall for voice calls
+@SYMTestPriority High
+@SYMTestActions Invokes cancelling of RCall::AnswerIncomingCall for voice calls
+@SYMTestExpectedResults Pass
+@SYMTestType CT
+*/
+void CCTsyCallControlFU::TestAnswerIncomingCall0002L()
+ {
+
+ OpenEtelServerL(EUseExtendedError);
+ CleanupStack::PushL(TCleanupItem(Cleanup,this));
+ OpenPhoneL();
+
+ RBuf8 expectData;
+ CleanupClosePushL(expectData);
+
+ RLine line;
+ RCall call;
+ CleanupClosePushL(call);
+
+ TInt errorCode = KErrNone;
+ TInt callId = 1;
+ TName incomingCallName;
+
+ TRequestStatus requestStatus;
+ TRequestStatus mockLtsyStatus;
+
+ RMobileCall::TMobileCallStatus mobileCallStatus = RMobileCall::EStatusRinging;
+ RMobilePhone::TMobileService mobileService = RMobilePhone::EVoiceService;
+
+ //-------------------------------------------------------------------------
+ // Test cancelling of RCall::AnswerIncomingCall
+ //-------------------------------------------------------------------------
+
+ // open new line for KMmTsyVoice1LineName
+ errorCode = OpenNewLineLC(iPhone, line, KMmTsyVoice1LineName);
+ ASSERT_EQUALS(KErrNone, errorCode);
+
+ //-------------------------------------------------------------------------
+ // create new incoming call
+ errorCode = CreateIncomingCallL(line, callId, incomingCallName,
+ mobileService, mobileCallStatus);
+ ASSERT_EQUALS(KErrNone, errorCode);
+ AssertMockLtsyStatusL();
+
+ errorCode = call.OpenExistingCall(line, incomingCallName);
+ ASSERT_EQUALS(KErrNone, errorCode);
+ AssertMockLtsyStatusL();
+ //-------------------------------------------------------------------------
+
+ iMockLTSY.NotifyTerminated(mockLtsyStatus);
+ TMockLtsyCallData0 mockData0(callId, mobileService);
+
+ expectData.Close();
+ mockData0.SerialiseL(expectData);
+
+ iMockLTSY.ExpectL(EEtelCallAnswer, expectData);
+ iMockLTSY.CompleteL(EEtelCallAnswer, KErrCancel, expectData);
+
+ RMobileCall::TMobileCallParamsV1 callParamsV1;
+ TPckg<RMobileCall::TMobileCallParamsV1> mmParamsPckgV1(callParamsV1);
+ call.AnswerIncomingCall(requestStatus, mmParamsPckgV1);
+
+ TInt hangUpCause = KErrGsmBusyUserRequest;
+ TBool autoStChangeDisable = ETrue;
+ TMockLtsyCallData2<TInt, TBool> mockData2(callId, mobileService,
+ hangUpCause,
+ autoStChangeDisable);
+ expectData.Close();
+ mockData2.SerialiseL(expectData);
+ iMockLTSY.ExpectL(EEtelCallHangUp, expectData);
+
+ call.CancelAsyncRequest(EEtelCallAnswer);
+
+ User::WaitForRequest(requestStatus);
+ AssertMockLtsyStatusL();
+ ASSERT_EQUALS(KErrCancel, requestStatus.Int());
+
+ User::WaitForRequest(mockLtsyStatus);
+
+ CleanupStack::PopAndDestroy(4); // this, expectData, call, line
+
+ }
+
+/**
+@SYMTestCaseID BA-CTSY-CCON-CAIC-0004
+@SYMComponent telephony_ctsy
+@SYMTestCaseDesc Test support in CTSY for multiple client requests to RCall::AnswerIncomingCall for voice calls
+@SYMTestPriority High
+@SYMTestActions Invokes multiple client requests to RCall::AnswerIncomingCall for voice calls
+@SYMTestExpectedResults Pass
+@SYMTestType CT
+*/
+void CCTsyCallControlFU::TestAnswerIncomingCall0004L()
+ {
+ OpenEtelServerL(EUseExtendedError);
+ CleanupStack::PushL(TCleanupItem(Cleanup,this));
+ OpenPhoneL();
+
+ RBuf8 expectData;
+ CleanupClosePushL(expectData);
+
+ RBuf8 completeData;
+ CleanupClosePushL(completeData);
+
+ // Open second client
+ RTelServer telServer2;
+ TInt ret = telServer2.Connect();
+ ASSERT_EQUALS(KErrNone, ret);
+ CleanupClosePushL(telServer2);
+
+ RMobilePhone phone2;
+ ret = phone2.Open(iTelServer,KMmTsyPhoneName);
+ ASSERT_EQUALS(KErrNone, ret);
+ CleanupClosePushL(phone2);
+
+ RLine line1;
+ RLine line2;
+
+ RCall call1;
+ CleanupClosePushL(call1);
+
+ RCall call2;
+ CleanupClosePushL(call2);
+
+ TInt errorCode = KErrNone;
+
+ TInt callId1 = 1;
+ TName incomingCallName1;
+
+ TInt callId2 = 2;
+ TName incomingCallName2;
+
+ TRequestStatus requestStatus1;
+ TRequestStatus requestStatus2;
+
+ // open new line1 for KMmTsyVoice1LineName
+ errorCode = OpenNewLineLC(iPhone, line1, KMmTsyVoice1LineName);
+ ASSERT_EQUALS(KErrNone, errorCode);
+
+ // open new line2 for KMmTsyVoice1LineName
+ errorCode = OpenNewLineLC(phone2, line2, KMmTsyVoice1LineName);
+ ASSERT_EQUALS(KErrNone, errorCode);
+
+ RMobileCall::TMobileCallStatus mobileCallStatus = RMobileCall::EStatusRinging;
+ RMobilePhone::TMobileService mobileService = RMobilePhone::EVoiceService;
+
+ RMobileCall::TMobileCallParamsV1 callParamsV1;
+ TPckg<RMobileCall::TMobileCallParamsV1> mmParamsPckgV1(callParamsV1);
+
+ //-------------------------------------------------------------------------
+ // Test A: Test multiple clients requesting RCall::AnswerIncomingCall
+ //-------------------------------------------------------------------------
+
+ //-------------------------------------------------------------------------
+ // create new incoming call1
+ errorCode = CreateIncomingCallL(line1, callId1, incomingCallName1,
+ mobileService, mobileCallStatus);
+ ASSERT_EQUALS(KErrNone, errorCode);
+ AssertMockLtsyStatusL();
+
+ errorCode = call1.OpenExistingCall(line1, incomingCallName1);
+ ASSERT_EQUALS(KErrNone, errorCode);
+ AssertMockLtsyStatusL();
+ //-------------------------------------------------------------------------
+
+ //-------------------------------------------------------------------------
+ // create new incoming call2
+ errorCode = CreateIncomingCallL(line2, callId2, incomingCallName2,
+ mobileService, mobileCallStatus);
+ ASSERT_EQUALS(KErrNone, errorCode);
+ AssertMockLtsyStatusL();
+
+ errorCode = call2.OpenExistingCall(line2, incomingCallName2);
+ ASSERT_EQUALS(KErrNone, errorCode);
+ AssertMockLtsyStatusL();
+ //-------------------------------------------------------------------------
+
+ TMockLtsyCallData0 mockData01(callId1, mobileService);
+
+ expectData.Close();
+ mockData01.SerialiseL(expectData);
+ iMockLTSY.ExpectL(EEtelCallAnswer, expectData);
+ iMockLTSY.CompleteL(EEtelCallAnswer, KErrNone, expectData);
+ call1.AnswerIncomingCall(requestStatus1, mmParamsPckgV1);
+
+ TMockLtsyCallData0 mockData02(callId2, mobileService);
+ expectData.Close();
+ mockData02.SerialiseL(expectData);
+ iMockLTSY.ExpectL(EEtelCallAnswer, expectData);
+ iMockLTSY.CompleteL(EEtelCallAnswer, KErrNone, expectData);
+ call2.AnswerIncomingCall(requestStatus2, mmParamsPckgV1);
+
+ User::WaitForRequest(requestStatus1);
+ AssertMockLtsyStatusL();
+ ASSERT_EQUALS(KErrNone, requestStatus1.Int());
+
+ User::WaitForRequest(requestStatus2);
+ AssertMockLtsyStatusL();
+ ASSERT_EQUALS(KErrNone, requestStatus2.Int());
+
+ // close incoming call1
+ CloseIncomingCallL(call1, callId1, mobileService);
+ AssertMockLtsyStatusL();
+
+ // close incoming call2
+ CloseIncomingCallL(call2, callId2, mobileService);
+ AssertMockLtsyStatusL();
+
+ //-------------------------------------------------------------------------
+ // Test for increase coverage
+ //-------------------------------------------------------------------------
+
+ line1.NotifyIncomingCall(requestStatus1, incomingCallName1);
+ User::WaitForRequest(requestStatus1);
+ AssertMockLtsyStatusL();
+ ASSERT_EQUALS(KErrNone, requestStatus1.Int());
+
+ mobileCallStatus = RMobileCall::EStatusConnected;
+
+ //-------------------------------------------------------------------------
+ // create new incoming call1
+ errorCode = CreateIncomingCallL(line1, callId1, incomingCallName1,
+ mobileService, mobileCallStatus);
+ ASSERT_EQUALS(KErrNone, errorCode);
+ AssertMockLtsyStatusL();
+
+ errorCode = call1.OpenExistingCall(line1, incomingCallName1);
+ ASSERT_EQUALS(KErrNone, errorCode);
+ AssertMockLtsyStatusL();
+ //-------------------------------------------------------------------------
+
+ mobileCallStatus = RMobileCall::EStatusHold;
+ //-------------------------------------------------------------------------
+ // create new incoming call2
+ errorCode = CreateIncomingCallL(line2, callId2, incomingCallName2,
+ mobileService, mobileCallStatus);
+ ASSERT_EQUALS(KErrNone, errorCode);
+ AssertMockLtsyStatusL();
+
+ errorCode = call2.OpenExistingCall(line2, incomingCallName2);
+ ASSERT_EQUALS(KErrNone, errorCode);
+ AssertMockLtsyStatusL();
+ //-------------------------------------------------------------------------
+
+ call1.AnswerIncomingCall(requestStatus1, mmParamsPckgV1);
+
+ User::WaitForRequest(requestStatus1);
+ AssertMockLtsyStatusL();
+ ASSERT_EQUALS(KErrGsmNotAllowed, requestStatus1.Int());
+
+ //-------------------------------------------------------------------------
+
+ // Done !
+ CleanupStack::PopAndDestroy(4); // line1, line2, call1, call2
+ CleanupStack::PopAndDestroy(5, this); // phone2, telServer2, expectData, this, completeData
+
+ }
+
+
+/**
+@SYMTestCaseID BA-CTSY-CCON-CAIC-0005
+@SYMComponent telephony_ctsy
+@SYMTestCaseDesc Test support in CTSY for RCall::AnswerIncomingCall with timeout for voice calls
+@SYMTestPriority High
+@SYMTestActions Invokes RCall::AnswerIncomingCall and tests for timeout for voice calls
+@SYMTestExpectedResults Pass
+@SYMTestType CT
+*/
+void CCTsyCallControlFU::TestAnswerIncomingCall0005L()
+ {
+ OpenEtelServerL(EUseExtendedError);
+ CleanupStack::PushL(TCleanupItem(Cleanup,this));
+ OpenPhoneL();
+
+ RBuf8 expectData;
+ CleanupClosePushL(expectData);
+
+ RLine line;
+ RCall call;
+ CleanupClosePushL(call);
+
+ TInt errorCode = KErrNone;
+ TInt callId = 1;
+ TName incomingCallName;
+
+ TRequestStatus requestStatus;
+ TRequestStatus mockLtsyStatus;
+
+ // open new line for KMmTsyVoice1LineName
+ errorCode = OpenNewLineLC(iPhone, line, KMmTsyVoice1LineName);
+ ASSERT_EQUALS(KErrNone, errorCode);
+
+ RMobileCall::TMobileCallStatus mobileCallStatus = RMobileCall::EStatusRinging;
+ RMobilePhone::TMobileService mobileService = RMobilePhone::EVoiceService;
+
+ //-------------------------------------------------------------------------
+ // Test A: Test timeout of RCall::AnswerIncomingCall
+ //-------------------------------------------------------------------------
+
+ //-------------------------------------------------------------------------
+ // create new incoming call
+ errorCode = CreateIncomingCallL(line, callId, incomingCallName,
+ mobileService, mobileCallStatus);
+ ASSERT_EQUALS(KErrNone, errorCode);
+ AssertMockLtsyStatusL();
+
+ errorCode = call.OpenExistingCall(line, incomingCallName);
+ ASSERT_EQUALS(KErrNone, errorCode);
+ AssertMockLtsyStatusL();
+ //-------------------------------------------------------------------------
+
+ TMockLtsyCallData0 mockData0(callId, mobileService);
+
+ expectData.Close();
+ mockData0.SerialiseL(expectData);
+ iMockLTSY.ExpectL(EEtelCallAnswer, expectData);
+
+ RMobileCall::TMobileCallParamsV1 callParamsV1;
+ TPckg<RMobileCall::TMobileCallParamsV1> mmParamsPckgV1(callParamsV1);
+ call.AnswerIncomingCall(requestStatus, mmParamsPckgV1);
+
+ User::WaitForRequest(requestStatus);
+ AssertMockLtsyStatusL();
+ ASSERT_EQUALS(KErrTimedOut, requestStatus.Int());
+
+ CleanupStack::PopAndDestroy(4, this); // expectData, this, line, call
+
+ }
+
+
+/**
+@SYMTestCaseID BA-CTSY-CCON-CAIC-0006
+@SYMComponent telephony_ctsy
+@SYMTestCaseDesc Test support in CTSY for RCall::AnswerIncomingCall for data calls
+@SYMTestPriority High
+@SYMTestActions Invokes RCall::AnswerIncomingCall for data calls
+@SYMTestExpectedResults Pass
+@SYMTestType CT
+*/
+void CCTsyCallControlFU::TestAnswerIncomingCall0006L()
+ {
+
+ OpenEtelServerL(EUseExtendedError);
+ CleanupStack::PushL(TCleanupItem(Cleanup,this));
+ OpenPhoneL();
+
+ RBuf8 expectData;
+ CleanupClosePushL(expectData);
+
+ RBuf8 completeData;
+ CleanupClosePushL(completeData);
+
+ RLine line;
+ RCall call;
+ CleanupClosePushL(call);
+
+ TInt errorCode = KErrNone;
+ TInt callId = 1;
+ TName incomingCallName;
+
+ TRequestStatus requestStatus;
+ TRequestStatus mockLtsyStatus;
+
+ // open new line for KMmTsyVoice1LineName
+ errorCode = OpenNewLineLC(iPhone, line, KMmTsyDataLineName);
+ ASSERT_EQUALS(KErrNone, errorCode);
+
+ RMobilePhone::TMobileService mobileService = RMobilePhone::ECircuitDataService;
+ RMobileCall::TMobileCallStatus mobileCallStatus = RMobileCall::EStatusRinging;
+
+ //-------------------------------------------------------------------------
+ // TEST A: failure to dispatch request to LTSY
+ //-------------------------------------------------------------------------
+
+ //-------------------------------------------------------------------------
+ // create new incoming call
+ errorCode = CreateIncomingCallL(line, callId, incomingCallName,
+ mobileService, mobileCallStatus);
+ ASSERT_EQUALS(KErrNone, errorCode);
+
+ errorCode = call.OpenExistingCall(line, incomingCallName);
+ ASSERT_EQUALS(KErrNone, errorCode);
+ //-------------------------------------------------------------------------
+
+ TMockLtsyCallData0 mockData0(callId, mobileService);
+
+ expectData.Close();
+ mockData0.SerialiseL(expectData);
+ iMockLTSY.ExpectL(EEtelCallAnswer, expectData, KErrNotSupported);
+
+ RMobileCall::TMobileCallParamsV1 callParamsV1;
+ TPckg<RMobileCall::TMobileCallParamsV1> mmParamsPckgV1(callParamsV1);
+ call.AnswerIncomingCall(requestStatus, mmParamsPckgV1);
+
+ User::WaitForRequest(requestStatus);
+ AssertMockLtsyStatusL();
+ ASSERT_EQUALS(KErrNotSupported, requestStatus.Int());
+
+ //-------------------------------------------------------------------------
+ // TEST B: failure on completion of pending request from LTSY->CTSY
+ //-------------------------------------------------------------------------
+
+ expectData.Close();
+ mockData0.SerialiseL(expectData);
+ iMockLTSY.ExpectL(EEtelCallAnswer, expectData);
+ iMockLTSY.CompleteL(EEtelCallAnswer, KErrGeneral, expectData);
+ call.AnswerIncomingCall(requestStatus, mmParamsPckgV1);
+
+ User::WaitForRequest(requestStatus);
+ AssertMockLtsyStatusL();
+ ASSERT_EQUALS(KErrGeneral, requestStatus.Int());
+
+ //-------------------------------------------------------------------------
+ // TEST C: Successful completion request of
+ // RCall::AnswerIncomingCall when result is not cached.
+ //-------------------------------------------------------------------------
+
+ expectData.Close();
+ mockData0.SerialiseL(expectData);
+ iMockLTSY.ExpectL(EEtelCallAnswer, expectData);
+ iMockLTSY.CompleteL(EEtelCallAnswer, KErrNone, expectData);
+ call.AnswerIncomingCall(requestStatus, mmParamsPckgV1);
+
+ User::WaitForRequest(requestStatus);
+ AssertMockLtsyStatusL();
+ ASSERT_EQUALS(KErrNone, requestStatus.Int());
+
+ //-------------------------------------------------------------------------
+ // TEST E: Unsolicited completion of RCall::AnswerIncomingCall
+ // from LTSY.
+ //-------------------------------------------------------------------------
+
+ iMockLTSY.NotifyTerminated(mockLtsyStatus);
+ expectData.Close();
+ mockData0.SerialiseL(expectData);
+ iMockLTSY.CompleteL(EEtelCallAnswer, KErrNone, expectData);
+ User::WaitForRequest(mockLtsyStatus);
+ AssertMockLtsyStatusL();
+ ASSERT_EQUALS(KErrNone, mockLtsyStatus.Int());
+
+ //-------------------------------------------------------------------------
+ // TEST : to increase CMmDataCallTsy::AnswerIncomingCall coverage
+ // covers "if ( 0 < iAnswerCallHandle )" condition
+ //-------------------------------------------------------------------------
+
+ RCall call2;
+ CleanupClosePushL(call2);
+ TRequestStatus requestStatus2;
+
+ //-------------------------------------------------------------------------
+ errorCode = call2.OpenExistingCall(line, incomingCallName);
+ ASSERT_EQUALS(KErrNone, errorCode);
+ AssertMockLtsyStatusL();
+ //-------------------------------------------------------------------------
+
+ call.AnswerIncomingCall(requestStatus, mmParamsPckgV1);
+
+ RMobileCall::TMobileCallParamsV1 callParamsV2;
+ TPckg<RMobileCall::TMobileCallParamsV1> mmParamsPckgV2(callParamsV2);
+ call2.AnswerIncomingCall(requestStatus2, mmParamsPckgV2);
+
+ iMockLTSY.CompleteL(EEtelCallAnswer, KErrNone, expectData);
+
+ User::WaitForRequest(requestStatus);
+ ASSERT_EQUALS(KErrNone, requestStatus.Int());
+
+ User::WaitForRequest(requestStatus2);
+ AssertMockLtsyStatusL();
+ ASSERT_EQUALS(KErrServerBusy, requestStatus2.Int());
+
+ //-------------------------------------------------------------------------
+ // TEST : to increase CMmDataCallTsy::AnswerIncomingCall coverage
+ // covers "if ( iCallCaps.iFlags & RCall::KCapsAnswer ||
+ // RCall::EStatusIdle == iCallStatus )" condition
+ //-------------------------------------------------------------------------
+
+ //-------------------------------------------------------------------------
+ // call CMmDataCallTsy::CompleteNotifyStatusChange for set
+ // iCallCaps.iFlags &= ~( RCall::KCapsAnswer );
+
+ mobileCallStatus = RMobileCall::EStatusIdle;
+
+ TMockLtsyCallData1<RMobileCall::TMobileCallStatus> mockCallData2(callId, mobileService, mobileCallStatus);
+ mockCallData2.SerialiseL(completeData);
+
+ iMockLTSY.NotifyTerminated(mockLtsyStatus);
+ iMockLTSY.CompleteL(EMobileCallNotifyMobileCallStatusChange, KErrNone, completeData);
+ User::WaitForRequest(mockLtsyStatus);
+ AssertMockLtsyStatusL();
+ ASSERT_EQUALS(KErrNone, mockLtsyStatus.Int());
+
+ //-------------------------------------------------------------------------
+ // call CMmVoiceLineTsy::CompleteNotifyIncomingCall for set iCallId = 1.
+ RMobileCall::TMobileCallInfoV1 mobileCallInfo;
+ TMockLtsyCallData1<RMobileCall::TMobileCallInfoV1> mockCallData1(callId, mobileService, mobileCallInfo);
+ completeData.Close();
+ mockCallData1.SerialiseL(completeData);
+
+ iMockLTSY.NotifyTerminated(mockLtsyStatus);
+ iMockLTSY.CompleteL(EEtelLineNotifyIncomingCall, KErrNone, completeData);
+ User::WaitForRequest(mockLtsyStatus);
+ AssertMockLtsyStatusL();
+ ASSERT_EQUALS(KErrNone, mockLtsyStatus.Int());
+ //-------------------------------------------------------------------------
+
+ call.AnswerIncomingCall(requestStatus, mmParamsPckgV1);
+
+ User::WaitForRequest(requestStatus);
+ AssertMockLtsyStatusL();
+ ASSERT_EQUALS(KErrNotReady, requestStatus.Int());
+
+ CleanupStack::PopAndDestroy(2); // call2, line
+
+ CloseIncomingCallL(call, callId, mobileService);
+ CleanupStack::PopAndDestroy(3); // expectData, call, completeData
+
+ CleanupStack::PopAndDestroy(1, this);
+ }
+
+
+/**
+@SYMTestCaseID BA-CTSY-CCON-CAIC-0007
+@SYMComponent telephony_ctsy
+@SYMTestCaseDesc Test support in CTSY for cancelling of RCall::AnswerIncomingCall for data calls
+@SYMTestPriority High
+@SYMTestActions Invokes cancelling of RCall::AnswerIncomingCall for data calls
+@SYMTestExpectedResults Pass
+@SYMTestType CT
+*/
+void CCTsyCallControlFU::TestAnswerIncomingCall0007L()
+ {
+
+ OpenEtelServerL(EUseExtendedError);
+ CleanupStack::PushL(TCleanupItem(Cleanup,this));
+ OpenPhoneL();
+
+ RBuf8 expectData;
+ CleanupClosePushL(expectData);
+
+ RLine line;
+ RCall call;
+ CleanupClosePushL(call);
+
+ TInt errorCode = KErrNone;
+ TInt callId = 1;
+ TName incomingCallName;
+
+ TRequestStatus requestStatus;
+ TRequestStatus mockLtsyStatus;
+
+ RMobilePhone::TMobileService mobileService = RMobilePhone::ECircuitDataService;
+ RMobileCall::TMobileCallStatus mobileCallStatus = RMobileCall::EStatusRinging;
+
+ //-------------------------------------------------------------------------
+ // Test cancelling of RCall::AnswerIncomingCall
+ //-------------------------------------------------------------------------
+
+ // open new line for KMmTsyVoice1LineName
+ errorCode = OpenNewLineLC(iPhone, line, KMmTsyDataLineName);
+ ASSERT_EQUALS(KErrNone, errorCode);
+
+ //-------------------------------------------------------------------------
+ // create new incoming call
+ errorCode = CreateIncomingCallL(line, callId, incomingCallName,
+ mobileService, mobileCallStatus);
+ ASSERT_EQUALS(KErrNone, errorCode);
+ AssertMockLtsyStatusL();
+
+ errorCode = call.OpenExistingCall(line, incomingCallName);
+ ASSERT_EQUALS(KErrNone, errorCode);
+ AssertMockLtsyStatusL();
+ //-------------------------------------------------------------------------
+
+ iMockLTSY.NotifyTerminated(mockLtsyStatus);
+ TMockLtsyCallData0 mockData0(callId, mobileService);
+
+ expectData.Close();
+ mockData0.SerialiseL(expectData);
+
+ iMockLTSY.ExpectL(EEtelCallAnswer, expectData);
+ iMockLTSY.CompleteL(EEtelCallAnswer, KErrCancel, expectData);
+
+ RMobileCall::TMobileCallParamsV1 callParamsV1;
+ TPckg<RMobileCall::TMobileCallParamsV1> mmParamsPckgV1(callParamsV1);
+ call.AnswerIncomingCall(requestStatus, mmParamsPckgV1);
+
+ TInt hangUpCause = KErrGsmBusyUserRequest;
+ TBool autoStChangeDisable = EFalse;
+ TMockLtsyCallData2<TInt, TBool> mockData2(callId, mobileService,
+ hangUpCause,
+ autoStChangeDisable);
+ expectData.Close();
+ mockData2.SerialiseL(expectData);
+ iMockLTSY.ExpectL(EEtelCallHangUp, expectData);
+
+ call.CancelAsyncRequest(EEtelCallAnswer);
+
+ User::WaitForRequest(requestStatus);
+ AssertMockLtsyStatusL();
+ ASSERT_EQUALS(KErrCancel, requestStatus.Int());
+
+ User::WaitForRequest(mockLtsyStatus);
+
+ CleanupStack::PopAndDestroy(4); // this, expectData, call, line
+
+ }
+
+/**
+@SYMTestCaseID BA-CTSY-CCON-CAIC-0008
+@SYMComponent telephony_ctsy
+@SYMTestCaseDesc Test support in CTSY for RCall::AnswerIncomingCall with bad parameter data for data calls
+@SYMTestPriority High
+@SYMTestActions Invokes RCall::AnswerIncomingCall with bad parameter data for data calls
+@SYMTestExpectedResults Pass
+@SYMTestType CT
+*/
+void CCTsyCallControlFU::TestAnswerIncomingCall0008L()
+ {
+ OpenEtelServerL(EUseExtendedError);
+ CleanupStack::PushL(TCleanupItem(Cleanup,this));
+ OpenPhoneL();
+
+ RBuf8 expectData;
+ CleanupClosePushL(expectData);
+
+ TInt errorCode = KErrNone;
+ TInt callId = 1;
+ TName incomingCallName;
+
+ TRequestStatus requestStatus;
+ TRequestStatus mockLtsyStatus;
+
+ RCall call;
+ CleanupClosePushL(call);
+
+ // open new line for KMmTsyVoice1LineName
+ RLine line;
+ errorCode = OpenNewLineLC(iPhone, line, KMmTsyDataLineName);
+ ASSERT_EQUALS(KErrNone, errorCode);
+
+ RMobilePhone::TMobileService mobileService = RMobilePhone::ECircuitDataService;
+ RMobileCall::TMobileCallStatus mobileCallStatus = RMobileCall::EStatusRinging;
+
+ //-------------------------------------------------------------------------
+ // Test B: Test passing wrong descriptor size to parameter in
+ // RCall::Dial
+ //-------------------------------------------------------------------------
+
+ //-------------------------------------------------------------------------
+ // create new incoming call
+ errorCode = CreateIncomingCallL(line, callId, incomingCallName,
+ mobileService, mobileCallStatus);
+ ASSERT_EQUALS(KErrNone, errorCode);
+ AssertMockLtsyStatusL();
+
+ errorCode = call.OpenExistingCall(line, incomingCallName);
+ ASSERT_EQUALS(KErrNone, errorCode);
+ AssertMockLtsyStatusL();
+ //-------------------------------------------------------------------------
+
+ TMockLtsyCallData0 mockData0(callId, mobileService);
+
+ expectData.Close();
+ mockData0.SerialiseL(expectData);
+ iMockLTSY.ExpectL(EEtelCallAnswer, expectData);
+ iMockLTSY.CompleteL(EEtelCallAnswer, KErrNone, expectData);
+
+ TPtr8 null(NULL,0);
+ call.AnswerIncomingCall(requestStatus, null);
+
+ User::WaitForRequest(requestStatus);
+ AssertMockLtsyStatusL();
+ ASSERT_EQUALS(KErrNone, requestStatus.Int());
+
+ CleanupStack::PopAndDestroy(4, this); // expectData, this, line, call
+ }
+
+
+/**
+@SYMTestCaseID BA-CTSY-CCON-CAIC-0009
+@SYMComponent telephony_ctsy
+@SYMTestCaseDesc Test support in CTSY for multiple client requests to RCall::AnswerIncomingCall for data calls
+@SYMTestPriority High
+@SYMTestActions Invokes multiple client requests to RCall::AnswerIncomingCall for data calls
+@SYMTestExpectedResults Pass
+@SYMTestType CT
+*/
+void CCTsyCallControlFU::TestAnswerIncomingCall0009L()
+ {
+ OpenEtelServerL(EUseExtendedError);
+ CleanupStack::PushL(TCleanupItem(Cleanup,this));
+ OpenPhoneL();
+
+ RBuf8 expectData;
+ CleanupClosePushL(expectData);
+
+ // Open second client
+ RTelServer telServer2;
+ TInt ret = telServer2.Connect();
+ ASSERT_EQUALS(KErrNone, ret);
+ CleanupClosePushL(telServer2);
+
+ RMobilePhone phone2;
+ ret = phone2.Open(iTelServer,KMmTsyPhoneName);
+ ASSERT_EQUALS(KErrNone, ret);
+ CleanupClosePushL(phone2);
+
+ RLine line1;
+ RLine line2;
+
+ RCall call1;
+ CleanupClosePushL(call1);
+
+ RCall call2;
+ CleanupClosePushL(call2);
+
+ TInt errorCode = KErrNone;
+
+ TInt callId1 = 1;
+ TName incomingCallName1;
+
+ TInt callId2 = 2;
+ TName incomingCallName2;
+
+ TRequestStatus requestStatus1;
+ TRequestStatus requestStatus2;
+
+ // open new line1 for KMmTsyVoice1LineName
+ errorCode = OpenNewLineLC(iPhone, line1, KMmTsyDataLineName);
+ ASSERT_EQUALS(KErrNone, errorCode);
+
+ // open new line2 for KMmTsyVoice1LineName
+ errorCode = OpenNewLineLC(phone2, line2, KMmTsyDataLineName);
+ ASSERT_EQUALS(KErrNone, errorCode);
+
+ RMobilePhone::TMobileService mobileService = RMobilePhone::ECircuitDataService;
+ RMobileCall::TMobileCallStatus mobileCallStatus = RMobileCall::EStatusRinging;
+
+ //-------------------------------------------------------------------------
+ // Test A: Test multiple clients requesting RCall::AnswerIncomingCall
+ //-------------------------------------------------------------------------
+
+ //-------------------------------------------------------------------------
+ // create new incoming call1
+ errorCode = CreateIncomingCallL(line1, callId1, incomingCallName1,
+ mobileService, mobileCallStatus);
+ ASSERT_EQUALS(KErrNone, errorCode);
+ AssertMockLtsyStatusL();
+
+ errorCode = call1.OpenExistingCall(line1, incomingCallName1);
+ ASSERT_EQUALS(KErrNone, errorCode);
+ AssertMockLtsyStatusL();
+ //-------------------------------------------------------------------------
+
+ //-------------------------------------------------------------------------
+ // create new incoming call2
+ errorCode = CreateIncomingCallL(line2, callId2, incomingCallName2,
+ mobileService, mobileCallStatus);
+ ASSERT_EQUALS(KErrNone, errorCode);
+ AssertMockLtsyStatusL();
+
+ errorCode = call2.OpenExistingCall(line2, incomingCallName2);
+ ASSERT_EQUALS(KErrNone, errorCode);
+ AssertMockLtsyStatusL();
+ //-------------------------------------------------------------------------
+
+ TMockLtsyCallData0 mockData01(callId1, mobileService);
+
+ expectData.Close();
+ mockData01.SerialiseL(expectData);
+ iMockLTSY.ExpectL(EEtelCallAnswer, expectData);
+ iMockLTSY.CompleteL(EEtelCallAnswer, KErrNone, expectData);
+
+ RMobileCall::TMobileCallParamsV1 callParamsV1;
+ TPckg<RMobileCall::TMobileCallParamsV1> mmParamsPckgV1(callParamsV1);
+ call1.AnswerIncomingCall(requestStatus1, mmParamsPckgV1);
+
+ TMockLtsyCallData0 mockData02(callId2, mobileService);
+ expectData.Close();
+ mockData02.SerialiseL(expectData);
+ iMockLTSY.ExpectL(EEtelCallAnswer, expectData);
+ iMockLTSY.CompleteL(EEtelCallAnswer, KErrNone, expectData);
+
+ RMobileCall::TMobileCallParamsV1 callParamsV2;
+ TPckg<RMobileCall::TMobileCallParamsV1> mmParamsPckgV2(callParamsV2);
+ call2.AnswerIncomingCall(requestStatus2, mmParamsPckgV2);
+
+ User::WaitForRequest(requestStatus1);
+ AssertMockLtsyStatusL();
+ ASSERT_EQUALS(KErrNone, requestStatus1.Int());
+
+ User::WaitForRequest(requestStatus2);
+ AssertMockLtsyStatusL();
+ ASSERT_EQUALS(KErrNone, requestStatus2.Int());
+
+ // Done !
+ CleanupStack::PopAndDestroy(4); // line1, line2, call1, call2
+ CleanupStack::PopAndDestroy(4, this); // phone2, telServer2, expectData, this
+ }
+
+
+/**
+@SYMTestCaseID BA-CTSY-CCON-CAIC-00010
+@SYMComponent telephony_ctsy
+@SYMTestCaseDesc Test support in CTSY for RCall::AnswerIncomingCall with timeout for data calls
+@SYMTestPriority High
+@SYMTestActions Invokes RCall::AnswerIncomingCall and tests for timeout for data calls
+@SYMTestExpectedResults Pass
+@SYMTestType CT
+*/
+void CCTsyCallControlFU::TestAnswerIncomingCall00010L()
+ {
+ OpenEtelServerL(EUseExtendedError);
+ CleanupStack::PushL(TCleanupItem(Cleanup,this));
+ OpenPhoneL();
+
+ RBuf8 expectData;
+ CleanupClosePushL(expectData);
+
+ RLine line;
+ RCall call;
+ CleanupClosePushL(call);
+
+ TInt errorCode = KErrNone;
+ TInt callId = 1;
+ TName incomingCallName;
+
+ TRequestStatus requestStatus;
+ TRequestStatus mockLtsyStatus;
+
+ // open new line for KMmTsyVoice1LineName
+ errorCode = OpenNewLineLC(iPhone, line, KMmTsyDataLineName);
+ ASSERT_EQUALS(KErrNone, errorCode);
+
+ RMobilePhone::TMobileService mobileService = RMobilePhone::ECircuitDataService;
+ RMobileCall::TMobileCallStatus mobileCallStatus = RMobileCall::EStatusRinging;
+
+ //-------------------------------------------------------------------------
+ // Test A: Test timeout of RCall::AnswerIncomingCall
+ //-------------------------------------------------------------------------
+
+ //-------------------------------------------------------------------------
+ // create new incoming call
+ errorCode = CreateIncomingCallL(line, callId, incomingCallName,
+ mobileService, mobileCallStatus);
+ ASSERT_EQUALS(KErrNone, errorCode);
+ AssertMockLtsyStatusL();
+
+ errorCode = call.OpenExistingCall(line, incomingCallName);
+ ASSERT_EQUALS(KErrNone, errorCode);
+ AssertMockLtsyStatusL();
+ //-------------------------------------------------------------------------
+
+ TMockLtsyCallData0 mockData0(callId, mobileService);
+
+ expectData.Close();
+ mockData0.SerialiseL(expectData);
+ iMockLTSY.ExpectL(EEtelCallAnswer, expectData);
+
+ RMobileCall::TMobileCallParamsV1 callParamsV1;
+ TPckg<RMobileCall::TMobileCallParamsV1> mmParamsPckgV1(callParamsV1);
+ call.AnswerIncomingCall(requestStatus, mmParamsPckgV1);
+
+ User::WaitForRequest(requestStatus);
+ AssertMockLtsyStatusL();
+ ASSERT_EQUALS(KErrTimedOut, requestStatus.Int());
+
+ //-------------------------------------------------------------------------
+ // TEST : Call AnswerIncomingCall with null description
+ //-------------------------------------------------------------------------
+
+ expectData.Close();
+ mockData0.SerialiseL(expectData);
+ iMockLTSY.ExpectL(EEtelCallAnswer, expectData);
+ iMockLTSY.CompleteL(EEtelCallAnswer, KErrNone, expectData);
+
+ TPtr8 null(NULL,0);
+ call.AnswerIncomingCall(requestStatus, null);
+
+ User::WaitForRequest(requestStatus);
+ AssertMockLtsyStatusL();
+ ASSERT_EQUALS(KErrNone, requestStatus.Int());
+
+ CleanupStack::PopAndDestroy(4, this); // expectData, this, line, call
+ }
+
+
+/**
+@SYMTestCaseID BA-CTSY-CCON-CAIC-00011
+@SYMComponent telephony_ctsy
+@SYMTestCaseDesc Test support in CTSY for RCall::AnswerIncomingCall for fax calls
+@SYMTestPriority High
+@SYMTestActions Invokes RCall::AnswerIncomingCall for fax calls
+@SYMTestExpectedResults Pass
+@SYMTestType CT
+*/
+void CCTsyCallControlFU::TestAnswerIncomingCall00011L()
+ {
+
+ OpenEtelServerL(EUseExtendedError);
+ CleanupStack::PushL(TCleanupItem(Cleanup,this));
+ OpenPhoneL();
+
+ RBuf8 expectData;
+ CleanupClosePushL(expectData);
+
+ RLine line;
+ RCall call;
+ CleanupClosePushL(call);
+
+ TInt errorCode = KErrNone;
+ TInt callId = 1;
+ TName incomingCallName;
+
+ TRequestStatus requestStatus;
+ TRequestStatus mockLtsyStatus;
+
+ // open new line for KMmTsyFaxLineName
+ errorCode = OpenNewLineLC(iPhone, line, KMmTsyFaxLineName);
+ ASSERT_EQUALS(KErrNone, errorCode);
+
+ RMobilePhone::TMobileService mobileService = RMobilePhone::EFaxService;
+ RMobileCall::TMobileCallStatus mobileCallStatus = RMobileCall::EStatusRinging;
+
+ //-------------------------------------------------------------------------
+ // TEST A: failure to dispatch request to LTSY
+ //-------------------------------------------------------------------------
+
+ //-------------------------------------------------------------------------
+ // create new incoming call
+ errorCode = CreateIncomingCallL(line, callId, incomingCallName,
+ mobileService, mobileCallStatus);
+ ASSERT_EQUALS(KErrNone, errorCode);
+
+ errorCode = call.OpenExistingCall(line, incomingCallName);
+ ASSERT_EQUALS(KErrNone, errorCode);
+ //-------------------------------------------------------------------------
+
+ TMockLtsyCallData0 mockData0(callId, mobileService);
+
+ expectData.Close();
+ mockData0.SerialiseL(expectData);
+
+ RMobileCall::TMobileCallParamsV1 callParamsV1;
+ TPckg<RMobileCall::TMobileCallParamsV1> mmParamsPckgV1(callParamsV1);
+ call.AnswerIncomingCall(requestStatus, mmParamsPckgV1);
+
+ User::WaitForRequest(requestStatus);
+ AssertMockLtsyStatusL();
+ ASSERT_EQUALS(KErrNotSupported, requestStatus.Int());
+
+ AssertMockLtsyStatusL();
+ CleanupStack::PopAndDestroy(4, this); // expectData, call, line
+ }
+
+
+/**
+@SYMTestCaseID BA-CTSY-CCON-CD-0001
+@SYMComponent telephony_ctsy
+@SYMTestCaseDesc Test support in CTSY for RCall::Dial for voice calls
+@SYMTestPriority High
+@SYMTestActions Invokes RCall::Dial for voice calls
+@SYMTestExpectedResults Pass
+@SYMTestType CT
+*/
+void CCTsyCallControlFU::TestDial0001L()
+ {
+
+ OpenEtelServerL(EUseExtendedError);
+ CleanupStack::PushL(TCleanupItem(Cleanup,this));
+ OpenPhoneL();
+
+ RBuf8 expectData;
+ CleanupClosePushL(expectData);
+
+ RBuf8 completeData;
+ CleanupClosePushL(completeData);
+
+ RLine line;
+ RCall call;
+
+ TInt errorCode = KErrNone;
+ TRequestStatus requestStatus;
+ TRequestStatus requestStatus2;
+ TRequestStatus mockLtsyStatus;
+
+ // open new line and call for KMmTsyVoice1LineName
+ errorCode = OpenNewLineLC(iPhone, line, KMmTsyVoice1LineName);
+ ASSERT_EQUALS(KErrNone, errorCode);
+
+ TName name;
+
+ _LIT(KPhoneNumber, "101632960000");
+
+ TInt callId = 1;
+ RMobilePhone::TMobileService mobileService = RMobilePhone::EVoiceService;
+
+ RMobileCall::TMobileCallParamsV1 callParams;
+ callParams.iInterval = 4;
+ callParams.iCug.iCugIndex = 0xFFFF;
+
+ RMobileCall::TMobileCallInfoV8 callInfo;
+ callInfo.iDialledParty.iTelNumber.Copy(KPhoneNumber);
+ callInfo.iService = mobileService;
+ callInfo.iValid = RMobileCall::KCallDialledParty | RMobileCall::KCallAlternating;
+
+ TMockLtsyCallData2<RMobileCall::TMobileCallParamsV1, RMobileCall::TMobileCallInfoV8>
+ mockData2(0, mobileService, callParams, callInfo);
+
+ TMockLtsyCallData0 mockData0(callId, mobileService);
+
+ RCall::TCallParams callParamsX;
+ TPckg<RCall::TCallParams> pckgCallParamsX(callParamsX);
+ callParamsX.iSpeakerControl = RCall::EMonitorSpeakerControlOnUntilCarrier;
+ callParamsX.iSpeakerVolume = RCall::EMonitorSpeakerVolumeLow;
+ callParamsX.iInterval = 100;
+ callParamsX.iWaitForDialTone = RCall::EDialToneWait;
+
+ //-------------------------------------------------------------------------
+ // TEST A: failure to dispatch request to LTSY
+ //-------------------------------------------------------------------------
+
+ // open new call
+ CleanupClosePushL(call);
+ errorCode = call.OpenNewCall(line, name);
+ ASSERT_EQUALS(KErrNone, errorCode);
+
+
+ expectData.Close();
+ mockData2.SerialiseL(expectData);
+ iMockLTSY.ExpectL(EEtelCallDial, expectData, KErrNotSupported);
+
+ call.Dial(requestStatus, pckgCallParamsX, KPhoneNumber);
+ User::WaitForRequest(requestStatus);
+ AssertMockLtsyStatusL();
+ ASSERT_EQUALS(KErrNotSupported, requestStatus.Int());
+
+ call.Close();
+ AssertMockLtsyStatusL();
+ CleanupStack::PopAndDestroy(1);
+
+ //-------------------------------------------------------------------------
+ // TEST B: failure on completion of pending request from LTSY->CTSY
+ //-------------------------------------------------------------------------
+
+ // open new call
+ CleanupClosePushL(call);
+ errorCode = call.OpenNewCall(line, name);
+ ASSERT_EQUALS(KErrNone, errorCode);
+
+ expectData.Close();
+ mockData2.SerialiseL(expectData);
+ iMockLTSY.ExpectL(EEtelCallDial, expectData);
+
+ CallGetMobileCallInfoL(callId, mobileService, KPhoneNumber);
+
+ mockData0.SerialiseL(completeData);
+ iMockLTSY.CompleteL(EEtelCallDial, KErrGeneral, completeData);
+
+ call.Dial(requestStatus, pckgCallParamsX, KPhoneNumber);
+ User::WaitForRequest(requestStatus);
+ AssertMockLtsyStatusL();
+ ASSERT_EQUALS(KErrGeneral, requestStatus.Int());
+
+ call.Close();
+ AssertMockLtsyStatusL();
+ CleanupStack::PopAndDestroy(1);
+
+ // Checking that we can return a specific error - KErrGsmCSConnectionBarred
+ CleanupClosePushL(call);
+ errorCode = call.OpenNewCall(line, name);
+ ASSERT_EQUALS(KErrNone, errorCode);
+
+ CallGetMobileCallInfoL(callId, mobileService, KPhoneNumber);
+
+ expectData.Close();
+ mockData2.SerialiseL(expectData);
+ iMockLTSY.ExpectL(EEtelCallDial, expectData);
+
+ mockData0.SerialiseL(completeData);
+ iMockLTSY.CompleteL(EEtelCallDial, KErrGsmCSConnectionBarred, completeData);
+
+ call.Dial(requestStatus, pckgCallParamsX, KPhoneNumber);
+ User::WaitForRequest(requestStatus);
+ AssertMockLtsyStatusL();
+ ASSERT_EQUALS(KErrGsmCSConnectionBarred, requestStatus.Int());
+
+ call.Close();
+ AssertMockLtsyStatusL();
+ CleanupStack::PopAndDestroy(1);
+
+
+ //-------------------------------------------------------------------------
+ // TEST C: Successful completion request of
+ // RCall::Dial when result is not cached.
+ //-------------------------------------------------------------------------
+
+ // open new call
+ CleanupClosePushL(call);
+ errorCode = call.OpenNewCall(line, name);
+ ASSERT_EQUALS(KErrNone, errorCode);
+
+ expectData.Close();
+ mockData2.SerialiseL(expectData);
+ iMockLTSY.ExpectL(EEtelCallDial, expectData);
+
+ CallGetMobileCallInfoL(callId, mobileService, KPhoneNumber);
+
+ completeData.Close();
+ mockData0.SerialiseL(completeData);
+ iMockLTSY.CompleteL(EEtelCallDial, KErrNone, completeData);
+
+ call.Dial(requestStatus, pckgCallParamsX, KPhoneNumber);
+ User::WaitForRequest(requestStatus);
+ AssertMockLtsyStatusL();
+ ASSERT_EQUALS(KErrNone, requestStatus.Int());
+
+ call.Close();
+ AssertMockLtsyStatusL();
+ CleanupStack::PopAndDestroy(1);
+
+ //-------------------------------------------------------------------------
+ // TEST E: Unsolicited completion of RCall::Dial
+ // from LTSY.
+ //-------------------------------------------------------------------------
+
+ iMockLTSY.NotifyTerminated(mockLtsyStatus);
+ expectData.Close();
+ mockData0.SerialiseL(expectData);
+ iMockLTSY.CompleteL(EEtelCallDial, KErrNone, expectData);
+ User::WaitForRequest(mockLtsyStatus);
+ AssertMockLtsyStatusL();
+ ASSERT_EQUALS(KErrNone, mockLtsyStatus.Int());
+
+ //-------------------------------------------------------------------------
+ // TEST : to check that RCall::Dial works fine with RMobileCall::TMobileCallParamsV1
+ //-------------------------------------------------------------------------
+ // open new call
+ CleanupClosePushL(call);
+ errorCode = call.OpenNewCall(line, name);
+ ASSERT_EQUALS(KErrNone, errorCode);
+
+ RMobileCall::TMobileCallParamsV1 callParamsV1;
+ RMobileCall::TMobileCallParamsV1Pckg callParamsV1Pkg(callParamsV1);
+ callParamsV1.iCug.iCugIndex = 0xFFFF;
+ callParamsV1.iSpeakerControl = RCall::EMonitorSpeakerControlOnExceptDuringDialling;
+ callParamsV1.iSpeakerVolume = RCall::EMonitorSpeakerVolumeOff;
+ callParamsV1.iInterval = 100;
+ callParamsV1.iWaitForDialTone = RCall::EDialToneNoWait;
+
+ TMockLtsyCallData2<RMobileCall::TMobileCallParamsV1, RMobileCall::TMobileCallInfoV8>
+ mockDataV1(0, mobileService, callParamsV1, callInfo);
+
+ expectData.Close();
+ mockDataV1.SerialiseL(expectData);
+ iMockLTSY.ExpectL(EEtelCallDial, expectData);
+
+ CallGetMobileCallInfoL(callId, mobileService, KPhoneNumber);
+
+ completeData.Close();
+ mockData0.SerialiseL(completeData);
+ iMockLTSY.CompleteL(EEtelCallDial, KErrNone, completeData);
+
+ call.Dial(requestStatus, callParamsV1Pkg, KPhoneNumber);
+ User::WaitForRequest(requestStatus);
+ AssertMockLtsyStatusL();
+ ASSERT_EQUALS(KErrNone, requestStatus.Int());
+
+ RMobileCall::TMobileCallParamsV1 checkParams;
+ RMobileCall::TMobileCallParamsV1Pckg checkParamsPkg(checkParams);
+ call.GetCallParams(checkParamsPkg);
+
+ TInt compareResult = ((checkParams.iSpeakerControl != callParamsV1.iSpeakerControl) ||
+ (checkParams.iSpeakerVolume != callParamsV1.iSpeakerVolume) ||
+ (checkParams.iInterval != callParamsV1.iInterval) ||
+ (checkParams.iWaitForDialTone != callParamsV1.iWaitForDialTone) ||
+ (checkParams.iCug.iCugIndex != callParamsV1.iCug.iCugIndex));
+
+ if(KErrNone != compareResult)
+ {
+ ERR_PRINTF1(_L("RCall::GetCallParams did not return the same params as that used for Dial"));
+ ASSERT_EQUALS(KErrNone, compareResult);
+ }
+
+ call.Close();
+ AssertMockLtsyStatusL();
+ CleanupStack::PopAndDestroy(1);
+
+ //-------------------------------------------------------------------------
+ // TEST : to check that RCall::Dial works fine with RMobileCall::TMobileCallParamsV2
+ //-------------------------------------------------------------------------
+ // open new call
+ CleanupClosePushL(call);
+ errorCode = call.OpenNewCall(line, name);
+ ASSERT_EQUALS(KErrNone, errorCode);
+
+ RMobileCall::TMobileCallParamsV2 callParamsV2;
+ RMobileCall::TMobileCallParamsV2Pckg callParamsV2Pkg(callParamsV2);
+ callParamsV2.iBearerMode = RMobileCall::EMulticallNewBearer;
+
+ TMockLtsyCallData2<RMobileCall::TMobileCallParamsV2, RMobileCall::TMobileCallInfoV8>
+ mockDataV2(0, mobileService, callParamsV2, callInfo);
+
+ expectData.Close();
+ mockDataV2.SerialiseL(expectData);
+ iMockLTSY.ExpectL(EEtelCallDial, expectData);
+
+ CallGetMobileCallInfoL(callId, mobileService, KPhoneNumber);
+
+ completeData.Close();
+ mockData0.SerialiseL(completeData);
+ iMockLTSY.CompleteL(EEtelCallDial, KErrNone, completeData);
+
+ call.Dial(requestStatus, callParamsV2Pkg, KPhoneNumber);
+ User::WaitForRequest(requestStatus);
+ AssertMockLtsyStatusL();
+ ASSERT_EQUALS(KErrNone, requestStatus.Int());
+
+ RMobileCall::TMobileCallParamsV2 checkParamsV2;
+ RMobileCall::TMobileCallParamsV2Pckg checkParamsV2Pkg(checkParamsV2);
+ call.GetCallParams(checkParamsV2Pkg);
+
+ if(KErrNone != compareResult)
+ {
+ ERR_PRINTF1(_L("RCall::GetCallParams did not return the same V2 params as that used for Dial"));
+ ASSERT_EQUALS(KErrNone, compareResult);
+ }
+
+ call.Close();
+ AssertMockLtsyStatusL();
+ CleanupStack::PopAndDestroy(1);
+
+ //-------------------------------------------------------------------------
+ // TEST : to increase CMmVoiceCallTsy::Dial coverage
+ // covers "else if ( RMobileCall::EStatusIdle != iMobileCallStatus )" condition
+ //-------------------------------------------------------------------------
+
+ TName incomingCallName;
+ RMobileCall::TMobileCallStatus mobileCallStatus = RMobileCall::EStatusRinging;
+
+ //-------------------------------------------------------------------------
+ // create new incoming call
+ errorCode = CreateIncomingCallL(line, callId, incomingCallName,
+ mobileService, mobileCallStatus);
+ ASSERT_EQUALS(KErrNone, errorCode);
+ AssertMockLtsyStatusL();
+ //-------------------------------------------------------------------------
+
+ // open new call
+ CleanupClosePushL(call);
+ errorCode = call.OpenExistingCall(line, incomingCallName);
+ ASSERT_EQUALS(KErrNone, errorCode);
+
+ call.Dial(requestStatus, pckgCallParamsX, KPhoneNumber);
+
+ User::WaitForRequest(requestStatus);
+ AssertMockLtsyStatusL();
+ ASSERT_EQUALS(KErrNotReady, requestStatus.Int());
+
+ CloseIncomingCallL(call, callId, mobileService);
+ CleanupStack::PopAndDestroy(1);
+
+ //-------------------------------------------------------------------------
+ // TEST : to increase CMmVoiceCallTsy::Dial coverage
+ // covers "else if ( ( activeCall ) && ( KETelExt3rdPartyV1 == extensionId ) &&
+ // ( KETelExt3rdPartyV1 != activeCall->GetExtensionId() ) )" condition
+ //-------------------------------------------------------------------------
+
+ RMobileCall mobileCall;
+ mobileCallStatus = RMobileCall::EStatusConnected;
+
+ //-------------------------------------------------------------------------
+ // create new incoming call
+ errorCode = CreateIncomingCallL(line, callId, incomingCallName,
+ mobileService, mobileCallStatus);
+ ASSERT_EQUALS(KErrNone, errorCode);
+ AssertMockLtsyStatusL();
+ //-------------------------------------------------------------------------
+
+ // open new call
+ CleanupClosePushL(mobileCall);
+ errorCode = mobileCall.OpenNewCall(line, name);
+ ASSERT_EQUALS(KErrNone, errorCode);
+
+ RMobileCall::TEtel3rdPartyMobileCallParamsV1 callParamsXX;
+ TPckg<RMobileCall::TEtel3rdPartyMobileCallParamsV1> pckgCallParamsXX(callParamsXX);
+ mobileCall.DialISV(requestStatus, pckgCallParamsXX, KPhoneNumber);
+
+ User::WaitForRequest(requestStatus);
+ AssertMockLtsyStatusL();
+ ASSERT_EQUALS(KErrServerBusy, requestStatus.Int());
+
+ call.Close();
+ AssertMockLtsyStatusL();
+ mobileCall.Close();
+ AssertMockLtsyStatusL();
+ CleanupStack::PopAndDestroy(1);
+
+ //-------------------------------------------------------------------------
+ // TEST : to increase CMmVoiceCallTsy::Dial coverage
+ // covers "else" condition in case of
+ // impossible of conditions "if ( ERfsStateInfoInactive == iMmPhone->GetRfStateInfo() )",
+ // "else if ( RMobileCall::EStatusIdle != iMobileCallStatus )",
+ // "else if ( ( 0 < dialHandle ) || ( ( KETelExt3rdPartyV1 == extensionId )
+ // && ( 0 < dialHandleISV ) && !i3rdPartyEmergencyNumberCheckDone ) )",
+ // "else if ( ( activeCall ) && ( KETelExt3rdPartyV1 == extensionId )
+ // && ( KETelExt3rdPartyV1 != activeCall->GetExtensionId() ) )" and
+ // "else if( extensionId == KETelExt3rdPartyV1 &&
+ // !i3rdPartyEmergencyNumberCheckDone )".
+ //-------------------------------------------------------------------------
+
+ RCall call2;
+ mobileCallStatus = RMobileCall::EStatusConnected;
+
+ //-------------------------------------------------------------------------
+ // create new incoming call
+ errorCode = CreateIncomingCallL(line, callId, incomingCallName,
+ mobileService, mobileCallStatus);
+ ASSERT_EQUALS(KErrNone, errorCode);
+ AssertMockLtsyStatusL();
+ //-------------------------------------------------------------------------
+
+ // open new call
+ CleanupClosePushL(call2);
+ errorCode = call2.OpenNewCall(line, name);
+ ASSERT_EQUALS(KErrNone, errorCode);
+
+ expectData.Close();
+ mockData2.SerialiseL(expectData);
+ iMockLTSY.ExpectL(EEtelCallDial, expectData, KErrNotSupported);
+ call2.Dial(requestStatus, pckgCallParamsX, KPhoneNumber);
+
+ User::WaitForRequest(requestStatus);
+ AssertMockLtsyStatusL();
+ ASSERT_EQUALS(KErrNotSupported, requestStatus.Int());
+
+ call.Close();
+ AssertMockLtsyStatusL();
+ call2.Close();
+ AssertMockLtsyStatusL();
+ CleanupStack::PopAndDestroy(1);
+
+ //-------------------------------------------------------------------------
+ // TEST : to increase CMmVoiceCallTsy::Dial coverage
+ // covers "if ( ERfsStateInfoInactive == iMmPhone->GetRfStateInfo() )" condition
+ //-------------------------------------------------------------------------
+
+ // open new call
+ CleanupClosePushL(call);
+ errorCode = call.OpenNewCall(line, name);
+ ASSERT_EQUALS(KErrNone, errorCode);
+
+ iMockLTSY.NotifyTerminated(mockLtsyStatus);
+ TRfStateInfo rfInfo = ERfsStateInfoInactive;
+ TMockLtsyData1<TRfStateInfo> mockData1(rfInfo);
+
+ expectData.Close();
+ mockData1.SerialiseL(expectData);
+
+ iMockLTSY.CompleteL(EMmTsyBootGetRFStatusIPC, KErrNone, expectData);
+ User::WaitForRequest(mockLtsyStatus);
+ AssertMockLtsyStatusL();
+ ASSERT_EQUALS(KErrNone, mockLtsyStatus.Int());
+
+ call.Dial(requestStatus, pckgCallParamsX, KPhoneNumber);
+ User::WaitForRequest(requestStatus);
+ AssertMockLtsyStatusL();
+ ASSERT_EQUALS(KErrGsmOfflineOpNotAllowed, requestStatus.Int());
+
+ call.Close();
+ AssertMockLtsyStatusL();
+ CleanupStack::PopAndDestroy(1);
+
+ AssertMockLtsyStatusL();
+ CleanupStack::PopAndDestroy(4, this); // expectData, completeData, line
+ }
+
+/**
+@SYMTestCaseID BA-CTSY-CCON-CD-0001b
+@SYMComponent telephony_ctsy
+@SYMTestCaseDesc Test support in CTSY for RCall::Dial for voice calls with minimal parameters (RCall::TCallParams)
+@SYMTestPriority High
+@SYMTestActions Invokes RCall::Dial for voice calls
+@SYMTestExpectedResults Pass
+@SYMTestType CT
+*/
+void CCTsyCallControlFU::TestDial0001bL()
+ {
+
+ OpenEtelServerL(EUseExtendedError);
+ CleanupStack::PushL(TCleanupItem(Cleanup,this));
+ OpenPhoneL();
+
+ RBuf8 expectData;
+ CleanupClosePushL(expectData);
+
+ RBuf8 completeData;
+ CleanupClosePushL(completeData);
+
+ TInt errorCode = KErrNone;
+
+ //-- For Voice1 -------------------------
+
+ TBuf<256> lineName(KMmTsyVoice1LineName);
+ // Open new line
+ RLine line;
+ errorCode = line.Open(iPhone, lineName);
+ ASSERT_EQUALS(KErrNone, errorCode);
+ CleanupClosePushL(line);
+ // open call
+ _LIT(KDoubleColon, "::");
+ TBuf<256> name;
+ name = KMmTsyPhoneName;
+ name.Append(KDoubleColon);
+ name.Append(lineName);
+ name.Append(KDoubleColon);
+
+ RMobileCall call;
+ errorCode = call.OpenNewCall(line, name);
+ ASSERT_EQUALS(KErrNone, errorCode);
+ CleanupClosePushL(call);
+
+ TRequestStatus requestStatus;
+ _LIT(KSomeNumber, "123456789");
+
+ RMobilePhone::TMobileService mobileService = RMobilePhone::EVoiceService;
+ TInt expectedCallId = 0;
+
+ RMobileCall::TMobileCallParamsV7 callParams;
+ RMobileCall::TMobileCallParamsV7Pckg pckgCallParams(callParams);
+ RMobileCall::TMobileCallInfoV8 callInfo;
+ callParams.iSpeakerControl = RCall::EMonitorSpeakerControlOnUntilCarrier;
+ callParams.iSpeakerVolume = RCall::EMonitorSpeakerVolumeLow;
+ callParams.iInterval = 100;
+ callParams.iWaitForDialTone = RCall::EDialToneWait;
+ callParams.iIdRestrict = RMobileCall::EIdRestrictDefault;
+ callParams.iCug.iExplicitInvoke = EFalse;
+ callParams.iCug.iCugIndex = 0xFFFF;
+ callParams.iCug.iSuppressPrefCug = EFalse;
+ callParams.iCug.iSuppressOA = EFalse;
+ callParams.iAutoRedial = EFalse;
+ callInfo.iValid = RMobileCall::KCallDialledParty | RMobileCall::KCallAlternating;
+ callInfo.iService = mobileService;
+ callInfo.iStatus = RMobileCall::EStatusUnknown;
+ callInfo.iCallId =-1;
+ callInfo.iExitCode =0;
+ callInfo.iEmergency =0;
+ callInfo.iForwarded =0;
+ callInfo.iPrivacy = RMobilePhone::EPrivacyUnspecified;
+ callInfo.iAlternatingCall = RMobilePhone::EAlternatingModeUnspecified;
+
+
+ callInfo.iDialledParty.iTelNumber.Copy( KSomeNumber );
+ callInfo.iDialledParty.iNumberPlan = RMobilePhone::EUnknownNumberingPlan;
+ callInfo.iDialledParty.iTypeOfNumber = RMobilePhone::EUnknownNumber;
+
+ TMockLtsyCallData2< RMobileCall::TMobileCallParamsV1, RMobileCall::TMobileCallInfoV8 >
+ mockCallData(expectedCallId, mobileService, callParams, callInfo);
+ mockCallData.SerialiseL(expectData);
+
+ iMockLTSY.ExpectL(EEtelCallDial, expectData);
+
+ TInt callId = 1;
+
+ completeData.Close();
+ TMockLtsyCallData1<RMobileCall::TMobileCallInfoV1> callInfoData(callId, mobileService, callInfo);
+ callInfoData.SerialiseL(completeData);
+ //Complete Mobile Call Info in order to set the call ID
+ iMockLTSY.CompleteL(EMobileCallGetMobileCallInfo, KErrNone, completeData);
+
+ TMockLtsyCallData0 mockDataComplete(callId, mobileService);
+ completeData.Close();
+ mockDataComplete.SerialiseL(completeData);
+ // Complete the Dial
+ iMockLTSY.CompleteL(EEtelCallDial, KErrNone, completeData);
+
+ RCall::TCallParams callParamsX;
+ callParamsX.iSpeakerControl = RCall::EMonitorSpeakerControlOnUntilCarrier;
+ callParamsX.iSpeakerVolume = RCall::EMonitorSpeakerVolumeLow;
+ callParamsX.iInterval = 100;
+ callParamsX.iWaitForDialTone = RCall::EDialToneWait;
+ TPckg<RCall::TCallParams> pckgCallParamsX(callParamsX);
+
+ call.Dial(requestStatus, pckgCallParamsX, KSomeNumber);
+
+ User::WaitForRequest(requestStatus);
+ ASSERT_EQUALS(KErrNone, requestStatus.Int());
+ AssertMockLtsyStatusL();
+
+ CleanupStack::PopAndDestroy(5,this);
+
+ }
+
+
+/**
+@SYMTestCaseID BA-CTSY-CCON-CD-0001c
+@SYMComponent telephony_ctsy
+@SYMTestCaseDesc Test support in CTSY for RCall::Dial for voice calls with changing parameters
+@SYMTestPriority High
+@SYMTestActions Invokes RCall::Dial for voice calls
+@SYMTestExpectedResults Pass
+@SYMTestType CT
+*/
+void CCTsyCallControlFU::TestDial0001cL()
+ {
+
+ OpenEtelServerL(EUseExtendedError);
+ CleanupStack::PushL(TCleanupItem(Cleanup,this));
+ OpenPhoneL();
+
+ RBuf8 expectData;
+ CleanupClosePushL(expectData);
+
+ RBuf8 completeData;
+ CleanupClosePushL(completeData);
+
+ TInt errorCode = KErrNone;
+
+ //-- For Voice1 -------------------------
+
+ TBuf<256> lineName(KMmTsyVoice1LineName);
+ // Open new line
+ RLine line;
+ errorCode = line.Open(iPhone, lineName);
+ ASSERT_EQUALS(KErrNone, errorCode);
+ CleanupClosePushL(line);
+ // open call
+ _LIT(KDoubleColon, "::");
+ TBuf<256> name;
+ name = KMmTsyPhoneName;
+ name.Append(KDoubleColon);
+ name.Append(lineName);
+ name.Append(KDoubleColon);
+
+ RMobileCall call;
+ errorCode = call.OpenNewCall(line, name);
+ ASSERT_EQUALS(KErrNone, errorCode);
+ CleanupClosePushL(call);
+
+ TRequestStatus requestStatus;
+ _LIT(KSomeNumber, "123456789");
+
+ RMobilePhone::TMobileService mobileService = RMobilePhone::EVoiceService;
+ TInt expectedCallId = 0;
+ RMobileCall::TMobileCallInfoV8 callInfo;
+ callInfo.iValid = RMobileCall::KCallDialledParty | RMobileCall::KCallAlternating;
+ callInfo.iService = mobileService;
+ callInfo.iStatus = RMobileCall::EStatusUnknown;
+ callInfo.iCallId =-1;
+ callInfo.iExitCode =0;
+ callInfo.iEmergency =0;
+ callInfo.iForwarded =0;
+ callInfo.iPrivacy = RMobilePhone::EPrivacyUnspecified;
+ callInfo.iAlternatingCall = RMobilePhone::EAlternatingModeUnspecified;
+ callInfo.iDialledParty.iTelNumber.Copy( KSomeNumber );
+ callInfo.iDialledParty.iNumberPlan = RMobilePhone::EUnknownNumberingPlan;
+ callInfo.iDialledParty.iTypeOfNumber = RMobilePhone::EUnknownNumber;
+
+ // A. Call with V7 params.
+ // Fill the params with random values
+ RMobileCall::TMobileCallParamsV7 callParams;
+ RMobileCall::TMobileCallParamsV7Pckg pckgCallParams(callParams);
+ callParams.iAlphaId.Copy(_L("Alpha Id"));
+ callParams.iIconId.iQualifier = RMobileCall::ESelfExplanatory;
+ callParams.iIconId.iIdentifier = 0x0A;
+ callParams.iBCRepeatIndicator = RMobileCall::EBCServiceChangeAndFallbackMode;
+ callParams.iBearerCap2.Copy(_L("Cap2"));
+ callParams.iBearerCap1.Copy(_L("Cap1"));
+ callParams.iSubAddress.Copy(_L("SubAddress"));
+ callParams.iCallParamOrigin = RMobileCall::EOriginatorEtelClient;
+ callParams.iBearerMode = RMobileCall::EMulticallShareBearer;
+ callParams.iIdRestrict = RMobileCall::EDontSendMyId;
+ callParams.iCug.iExplicitInvoke = EFalse;
+ callParams.iCug.iCugIndex = 0xAABB;
+ callParams.iCug.iSuppressPrefCug = EFalse;
+ callParams.iCug.iSuppressOA = ETrue;
+ callParams.iAutoRedial = ETrue;
+ callParams.iSpeakerControl = RCall::EMonitorSpeakerControlOnUntilCarrier;
+ callParams.iSpeakerVolume = RCall::EMonitorSpeakerVolumeLow;
+ callParams.iInterval = 0;
+ callParams.iWaitForDialTone = RCall::EDialToneWait;
+
+ TMockLtsyCallData2< RMobileCall::TMobileCallParamsV7, RMobileCall::TMobileCallInfoV8 >
+ mockCallData(expectedCallId, mobileService, callParams, callInfo);
+ mockCallData.SerialiseL(expectData);
+
+ iMockLTSY.ExpectL(EEtelCallDial, expectData);
+
+ TInt callId = 1;
+
+ completeData.Close();
+ TMockLtsyCallData1<RMobileCall::TMobileCallInfoV1> callInfoData(callId, mobileService, callInfo);
+ callInfoData.SerialiseL(completeData);
+ //Complete Mobile Call Info in order to set the call ID
+ iMockLTSY.CompleteL(EMobileCallGetMobileCallInfo, KErrNone, completeData);
+
+ TMockLtsyCallData0 mockDataComplete(callId, mobileService);
+ completeData.Close();
+ mockDataComplete.SerialiseL(completeData);
+ // Complete the Dial
+ iMockLTSY.CompleteL(EEtelCallDial, KErrNone, completeData);
+
+ call.Dial(requestStatus, pckgCallParams, KSomeNumber);
+
+ User::WaitForRequest(requestStatus);
+ ASSERT_EQUALS(KErrNone, requestStatus.Int());
+ AssertMockLtsyStatusL();
+
+ // B. Call with V0 params.
+ // The CTSY should send the default V7 values to the LTSY, and not the previous call parameters which are irrelevant.
+ // Fill the params with other random values.
+ callParams.iAlphaId.Zero();
+ callParams.iIconId.iQualifier = RMobileCall::EIconQualifierNotSet;
+ callParams.iIconId.iIdentifier = 0x00;
+ callParams.iBCRepeatIndicator = RMobileCall::EBCAlternateMode;
+ callParams.iBearerCap2.Zero();
+ callParams.iBearerCap1.Zero();
+ callParams.iSubAddress.Zero();
+ callParams.iCallParamOrigin = RMobileCall::EOriginatorUnknown;
+ callParams.iBearerMode = RMobileCall::EMulticallNotSupported;
+ callParams.iIdRestrict = RMobileCall::EIdRestrictDefault;
+ callParams.iCug.iExplicitInvoke = EFalse;
+ callParams.iCug.iCugIndex = 0xFFFF;
+ callParams.iCug.iSuppressPrefCug = EFalse;
+ callParams.iCug.iSuppressOA = EFalse;
+ callParams.iAutoRedial = EFalse;
+ callParams.iSpeakerControl = RCall::EMonitorSpeakerControlAlwaysOn;
+ callParams.iSpeakerVolume = RCall::EMonitorSpeakerVolumeMedium;
+ callParams.iInterval = 12;
+ callParams.iWaitForDialTone = RCall::EDialToneNoWait;
+
+
+ RMobileCall::TCallParams callParams0;
+ callParams0.iSpeakerControl = callParams.iSpeakerControl;
+ callParams0.iSpeakerVolume = callParams.iSpeakerVolume;
+ callParams0.iInterval = callParams.iInterval;
+ callParams0.iWaitForDialTone = callParams.iWaitForDialTone;
+ RCall::TCallParamsPckg pckgCallParams0(callParams0);
+
+ expectData.Close();
+ TMockLtsyCallData2< RMobileCall::TMobileCallParamsV7, RMobileCall::TMobileCallInfoV8 >
+ mockCallData2(1, mobileService, callParams, callInfo);
+ mockCallData2.SerialiseL(expectData);
+
+ iMockLTSY.ExpectL(EEtelCallDial, expectData);
+
+
+ completeData.Close();
+ callInfoData.SerialiseL(completeData);
+ //Complete Mobile Call Info in order to set the call ID
+ iMockLTSY.CompleteL(EMobileCallGetMobileCallInfo, KErrNone, completeData);
+
+ completeData.Close();
+ mockDataComplete.SerialiseL(completeData);
+ // Complete the Dial
+ iMockLTSY.CompleteL(EEtelCallDial, KErrNone, completeData);
+
+ call.Dial(requestStatus, pckgCallParams0, KSomeNumber);
+
+ User::WaitForRequest(requestStatus);
+ ASSERT_EQUALS(KErrNone, requestStatus.Int());
+ AssertMockLtsyStatusL();
+
+ CleanupStack::PopAndDestroy(5,this);
+
+ }
+
+
+/**
+@SYMTestCaseID BA-CTSY-CCON-CD-0002
+@SYMComponent telephony_ctsy
+@SYMTestCaseDesc Test support in CTSY for cancelling of RCall::Dial for voice calls
+@SYMTestPriority High
+@SYMTestActions Invokes cancelling of RCall::Dial for voice calls
+@SYMTestExpectedResults Pass
+@SYMTestType CT
+*/
+void CCTsyCallControlFU::TestDial0002L()
+ {
+
+ OpenEtelServerL(EUseExtendedError);
+ CleanupStack::PushL(TCleanupItem(Cleanup,this));
+ OpenPhoneL();
+
+ RBuf8 expectData;
+ CleanupClosePushL(expectData);
+
+ RBuf8 completeData;
+ CleanupClosePushL(completeData);
+
+ RLine line;
+ RCall call;
+
+ TInt errorCode = KErrNone;
+ TRequestStatus requestStatus;
+ TRequestStatus mockLtsyStatus;
+
+ // open new line and call for KMmTsyVoice1LineName
+ errorCode = OpenNewLineLC(iPhone, line, KMmTsyVoice1LineName);
+ ASSERT_EQUALS(KErrNone, errorCode);
+
+ TName name;
+
+ _LIT(KPhoneNumber, "101632960000");
+
+ TInt callId = 1;
+ RMobilePhone::TMobileService mobileService = RMobilePhone::EVoiceService;
+
+ RMobileCall::TMobileCallParamsV7 callParams;
+ callParams.iInterval = 100;
+ callParams.iCug.iCugIndex = 0xFFFF;
+ callParams.iSpeakerControl = RCall::EMonitorSpeakerControlOnUntilCarrier;
+ callParams.iSpeakerVolume = RCall::EMonitorSpeakerVolumeLow;
+ callParams.iWaitForDialTone = RCall::EDialToneWait;
+ callParams.iIdRestrict = RMobileCall::EIdRestrictDefault;
+ callParams.iCug.iExplicitInvoke = EFalse;
+ callParams.iCug.iSuppressPrefCug = EFalse;
+ callParams.iCug.iSuppressOA = EFalse;
+ callParams.iAutoRedial = EFalse;
+
+ RMobileCall::TMobileCallInfoV8 callInfo;
+ callInfo.iDialledParty.iTelNumber.Copy(KPhoneNumber);
+ callInfo.iService = mobileService;
+ callInfo.iValid = RMobileCall::KCallDialledParty | RMobileCall::KCallAlternating;
+ callInfo.iStatus = RMobileCall::EStatusUnknown;
+ callInfo.iCallId =-1;
+ callInfo.iExitCode =0;
+ callInfo.iEmergency =0;
+ callInfo.iForwarded =0;
+ callInfo.iPrivacy = RMobilePhone::EPrivacyUnspecified;
+ callInfo.iAlternatingCall = RMobilePhone::EAlternatingModeUnspecified;
+
+
+ TMockLtsyCallData2<RMobileCall::TMobileCallParamsV1, RMobileCall::TMobileCallInfoV1>
+ mockData2(0, mobileService, callParams, callInfo);
+
+ TMockLtsyCallData0 mockData0(callId, mobileService);
+
+ TInt hangUpCause = KErrGsmReleaseByUser;
+ TBool autoStChangeDisable = ETrue;
+ TMockLtsyCallData2<TInt, TBool> mockCallData2(callId, mobileService,
+ hangUpCause,
+ autoStChangeDisable);
+
+ RCall::TCallParams callParamsX;
+ TPckg<RCall::TCallParams> pckgCallParamsX(callParamsX);
+ callParamsX.iSpeakerControl = RCall::EMonitorSpeakerControlOnUntilCarrier;
+ callParamsX.iSpeakerVolume = RCall::EMonitorSpeakerVolumeLow;
+ callParamsX.iInterval = 100;
+ callParamsX.iWaitForDialTone = RCall::EDialToneWait;
+
+ //-------------------------------------------------------------------------
+ // Test cancelling of RCall::Dial
+ // before than LTSY sends any completions
+ //-------------------------------------------------------------------------
+
+ // open new call
+ CleanupClosePushL(call);
+ errorCode = call.OpenNewCall(line, name);
+ ASSERT_EQUALS(KErrNone, errorCode);
+
+ expectData.Close();
+ mockData2.SerialiseL(expectData);
+ iMockLTSY.ExpectL(EEtelCallDial, expectData);
+
+
+ call.Dial(requestStatus, pckgCallParamsX, KPhoneNumber);
+ call.CancelAsyncRequest(EEtelCallDial);
+
+ CallGetMobileCallInfoL(callId, mobileService, KPhoneNumber);
+
+ RMobileCall::TMobileCallStatus mobileCallStatus = RMobileCall::EStatusDialling;
+ TMockLtsyCallData1<RMobileCall::TMobileCallStatus> mockCallDataStatus(callId, mobileService, mobileCallStatus);
+ completeData.Close();
+ mockCallDataStatus.SerialiseL(completeData);
+
+ iMockLTSY.NotifyTerminated(mockLtsyStatus);
+ iMockLTSY.CompleteL(EMobileCallNotifyMobileCallStatusChange, KErrNone, completeData);
+
+ expectData.Close();
+ mockCallData2.SerialiseL(expectData);
+ iMockLTSY.ExpectL(EEtelCallHangUp, expectData);
+
+ User::WaitForRequest(mockLtsyStatus);
+
+ // Cancelled Dial request. After this CTSY hangs up the call and it goes to idle state.
+
+ RMobileCall::TMobileCallStatus mobileCallStatus2 = RMobileCall::EStatusIdle;
+ TMockLtsyCallData1<RMobileCall::TMobileCallStatus> mockCallDataStatus2(callId, mobileService, mobileCallStatus2);
+ completeData.Close();
+ mockCallDataStatus2.SerialiseL(completeData);
+
+ iMockLTSY.NotifyTerminated(mockLtsyStatus);
+ iMockLTSY.CompleteL(EMobileCallNotifyMobileCallStatusChange, KErrGsmReleaseByUser, completeData);
+
+ User::WaitForRequest(requestStatus);
+ AssertMockLtsyStatusL();
+ ASSERT_EQUALS(KErrCancel, requestStatus.Int());
+
+ call.Close();
+ AssertMockLtsyStatusL();
+ CleanupStack::PopAndDestroy(1);
+ //-------------------------------------------------------------------------
+ // Test cancelling of RCall::Dial
+ //-------------------------------------------------------------------------
+
+ // open new call
+ CleanupClosePushL(call);
+ errorCode = call.OpenNewCall(line, name);
+ ASSERT_EQUALS(KErrNone, errorCode);
+
+
+ expectData.Close();
+ mockData2.SerialiseL(expectData);
+ iMockLTSY.ExpectL(EEtelCallDial, expectData);
+
+ CallGetMobileCallInfoL(callId, mobileService, KPhoneNumber);
+
+ call.Dial(requestStatus, pckgCallParamsX, KPhoneNumber);
+ completeData.Close();
+ mockCallDataStatus.SerialiseL(completeData);
+
+ iMockLTSY.NotifyTerminated(mockLtsyStatus);
+ iMockLTSY.CompleteL(EMobileCallNotifyMobileCallStatusChange, KErrNone, completeData);
+
+ User::WaitForRequest(mockLtsyStatus);
+
+ expectData.Close();
+ mockCallData2.SerialiseL(expectData);
+ iMockLTSY.ExpectL(EEtelCallHangUp, expectData);
+
+ // Cancelled Dial request. After this CTSY hangs up the call and it goes to idle state.
+ call.CancelAsyncRequest(EEtelCallDial);
+ completeData.Close();
+ mockCallDataStatus2.SerialiseL(completeData);
+
+ iMockLTSY.NotifyTerminated(mockLtsyStatus);
+ iMockLTSY.CompleteL(EMobileCallNotifyMobileCallStatusChange, KErrGsmReleaseByUser, completeData);
+
+ User::WaitForRequest(requestStatus);
+ AssertMockLtsyStatusL();
+ ASSERT_EQUALS(KErrCancel, requestStatus.Int());
+
+ call.Close();
+ AssertMockLtsyStatusL();
+ CleanupStack::PopAndDestroy(1);
+ CleanupStack::PopAndDestroy(4); // expectData, completeData, this, this
+
+ }
+
+
+/**
+@SYMTestCaseID BA-CTSY-CCON-CD-0003
+@SYMComponent telephony_ctsy
+@SYMTestCaseDesc Test support in CTSY for RCall::Dial with bad parameter data for voice calls
+@SYMTestPriority High
+@SYMTestActions Invokes RCall::Dial with bad parameter data for voice calls
+@SYMTestExpectedResults Pass
+@SYMTestType CT
+*/
+void CCTsyCallControlFU::TestDial0003L()
+ {
+
+ OpenEtelServerL(EUseExtendedError);
+ CleanupStack::PushL(TCleanupItem(Cleanup,this));
+ OpenPhoneL();
+
+ RBuf8 expectData;
+ CleanupClosePushL(expectData);
+
+ RBuf8 completeData;
+ CleanupClosePushL(completeData);
+
+ RLine line;
+ RCall call;
+
+ TInt errorCode = KErrNone;
+ TRequestStatus requestStatus;
+ TRequestStatus mockLtsyStatus;
+
+ // open new line and call for KMmTsyVoice1LineName
+ errorCode = OpenNewLineLC(iPhone, line, KMmTsyVoice1LineName);
+ ASSERT_EQUALS(KErrNone, errorCode);
+
+ TName name;
+
+ _LIT(KPhoneNumber, "101632960000");
+
+ TInt callId = 1;
+ RMobilePhone::TMobileService mobileService = RMobilePhone::EVoiceService;
+
+ RMobileCall::TMobileCallParamsV1 callParams;
+ callParams.iInterval = 4;
+ callParams.iCug.iCugIndex = 0xFFFF;
+
+ RMobileCall::TMobileCallInfoV8 callInfo;
+ callInfo.iDialledParty.iTelNumber.Copy(KPhoneNumber);
+ callInfo.iService = mobileService;
+ callInfo.iValid = RMobileCall::KCallDialledParty | RMobileCall::KCallAlternating;
+
+ TMockLtsyCallData2<RMobileCall::TMobileCallParamsV1, RMobileCall::TMobileCallInfoV8>
+ mockData2(0, mobileService, callParams, callInfo);
+
+ TMockLtsyCallData0 mockData0(callId, mobileService);
+
+ //-------------------------------------------------------------------------
+ // Test A: Test passing wrong version of parameters to
+ // RCall::Dial
+ //-------------------------------------------------------------------------
+
+ // open new call
+ CleanupClosePushL(call);
+ errorCode = call.OpenNewCall(line, name);
+ ASSERT_EQUALS(KErrNone, errorCode);
+
+ RMobileCall::TEtel3rdPartyMobileCallParamsV1 paramsV1;
+ TPckg<RMobileCall::TEtel3rdPartyMobileCallParamsV1> pckgParamsV1(paramsV1);
+
+ call.Dial(requestStatus, pckgParamsV1, KPhoneNumber);
+
+ User::WaitForRequest(requestStatus);
+ ASSERT_EQUALS(KErrArgument, requestStatus.Int());
+
+ call.Close();
+ CleanupStack::PopAndDestroy(&call);
+
+ //-------------------------------------------------------------------------
+ // Test B: Test passing wrong descriptor size to parameter in
+ // RCall::Dial
+ //-------------------------------------------------------------------------
+
+ // open new call
+ CleanupClosePushL(call);
+ errorCode = call.OpenNewCall(line, name);
+ ASSERT_EQUALS(KErrNone, errorCode);
+
+ CallGetMobileCallInfoL(callId, mobileService, KPhoneNumber);
+
+ _LIT8(KTempDesC8,"A");
+ TBuf8<1> tempDes(KTempDesC8);
+
+ call.Dial(requestStatus, tempDes, KPhoneNumber);
+
+ User::WaitForRequest(requestStatus);
+ ASSERT_EQUALS(KErrArgument, requestStatus.Int());
+
+ call.Close();
+ CleanupStack::PopAndDestroy(&call);
+
+ //-------------------------------------------------------------------------
+ // Test C: Test passing empty descriptor size to parameter in
+ // RCall::Dial
+ //-------------------------------------------------------------------------
+
+ // open new call
+ CleanupClosePushL(call);
+ errorCode = call.OpenNewCall(line, name);
+ ASSERT_EQUALS(KErrNone, errorCode);
+
+ expectData.Close();
+ mockData2.SerialiseL(expectData);
+ iMockLTSY.ExpectL(EEtelCallDial, expectData);
+
+ CallGetMobileCallInfoL(callId, mobileService, KPhoneNumber);
+
+ completeData.Close();
+ mockData0.SerialiseL(completeData);
+ iMockLTSY.CompleteL(EEtelCallDial, KErrNone, completeData);
+
+ TBuf8<1> nullDes(KNullDesC8);
+
+ // If aCallParams is empty it is handled as there are no call parameters
+ // and CTSY uses default values
+ call.Dial(requestStatus, nullDes, KPhoneNumber);
+
+ User::WaitForRequest(requestStatus);
+ ASSERT_EQUALS(KErrNone, requestStatus.Int());
+
+ call.Close();
+ AssertMockLtsyStatusL();
+ CleanupStack::PopAndDestroy(&call);
+ CleanupStack::PopAndDestroy(4); // completeData, expectData, line, this
+
+ }
+
+
+/**
+@SYMTestCaseID BA-CTSY-CCON-CD-0004
+@SYMComponent telephony_ctsy
+@SYMTestCaseDesc Test support in CTSY for multiple client requests to RCall::Dial for voice calls
+@SYMTestPriority High
+@SYMTestActions Invokes multiple client requests to RCall::Dial for voice calls
+@SYMTestExpectedResults Pass
+@SYMTestType CT
+*/
+void CCTsyCallControlFU::TestDial0004L()
+ {
+ OpenEtelServerL(EUseExtendedError);
+ CleanupStack::PushL(TCleanupItem(Cleanup,this));
+ OpenPhoneL();
+
+ RBuf8 expectData;
+ CleanupClosePushL(expectData);
+
+ RBuf8 completeData;
+ CleanupClosePushL(completeData);
+
+ // Open second client
+ RTelServer telServer2;
+ TInt ret = telServer2.Connect();
+ ASSERT_EQUALS(KErrNone, ret);
+ CleanupClosePushL(telServer2);
+
+ RMobilePhone phone2;
+ ret = phone2.Open(iTelServer,KMmTsyPhoneName);
+ ASSERT_EQUALS(KErrNone, ret);
+ CleanupClosePushL(phone2);
+
+ RLine line1;
+ RLine line2;
+
+ RCall call1;
+ RCall call2;
+
+ TInt errorCode = KErrNone;
+ TRequestStatus requestStatus1;
+ TRequestStatus requestStatus2;
+
+ // open new line1 and call for KMmTsyVoice1LineName
+ errorCode = OpenNewLineLC(iPhone, line1, KMmTsyVoice1LineName);
+ ASSERT_EQUALS(KErrNone, errorCode);
+
+ // open new line2 and call for KMmTsyVoice1LineName
+ errorCode = OpenNewLineLC(phone2, line2, KMmTsyVoice1LineName);
+ ASSERT_EQUALS(KErrNone, errorCode);
+
+ TName name;
+
+ _LIT(KPhoneNumber1, "101632960000");
+ _LIT(KPhoneNumber2, "654654864531");
+
+ TInt callId1 = 1;
+ TInt callId2 = 2;
+ RMobilePhone::TMobileService mobileService = RMobilePhone::EVoiceService;
+
+ RMobileCall::TMobileCallParamsV7 callParams1;
+ callParams1.iInterval = 100;
+ callParams1.iCug.iCugIndex = 0xFFFF;
+ callParams1.iSpeakerControl = RCall::EMonitorSpeakerControlOnUntilCarrier;
+ callParams1.iSpeakerVolume = RCall::EMonitorSpeakerVolumeLow;
+ callParams1.iWaitForDialTone = RCall::EDialToneWait;
+ callParams1.iIdRestrict = RMobileCall::EIdRestrictDefault;
+ callParams1.iCug.iExplicitInvoke = EFalse;
+ callParams1.iCug.iSuppressPrefCug = EFalse;
+ callParams1.iCug.iSuppressOA = EFalse;
+ callParams1.iAutoRedial = EFalse;
+
+ RMobileCall::TMobileCallParamsV7 callParams2;
+ callParams2.iInterval = 200;
+ callParams2.iCug.iCugIndex = 0xFFFF;
+ callParams2.iSpeakerControl = RCall::EMonitorSpeakerControlAlwaysOn;
+ callParams2.iSpeakerVolume =RCall::EMonitorSpeakerVolumeMedium;
+ callParams2.iWaitForDialTone = RCall::EDialToneWait;
+ callParams2.iIdRestrict = RMobileCall::EIdRestrictDefault;
+ callParams2.iCug.iExplicitInvoke = EFalse;
+ callParams2.iCug.iSuppressPrefCug = EFalse;
+ callParams2.iCug.iSuppressOA = EFalse;
+ callParams2.iAutoRedial = EFalse;
+
+
+
+ RMobileCall::TMobileCallInfoV8 callInfo1;
+ callInfo1.iDialledParty.iTelNumber.Copy(KPhoneNumber1);
+ callInfo1.iService = mobileService;
+ callInfo1.iValid = RMobileCall::KCallDialledParty | RMobileCall::KCallAlternating;
+ callInfo1.iStatus = RMobileCall::EStatusUnknown;
+ callInfo1.iCallId =-1;
+ callInfo1.iExitCode =0;
+ callInfo1.iEmergency =0;
+ callInfo1.iForwarded =0;
+ callInfo1.iPrivacy = RMobilePhone::EPrivacyUnspecified;
+ callInfo1.iAlternatingCall = RMobilePhone::EAlternatingModeUnspecified;
+
+
+ RMobileCall::TMobileCallInfoV8 callInfo2;
+ callInfo2.iDialledParty.iTelNumber.Copy(KPhoneNumber2);
+ callInfo2.iService = mobileService;
+ callInfo2.iValid = RMobileCall::KCallDialledParty | RMobileCall::KCallAlternating;
+ callInfo2.iStatus = RMobileCall::EStatusUnknown;
+ callInfo2.iCallId =-1;
+ callInfo2.iExitCode =0;
+ callInfo2.iEmergency =0;
+ callInfo2.iForwarded =0;
+ callInfo2.iPrivacy = RMobilePhone::EPrivacyUnspecified;
+ callInfo2.iAlternatingCall = RMobilePhone::EAlternatingModeUnspecified;
+
+ TMockLtsyCallData2<RMobileCall::TMobileCallParamsV7, RMobileCall::TMobileCallInfoV8>
+ mockData21(0, mobileService, callParams1, callInfo1);
+
+ TMockLtsyCallData2<RMobileCall::TMobileCallParamsV7, RMobileCall::TMobileCallInfoV8>
+ mockData22(0, mobileService, callParams2, callInfo2);
+
+ TMockLtsyCallData0 mockData01(callId1, mobileService);
+ TMockLtsyCallData0 mockData02(callId2, mobileService);
+
+ RCall::TCallParams callParamsX1;
+ TPckg<RCall::TCallParams> pckgCallParamsX1(callParamsX1);
+ callParamsX1.iSpeakerControl = RCall::EMonitorSpeakerControlOnUntilCarrier;
+ callParamsX1.iSpeakerVolume = RCall::EMonitorSpeakerVolumeLow;
+ callParamsX1.iInterval = 100;
+ callParamsX1.iWaitForDialTone = RCall::EDialToneWait;
+
+ RCall::TCallParams callParamsX2;
+ TPckg<RCall::TCallParams> pckgCallParamsX2(callParamsX2);
+ callParamsX2.iSpeakerControl = RCall::EMonitorSpeakerControlAlwaysOn;
+ callParamsX2.iSpeakerVolume = RCall::EMonitorSpeakerVolumeMedium;
+ callParamsX2.iInterval = 200;
+ callParamsX2.iWaitForDialTone = RCall::EDialToneNoWait;
+
+ //-------------------------------------------------------------------------
+ // Test A: Test multiple clients requesting RCall::Dial
+ //-------------------------------------------------------------------------
+
+ // call first clinet
+ // open new call1
+ CleanupClosePushL(call1);
+ errorCode = call1.OpenNewCall(line1, name);
+ ASSERT_EQUALS(KErrNone, errorCode);
+
+ expectData.Close();
+ mockData21.SerialiseL(expectData);
+ iMockLTSY.ExpectL(EEtelCallDial, expectData);
+
+ CallGetMobileCallInfoL(callId1, mobileService, KPhoneNumber1);
+ call1.Dial(requestStatus1, pckgCallParamsX1, KPhoneNumber1);
+ User::After(1000);
+
+ mockData01.SerialiseL(completeData);
+ iMockLTSY.CompleteL(EEtelCallDial, KErrNone, completeData);
+
+ // call second clinet
+ // open new call
+ CleanupClosePushL(call2);
+ errorCode = call2.OpenNewCall(line2, name);
+ ASSERT_EQUALS(KErrNone, errorCode);
+
+ call2.Dial(requestStatus2, pckgCallParamsX2, KPhoneNumber2);
+
+ User::WaitForRequest(requestStatus1);
+ AssertMockLtsyStatusL();
+ ASSERT_EQUALS(KErrNone, requestStatus1.Int());
+
+ User::WaitForRequest(requestStatus2);
+ AssertMockLtsyStatusL();
+ ASSERT_EQUALS(KErrServerBusy, requestStatus2.Int());
+
+ call1.Close();
+ AssertMockLtsyStatusL();
+ CleanupStack::PopAndDestroy(1);
+
+ call2.Close();
+ AssertMockLtsyStatusL();
+ CleanupStack::PopAndDestroy(1);
+
+ CleanupStack::PopAndDestroy(7, this); // phone2, telServer2, expectData, completeData, this
+ // line1, line2
+ }
+
+
+/**
+@SYMTestCaseID BA-CTSY-CCON-CD-0005
+@SYMComponent telephony_ctsy
+@SYMTestCaseDesc Test support in CTSY for RCall::Dial with timeout for voice calls
+@SYMTestPriority High
+@SYMTestActions Invokes RCall::Dial and tests for timeout for voice calls
+@SYMTestExpectedResults Pass
+@SYMTestType CT
+*/
+void CCTsyCallControlFU::TestDial0005L()
+ {
+ OpenEtelServerL(EUseExtendedError);
+ CleanupStack::PushL(TCleanupItem(Cleanup,this));
+ OpenPhoneL();
+
+ RBuf8 expectData;
+ CleanupClosePushL(expectData);
+
+ RBuf8 completeData;
+ CleanupClosePushL(completeData);
+
+ RLine line;
+ RCall call;
+
+ TInt errorCode = KErrNone;
+ TRequestStatus requestStatus;
+
+ // open new line and call for KMmTsyVoice1LineName
+ errorCode = OpenNewLineLC(iPhone, line, KMmTsyVoice1LineName);
+ ASSERT_EQUALS(KErrNone, errorCode);
+
+
+ TName name;
+
+ _LIT(KPhoneNumber, "101632960000");
+
+ TInt callId = 1;
+ RMobilePhone::TMobileService mobileService = RMobilePhone::EVoiceService;
+
+ RMobileCall::TMobileCallParamsV1 callParams;
+ callParams.iInterval = 4;
+ callParams.iCug.iCugIndex = 0xFFFF;
+
+ RMobileCall::TMobileCallInfoV1 callInfo;
+ callInfo.iDialledParty.iTelNumber.Copy(KPhoneNumber);
+ callInfo.iService = mobileService;
+ callInfo.iValid = RMobileCall::KCallDialledParty | RMobileCall::KCallAlternating;
+
+ TMockLtsyCallData2<RMobileCall::TMobileCallParamsV1, RMobileCall::TMobileCallInfoV1>
+ mockData2(0, mobileService, callParams, callInfo);
+
+ TMockLtsyCallData0 mockData0(callId, mobileService);
+
+ RCall::TCallParams callParamsX;
+ TPckg<RCall::TCallParams> pckgCallParamsX(callParamsX);
+ callParamsX.iSpeakerControl = RCall::EMonitorSpeakerControlOnUntilCarrier;
+ callParamsX.iSpeakerVolume = RCall::EMonitorSpeakerVolumeLow;
+ callParamsX.iInterval = 100;
+ callParamsX.iWaitForDialTone = RCall::EDialToneWait;
+
+ //-------------------------------------------------------------------------
+ // Test A: Test timeout of RCall::Dial
+ //-------------------------------------------------------------------------
+
+ // open new call
+ CleanupClosePushL(call);
+ errorCode = call.OpenNewCall(line, name);
+ ASSERT_EQUALS(KErrNone, errorCode);
+
+ expectData.Close();
+ mockData2.SerialiseL(expectData);
+ iMockLTSY.ExpectL(EEtelCallDial, expectData);
+
+ CallGetMobileCallInfoL(callId, mobileService, KPhoneNumber);
+
+ call.Dial(requestStatus, pckgCallParamsX, KPhoneNumber);
+
+ User::WaitForRequest(requestStatus);
+ AssertMockLtsyStatusL();
+ ASSERT_EQUALS(KErrTimedOut, requestStatus.Int());
+
+ call.Close();
+ AssertMockLtsyStatusL();
+ CleanupStack::PopAndDestroy(1);
+ CleanupStack::PopAndDestroy(4); // expectData, completeData, this, this
+ }
+
+/**
+@SYMTestCaseID BA-CTSY-CCON-CD-0006
+@SYMDEF DEF127552
+@SYMREQ 7745
+@SYMComponent telephony_ctsy
+@SYMTestCaseDesc Test support in CTSY for RCall::Dial for data calls
+@SYMTestPriority High
+@SYMTestActions Invokes RCall::Dial for data calls
+@SYMTestExpectedResults Pass
+@SYMTestType CT
+
+N.B. As the test case BA-CTSY-CCON-CD-0006 has a very long running time, it is split into sub-test cases.
+The rationale for that is as following: When the call duration of a test case exceeds 10sec, CTYS sends
+a life time update to LTSY. If a test case duration is at the border of ~10sec, the life time update
+notification is completed depending on the speed of working environment. It varies machine to machine
+or board to board. Therefore, BA-CTSY-CCON-CD-0006 is divided into smaller parts where each part takes
+far less than 10sec.
+*/
+void CCTsyCallControlFU::TestDial0006L()
+ {
+ OpenEtelServerL(EUseExtendedError);
+ CleanupStack::PushL(TCleanupItem(Cleanup,this));
+ OpenPhoneL();
+
+ RBuf8 expectData;
+ CleanupClosePushL(expectData);
+
+ RBuf8 completeData;
+ CleanupClosePushL(completeData);
+
+ RLine line;
+ RCall call;
+
+ TInt errorCode = KErrNone;
+ TRequestStatus requestStatus;
+ TRequestStatus mockLtsyStatus;
+
+ // open new line and call for KMmTsyDataLineName
+ errorCode = OpenNewLineLC(iPhone, line, KMmTsyDataLineName);
+ ASSERT_EQUALS(KErrNone, errorCode);
+
+ TName name;
+
+ _LIT(KPhoneNumber, "101632960000");
+
+ TInt callId = 1;
+ RMobilePhone::TMobileService mobileService = RMobilePhone::ECircuitDataService;
+
+ RMobileCall::TMobileDataCallParamsV1 callParams;
+ callParams.iInterval = 4;
+ callParams.iCug.iCugIndex = 0xFFFF;
+ callParams.iIdRestrict = RMobileCall::EIdRestrictDefault;
+ callParams.iCug.iExplicitInvoke = EFalse;
+ callParams.iCug.iSuppressPrefCug = EFalse;
+ callParams.iCug.iSuppressOA = EFalse;
+ callParams.iAutoRedial = EFalse;
+
+ RMobileCall::TMobileCallInfoV8 callInfo;
+ callInfo.iDialledParty.iTelNumber.Copy(KPhoneNumber);
+ callInfo.iService = mobileService;
+ callInfo.iValid = RMobileCall::KCallDialledParty | RMobileCall::KCallAlternating;
+
+ TMockLtsyCallData2<RMobileCall::TMobileDataCallParamsV1, RMobileCall::TMobileCallInfoV8>
+ mockData2(0, mobileService, callParams, callInfo);
+
+ TMockLtsyCallData0 mockData0(callId, mobileService);
+
+ TPckg<RMobileCall::TMobileDataCallParamsV1> pckgMockParams1(callParams);
+
+ RCall::TCallParams callParamsX;
+
+ callParamsX.iSpeakerControl = RCall::EMonitorSpeakerControlOnUntilCarrier;
+ callParamsX.iSpeakerVolume = RCall::EMonitorSpeakerVolumeLow;
+ callParamsX.iInterval = 100;
+ callParamsX.iWaitForDialTone = RCall::EDialToneWait;
+
+
+ //-------------------------------------------------------------------------
+ // TEST A: failure to dispatch request to LTSY
+ //-------------------------------------------------------------------------
+
+ // open new call
+ CleanupClosePushL(call);
+ errorCode = call.OpenNewCall(line, name);
+ ASSERT_EQUALS(KErrNone, errorCode);
+
+ expectData.Close();
+ mockData2.SerialiseL(expectData);
+ iMockLTSY.ExpectL(EEtelCallDial, expectData, KErrNotSupported);
+
+ call.Dial(requestStatus, pckgMockParams1, KPhoneNumber);
+ User::WaitForRequest(requestStatus);
+ AssertMockLtsyStatusL();
+ ASSERT_EQUALS(KErrNotSupported, requestStatus.Int());
+
+ call.Close();
+ AssertMockLtsyStatusL();
+ CleanupStack::PopAndDestroy(1);
+
+ //-------------------------------------------------------------------------
+ // TEST B: failure on completion of pending request from LTSY->CTSY
+ //-------------------------------------------------------------------------
+
+ // open new call
+ CleanupClosePushL(call);
+ errorCode = call.OpenNewCall(line, name);
+ ASSERT_EQUALS(KErrNone, errorCode);
+
+ expectData.Close();
+ mockData2.SerialiseL(expectData);
+ iMockLTSY.ExpectL(EEtelCallDial, expectData);
+
+ CallGetMobileCallInfoL(callId, mobileService, KPhoneNumber);
+
+ mockData0.SerialiseL(completeData);
+ iMockLTSY.CompleteL(EEtelCallDial, KErrGeneral, completeData);
+
+ call.Dial(requestStatus, pckgMockParams1, KPhoneNumber);
+ User::WaitForRequest(requestStatus);
+ AssertMockLtsyStatusL();
+ ASSERT_EQUALS(KErrGeneral, requestStatus.Int());
+
+ call.Close();
+ AssertMockLtsyStatusL();
+ CleanupStack::PopAndDestroy(1);
+
+ //-------------------------------------------------------------------------
+ // TEST C: Successful completion request of
+ // RCall::Dial when result is not cached.
+ //-------------------------------------------------------------------------
+
+ // open new call
+ CleanupClosePushL(call);
+ errorCode = call.OpenNewCall(line, name);
+ ASSERT_EQUALS(KErrNone, errorCode);
+
+ expectData.Close();
+ mockData2.SerialiseL(expectData);
+ iMockLTSY.ExpectL(EEtelCallDial, expectData);
+
+ CallGetMobileCallInfoL(callId, mobileService, KPhoneNumber);
+
+ completeData.Close();
+ mockData0.SerialiseL(completeData);
+ iMockLTSY.CompleteL(EEtelCallDial, KErrNone, completeData);
+
+ // we are dialing the call:
+ call.Dial(requestStatus, pckgMockParams1, KPhoneNumber);
+
+ CompleteDialStatusNotificationsL(call, callId, mobileService );
+
+ // completion of the Dial() request:
+ User::WaitForRequest(requestStatus);
+ ASSERT_EQUALS(KErrNone, requestStatus.Int());
+
+ CompleteCallDisconnectNotificationsL(callId, mobileService);
+
+ call.Close();
+ CleanupStack::PopAndDestroy(1);
+
+ //-------------------------------------------------------------------------
+ // TEST D (Reloaded): Successful completion request of
+ // RCall::Dial with TCallParams when result is not cached.
+ //-------------------------------------------------------------------------
+
+ // open new call
+ CleanupClosePushL(call);
+ errorCode = call.OpenNewCall(line, name);
+ ASSERT_EQUALS(KErrNone, errorCode);
+
+ RMobileCall::TMobileDataCallParamsV8 callParamsDefault;
+ callParamsDefault.iInterval = 4;
+ callParamsDefault.iCug.iCugIndex = 0xFFFF;
+ callParamsDefault.iIdRestrict = RMobileCall::EIdRestrictDefault;
+ callParamsDefault.iCug.iExplicitInvoke = EFalse;
+ callParamsDefault.iCug.iSuppressPrefCug = EFalse;
+ callParamsDefault.iCug.iSuppressOA = EFalse;
+ callParamsDefault.iAutoRedial = EFalse;
+
+ TMockLtsyCallData2<RMobileCall::TMobileDataCallParamsV8, RMobileCall::TMobileCallInfoV8>
+ mockData3(0, mobileService, callParamsDefault, callInfo);
+
+ expectData.Close();
+ mockData3.SerialiseL(expectData);
+ iMockLTSY.ExpectL(EEtelCallDial, expectData);
+
+ CallGetMobileCallInfoL(callId, mobileService, KPhoneNumber);
+
+ completeData.Close();
+ mockData0.SerialiseL(completeData);
+ iMockLTSY.CompleteL(EEtelCallDial, KErrNone, completeData);
+
+ TPckg<RCall::TCallParams> pckgCallParamsX(callParamsX); // passing TCallParams
+
+ // we are dialing the call:
+ call.Dial(requestStatus, pckgCallParamsX, KPhoneNumber);
+
+ CompleteDialStatusNotificationsL(call, callId, mobileService );
+
+ // completion of the Dial() request:
+ User::WaitForRequest(requestStatus);
+ ASSERT_EQUALS(KErrNone, requestStatus.Int());
+
+ CompleteCallDisconnectNotificationsL(callId, mobileService);
+
+ call.Close();
+ CleanupStack::PopAndDestroy(1);
+
+ CleanupStack::PopAndDestroy(4, this); // expectData, completeData, line, this
+ }
+
+/**
+@SYMTestCaseID BA-CTSY-CCON-CD-0006b
+@SYMDEF DEF127552
+@SYMREQ 7745
+@SYMComponent telephony_ctsy
+@SYMTestCaseDesc Test support in CTSY for RCall::Dial for data calls. It is in connection to BA-CTSY-CCON-CD-0006.
+@SYMTestPriority High
+@SYMTestActions Invokes RCall::Dial for data calls
+@SYMTestExpectedResults Pass
+@SYMTestType CT
+*/
+void CCTsyCallControlFU::TestDial0006bL()
+ {
+ OpenEtelServerL(EUseExtendedError);
+ CleanupStack::PushL(TCleanupItem(Cleanup,this));
+ OpenPhoneL();
+
+ RBuf8 expectData;
+ CleanupClosePushL(expectData);
+
+ RBuf8 completeData;
+ CleanupClosePushL(completeData);
+
+ RLine line;
+ RCall call;
+
+ TInt errorCode = KErrNone;
+ TRequestStatus requestStatus;
+ TRequestStatus mockLtsyStatus;
+
+ // open new line and call for KMmTsyDataLineName
+ errorCode = OpenNewLineLC(iPhone, line, KMmTsyDataLineName);
+ ASSERT_EQUALS(KErrNone, errorCode);
+
+ TName name;
+
+ _LIT(KPhoneNumber, "101632960000");
+
+ TInt callId = 1;
+ RMobilePhone::TMobileService mobileService = RMobilePhone::ECircuitDataService;
+
+ RMobileCall::TMobileDataCallParamsV1 callParams;
+ callParams.iInterval = 4;
+ callParams.iCug.iCugIndex = 0xFFFF;
+
+ RMobileCall::TMobileCallInfoV8 callInfo;
+ callInfo.iDialledParty.iTelNumber.Copy(KPhoneNumber);
+ callInfo.iService = mobileService;
+ callInfo.iValid = RMobileCall::KCallDialledParty | RMobileCall::KCallAlternating;
+
+ TMockLtsyCallData2<RMobileCall::TMobileDataCallParamsV1, RMobileCall::TMobileCallInfoV8>
+ mockData2(0, mobileService, callParams, callInfo);
+
+ TMockLtsyCallData0 mockData0(callId, mobileService);
+ TPckg<RMobileCall::TMobileDataCallParamsV1> pckgMockParams1(callParams);
+
+ //-------------------------------------------------------------------------
+ // TEST E: Unsolicited completion of RCall::Dial
+ // from LTSY.
+ //-------------------------------------------------------------------------
+
+ iMockLTSY.NotifyTerminated(mockLtsyStatus);
+ expectData.Close();
+ mockData0.SerialiseL(expectData);
+ iMockLTSY.CompleteL(EEtelCallDial, KErrNone, expectData);
+ User::WaitForRequest(mockLtsyStatus);
+ AssertMockLtsyStatusL();
+ ASSERT_EQUALS(KErrNone, mockLtsyStatus.Int());
+
+ //-------------------------------------------------------------------------
+ // TEST : to increase CMmDataCallTsy::Dial coverage
+ // covers "else if ( RMobileCall::EStatusIdle != iMobileCallStatus )" condition
+ //-------------------------------------------------------------------------
+
+ TName incomingCallName;
+ RMobileCall::TMobileCallStatus mobileCallStatus = RMobileCall::EStatusRinging;
+
+ //-------------------------------------------------------------------------
+ // create new incoming call
+ errorCode = CreateIncomingCallL(line, callId, incomingCallName,
+ mobileService, mobileCallStatus);
+ ASSERT_EQUALS(KErrNone, errorCode);
+
+ //-------------------------------------------------------------------------
+
+ //-------------------------------------------------------------------------
+ // open new call
+ CleanupClosePushL(call);
+ errorCode = call.OpenExistingCall(line, incomingCallName);
+ ASSERT_EQUALS(KErrNone, errorCode);
+ //-------------------------------------------------------------------------
+
+ call.Dial(requestStatus, pckgMockParams1, KPhoneNumber);
+
+ User::WaitForRequest(requestStatus);
+ AssertMockLtsyStatusL();
+ ASSERT_EQUALS(KErrNotReady, requestStatus.Int());
+
+ //-------------------------------------------------------------------------
+ // close incoming call
+ TInt hangUpCause = KErrGsmReleaseByUser;
+ TBool autoStChangeDisable = EFalse;
+ RMobilePhone::TMobileService mobileServiceX = RMobilePhone::ECircuitDataService;
+ TMockLtsyCallData2<TInt, TBool> mockData2x(callId, mobileServiceX,
+ hangUpCause,
+ autoStChangeDisable);
+ expectData.Close();
+ mockData2x.SerialiseL(expectData);
+ iMockLTSY.ExpectL(EEtelCallHangUp, expectData);
+
+ call.Close();
+ AssertMockLtsyStatusL();
+ CleanupStack::PopAndDestroy(1);
+
+ //-------------------------------------------------------------------------
+ // TEST : to increase CMmDataCallTsy::Dial coverage
+ // covers "else" condition in case of impossible of conditions
+ // "if ( ERfsStateInfoInactive == iMmPhone->GetRfStateInfo() )",
+ // "else if ( RMobileCall::EStatusIdle != iMobileCallStatus )" and
+ // "else if ( 0 < dialHandle )"
+ //-------------------------------------------------------------------------
+
+ mobileCallStatus = RMobileCall::EStatusDisconnectingWithInband;
+ TInt callId3 = 3;
+ TName incomingCallName3;
+
+ //-------------------------------------------------------------------------
+ // create new incoming call
+ errorCode = CreateIncomingCallL(line, callId3, incomingCallName3,
+ mobileService, mobileCallStatus);
+ ASSERT_EQUALS(KErrNone, errorCode);
+ AssertMockLtsyStatusL();
+ //-------------------------------------------------------------------------
+
+ mobileCallStatus = RMobileCall::EStatusDisconnecting;
+ TInt callId2 = 2;
+ TName incomingCallName2;
+
+ //-------------------------------------------------------------------------
+ // create new incoming call
+ errorCode = CreateIncomingCallL(line, callId2, incomingCallName2,
+ mobileService, mobileCallStatus);
+ ASSERT_EQUALS(KErrNone, errorCode);
+ AssertMockLtsyStatusL();
+ //-------------------------------------------------------------------------
+
+ mobileCallStatus = RMobileCall::EStatusRinging;
+ //-------------------------------------------------------------------------
+ // create new incoming call
+ errorCode = CreateIncomingCallL(line, callId, incomingCallName,
+ mobileService, mobileCallStatus);
+ ASSERT_EQUALS(KErrNone, errorCode);
+ AssertMockLtsyStatusL();
+ //-------------------------------------------------------------------------
+
+ // open new call
+ CleanupClosePushL(call);
+ errorCode = call.OpenNewCall(line, name);
+ ASSERT_EQUALS(KErrNone, errorCode);
+
+ call.Dial(requestStatus, pckgMockParams1, KPhoneNumber);
+
+ User::WaitForRequest(requestStatus);
+ ASSERT_EQUALS(KErrEtelCallAlreadyActive, requestStatus.Int());
+
+ call.Close();
+ AssertMockLtsyStatusL();
+ CleanupStack::PopAndDestroy(1);
+
+ //-------------------------------------------------------------------------
+ // TEST : to increase CMmDataCallTsy::Dial coverage
+ // covers "if ( ERfsStateInfoInactive == iMmPhone->GetRfStateInfo() )" condition
+ //-------------------------------------------------------------------------
+
+ // open new call
+ CleanupClosePushL(call);
+ errorCode = call.OpenNewCall(line, name);
+ ASSERT_EQUALS(KErrNone, errorCode);
+
+ iMockLTSY.NotifyTerminated(mockLtsyStatus);
+ TRfStateInfo rfInfo = ERfsStateInfoInactive;
+ TMockLtsyData1<TRfStateInfo> mockData1(rfInfo);
+ expectData.Close();
+ mockData1.SerialiseL(expectData);
+ iMockLTSY.CompleteL(EMmTsyBootGetRFStatusIPC, KErrNone, expectData);
+ User::WaitForRequest(mockLtsyStatus);
+ AssertMockLtsyStatusL();
+ ASSERT_EQUALS(KErrNone, mockLtsyStatus.Int());
+
+ call.Close();
+ AssertMockLtsyStatusL();
+ CleanupStack::PopAndDestroy(1);
+
+ iMockLTSY.NotifyTerminated(mockLtsyStatus);
+ rfInfo = (TRfStateInfo) 0;
+ TMockLtsyData1<TRfStateInfo> mockDataRf(rfInfo);
+ expectData.Close();
+ mockDataRf.SerialiseL(expectData);
+ iMockLTSY.CompleteL(EMmTsyBootGetRFStatusIPC, KErrNone, expectData);
+ User::WaitForRequest(mockLtsyStatus);
+ AssertMockLtsyStatusL();
+ ASSERT_EQUALS(KErrNone, mockLtsyStatus.Int());
+
+ // call CMmVoiceCallTsy::CompleteNotifyStatusChange for setting
+ // iMobileCallStatus = RMobileCall::EStatusIdle.
+ RMobileCall::TMobileCallStatus mobileCallSt = RMobileCall::EStatusIdle;
+ TMockLtsyCallData1<RMobileCall::TMobileCallStatus> mockCallDataStatus2(callId, mobileService, mobileCallSt);
+ completeData.Close();
+ mockCallDataStatus2.SerialiseL(completeData);
+
+ iMockLTSY.NotifyTerminated(mockLtsyStatus);
+ iMockLTSY.CompleteL(EMobileCallNotifyMobileCallStatusChange, KErrNone, completeData);
+
+ User::WaitForRequest(mockLtsyStatus);
+ ASSERT_EQUALS(KErrNone, mockLtsyStatus.Int());
+
+ //-------------------------------------------------------------------------
+ // Tests for TMobileDataCallParamsV2
+
+ RMobileCall::TMobileDataCallParamsV2 dataCallParams2;
+ dataCallParams2.iInterval = 4;
+ dataCallParams2.iCug.iCugIndex = 0xFFFF;
+ dataCallParams2.iQoS = RMobileCall::EQosTransparentPreferred;
+ dataCallParams2.iBearerMode = RMobileCall::EMulticallShareBearer;
+
+ TMockLtsyCallData2<RMobileCall::TMobileDataCallParamsV2, RMobileCall::TMobileCallInfoV8>
+ mockDataCallParams2(0, mobileService, dataCallParams2, callInfo);
+
+ TPckg<RMobileCall::TMobileDataCallParamsV2> pckgMockDataCallParams2(dataCallParams2);
+
+ //-------------------------------------------------------------------------
+ // TEST A2: failure to dispatch request to LTSY
+ //-------------------------------------------------------------------------
+
+ // open new call
+ CleanupClosePushL(call);
+ errorCode = call.OpenNewCall(line, name);
+ ASSERT_EQUALS(KErrNone, errorCode);
+
+ // expectData.Close();
+ mockDataCallParams2.SerialiseL(expectData);
+ iMockLTSY.ExpectL(EEtelCallDial, expectData, KErrNotSupported);
+
+ call.Dial(requestStatus, pckgMockDataCallParams2, KPhoneNumber);
+ User::WaitForRequest(requestStatus);
+ ASSERT_EQUALS(KErrNotSupported, requestStatus.Int());
+
+ call.Close();
+ AssertMockLtsyStatusL();
+ CleanupStack::PopAndDestroy(1);
+
+ //-------------------------------------------------------------------------
+ // TEST B2: failure on completion of pending request from LTSY->CTSY
+ //-------------------------------------------------------------------------
+
+ // open new call
+ CleanupClosePushL(call);
+ errorCode = call.OpenNewCall(line, name);
+ ASSERT_EQUALS(KErrNone, errorCode);
+
+ expectData.Close();
+ mockDataCallParams2.SerialiseL(expectData);
+ iMockLTSY.ExpectL(EEtelCallDial, expectData);
+
+ CallGetMobileCallInfoL(callId, mobileService, KPhoneNumber);
+
+ mockData0.SerialiseL(completeData);
+ iMockLTSY.CompleteL(EEtelCallDial, KErrGeneral, completeData);
+
+ call.Dial(requestStatus, pckgMockDataCallParams2, KPhoneNumber);
+ User::WaitForRequest(requestStatus);
+ AssertMockLtsyStatusL();
+ ASSERT_EQUALS(KErrGeneral, requestStatus.Int());
+
+ call.Close();
+ AssertMockLtsyStatusL();
+ CleanupStack::PopAndDestroy(1);
+
+ //-------------------------------------------------------------------------
+ // TEST C2: Successful completion request of
+ // RCall::Dial when result is not cached
+ //-------------------------------------------------------------------------
+
+ // open new call
+ CleanupClosePushL(call);
+ errorCode = call.OpenNewCall(line, name);
+ ASSERT_EQUALS(KErrNone, errorCode);
+
+ expectData.Close();
+ mockDataCallParams2.SerialiseL(expectData);
+ iMockLTSY.ExpectL(EEtelCallDial, expectData);
+
+ CallGetMobileCallInfoL(callId, mobileService, KPhoneNumber);
+
+ completeData.Close();
+ mockData0.SerialiseL(completeData);
+ iMockLTSY.CompleteL(EEtelCallDial, KErrNone, completeData);
+
+ // we are dialing the call:
+ call.Dial(requestStatus, pckgMockDataCallParams2, KPhoneNumber);
+
+ CompleteDialStatusNotificationsL(call, callId, mobileService );
+
+ // completion of the Dial() request:
+ User::WaitForRequest(requestStatus);
+ ASSERT_EQUALS(KErrNone, requestStatus.Int());
+
+ CompleteCallDisconnectNotificationsL(callId, mobileService);
+
+ call.Close();
+ CleanupStack::PopAndDestroy(1);
+ CleanupStack::PopAndDestroy(4, this); // expectData, completeData, line, this
+ }
+
+// Returns sample call information variable
+void GetCallInformation8(RMobileCall::TMobileCallInfoV8& aCallInformation, const TDesC& aPhoneNumber, RMobilePhone::TMobileService aMobileService)
+ {
+ aCallInformation.iDialledParty.iTelNumber.Copy(aPhoneNumber);
+ aCallInformation.iService = aMobileService;
+ aCallInformation.iValid = RMobileCall::KCallDialledParty | RMobileCall::KCallAlternating;
+ aCallInformation.iAlphaId.Copy(_L("Alpha Id"));
+ aCallInformation.iValid |= RMobileCall::KCallAlphaId;
+ aCallInformation.iCallParamOrigin = RMobileCall::EOriginatorSIM;;
+ aCallInformation.iValid |= RMobileCall::KCallParamOrigin;
+ }
+
+// Returns sample call params variable
+void GetCallParams8(RMobileCall::TMobileDataCallParamsV8& aDataCallParams)
+ {
+ aDataCallParams.iInterval = 4;
+ aDataCallParams.iCug.iCugIndex = 0xFFFF;
+ aDataCallParams.iQoS = RMobileCall::EQosTransparentPreferred;
+ aDataCallParams.iBearerMode = RMobileCall::EMulticallShareBearer;
+ aDataCallParams.iSubAddress.Copy(_L("An Unknown SubAddress"));
+ aDataCallParams.iAlphaId.Copy(_L("Alpha Id"));
+ aDataCallParams.iCallParamOrigin = RMobileCall::EOriginatorSIM;
+ }
+
+/**
+@SYMTestCaseID BA-CTSY-CCON-CD-0006c
+@SYMDEF DEF127552
+@SYMREQ 7745
+@SYMComponent telephony_ctsy
+@SYMTestCaseDesc Test support in CTSY for RCall::Dial for data calls. It is in connection to BA-CTSY-CCON-CD-0006.
+@SYMTestPriority High
+@SYMTestActions Invokes RCall::Dial for data calls
+@SYMTestExpectedResults Pass
+@SYMTestType CT
+*/
+void CCTsyCallControlFU::TestDial0006cL()
+ {
+ OpenEtelServerL(EUseExtendedError);
+ CleanupStack::PushL(TCleanupItem(Cleanup,this));
+ OpenPhoneL();
+
+ RBuf8 expectData;
+ CleanupClosePushL(expectData);
+
+ RBuf8 completeData;
+ CleanupClosePushL(completeData);
+
+ RLine line;
+ RCall call;
+
+ TInt errorCode = KErrNone;
+ TRequestStatus requestStatus;
+ TRequestStatus mockLtsyStatus;
+
+ // open new line and call for KMmTsyDataLineName
+ errorCode = OpenNewLineLC(iPhone, line, KMmTsyDataLineName);
+ ASSERT_EQUALS(KErrNone, errorCode);
+
+ TName name;
+
+ _LIT(KPhoneNumber, "135468456456");
+
+ TInt callId = 1;
+ RMobilePhone::TMobileService mobileService = RMobilePhone::ECircuitDataService;
+ TMockLtsyCallData0 mockData0(callId, mobileService);
+
+ //-------------------------------------------------------------------------
+ // Tests for TMobileDataCallParamsV8
+
+ RMobileCall::TMobileCallInfoV8 callInformation;
+ GetCallInformation8(callInformation, KPhoneNumber(), mobileService);
+
+ RMobileCall::TMobileDataCallParamsV8 dataCallParams8;
+ GetCallParams8(dataCallParams8);
+
+ TMockLtsyCallData2<RMobileCall::TMobileDataCallParamsV8, RMobileCall::TMobileCallInfoV8>
+ mockDataCallParams8(0, mobileService, dataCallParams8, callInformation);
+
+ TPckg<RMobileCall::TMobileDataCallParamsV8> pckgMockDataCallParams8(dataCallParams8);
+
+ //-------------------------------------------------------------------------
+ // TEST A3: failure to dispatch request to LTSY
+ //-------------------------------------------------------------------------
+
+ // open new call
+ CleanupClosePushL(call);
+ errorCode = call.OpenNewCall(line, name);
+ ASSERT_EQUALS(KErrNone, errorCode);
+
+ expectData.Close();
+ mockDataCallParams8.SerialiseL(expectData);
+ iMockLTSY.ExpectL(EEtelCallDial, expectData, KErrNotSupported);
+
+ call.Dial(requestStatus, pckgMockDataCallParams8, KPhoneNumber);
+ User::WaitForRequest(requestStatus);
+ ASSERT_EQUALS(KErrNotSupported, requestStatus.Int());
+
+ call.Close();
+ AssertMockLtsyStatusL();
+ CleanupStack::PopAndDestroy(1);
+
+ //-------------------------------------------------------------------------
+ // TEST B3: failure on completion of pending request from LTSY->CTSY
+ //-------------------------------------------------------------------------
+
+ // open new call
+ CleanupClosePushL(call);
+ errorCode = call.OpenNewCall(line, name);
+ ASSERT_EQUALS(KErrNone, errorCode);
+
+ expectData.Close();
+ mockDataCallParams8.SerialiseL(expectData);
+ iMockLTSY.ExpectL(EEtelCallDial, expectData);
+
+ CallGetMobileCallInfoL(callId, mobileService, KPhoneNumber);
+
+ mockData0.SerialiseL(completeData);
+ iMockLTSY.CompleteL(EEtelCallDial, KErrGeneral, completeData);
+
+ call.Dial(requestStatus, pckgMockDataCallParams8, KPhoneNumber);
+ User::WaitForRequest(requestStatus);
+ ASSERT_EQUALS(KErrGeneral, requestStatus.Int());
+
+ call.Close();
+ AssertMockLtsyStatusL();
+ CleanupStack::PopAndDestroy(1);
+
+ //-------------------------------------------------------------------------
+ // TEST C3: Successful completion request of
+ // RCall::Dial when result is not cached
+ //-------------------------------------------------------------------------
+
+ // open new call
+ CleanupClosePushL(call);
+ errorCode = call.OpenNewCall(line, name);
+ ASSERT_EQUALS(KErrNone, errorCode);
+
+ expectData.Close();
+ mockDataCallParams8.SerialiseL(expectData);
+ iMockLTSY.ExpectL(EEtelCallDial, expectData);
+
+ CallGetMobileCallInfoL(callId, mobileService, KPhoneNumber);
+
+ completeData.Close();
+ mockData0.SerialiseL(completeData);
+ iMockLTSY.CompleteL(EEtelCallDial, KErrNone, completeData);
+
+ // we are dialing the call:
+ call.Dial(requestStatus, pckgMockDataCallParams8, KPhoneNumber);
+
+ CompleteDialStatusNotificationsL(call, callId, mobileService );
+
+ // completion of the Dial() request:
+ User::WaitForRequest(requestStatus);
+ ASSERT_EQUALS(KErrNone, requestStatus.Int());
+
+ CompleteCallDisconnectNotificationsL(callId, mobileService);
+
+ call.Close();
+ CleanupStack::PopAndDestroy(1); // call
+ CleanupStack::PopAndDestroy(4, this); // expectData, completeData, line, this
+ }
+
+/**
+@SYMTestCaseID BA-CTSY-CCON-CD-0006d
+@SYMDEF DEF127552
+@SYMREQ 7745
+@SYMComponent telephony_ctsy
+@SYMTestCaseDesc Test support in CTSY for RCall::Dial for data calls. It is in connection to BA-CTSY-CCON-CD-0006.
+@SYMTestPriority High
+@SYMTestActions Invokes RCall::Dial for data calls
+@SYMTestExpectedResults Pass
+@SYMTestType CT
+*/
+void CCTsyCallControlFU::TestDial0006dL()
+ {
+ OpenEtelServerL(EUseExtendedError);
+ CleanupStack::PushL(TCleanupItem(Cleanup,this));
+ OpenPhoneL();
+
+ RBuf8 expectData;
+ CleanupClosePushL(expectData);
+
+ RBuf8 completeData;
+ CleanupClosePushL(completeData);
+
+ RLine line;
+ RCall call;
+
+ TInt errorCode = KErrNone;
+ TRequestStatus requestStatus;
+ TRequestStatus mockLtsyStatus;
+
+ // open new line and call for KMmTsyDataLineName
+ errorCode = OpenNewLineLC(iPhone, line, KMmTsyDataLineName);
+ ASSERT_EQUALS(KErrNone, errorCode);
+
+ TName name;
+ _LIT(KPhoneNumber, "135468456456");
+
+ TInt callId = 1;
+ RMobilePhone::TMobileService mobileService = RMobilePhone::ECircuitDataService;
+ TMockLtsyCallData0 mockData0(callId, mobileService);
+
+ RMobileCall::TMobileCallInfoV8 callInformation;
+ GetCallInformation8(callInformation, KPhoneNumber(), mobileService);
+
+ RMobileCall::TMobileDataCallParamsV8 dataCallParams8;
+ GetCallParams8(dataCallParams8);
+
+ TMockLtsyCallData2<RMobileCall::TMobileDataCallParamsV8, RMobileCall::TMobileCallInfoV8>
+ mockDataCallParams8(0, mobileService, dataCallParams8, callInformation);
+
+ TPckg<RMobileCall::TMobileDataCallParamsV8> pckgMockDataCallParams8(dataCallParams8);
+
+ //-------------------------------------------------------------------------
+ // Tests for default parameters
+
+ //-------------------------------------------------------------------------
+ // TEST A4: failure to dispatch request to LTSY
+ //-------------------------------------------------------------------------
+
+ // open new call
+ CleanupClosePushL(call);
+ errorCode = call.OpenNewCall(line, name);
+ ASSERT_EQUALS(KErrNone, errorCode);
+
+ expectData.Close();
+ mockDataCallParams8.SerialiseL(expectData);
+ iMockLTSY.ExpectL(EEtelCallDial, expectData, KErrNotSupported);
+
+ call.Dial(requestStatus, KPhoneNumber);
+ User::WaitForRequest(requestStatus);
+ ASSERT_EQUALS(KErrNotSupported, requestStatus.Int());
+
+ call.Close();
+ AssertMockLtsyStatusL();
+ CleanupStack::PopAndDestroy(1);
+
+ //-------------------------------------------------------------------------
+ // TEST B4: failure on completion of pending request from LTSY->CTSY
+ //-------------------------------------------------------------------------
+
+ // open new call
+ CleanupClosePushL(call);
+ errorCode = call.OpenNewCall(line, name);
+ ASSERT_EQUALS(KErrNone, errorCode);
+
+ expectData.Close();
+ mockDataCallParams8.SerialiseL(expectData);
+ iMockLTSY.ExpectL(EEtelCallDial, expectData);
+
+ CallGetMobileCallInfoL(callId, mobileService, KPhoneNumber);
+
+ mockData0.SerialiseL(completeData);
+ iMockLTSY.CompleteL(EEtelCallDial, KErrGeneral, completeData);
+
+ call.Dial(requestStatus, KPhoneNumber);
+ User::WaitForRequest(requestStatus);
+ ASSERT_EQUALS(KErrGeneral, requestStatus.Int());
+
+ call.Close();
+ AssertMockLtsyStatusL();
+ CleanupStack::PopAndDestroy(1);
+
+ //-------------------------------------------------------------------------
+ // TEST C4: Successful completion request of
+ // RCall::Dial when result is not cached
+ //-------------------------------------------------------------------------
+
+ // open new call
+ CleanupClosePushL(call);
+ errorCode = call.OpenNewCall(line, name);
+ ASSERT_EQUALS(KErrNone, errorCode);
+
+ expectData.Close();
+ mockDataCallParams8.SerialiseL(expectData);
+ iMockLTSY.ExpectL(EEtelCallDial, expectData);
+
+ CallGetMobileCallInfoL(callId, mobileService, KPhoneNumber);
+
+ completeData.Close();
+ mockData0.SerialiseL(completeData);
+ iMockLTSY.CompleteL(EEtelCallDial, KErrNone, completeData);
+
+ // we are dialing the call:
+ call.Dial(requestStatus, KPhoneNumber);
+
+ CompleteDialStatusNotificationsL(call, callId, mobileService );
+
+ // completion of the Dial() request:
+ User::WaitForRequest(requestStatus);
+ ASSERT_EQUALS(KErrNone, requestStatus.Int());
+
+ CompleteCallDisconnectNotificationsL(callId, mobileService);
+
+ call.Close();
+ CleanupStack::PopAndDestroy(1); // call
+
+ CleanupStack::PopAndDestroy(4, this); // expectData, completeData, line, this
+ }
+
+/**
+@SYMTestCaseID BA-CTSY-CCON-CD-0006e
+@SYMComponent telephony_ctsy
+@SYMTestCaseDesc Test support in CTSY for RCall::Dial for data calls with HscsdCallParams. It is in connection to BA-CTSY-CCON-CD-0006
+@SYMTestPriority High
+@SYMTestActions Invokes RCall::Dial for data calls
+@SYMTestExpectedResults Pass
+@SYMTestType CT
+*/
+void CCTsyCallControlFU::TestDial0006eL()
+ {
+ OpenEtelServerL(EUseExtendedError);
+ CleanupStack::PushL(TCleanupItem(Cleanup,this));
+ OpenPhoneL();
+
+ RBuf8 expectData;
+ CleanupClosePushL(expectData);
+
+ RBuf8 completeData;
+ CleanupClosePushL(completeData);
+
+ RLine line;
+ RCall call;
+
+ TInt errorCode = KErrNone;
+ TRequestStatus requestStatus;
+ TRequestStatus mockLtsyStatus;
+
+ // open new line and call for KMmTsyDataLineName
+ errorCode = OpenNewLineLC(iPhone, line, KMmTsyDataLineName);
+ ASSERT_EQUALS(KErrNone, errorCode);
+
+ TName name;
+
+ _LIT(KPhoneNumber, "101632960000");
+
+ TInt callId = 1;
+ RMobilePhone::TMobileService mobileService = RMobilePhone::ECircuitDataService;
+
+ RMobileCall::TMobileCallInfoV8 callInfo;
+ callInfo.iDialledParty.iTelNumber.Copy(KPhoneNumber);
+ callInfo.iService = mobileService;
+ callInfo.iValid = RMobileCall::KCallDialledParty | RMobileCall::KCallAlternating;
+
+ //-------------------------------------------------------------------------
+ // Test: Test passing RMobileCall::TMobileHscsdCallParamsV1 to
+ // RCall::Dial
+ //-------------------------------------------------------------------------
+
+ RMobileCall::TMobileHscsdCallParamsV1 hscsdCallParams;
+
+ TMockLtsyCallData2<RMobileCall::TMobileHscsdCallParamsV1, RMobileCall::TMobileCallInfoV8>
+ mockHscsdData(0, mobileService, hscsdCallParams, callInfo);
+
+ TPckg<RMobileCall::TMobileHscsdCallParamsV1> pckgMockHscsdParams1(hscsdCallParams);
+
+ //-------------------------------------------------------------------------
+ // TEST A4: failure to dispatch request to LTSY
+ //-------------------------------------------------------------------------
+
+ // open new call
+ CleanupClosePushL(call);
+ errorCode = call.OpenNewCall(line, name);
+ ASSERT_EQUALS(KErrNone, errorCode);
+
+ expectData.Close();
+ mockHscsdData.SerialiseL(expectData);
+ iMockLTSY.ExpectL(EEtelCallDial, expectData, KErrNotSupported);
+
+ call.Dial(requestStatus, pckgMockHscsdParams1, KPhoneNumber);
+ User::WaitForRequest(requestStatus);
+ ASSERT_EQUALS(KErrNotSupported, requestStatus.Int());
+
+ call.Close();
+ AssertMockLtsyStatusL();
+ CleanupStack::PopAndDestroy(1);
+
+ //-------------------------------------------------------------------------
+ // TEST B4: failure on completion of pending request from LTSY->CTSY
+ //-------------------------------------------------------------------------
+
+ // open new call
+ CleanupClosePushL(call);
+ errorCode = call.OpenNewCall(line, name);
+ ASSERT_EQUALS(KErrNone, errorCode);
+
+ expectData.Close();
+ mockHscsdData.SerialiseL(expectData);
+ iMockLTSY.ExpectL(EEtelCallDial, expectData);
+
+ CallGetMobileCallInfoL(callId, mobileService, KPhoneNumber);
+
+ TMockLtsyCallData0 mockData0(callId, mobileService);
+ mockData0.SerialiseL(completeData);
+ iMockLTSY.CompleteL(EEtelCallDial, KErrGeneral, completeData);
+
+ call.Dial(requestStatus, pckgMockHscsdParams1, KPhoneNumber);
+ User::WaitForRequest(requestStatus);
+ ASSERT_EQUALS(KErrGeneral, requestStatus.Int());
+
+ call.Close();
+ AssertMockLtsyStatusL();
+ CleanupStack::PopAndDestroy(1);
+
+ //-------------------------------------------------------------------------
+ // TEST C4: Successful completion request of
+ // RCall::Dial when result is not cached
+ //-------------------------------------------------------------------------
+
+ // open new call
+ CleanupClosePushL(call);
+ errorCode = call.OpenNewCall(line, name);
+ ASSERT_EQUALS(KErrNone, errorCode);
+
+ expectData.Close();
+ mockHscsdData.SerialiseL(expectData);
+ iMockLTSY.ExpectL(EEtelCallDial, expectData);
+
+ CallGetMobileCallInfoL(callId, mobileService, KPhoneNumber);
+
+ mockData0.SerialiseL(completeData);
+ iMockLTSY.CompleteL(EEtelCallDial, KErrNone, completeData);
+
+ // we are dialing the call:
+ call.Dial(requestStatus, pckgMockHscsdParams1, KPhoneNumber);
+
+ CompleteDialStatusNotificationsL(call, callId, mobileService );
+
+ // completion of the Dial() request:
+ User::WaitForRequest(requestStatus);
+ ASSERT_EQUALS(KErrNone, requestStatus.Int());
+
+ CompleteCallDisconnectNotificationsL(callId, mobileService);
+
+ call.Close();
+ CleanupStack::PopAndDestroy(1);
+ CleanupStack::PopAndDestroy(4, this); // expectData, completeData, line, this
+ }
+
+/**
+@SYMTestCaseID BA-CTSY-CCON-CD-0006f
+@SYMComponent telephony_ctsy
+@SYMTestCaseDesc Test support in CTSY for RCall::Dial for data calls with HscsdCallParams. It is in connection to BA-CTSY-CCON-CD-0006
+@SYMTestPriority High
+@SYMTestActions Invokes RCall::Dial for data calls
+@SYMTestExpectedResults Pass
+@SYMTestType CT
+*/
+void CCTsyCallControlFU::TestDial0006fL()
+ {
+ OpenEtelServerL(EUseExtendedError);
+ CleanupStack::PushL(TCleanupItem(Cleanup,this));
+ OpenPhoneL();
+
+ RBuf8 expectData;
+ CleanupClosePushL(expectData);
+
+ RBuf8 completeData;
+ CleanupClosePushL(completeData);
+
+ RLine line;
+ RCall call;
+
+ TInt errorCode = KErrNone;
+ TRequestStatus requestStatus;
+ TRequestStatus mockLtsyStatus;
+
+ // open new line and call for KMmTsyDataLineName
+ errorCode = OpenNewLineLC(iPhone, line, KMmTsyDataLineName);
+ ASSERT_EQUALS(KErrNone, errorCode);
+
+ TName name;
+
+ _LIT(KPhoneNumber, "135468456456");
+
+ TInt callId = 1;
+ RMobilePhone::TMobileService mobileService = RMobilePhone::ECircuitDataService;
+
+ RMobileCall::TMobileCallInfoV8 callInfo;
+ callInfo.iDialledParty.iTelNumber.Copy(KPhoneNumber);
+ callInfo.iService = mobileService;
+ callInfo.iValid = RMobileCall::KCallDialledParty | RMobileCall::KCallAlternating;
+
+ //-------------------------------------------------------------------------
+ // Test: Test passing RMobileCall::TMobileHscsdCallParamsV2 to
+ // RCall::Dial
+ //-------------------------------------------------------------------------
+
+ RMobileCall::TMobileHscsdCallParamsV2 hscsdCallParams2;
+
+ TMockLtsyCallData2<RMobileCall::TMobileHscsdCallParamsV2, RMobileCall::TMobileCallInfoV8>
+ mockHscsdData2(0, mobileService, hscsdCallParams2, callInfo);
+
+ TPckg<RMobileCall::TMobileHscsdCallParamsV2> pckgMockHscsdParams2(hscsdCallParams2);
+
+ //-------------------------------------------------------------------------
+ // TEST A5: failure to dispatch request to LTSY
+ //-------------------------------------------------------------------------
+
+ // open new call
+ CleanupClosePushL(call);
+ errorCode = call.OpenNewCall(line, name);
+ ASSERT_EQUALS(KErrNone, errorCode);
+
+ expectData.Close();
+ mockHscsdData2.SerialiseL(expectData);
+ iMockLTSY.ExpectL(EEtelCallDial, expectData, KErrNotSupported);
+
+ call.Dial(requestStatus, pckgMockHscsdParams2, KPhoneNumber);
+ User::WaitForRequest(requestStatus);
+ ASSERT_EQUALS(KErrNotSupported, requestStatus.Int());
+
+ call.Close();
+ AssertMockLtsyStatusL();
+ CleanupStack::PopAndDestroy(1);
+
+ //-------------------------------------------------------------------------
+ // TEST B5: failure on completion of pending request from LTSY->CTSY
+ //-------------------------------------------------------------------------
+
+ // open new call
+ CleanupClosePushL(call);
+ errorCode = call.OpenNewCall(line, name);
+ ASSERT_EQUALS(KErrNone, errorCode);
+
+ expectData.Close();
+ mockHscsdData2.SerialiseL(expectData);
+ iMockLTSY.ExpectL(EEtelCallDial, expectData);
+
+ CallGetMobileCallInfoL(callId, mobileService, KPhoneNumber);
+
+ TMockLtsyCallData0 mockData0(callId, mobileService);
+ mockData0.SerialiseL(completeData);
+ iMockLTSY.CompleteL(EEtelCallDial, KErrGeneral, completeData);
+
+ call.Dial(requestStatus, pckgMockHscsdParams2, KPhoneNumber);
+ User::WaitForRequest(requestStatus);
+ ASSERT_EQUALS(KErrGeneral, requestStatus.Int());
+
+ call.Close();
+ AssertMockLtsyStatusL();
+ CleanupStack::PopAndDestroy(1);
+
+ //-------------------------------------------------------------------------
+ // TEST C5: Successful completion request of
+ // RCall::Dial when result is not cached
+ //-------------------------------------------------------------------------
+
+ // open new call
+ CleanupClosePushL(call);
+ errorCode = call.OpenNewCall(line, name);
+ ASSERT_EQUALS(KErrNone, errorCode);
+
+ expectData.Close();
+ mockHscsdData2.SerialiseL(expectData);
+ iMockLTSY.ExpectL(EEtelCallDial, expectData);
+
+ CallGetMobileCallInfoL(callId, mobileService, KPhoneNumber);
+
+ mockData0.SerialiseL(completeData);
+ iMockLTSY.CompleteL(EEtelCallDial, KErrNone, completeData);
+
+ // we are dialing the call:
+ call.Dial(requestStatus, pckgMockHscsdParams2, KPhoneNumber);
+
+ CompleteDialStatusNotificationsL(call, callId, mobileService );
+
+ // completion of the Dial() request:
+ User::WaitForRequest(requestStatus);
+ ASSERT_EQUALS(KErrNone, requestStatus.Int());
+
+ CompleteCallDisconnectNotificationsL(callId, mobileService);
+
+ call.Close();
+ CleanupStack::PopAndDestroy(1);
+
+ CleanupStack::PopAndDestroy(4, this); // expectData, completeData, line, this
+ }
+
+/**
+@SYMTestCaseID BA-CTSY-CCON-CD-0006g
+@SYMComponent telephony_ctsy
+@SYMTestCaseDesc Test support in CTSY for RCall::Dial for data calls with HscsdCallParams.It is in connection to BA-CTSY-CCON-CD-0006
+@SYMTestPriority High
+@SYMTestActions Invokes RCall::Dial for data calls
+@SYMTestExpectedResults Pass
+@SYMTestType CT
+*/
+void CCTsyCallControlFU::TestDial0006gL()
+ {
+ OpenEtelServerL(EUseExtendedError);
+ CleanupStack::PushL(TCleanupItem(Cleanup,this));
+ OpenPhoneL();
+
+ RBuf8 expectData;
+ CleanupClosePushL(expectData);
+
+ RBuf8 completeData;
+ CleanupClosePushL(completeData);
+
+ RLine line;
+ RCall call;
+
+ TInt errorCode = KErrNone;
+ TRequestStatus requestStatus;
+ TRequestStatus mockLtsyStatus;
+
+ // open new line and call for KMmTsyDataLineName
+ errorCode = OpenNewLineLC(iPhone, line, KMmTsyDataLineName);
+ ASSERT_EQUALS(KErrNone, errorCode);
+
+ TName name;
+
+ _LIT(KPhoneNumber, "101632960000");
+
+ TInt callId = 1;
+ RMobilePhone::TMobileService mobileService = RMobilePhone::ECircuitDataService;
+ TMockLtsyCallData0 mockData0(callId, mobileService);
+
+ //-------------------------------------------------------------------------
+ // Test: Test passing RMobileCall::TMobileHscsdCallParamsV7 to
+ // RCall::Dial
+ //-------------------------------------------------------------------------
+
+ RMobileCall::TMobileHscsdCallParamsV7 hscsdCallParams7;
+
+ // TMobileHscsdCallParamsV7 params for Dial
+ hscsdCallParams7.iInterval = 4;
+ hscsdCallParams7.iCug.iCugIndex = 0xFFFF;
+ hscsdCallParams7.iSpeakerControl = RCall::EMonitorSpeakerControlAlwaysOff;
+ hscsdCallParams7.iSpeakerVolume = RCall::EMonitorSpeakerVolumeMedium;
+ hscsdCallParams7.iWaitForDialTone = RCall::EDialToneWait;
+ hscsdCallParams7.iQoS = RMobileCall::EQosTransparentPreferred;
+ hscsdCallParams7.iV42bisReq = RMobileCall::EV42bisTxDirection;
+ hscsdCallParams7.iWantedRxTimeSlots = 2;
+ hscsdCallParams7.iCodings = 3;
+ hscsdCallParams7.iBearerMode = RMobileCall::EMulticallShareBearer;
+ hscsdCallParams7.iAlphaId.Copy(_L("Alpha Id"));
+ hscsdCallParams7.iCallParamOrigin = RMobileCall::EOriginatorSIM;
+
+ RMobileCall::TMobileCallInfoV8 callInformation;
+ GetCallInformation8(callInformation, KPhoneNumber(), mobileService);
+
+ TMockLtsyCallData2<RMobileCall::TMobileHscsdCallParamsV7, RMobileCall::TMobileCallInfoV8>
+ mockHscsdData7(0, mobileService, hscsdCallParams7, callInformation);
+
+ TPckg<RMobileCall::TMobileHscsdCallParamsV7> pckgMockHscsdParams7(hscsdCallParams7);
+
+ //-------------------------------------------------------------------------
+ // TEST A6: failure to dispatch request to LTSY
+ //-------------------------------------------------------------------------
+
+ // open new call
+ CleanupClosePushL(call);
+ errorCode = call.OpenNewCall(line, name);
+ ASSERT_EQUALS(KErrNone, errorCode);
+
+ expectData.Close();
+ mockHscsdData7.SerialiseL(expectData);
+ iMockLTSY.ExpectL(EEtelCallDial, expectData, KErrNotSupported);
+
+ call.Dial(requestStatus, pckgMockHscsdParams7, KPhoneNumber);
+ User::WaitForRequest(requestStatus);
+ ASSERT_EQUALS(KErrNotSupported, requestStatus.Int());
+
+ call.Close();
+ AssertMockLtsyStatusL();
+ CleanupStack::PopAndDestroy(1);
+
+ //-------------------------------------------------------------------------
+ // TEST B6: failure on completion of pending request from LTSY->CTSY
+ //-------------------------------------------------------------------------
+
+ // open new call
+ CleanupClosePushL(call);
+ errorCode = call.OpenNewCall(line, name);
+ ASSERT_EQUALS(KErrNone, errorCode);
+
+ expectData.Close();
+ mockHscsdData7.SerialiseL(expectData);
+ iMockLTSY.ExpectL(EEtelCallDial, expectData);
+
+ CallGetMobileCallInfoL(callId, mobileService, KPhoneNumber);
+
+ mockData0.SerialiseL(completeData);
+ iMockLTSY.CompleteL(EEtelCallDial, KErrGeneral, completeData);
+
+ call.Dial(requestStatus, pckgMockHscsdParams7, KPhoneNumber);
+ User::WaitForRequest(requestStatus);
+ ASSERT_EQUALS(KErrGeneral, requestStatus.Int());
+
+ call.Close();
+ AssertMockLtsyStatusL();
+ CleanupStack::PopAndDestroy(1);
+
+ //-------------------------------------------------------------------------
+ // TEST C6: Successful completion request of
+ // RCall::Dial when result is not cached
+ //-------------------------------------------------------------------------
+
+ // open new call
+ CleanupClosePushL(call);
+ errorCode = call.OpenNewCall(line, name);
+ ASSERT_EQUALS(KErrNone, errorCode);
+
+ expectData.Close();
+ mockHscsdData7.SerialiseL(expectData);
+ iMockLTSY.ExpectL(EEtelCallDial, expectData);
+
+ CallGetMobileCallInfoL(callId, mobileService, KPhoneNumber);
+
+ mockData0.SerialiseL(completeData);
+ iMockLTSY.CompleteL(EEtelCallDial, KErrNone, completeData);
+
+ // we are dialing the call:
+ call.Dial(requestStatus, pckgMockHscsdParams7, KPhoneNumber);
+
+ CompleteDialStatusNotificationsL(call, callId, mobileService );
+
+ // completion of the Dial() request:
+ User::WaitForRequest(requestStatus);
+ ASSERT_EQUALS(KErrNone, requestStatus.Int());
+
+ CompleteCallDisconnectNotificationsL(callId, mobileService);
+
+ call.Close();
+ CleanupStack::PopAndDestroy(1);
+
+ CleanupStack::PopAndDestroy(4, this); // expectData, completeData, line, this
+ }
+
+/**
+@SYMTestCaseID BA-CTSY-CCON-CD-0006h
+@SYMComponent telephony_ctsy
+@SYMTestCaseDesc Test support in CTSY for RCall::Dial for data calls with HscsdCallParams.It is in connection to BA-CTSY-CCON-CD-0006
+@SYMTestPriority High
+@SYMTestActions Invokes RCall::Dial for data calls
+@SYMTestExpectedResults Pass
+@SYMTestType CT
+*/
+void CCTsyCallControlFU::TestDial0006hL()
+ {
+ OpenEtelServerL(EUseExtendedError);
+ CleanupStack::PushL(TCleanupItem(Cleanup,this));
+ OpenPhoneL();
+
+ RBuf8 expectData;
+ CleanupClosePushL(expectData);
+
+ RBuf8 completeData;
+ CleanupClosePushL(completeData);
+
+ RLine line;
+ RCall call;
+
+ TInt errorCode = KErrNone;
+ TRequestStatus requestStatus;
+ TRequestStatus mockLtsyStatus;
+
+ // open new line and call for KMmTsyDataLineName
+ errorCode = OpenNewLineLC(iPhone, line, KMmTsyDataLineName);
+ ASSERT_EQUALS(KErrNone, errorCode);
+
+ TName name;
+ _LIT(KPhoneNumber, "135468456456");
+
+ TInt callId = 1;
+ RMobilePhone::TMobileService mobileService = RMobilePhone::ECircuitDataService;
+ TMockLtsyCallData0 mockData0(callId, mobileService);
+
+ //-------------------------------------------------------------------------
+ // Test: Test passing RMobileCall::TMobileHscsdCallParamsV8 to
+ // RCall::Dial
+ //-------------------------------------------------------------------------
+
+ RMobileCall::TMobileHscsdCallParamsV8 hscsdCallParams8;
+
+ // TMobileHscsdCallParamsV8 params for Dial
+ hscsdCallParams8.iInterval = 2;
+ hscsdCallParams8.iCug.iCugIndex = 0xFFFF;
+ hscsdCallParams8.iSpeakerControl = RCall::EMonitorSpeakerControlAlwaysOff;
+ hscsdCallParams8.iSpeakerVolume = RCall::EMonitorSpeakerVolumeMedium;
+ hscsdCallParams8.iWaitForDialTone = RCall::EDialToneWait;
+ hscsdCallParams8.iQoS = RMobileCall::EQosTransparentPreferred;
+ hscsdCallParams8.iV42bisReq = RMobileCall::EV42bisTxDirection;
+ hscsdCallParams8.iWantedRxTimeSlots = 2;
+ hscsdCallParams8.iCodings = 3;
+ hscsdCallParams8.iBearerMode = RMobileCall::EMulticallShareBearer;
+ hscsdCallParams8.iAlphaId.Copy(_L("Alpha Id"));
+ hscsdCallParams8.iSubAddress.Copy(_L("An Unknown SubAddress"));
+ hscsdCallParams8.iCallParamOrigin = RMobileCall::EOriginatorSIM;
+
+ RMobileCall::TMobileCallInfoV8 callInformation;
+ GetCallInformation8(callInformation, KPhoneNumber(), mobileService);
+
+ TMockLtsyCallData2<RMobileCall::TMobileHscsdCallParamsV8, RMobileCall::TMobileCallInfoV8>
+ mockHscsdData8(0, mobileService, hscsdCallParams8, callInformation);
+
+ TPckg<RMobileCall::TMobileHscsdCallParamsV8> pckgMockHscsdParams8(hscsdCallParams8);
+
+ //-------------------------------------------------------------------------
+ // TEST A7: failure to dispatch request to LTSY
+ //-------------------------------------------------------------------------
+
+ // open new call
+ CleanupClosePushL(call);
+ errorCode = call.OpenNewCall(line, name);
+ ASSERT_EQUALS(KErrNone, errorCode);
+
+ expectData.Close();
+ mockHscsdData8.SerialiseL(expectData);
+ iMockLTSY.ExpectL(EEtelCallDial, expectData, KErrNotSupported);
+
+ call.Dial(requestStatus, pckgMockHscsdParams8, KPhoneNumber);
+ User::WaitForRequest(requestStatus);
+ ASSERT_EQUALS(KErrNotSupported, requestStatus.Int());
+
+ call.Close();
+ AssertMockLtsyStatusL();
+ CleanupStack::PopAndDestroy(1);
+
+ //-------------------------------------------------------------------------
+ // TEST B7: failure on completion of pending request from LTSY->CTSY
+ //-------------------------------------------------------------------------
+
+ // open new call
+ CleanupClosePushL(call);
+ errorCode = call.OpenNewCall(line, name);
+ ASSERT_EQUALS(KErrNone, errorCode);
+
+ expectData.Close();
+ mockHscsdData8.SerialiseL(expectData);
+ iMockLTSY.ExpectL(EEtelCallDial, expectData);
+
+ CallGetMobileCallInfoL(callId, mobileService, KPhoneNumber);
+
+ mockData0.SerialiseL(completeData);
+ iMockLTSY.CompleteL(EEtelCallDial, KErrGeneral, completeData);
+
+ call.Dial(requestStatus, pckgMockHscsdParams8, KPhoneNumber);
+ User::WaitForRequest(requestStatus);
+ ASSERT_EQUALS(KErrGeneral, requestStatus.Int());
+
+ call.Close();
+ AssertMockLtsyStatusL();
+ CleanupStack::PopAndDestroy(1);
+
+ //-------------------------------------------------------------------------
+ // TEST C6: Successful completion request of
+ // RCall::Dial when result is not cached
+ //-------------------------------------------------------------------------
+
+ // open new call
+ CleanupClosePushL(call);
+ errorCode = call.OpenNewCall(line, name);
+ ASSERT_EQUALS(KErrNone, errorCode);
+
+ expectData.Close();
+ mockHscsdData8.SerialiseL(expectData);
+ iMockLTSY.ExpectL(EEtelCallDial, expectData);
+
+ CallGetMobileCallInfoL(callId, mobileService, KPhoneNumber);
+
+ mockData0.SerialiseL(completeData);
+ iMockLTSY.CompleteL(EEtelCallDial, KErrNone, completeData);
+
+ // we are dialing the call:
+ call.Dial(requestStatus, pckgMockHscsdParams8, KPhoneNumber);
+
+ CompleteDialStatusNotificationsL(call, callId, mobileService );
+
+ // completion of the Dial() request:
+ User::WaitForRequest(requestStatus);
+ ASSERT_EQUALS(KErrNone, requestStatus.Int());
+
+ CompleteCallDisconnectNotificationsL(callId, mobileService);
+
+ call.Close();
+ CleanupStack::PopAndDestroy(1);
+
+ CleanupStack::PopAndDestroy(4, this); // expectData, completeData, line, this
+ }
+
+/**
+@SYMTestCaseID BA-CTSY-CCON-CD-0006i
+@SYMComponent telephony_ctsy
+@SYMTestCaseDesc Test support in CTSY for RCall::Dial for data calls with minimal parameters (RCall::TCallParams)
+@SYMTestPriority High
+@SYMTestActions Invokes RCall::Dial for data calls
+@SYMTestExpectedResults Pass
+@SYMTestType CT
+*/
+void CCTsyCallControlFU::TestDial0006iL()
+ {
+
+ OpenEtelServerL(EUseExtendedError);
+ CleanupStack::PushL(TCleanupItem(Cleanup,this));
+ OpenPhoneL();
+
+ RBuf8 expectData;
+ CleanupClosePushL(expectData);
+
+ RBuf8 completeData;
+ CleanupClosePushL(completeData);
+
+ TInt errorCode = KErrNone;
+
+ //-- For Voice1 -------------------------
+
+ TBuf<256> lineName(KMmTsyDataLineName);
+ // Open new line
+ RLine line;
+ errorCode = line.Open(iPhone, lineName);
+ ASSERT_EQUALS(KErrNone, errorCode);
+ CleanupClosePushL(line);
+ // open call
+ _LIT(KDoubleColon, "::");
+ TBuf<256> name;
+ name = KMmTsyPhoneName;
+ name.Append(KDoubleColon);
+ name.Append(lineName);
+ name.Append(KDoubleColon);
+
+ RMobileCall call;
+ errorCode = call.OpenNewCall(line, name);
+ ASSERT_EQUALS(KErrNone, errorCode);
+ CleanupClosePushL(call);
+
+ TRequestStatus requestStatus;
+ _LIT(KSomeNumber, "123456789");
+
+ RMobilePhone::TMobileService mobileService = RMobilePhone::ECircuitDataService;
+ TInt expectedCallId = 0;
+
+ RMobileCall::TMobileDataCallParamsV8 callParams;
+ RMobileCall::TMobileDataCallParamsV8Pckg pckgCallParams(callParams);
+ RMobileCall::TMobileCallInfoV8 callInfo;
+ callParams.iSpeakerControl = RCall::EMonitorSpeakerControlOnUntilCarrier;
+ callParams.iSpeakerVolume = RCall::EMonitorSpeakerVolumeLow;
+ callParams.iInterval = 100;
+ callParams.iWaitForDialTone = RCall::EDialToneWait;
+ callParams.iIdRestrict = RMobileCall::EIdRestrictDefault;
+ callParams.iCug.iExplicitInvoke = EFalse;
+ callParams.iCug.iCugIndex = 0xFFFF;
+ callParams.iCug.iSuppressPrefCug = EFalse;
+ callParams.iCug.iSuppressOA = EFalse;
+ callParams.iAutoRedial = EFalse;
+ callInfo.iValid = RMobileCall::KCallDialledParty | RMobileCall::KCallAlternating;
+ callInfo.iService = mobileService;
+ callInfo.iStatus = RMobileCall::EStatusUnknown;
+ callInfo.iCallId =-1;
+ callInfo.iExitCode =0;
+ callInfo.iEmergency =0;
+ callInfo.iForwarded =0;
+ callInfo.iPrivacy = RMobilePhone::EPrivacyUnspecified;
+ callInfo.iAlternatingCall = RMobilePhone::EAlternatingModeUnspecified;
+
+
+ callInfo.iDialledParty.iTelNumber.Copy( KSomeNumber );
+ callInfo.iDialledParty.iNumberPlan = RMobilePhone::EUnknownNumberingPlan;
+ callInfo.iDialledParty.iTypeOfNumber = RMobilePhone::EUnknownNumber;
+
+ TMockLtsyCallData2< RMobileCall::TMobileDataCallParamsV8, RMobileCall::TMobileCallInfoV8 >
+ mockCallData(expectedCallId, mobileService, callParams, callInfo);
+ mockCallData.SerialiseL(expectData);
+
+ iMockLTSY.ExpectL(EEtelCallDial, expectData);
+
+ TInt callId = 1;
+
+ completeData.Close();
+ TMockLtsyCallData1<RMobileCall::TMobileCallInfoV1> callInfoData(callId, mobileService, callInfo);
+ callInfoData.SerialiseL(completeData);
+ //Complete Mobile Call Info in order to set the call ID
+ iMockLTSY.CompleteL(EMobileCallGetMobileCallInfo, KErrNone, completeData);
+
+ TMockLtsyCallData0 mockDataComplete(callId, mobileService);
+ completeData.Close();
+ mockDataComplete.SerialiseL(completeData);
+ // Complete the Dial
+ iMockLTSY.CompleteL(EEtelCallDial, KErrNone, completeData);
+
+ RCall::TCallParams callParamsX;
+ callParamsX.iSpeakerControl = RCall::EMonitorSpeakerControlOnUntilCarrier;
+ callParamsX.iSpeakerVolume = RCall::EMonitorSpeakerVolumeLow;
+ callParamsX.iInterval = 100;
+ callParamsX.iWaitForDialTone = RCall::EDialToneWait;
+ TPckg<RCall::TCallParams> pckgCallParamsX(callParamsX);
+
+ call.Dial(requestStatus, pckgCallParamsX, KSomeNumber);
+
+ User::WaitForRequest(requestStatus);
+ ASSERT_EQUALS(KErrNone, requestStatus.Int());
+ AssertMockLtsyStatusL();
+
+ CleanupStack::PopAndDestroy(5,this);
+
+ }
+
+
+/**
+@SYMTestCaseID BA-CTSY-CCON-CD-0007
+@SYMComponent telephony_ctsy
+@SYMTestCaseDesc Test support in CTSY for cancelling of RCall::Dial for data calls
+@SYMTestPriority High
+@SYMTestActions Invokes cancelling of RCall::Dial for data calls
+@SYMTestExpectedResults Pass
+@SYMTestType CT
+*/
+void CCTsyCallControlFU::TestDial0007L()
+ {
+
+ OpenEtelServerL(EUseExtendedError);
+ CleanupStack::PushL(TCleanupItem(Cleanup,this));
+ OpenPhoneL();
+
+ RBuf8 expectData;
+ CleanupClosePushL(expectData);
+
+ RBuf8 completeData;
+ CleanupClosePushL(completeData);
+
+ RLine line;
+ RCall call;
+
+ TInt errorCode = KErrNone;
+ TRequestStatus requestStatus;
+ TRequestStatus mockLtsyStatus;
+
+ // open new line and call for KMmTsyDataLineName
+ errorCode = OpenNewLineLC(iPhone, line, KMmTsyDataLineName);
+ ASSERT_EQUALS(KErrNone, errorCode);
+
+ TName name;
+
+ _LIT(KPhoneNumber, "135468456456");
+
+ TInt callId = 1;
+ RMobilePhone::TMobileService mobileService = RMobilePhone::ECircuitDataService;
+
+ RMobileCall::TMobileDataCallParamsV1 callParams;
+ callParams.iInterval = 4;
+ callParams.iCug.iCugIndex = 0xFFFF;
+
+ RMobileCall::TMobileCallInfoV8 callInfo;
+ callInfo.iDialledParty.iTelNumber.Copy(KPhoneNumber);
+ callInfo.iService = mobileService;
+ callInfo.iValid = RMobileCall::KCallDialledParty | RMobileCall::KCallAlternating;
+
+
+ RMobileCall::TMobileCallStatus mobileCallStatus2 = RMobileCall::EStatusIdle;
+ TMockLtsyCallData1<RMobileCall::TMobileCallStatus> mockCallDataStatus2(callId, mobileService, mobileCallStatus2);
+ completeData.Close();
+ mockCallDataStatus2.SerialiseL(completeData);
+
+
+ // Call Specific data
+ TMockLtsyCallData2<RMobileCall::TMobileDataCallParamsV1, RMobileCall::TMobileCallInfoV8>
+ mockData2(0, mobileService, callParams, callInfo);
+
+ TMockLtsyCallData0 mockData0(callId, mobileService);
+ TPckg<RMobileCall::TMobileDataCallParamsV1> pckgMockParams1(callParams);
+
+ expectData.Close();
+ mockData2.SerialiseL(expectData);
+
+ DialDataCallAndCancelL(line,pckgMockParams1,expectData,completeData);
+
+ //------------------------------------------------------------------
+ // TMobileDataCallParamsV2
+
+ RMobileCall::TMobileDataCallParamsV2 dataCallParams2;
+ dataCallParams2.iInterval = 4;
+ dataCallParams2.iCug.iCugIndex = 0xFFFF;
+
+ TMockLtsyCallData2<RMobileCall::TMobileDataCallParamsV2, RMobileCall::TMobileCallInfoV8>
+ mockDataCall2(0, mobileService, dataCallParams2, callInfo);
+
+ TPckg<RMobileCall::TMobileDataCallParamsV2> pckgMockDataCallParams2(dataCallParams2);
+
+ expectData.Close();
+ mockDataCall2.SerialiseL(expectData);
+
+ DialDataCallAndCancelL(line,pckgMockDataCallParams2,expectData,completeData);
+
+ //------------------------------------------------------------------
+ // TMobileDataCallParamsV8
+
+ RMobileCall::TMobileDataCallParamsV8 dataCallParams8;
+ dataCallParams8.iInterval = 4;
+ dataCallParams8.iCug.iCugIndex = 0xFFFF;
+
+ TMockLtsyCallData2<RMobileCall::TMobileDataCallParamsV8, RMobileCall::TMobileCallInfoV8>
+ mockDataCall8(0, mobileService, dataCallParams8, callInfo);
+
+ TPckg<RMobileCall::TMobileDataCallParamsV8> pckgMockDataCallParams8(dataCallParams8);
+
+ expectData.Close();
+ mockDataCall8.SerialiseL(expectData);
+
+ DialDataCallAndCancelL(line,pckgMockDataCallParams8,expectData,completeData);
+
+ //------------------------------------------------------------------
+ // TMobileHscsdCallParamsV1
+
+ RMobileCall::TMobileHscsdCallParamsV1 hscsdCallParams;
+ hscsdCallParams.iInterval = 4;
+ hscsdCallParams.iCug.iCugIndex = 0xFFFF;
+
+ TMockLtsyCallData2<RMobileCall::TMobileHscsdCallParamsV1, RMobileCall::TMobileCallInfoV8>
+ mockHscsdCall(0, mobileService, hscsdCallParams, callInfo);
+
+ TPckg<RMobileCall::TMobileHscsdCallParamsV1> pckgMockHscsdCallParams(hscsdCallParams);
+
+ expectData.Close();
+ mockHscsdCall.SerialiseL(expectData);
+
+ DialDataCallAndCancelL(line,pckgMockHscsdCallParams,expectData,completeData);
+
+ //------------------------------------------------------------------
+ // TMobileHscsdCallParamsV2
+
+ RMobileCall::TMobileHscsdCallParamsV2 hscsdCallParams2;
+ hscsdCallParams2.iInterval = 4;
+ hscsdCallParams2.iCug.iCugIndex = 0xFFFF;
+
+ TMockLtsyCallData2<RMobileCall::TMobileHscsdCallParamsV2, RMobileCall::TMobileCallInfoV8>
+ mockHscsdCall2(0, mobileService, hscsdCallParams2, callInfo);
+
+ TPckg<RMobileCall::TMobileHscsdCallParamsV2> pckgMockHscsdCallParams2(hscsdCallParams2);
+
+ expectData.Close();
+ mockHscsdCall2.SerialiseL(expectData);
+
+ DialDataCallAndCancelL(line,pckgMockHscsdCallParams2,expectData,completeData);
+
+ //------------------------------------------------------------------
+ // TMobileHscsdCallParamsV7
+
+ RMobileCall::TMobileHscsdCallParamsV7 hscsdCallParams7;
+ hscsdCallParams7.iInterval = 4;
+ hscsdCallParams7.iCug.iCugIndex = 0xFFFF;
+
+ TMockLtsyCallData2<RMobileCall::TMobileHscsdCallParamsV7, RMobileCall::TMobileCallInfoV8>
+ mockHscsdCall7(0, mobileService, hscsdCallParams7, callInfo);
+
+ TPckg<RMobileCall::TMobileHscsdCallParamsV7> pckgMockHscsdCallParams7(hscsdCallParams7);
+
+ expectData.Close();
+ mockHscsdCall7.SerialiseL(expectData);
+
+ DialDataCallAndCancelL(line,pckgMockHscsdCallParams7,expectData,completeData);
+
+
+ //------------------------------------------------------------------
+ // TMobileHscsdCallParamsV8
+
+ RMobileCall::TMobileHscsdCallParamsV8 hscsdCallParams8;
+ hscsdCallParams8.iInterval = 4;
+ hscsdCallParams8.iCug.iCugIndex = 0xFFFF;
+
+ TMockLtsyCallData2<RMobileCall::TMobileHscsdCallParamsV8, RMobileCall::TMobileCallInfoV8>
+ mockHscsdCall8(0, mobileService, hscsdCallParams8, callInfo);
+
+ TPckg<RMobileCall::TMobileHscsdCallParamsV8> pckgMockHscsdCallParams8(hscsdCallParams8);
+
+ expectData.Close();
+ mockHscsdCall8.SerialiseL(expectData);
+
+ DialDataCallAndCancelL(line,pckgMockHscsdCallParams8,expectData,completeData);
+ CleanupStack::PopAndDestroy(4); // expectData, completeData, this, this
+ }
+
+void
+CCTsyCallControlFU::DialDataCallAndCancelL(RLine& aLine,const TDesC8& aCallData,RBuf8& expectData,RBuf8& completeData)
+ {
+ // open new call
+
+ TInt errorCode = KErrNone;
+ TRequestStatus requestStatus;
+ TRequestStatus mockLtsyStatus;
+ _LIT(KPhoneNumber, "135468456456");
+
+ TInt callId = 1;
+ RMobilePhone::TMobileService mobileService = RMobilePhone::ECircuitDataService;
+
+ TName name;
+ RCall call;
+ CleanupClosePushL(call);
+ errorCode = call.OpenNewCall(aLine, name);
+ ASSERT_EQUALS(KErrNone, errorCode);
+
+ iMockLTSY.NotifyTerminated(mockLtsyStatus);
+
+
+ iMockLTSY.ExpectL(EEtelCallDial, expectData);
+
+ CallGetMobileCallInfoL(callId, mobileService, KPhoneNumber);
+
+ call.Dial(requestStatus, aCallData, KPhoneNumber);
+
+ User::WaitForRequest(mockLtsyStatus);
+
+ TInt hangUpCause = KErrGsmReleaseByUser;
+ TBool autoStChangeDisable = EFalse;
+ TMockLtsyCallData2<TInt, TBool> mockHangupData(callId, mobileService,
+ hangUpCause,
+ autoStChangeDisable);
+ expectData.Close();
+ mockHangupData.SerialiseL(expectData);
+ iMockLTSY.ExpectL(EEtelCallHangUp, expectData);
+
+ call.CancelAsyncRequest(EEtelCallDial);
+
+
+ iMockLTSY.NotifyTerminated(mockLtsyStatus);
+ iMockLTSY.CompleteL(EMobileCallNotifyMobileCallStatusChange, KErrGsmReleaseByUser, completeData);
+
+ User::WaitForRequest(requestStatus);
+ User::WaitForRequest(requestStatus);
+ ASSERT_EQUALS(KErrCancel, requestStatus.Int());
+
+ call.Close();
+ AssertMockLtsyStatusL();
+ CleanupStack::PopAndDestroy(1);
+ }
+
+
+
+
+/**
+@SYMTestCaseID BA-CTSY-CCON-CD-0008
+@SYMComponent telephony_ctsy
+@SYMTestCaseDesc Test support in CTSY for RCall::Dial with bad parameter data for data calls
+@SYMTestPriority High
+@SYMTestActions Invokes RCall::Dial with bad parameter data for data calls
+@SYMTestExpectedResults Pass
+@SYMTestType CT
+*/
+void CCTsyCallControlFU::TestDial0008L()
+ {
+
+// This test should test sending bad parameter data for Dial
+// If this API does not have any parameters, then remove this test completely.
+
+ OpenEtelServerL(EUseExtendedError);
+ CleanupStack::PushL(TCleanupItem(Cleanup,this));
+ OpenPhoneL();
+
+ RBuf8 expectData;
+ CleanupClosePushL(expectData);
+
+ RBuf8 completeData;
+ CleanupClosePushL(completeData);
+
+ RLine line;
+ RCall call;
+
+ TInt errorCode = KErrNone;
+ TRequestStatus requestStatus;
+ TRequestStatus mockLtsyStatus;
+
+ // open new line and call for KMmTsyDataLineName
+ errorCode = OpenNewLineLC(iPhone, line, KMmTsyDataLineName);
+ ASSERT_EQUALS(KErrNone, errorCode);
+
+ TName name;
+
+ _LIT(KPhoneNumber, "101632960000");
+
+ TInt callId = 1;
+ RMobilePhone::TMobileService mobileService = RMobilePhone::ECircuitDataService;
+
+ TInt8 callParams; // bad param
+ TPckg<TInt8> paramPckg(callParams);
+
+ //-------------------------------------------------------------------------
+ // Test A: Test passing wrong version of parameters to
+ // RCall::Dial
+ //-------------------------------------------------------------------------
+
+ // open new call
+ CleanupClosePushL(call);
+ errorCode = call.OpenNewCall(line, name);
+ ASSERT_EQUALS(KErrNone, errorCode);
+
+ CallGetMobileCallInfoL(callId, mobileService, KPhoneNumber);
+
+ call.Dial(requestStatus, paramPckg, KPhoneNumber);
+ User::WaitForRequest(requestStatus);
+ ASSERT_EQUALS(KErrArgument, requestStatus.Int());
+
+ call.Close();
+ CleanupStack::PopAndDestroy(1);
+ CleanupStack::PopAndDestroy(4, this); // expectData, completeData, line
+
+ }
+
+
+/**
+@SYMTestCaseID BA-CTSY-CCON-CD-0009
+@SYMComponent telephony_ctsy
+@SYMTestCaseDesc Test support in CTSY for multiple client requests to RCall::Dial for data calls
+@SYMTestPriority High
+@SYMTestActions Invokes multiple client requests to RCall::Dial for data calls
+@SYMTestExpectedResults Pass
+@SYMTestType CT
+*/
+void CCTsyCallControlFU::TestDial0009L()
+ {
+
+
+ OpenEtelServerL(EUseExtendedError);
+ CleanupStack::PushL(TCleanupItem(Cleanup,this));
+ OpenPhoneL();
+
+ RBuf8 expectData;
+ CleanupClosePushL(expectData);
+
+ RBuf8 completeData;
+ CleanupClosePushL(completeData);
+
+ // Open second client
+ RTelServer telServer2;
+ TInt ret = telServer2.Connect();
+ ASSERT_EQUALS(KErrNone, ret);
+ CleanupClosePushL(telServer2);
+
+ RMobilePhone phone2;
+ ret = phone2.Open(iTelServer,KMmTsyPhoneName);
+ ASSERT_EQUALS(KErrNone, ret);
+ CleanupClosePushL(phone2);
+
+ RLine line1;
+ RLine line2;
+
+ RCall call1;
+ RCall call2;
+
+ TInt errorCode = KErrNone;
+ TRequestStatus requestStatus1;
+ TRequestStatus requestStatus2;
+
+ // open new line1 and call for KMmTsyDataLineName
+ errorCode = OpenNewLineLC(iPhone, line1, KMmTsyDataLineName);
+ ASSERT_EQUALS(KErrNone, errorCode);
+
+ // open new line2 and call for KMmTsyDataLineName
+ errorCode = OpenNewLineLC(phone2, line2, KMmTsyDataLineName);
+ ASSERT_EQUALS(KErrNone, errorCode);
+
+ TName name;
+
+ _LIT(KPhoneNumber1, "101632960000");
+ _LIT(KPhoneNumber2, "654654864531");
+
+ TInt callId1 = 1;
+ RMobilePhone::TMobileService mobileService = RMobilePhone::ECircuitDataService;
+
+ RMobileCall::TMobileDataCallParamsV1 callParams;
+ callParams.iInterval = 4;
+ callParams.iCug.iCugIndex = 0xFFFF;
+
+ RMobileCall::TMobileCallInfoV8 callInfo1;
+ callInfo1.iDialledParty.iTelNumber.Copy(KPhoneNumber1);
+ callInfo1.iService = mobileService;
+ callInfo1.iValid = RMobileCall::KCallDialledParty |RMobileCall::KCallAlternating;
+
+ RMobileCall::TMobileCallInfoV8 callInfo2;
+ callInfo2.iDialledParty.iTelNumber.Copy(KPhoneNumber2);
+ callInfo2.iService = mobileService;
+ callInfo2.iValid = RMobileCall::KCallDialledParty |RMobileCall::KCallAlternating;
+
+ TMockLtsyCallData2<RMobileCall::TMobileDataCallParamsV1, RMobileCall::TMobileCallInfoV8>
+ mockData21(0, mobileService, callParams, callInfo1);
+
+ TMockLtsyCallData0 mockData01(callId1, mobileService);
+
+ TPckg<RMobileCall::TMobileDataCallParamsV1> pckgMockParams1(callParams);
+
+ //-------------------------------------------------------------------------
+ // Test A: Test multiple clients requesting RCall::Dial
+ //-------------------------------------------------------------------------
+
+ // call first clinet
+ // open new call1
+ CleanupClosePushL(call1);
+ errorCode = call1.OpenNewCall(line1, name);
+ ASSERT_EQUALS(KErrNone, errorCode);
+
+ expectData.Close();
+ mockData21.SerialiseL(expectData);
+ iMockLTSY.ExpectL(EEtelCallDial, expectData);
+
+ CallGetMobileCallInfoL(callId1, mobileService, KPhoneNumber1);
+
+ mockData01.SerialiseL(completeData);
+ iMockLTSY.CompleteL(EEtelCallDial, KErrNone, completeData);
+
+ call1.Dial(requestStatus1, pckgMockParams1, KPhoneNumber1);
+
+ // call second clinet
+ // open new call
+ CleanupClosePushL(call2);
+ errorCode = call2.OpenNewCall(line2, name);
+ ASSERT_EQUALS(KErrNone, errorCode);
+
+ call2.Dial(requestStatus2, pckgMockParams1, KPhoneNumber2);
+
+ User::WaitForRequest(requestStatus1);
+ AssertMockLtsyStatusL();
+ ASSERT_EQUALS(KErrNone, requestStatus1.Int());
+
+ User::WaitForRequest(requestStatus2);
+ AssertMockLtsyStatusL();
+ ASSERT_EQUALS(KErrServerBusy, requestStatus2.Int());
+
+ call1.Close();
+ AssertMockLtsyStatusL();
+ CleanupStack::PopAndDestroy(1);
+
+ call2.Close();
+ AssertMockLtsyStatusL();
+ CleanupStack::PopAndDestroy(1);
+
+ //-----------------------------------------------------------------------
+ // TMobileDataCallParamsV2
+ RMobileCall::TMobileDataCallParamsV2 dataCallParams2;
+ dataCallParams2.iInterval = 4;
+ dataCallParams2.iCug.iCugIndex = 0xFFFF;
+
+ TMockLtsyCallData2<RMobileCall::TMobileDataCallParamsV2, RMobileCall::TMobileCallInfoV8>
+ mockDataCall21(0, mobileService, dataCallParams2, callInfo1);
+
+ TPckg<RMobileCall::TMobileDataCallParamsV2> pckgMockDataCallParams2(dataCallParams2);
+
+ //-------------------------------------------------------------------------
+ // Test A2: Test multiple clients requesting RCall::Dial
+ //-------------------------------------------------------------------------
+
+ // call first clinet
+ // open new call1
+ CleanupClosePushL(call1);
+ errorCode = call1.OpenNewCall(line1, name);
+ ASSERT_EQUALS(KErrNone, errorCode);
+
+ expectData.Close();
+ mockDataCall21.SerialiseL(expectData);
+ iMockLTSY.ExpectL(EEtelCallDial, expectData);
+
+ CallGetMobileCallInfoL(callId1, mobileService, KPhoneNumber1);
+
+ mockData01.SerialiseL(completeData);
+ iMockLTSY.CompleteL(EEtelCallDial, KErrNone, completeData);
+
+ call1.Dial(requestStatus1, pckgMockDataCallParams2, KPhoneNumber1);
+
+ // call second clinet
+ // open new call
+ CleanupClosePushL(call2);
+ errorCode = call2.OpenNewCall(line2, name);
+ ASSERT_EQUALS(KErrNone, errorCode);
+
+ call2.Dial(requestStatus2, pckgMockDataCallParams2, KPhoneNumber2);
+
+ User::WaitForRequest(requestStatus1);
+ AssertMockLtsyStatusL();
+ ASSERT_EQUALS(KErrNone, requestStatus1.Int());
+
+ User::WaitForRequest(requestStatus2);
+ AssertMockLtsyStatusL();
+ ASSERT_EQUALS(KErrServerBusy, requestStatus2.Int());
+
+ call1.Close();
+ AssertMockLtsyStatusL();
+ CleanupStack::PopAndDestroy(1);
+
+ call2.Close();
+ AssertMockLtsyStatusL();
+ CleanupStack::PopAndDestroy(1);
+
+ //-----------------------------------------------------------------------
+ // TMobileDataCallParamsV8
+
+ RMobileCall::TMobileDataCallParamsV8 dataCallParams8;
+ dataCallParams8.iInterval = 2;
+ dataCallParams8.iCug.iCugIndex = 0xFFFF;
+ dataCallParams8.iSpeakerControl = RCall::EMonitorSpeakerControlAlwaysOff;
+ dataCallParams8.iSpeakerVolume = RCall::EMonitorSpeakerVolumeMedium;
+ dataCallParams8.iWaitForDialTone = RCall::EDialToneWait;
+ dataCallParams8.iQoS = RMobileCall::EQosTransparentPreferred;
+ dataCallParams8.iV42bisReq = RMobileCall::EV42bisTxDirection;
+ dataCallParams8.iBearerMode = RMobileCall::EMulticallShareBearer;
+ dataCallParams8.iSubAddress.Copy(_L("An Unknown SubAddress"));
+ dataCallParams8.iCallParamOrigin = RMobileCall::EOriginatorSIM;
+ dataCallParams8.iAlphaId.Copy(_L("Alpha Id"));
+
+ RMobileCall::TMobileCallInfoV8 callInformation;
+ callInformation.iDialledParty.iTelNumber.Copy(KPhoneNumber1);
+ callInformation.iService = mobileService;
+ callInformation.iValid |= RMobileCall::KCallDialledParty;
+ callInformation.iValid |= RMobileCall::KCallAlternating;
+ callInformation.iAlphaId.Copy(_L("Alpha Id"));
+ callInformation.iValid |= RMobileCall::KCallAlphaId;
+ callInformation.iCallParamOrigin = RMobileCall::EOriginatorSIM;
+ callInformation.iValid |= RMobileCall::KCallParamOrigin;
+
+ TMockLtsyCallData2<RMobileCall::TMobileDataCallParamsV8, RMobileCall::TMobileCallInfoV8>
+ mockDataCall81(0, mobileService, dataCallParams8, callInformation);
+
+ TPckg<RMobileCall::TMobileDataCallParamsV8> pckgMockDataCallParams8(dataCallParams8);
+
+ //-------------------------------------------------------------------------
+ // Test A3: Test multiple clients requesting RCall::Dial
+ //-------------------------------------------------------------------------
+
+ // call first clinet
+ // open new call1
+ CleanupClosePushL(call1);
+ errorCode = call1.OpenNewCall(line1, name);
+ ASSERT_EQUALS(KErrNone, errorCode);
+
+ expectData.Close();
+ mockDataCall81.SerialiseL(expectData);
+ iMockLTSY.ExpectL(EEtelCallDial, expectData);
+
+ CallGetMobileCallInfoL(callId1, mobileService, KPhoneNumber1);
+
+ mockData01.SerialiseL(completeData);
+ iMockLTSY.CompleteL(EEtelCallDial, KErrNone, completeData);
+
+ call1.Dial(requestStatus1, pckgMockDataCallParams8, KPhoneNumber1);
+
+ // call second clinet
+ // open new call
+ CleanupClosePushL(call2);
+ errorCode = call2.OpenNewCall(line2, name);
+ ASSERT_EQUALS(KErrNone, errorCode);
+
+ call2.Dial(requestStatus2, pckgMockDataCallParams8, KPhoneNumber2);
+
+ User::WaitForRequest(requestStatus1);
+ AssertMockLtsyStatusL();
+ ASSERT_EQUALS(KErrNone, requestStatus1.Int());
+
+ User::WaitForRequest(requestStatus2);
+ AssertMockLtsyStatusL();
+ ASSERT_EQUALS(KErrServerBusy, requestStatus2.Int());
+
+ call1.Close();
+ AssertMockLtsyStatusL();
+ CleanupStack::PopAndDestroy(1);
+
+ call2.Close();
+ AssertMockLtsyStatusL();
+ CleanupStack::PopAndDestroy(1);
+
+ // Done !
+ CleanupStack::PopAndDestroy(7, this); // phone2, telServer2, expectData, completeData, this
+ // line1, line2
+ }
+
+
+/**
+@SYMTestCaseID BA-CTSY-CCON-CD-0009b
+@SYMComponent telephony_ctsy
+@SYMTestCaseDesc Test support in CTSY for multiple client requests to RCall::Dial for data calls with HscsdCallParams. It is in connection to BA-CTSY-CCON-CD-0009
+@SYMTestPriority High
+@SYMTestActions Invokes multiple client requests to RCall::Dial for data calls
+@SYMTestExpectedResults Pass
+@SYMTestType CT
+*/
+void CCTsyCallControlFU::TestDial0009bL()
+ {
+
+
+ OpenEtelServerL(EUseExtendedError);
+ CleanupStack::PushL(TCleanupItem(Cleanup,this));
+ OpenPhoneL();
+
+ RBuf8 expectData;
+ CleanupClosePushL(expectData);
+
+ RBuf8 completeData;
+ CleanupClosePushL(completeData);
+
+ // Open second client
+ RTelServer telServer2;
+ TInt ret = telServer2.Connect();
+ ASSERT_EQUALS(KErrNone, ret);
+ CleanupClosePushL(telServer2);
+
+ RMobilePhone phone2;
+ ret = phone2.Open(iTelServer,KMmTsyPhoneName);
+ ASSERT_EQUALS(KErrNone, ret);
+ CleanupClosePushL(phone2);
+
+ RLine line1;
+ RLine line2;
+
+ RCall call1;
+ RCall call2;
+
+ TInt errorCode = KErrNone;
+ TRequestStatus requestStatus1;
+ TRequestStatus requestStatus2;
+
+ // open new line1 and call for KMmTsyDataLineName
+ errorCode = OpenNewLineLC(iPhone, line1, KMmTsyDataLineName);
+ ASSERT_EQUALS(KErrNone, errorCode);
+
+ // open new line2 and call for KMmTsyDataLineName
+ errorCode = OpenNewLineLC(phone2, line2, KMmTsyDataLineName);
+ ASSERT_EQUALS(KErrNone, errorCode);
+
+ TName name;
+
+ _LIT(KPhoneNumber1, "101632960000");
+ _LIT(KPhoneNumber2, "654654864531");
+
+ TInt callId1 = 1;
+ RMobilePhone::TMobileService mobileService = RMobilePhone::ECircuitDataService;
+
+ RMobileCall::TMobileCallInfoV8 callInfo1;
+ callInfo1.iDialledParty.iTelNumber.Copy(KPhoneNumber1);
+ callInfo1.iService = mobileService;
+ callInfo1.iValid = RMobileCall::KCallDialledParty |RMobileCall::KCallAlternating;
+
+ RMobileCall::TMobileCallInfoV8 callInfo2;
+ callInfo2.iDialledParty.iTelNumber.Copy(KPhoneNumber2);
+ callInfo2.iService = mobileService;
+ callInfo2.iValid = RMobileCall::KCallDialledParty |RMobileCall::KCallAlternating;
+
+ //-----------------------------------------------------------------------
+ // TMobileHscsdCallParamsV1
+ RMobileCall::TMobileHscsdCallParamsV1 hscsdCallParams1;
+ hscsdCallParams1.iInterval = 4;
+ hscsdCallParams1.iCug.iCugIndex = 0xFFFF;
+
+ TMockLtsyCallData2<RMobileCall::TMobileHscsdCallParamsV1, RMobileCall::TMobileCallInfoV8>
+ mockHscsdCall11(0, mobileService, hscsdCallParams1, callInfo1);
+
+ TPckg<RMobileCall::TMobileHscsdCallParamsV1> pckgMockHscsdCallParams1(hscsdCallParams1);
+ TMockLtsyCallData0 mockData01(callId1, mobileService);
+ //-------------------------------------------------------------------------
+ // Test A4: Test multiple clients requesting RCall::Dial
+ //-------------------------------------------------------------------------
+
+ // call first clinet
+ // open new call1
+ CleanupClosePushL(call1);
+ errorCode = call1.OpenNewCall(line1, name);
+ ASSERT_EQUALS(KErrNone, errorCode);
+
+ expectData.Close();
+ mockHscsdCall11.SerialiseL(expectData);
+ iMockLTSY.ExpectL(EEtelCallDial, expectData);
+
+ CallGetMobileCallInfoL(callId1, mobileService, KPhoneNumber1);
+
+ mockData01.SerialiseL(completeData);
+ iMockLTSY.CompleteL(EEtelCallDial, KErrNone, completeData);
+
+ call1.Dial(requestStatus1, pckgMockHscsdCallParams1, KPhoneNumber1);
+
+ // call second clinet
+ // open new call
+ CleanupClosePushL(call2);
+ errorCode = call2.OpenNewCall(line2, name);
+ ASSERT_EQUALS(KErrNone, errorCode);
+
+ call2.Dial(requestStatus2, pckgMockHscsdCallParams1, KPhoneNumber2);
+
+ User::WaitForRequest(requestStatus1);
+ AssertMockLtsyStatusL();
+ ASSERT_EQUALS(KErrNone, requestStatus1.Int());
+
+ User::WaitForRequest(requestStatus2);
+ AssertMockLtsyStatusL();
+ ASSERT_EQUALS(KErrServerBusy, requestStatus2.Int());
+
+ call1.Close();
+ AssertMockLtsyStatusL();
+ CleanupStack::PopAndDestroy(1);
+
+ call2.Close();
+ AssertMockLtsyStatusL();
+ CleanupStack::PopAndDestroy(1);
+
+ //-----------------------------------------------------------------------
+ // TMobileHscsdCallParamsV2
+ RMobileCall::TMobileHscsdCallParamsV2 hscsdCallParams2;
+ hscsdCallParams2.iInterval = 4;
+ hscsdCallParams2.iCug.iCugIndex = 0xFFFF;
+
+ TMockLtsyCallData2<RMobileCall::TMobileHscsdCallParamsV2, RMobileCall::TMobileCallInfoV8>
+ mockHscsdCall21(0, mobileService, hscsdCallParams2, callInfo1);
+
+ TPckg<RMobileCall::TMobileHscsdCallParamsV2> pckgMockHscsdCallParams2(hscsdCallParams2);
+
+ //-------------------------------------------------------------------------
+ // Test A5: Test multiple clients requesting RCall::Dial
+ //-------------------------------------------------------------------------
+
+ // call first clinet
+ // open new call1
+ CleanupClosePushL(call1);
+ errorCode = call1.OpenNewCall(line1, name);
+ ASSERT_EQUALS(KErrNone, errorCode);
+
+ expectData.Close();
+ mockHscsdCall21.SerialiseL(expectData);
+ iMockLTSY.ExpectL(EEtelCallDial, expectData);
+
+ CallGetMobileCallInfoL(callId1, mobileService, KPhoneNumber1);
+
+ mockData01.SerialiseL(completeData);
+ iMockLTSY.CompleteL(EEtelCallDial, KErrNone, completeData);
+
+ call1.Dial(requestStatus1, pckgMockHscsdCallParams2, KPhoneNumber1);
+
+ // call second clinet
+ // open new call
+ CleanupClosePushL(call2);
+ errorCode = call2.OpenNewCall(line2, name);
+ ASSERT_EQUALS(KErrNone, errorCode);
+
+ call2.Dial(requestStatus2, pckgMockHscsdCallParams2, KPhoneNumber2);
+
+ User::WaitForRequest(requestStatus1);
+ AssertMockLtsyStatusL();
+ ASSERT_EQUALS(KErrNone, requestStatus1.Int());
+
+ User::WaitForRequest(requestStatus2);
+ AssertMockLtsyStatusL();
+ ASSERT_EQUALS(KErrServerBusy, requestStatus2.Int());
+
+ call1.Close();
+ AssertMockLtsyStatusL();
+ CleanupStack::PopAndDestroy(1);
+
+ call2.Close();
+ AssertMockLtsyStatusL();
+ CleanupStack::PopAndDestroy(1);
+
+ //-----------------------------------------------------------------------
+ // TMobileHscsdCallParamsV7
+ RMobileCall::TMobileHscsdCallParamsV7 hscsdCallParams7;
+ hscsdCallParams7.iInterval = 4;
+ hscsdCallParams7.iCug.iCugIndex = 0xFFFF;
+ hscsdCallParams7.iAlphaId.Copy(_L("Alpha Id"));
+ hscsdCallParams7.iCallParamOrigin = RMobileCall::EOriginatorSIM;
+
+ RMobileCall::TMobileCallInfoV8 callInformation;
+ callInformation.iDialledParty.iTelNumber.Copy(KPhoneNumber1);
+ callInformation.iService = mobileService;
+ callInformation.iValid |= RMobileCall::KCallDialledParty;
+ callInformation.iValid |= RMobileCall::KCallAlternating;
+ callInformation.iAlphaId.Copy(_L("Alpha Id"));
+ callInformation.iValid |= RMobileCall::KCallAlphaId;
+ callInformation.iCallParamOrigin = RMobileCall::EOriginatorSIM;
+ callInformation.iValid |= RMobileCall::KCallParamOrigin;
+
+ TMockLtsyCallData2<RMobileCall::TMobileHscsdCallParamsV7, RMobileCall::TMobileCallInfoV8>
+ mockHscsdCall71(0, mobileService, hscsdCallParams7, callInformation);
+
+ TPckg<RMobileCall::TMobileHscsdCallParamsV7> pckgMockHscsdCallParams7(hscsdCallParams7);
+
+ //-------------------------------------------------------------------------
+ // Test A6: Test multiple clients requesting RCall::Dial
+ //-------------------------------------------------------------------------
+
+ // call first clinet
+ // open new call1
+ CleanupClosePushL(call1);
+ errorCode = call1.OpenNewCall(line1, name);
+ ASSERT_EQUALS(KErrNone, errorCode);
+
+ expectData.Close();
+ mockHscsdCall71.SerialiseL(expectData);
+ iMockLTSY.ExpectL(EEtelCallDial, expectData);
+
+ CallGetMobileCallInfoL(callId1, mobileService, KPhoneNumber1);
+
+ mockData01.SerialiseL(completeData);
+ iMockLTSY.CompleteL(EEtelCallDial, KErrNone, completeData);
+
+ call1.Dial(requestStatus1, pckgMockHscsdCallParams7, KPhoneNumber1);
+
+ // call second clinet
+ // open new call
+ CleanupClosePushL(call2);
+ errorCode = call2.OpenNewCall(line2, name);
+ ASSERT_EQUALS(KErrNone, errorCode);
+
+ call2.Dial(requestStatus2, pckgMockHscsdCallParams7, KPhoneNumber2);
+
+ User::WaitForRequest(requestStatus1);
+ AssertMockLtsyStatusL();
+ ASSERT_EQUALS(KErrNone, requestStatus1.Int());
+
+ User::WaitForRequest(requestStatus2);
+ AssertMockLtsyStatusL();
+ ASSERT_EQUALS(KErrServerBusy, requestStatus2.Int());
+
+ call1.Close();
+ AssertMockLtsyStatusL();
+ CleanupStack::PopAndDestroy(1);
+
+ call2.Close();
+ AssertMockLtsyStatusL();
+ CleanupStack::PopAndDestroy(1);
+
+ // Done !
+ CleanupStack::PopAndDestroy(7, this); // phone2, telServer2, expectData, completeData, this
+ // line1, line2
+ }
+
+
+/**
+@SYMTestCaseID BA-CTSY-CCON-CD-0009c
+@SYMComponent telephony_ctsy
+@SYMTestCaseDesc Test support in CTSY for multiple client requests to RCall::Dial for data calls with HscsdCallParamsV8. It is in connection to Test support in CTSY for multiple client requests to RCall::Dial for data calls with HscsdCallParamsV8. It is in connection to BA-CTSY-CCON-CD-0009b
+@SYMTestPriority High
+@SYMTestActions Invokes multiple client requests to RCall::Dial for data calls
+@SYMTestExpectedResults Pass
+@SYMTestType CT
+*/
+void CCTsyCallControlFU::TestDial0009cL()
+ {
+
+ OpenEtelServerL(EUseExtendedError);
+ CleanupStack::PushL(TCleanupItem(Cleanup,this));
+ OpenPhoneL();
+
+ RBuf8 expectData;
+ CleanupClosePushL(expectData);
+
+ RBuf8 completeData;
+ CleanupClosePushL(completeData);
+
+ // Open second client
+ RTelServer telServer2;
+ TInt ret = telServer2.Connect();
+ ASSERT_EQUALS(KErrNone, ret);
+ CleanupClosePushL(telServer2);
+
+ RMobilePhone phone2;
+ ret = phone2.Open(iTelServer,KMmTsyPhoneName);
+ ASSERT_EQUALS(KErrNone, ret);
+ CleanupClosePushL(phone2);
+
+ RLine line1;
+ RLine line2;
+
+ RCall call1;
+ RCall call2;
+
+ TInt errorCode = KErrNone;
+ TRequestStatus requestStatus1;
+ TRequestStatus requestStatus2;
+
+ // open new line1 and call for KMmTsyDataLineName
+ errorCode = OpenNewLineLC(iPhone, line1, KMmTsyDataLineName);
+ ASSERT_EQUALS(KErrNone, errorCode);
+
+ // open new line2 and call for KMmTsyDataLineName
+ errorCode = OpenNewLineLC(phone2, line2, KMmTsyDataLineName);
+ ASSERT_EQUALS(KErrNone, errorCode);
+
+ TName name;
+
+ _LIT(KPhoneNumber1, "101632960000");
+ _LIT(KPhoneNumber2, "654654864531");
+
+ TInt callId1 = 1;
+ RMobilePhone::TMobileService mobileService = RMobilePhone::ECircuitDataService;
+
+ RMobileCall::TMobileCallInfoV8 callInformation;
+ callInformation.iDialledParty.iTelNumber.Copy(KPhoneNumber1);
+ callInformation.iService = mobileService;
+ callInformation.iValid |= RMobileCall::KCallDialledParty;
+ callInformation.iValid |= RMobileCall::KCallAlternating;
+ callInformation.iAlphaId.Copy(_L("Alpha Id"));
+ callInformation.iValid |= RMobileCall::KCallAlphaId;
+ callInformation.iCallParamOrigin = RMobileCall::EOriginatorSIM;
+ callInformation.iValid |= RMobileCall::KCallParamOrigin;
+
+ //-----------------------------------------------------------------------
+ // TMobileHscsdCallParamsV8
+ RMobileCall::TMobileHscsdCallParamsV8 hscsdCallParams8;
+ hscsdCallParams8.iInterval = 4;
+ hscsdCallParams8.iCug.iCugIndex = 0xFFFF;
+ hscsdCallParams8.iAlphaId.Copy(_L("Alpha Id"));
+ hscsdCallParams8.iCallParamOrigin = RMobileCall::EOriginatorSIM;
+
+ TMockLtsyCallData2<RMobileCall::TMobileHscsdCallParamsV8, RMobileCall::TMobileCallInfoV8>
+ mockHscsdCall81(0, mobileService, hscsdCallParams8, callInformation);
+
+ TPckg<RMobileCall::TMobileHscsdCallParamsV8> pckgMockHscsdCallParams8(hscsdCallParams8);
+
+ //-------------------------------------------------------------------------
+ // Test A7: Test multiple clients requesting RCall::Dial
+ //-------------------------------------------------------------------------
+
+ // call first clinet
+ // open new call1
+ CleanupClosePushL(call1);
+ errorCode = call1.OpenNewCall(line1, name);
+ ASSERT_EQUALS(KErrNone, errorCode);
+
+ expectData.Close();
+ mockHscsdCall81.SerialiseL(expectData);
+ iMockLTSY.ExpectL(EEtelCallDial, expectData);
+
+ CallGetMobileCallInfoL(callId1, mobileService, KPhoneNumber1);
+ call1.Dial(requestStatus1, pckgMockHscsdCallParams8, KPhoneNumber1);
+
+ TMockLtsyCallData0 mockData01(callId1, mobileService);
+ mockData01.SerialiseL(completeData);
+ iMockLTSY.CompleteL(EEtelCallDial, KErrNone, completeData);
+
+ // call second clinet
+ // open new call
+ CleanupClosePushL(call2);
+ errorCode = call2.OpenNewCall(line2, name);
+ ASSERT_EQUALS(KErrNone, errorCode);
+
+ call2.Dial(requestStatus2, pckgMockHscsdCallParams8, KPhoneNumber2);
+
+ User::WaitForRequest(requestStatus1);
+ AssertMockLtsyStatusL();
+ ASSERT_EQUALS(KErrNone, requestStatus1.Int());
+
+ User::WaitForRequest(requestStatus2);
+ AssertMockLtsyStatusL();
+ ASSERT_EQUALS(KErrServerBusy, requestStatus2.Int());
+
+ call1.Close();
+ AssertMockLtsyStatusL();
+ CleanupStack::PopAndDestroy(1);
+
+ call2.Close();
+ AssertMockLtsyStatusL();
+ CleanupStack::PopAndDestroy(1);
+
+ // Done !
+ CleanupStack::PopAndDestroy(7, this); // phone2, telServer2, expectData, completeData, this
+ // line1, line2
+ }
+
+
+
+/**
+@SYMTestCaseID BA-CTSY-CCON-CD-00010
+@SYMComponent telephony_ctsy
+@SYMTestCaseDesc Test support in CTSY for RCall::Dial with timeout for data calls
+@SYMTestPriority High
+@SYMTestActions Invokes RCall::Dial and tests for timeout for data calls
+@SYMTestExpectedResults Pass
+@SYMTestType CT
+*/
+void CCTsyCallControlFU::TestDial00010L()
+ {
+ OpenEtelServerL(EUseExtendedError);
+ CleanupStack::PushL(TCleanupItem(Cleanup,this));
+ OpenPhoneL();
+
+ RBuf8 expectData;
+ CleanupClosePushL(expectData);
+
+ RBuf8 completeData;
+ CleanupClosePushL(completeData);
+
+ RLine line;
+ RCall call;
+
+ TInt errorCode = KErrNone;
+ TRequestStatus requestStatus;
+
+ // open new line and call for KMmTsyDataLineName
+ errorCode = OpenNewLineLC(iPhone, line, KMmTsyDataLineName);
+ ASSERT_EQUALS(KErrNone, errorCode);
+
+ TName name;
+
+ _LIT(KPhoneNumber, "101632960000");
+
+ TInt callId = 1;
+ RMobilePhone::TMobileService mobileService = RMobilePhone::ECircuitDataService;
+
+ RMobileCall::TMobileDataCallParamsV1 callParams;
+ callParams.iInterval = 4;
+ callParams.iCug.iCugIndex = 0xFFFF;
+
+ RMobileCall::TMobileCallInfoV1 callInfo;
+ callInfo.iDialledParty.iTelNumber.Copy(KPhoneNumber);
+ callInfo.iService = mobileService;
+ callInfo.iValid = RMobileCall::KCallDialledParty;
+
+ TMockLtsyCallData2<RMobileCall::TMobileDataCallParamsV1, RMobileCall::TMobileCallInfoV1>
+ mockData2(0, mobileService, callParams, callInfo);
+
+ TMockLtsyCallData0 mockData0(callId, mobileService);
+ TPckg<RMobileCall::TMobileDataCallParamsV1> pckgMockParams1(callParams);
+
+ //-------------------------------------------------------------------------
+ // Test A: Test timeout of RCall::Dial
+ //-------------------------------------------------------------------------
+
+ // open new call
+ CleanupClosePushL(call);
+ errorCode = call.OpenNewCall(line, name);
+ ASSERT_EQUALS(KErrNone, errorCode);
+
+ expectData.Close();
+ mockData2.SerialiseL(expectData);
+ iMockLTSY.ExpectL(EEtelCallDial, expectData);
+
+ CallGetMobileCallInfoL(callId, mobileService, KPhoneNumber);
+
+ call.Dial(requestStatus, pckgMockParams1, KPhoneNumber);
+
+ User::WaitForRequest(requestStatus);
+ ASSERT_EQUALS(KErrTimedOut, requestStatus.Int());
+
+ call.Close();
+ AssertMockLtsyStatusL();
+ CleanupStack::PopAndDestroy(1);
+
+ CleanupStack::PopAndDestroy(4); // expectData, completeData, this, this
+ }
+
+
+/**
+@SYMTestCaseID BA-CTSY-CCON-CD-00011
+@SYMComponent telephony_ctsy
+@SYMTestCaseDesc Test support in CTSY for RCall::Dial for fax calls
+@SYMTestPriority High
+@SYMTestActions Invokes RCall::Dial for fax calls
+@SYMTestExpectedResults Pass
+@SYMTestType CT
+*/
+void CCTsyCallControlFU::TestDial00011L()
+ {
+
+ OpenEtelServerL(EUseExtendedError);
+ CleanupStack::PushL(TCleanupItem(Cleanup,this));
+ OpenPhoneL();
+
+ RBuf8 expectData;
+ CleanupClosePushL(expectData);
+
+ RBuf8 completeData;
+ CleanupClosePushL(completeData);
+
+ RLine line;
+ RCall call;
+
+ TInt errorCode = KErrNone;
+ TRequestStatus requestStatus;
+ TRequestStatus requestStatus2;
+ TRequestStatus mockLtsyStatus;
+
+ // open new line and call for KMmTsyVoice1LineName
+ errorCode = OpenNewLineLC(iPhone, line, KMmTsyFaxLineName);
+ ASSERT_EQUALS(KErrNone, errorCode);
+
+ TName name;
+
+ _LIT(KPhoneNumber, "101632960000");
+
+ TInt callId = 1;
+ RMobilePhone::TMobileService mobileService = RMobilePhone::EFaxService;
+
+ RMobileCall::TMobileCallParamsV1 callParams;
+ callParams.iInterval = 4;
+ callParams.iCug.iCugIndex = 0xFFFF;
+
+ RMobileCall::TMobileCallInfoV1 callInfo;
+ callInfo.iDialledParty.iTelNumber.Copy(KPhoneNumber);
+ callInfo.iService = mobileService;
+ callInfo.iValid = RMobileCall::KCallDialledParty | RMobileCall::KCallAlternating;
+
+ TMockLtsyCallData2<RMobileCall::TMobileCallParamsV1, RMobileCall::TMobileCallInfoV1>
+ mockData2(0, mobileService, callParams, callInfo);
+
+ TMockLtsyCallData0 mockData0(callId, mobileService);
+ TPckg<RMobileCall::TMobileCallParamsV1> pckgMockParams1(callParams);
+
+ //-------------------------------------------------------------------------
+ // TEST A: failure to dispatch request to LTSY
+ //-------------------------------------------------------------------------
+
+ // open new call
+ CleanupClosePushL(call);
+ errorCode = call.OpenNewCall(line, name);
+ ASSERT_EQUALS(KErrNone, errorCode);
+
+ call.Dial(requestStatus, pckgMockParams1, KPhoneNumber);
+ User::WaitForRequest(requestStatus);
+ AssertMockLtsyStatusL();
+ ASSERT_EQUALS(KErrNotSupported, requestStatus.Int());
+
+ call.Close();
+ AssertMockLtsyStatusL();
+ CleanupStack::PopAndDestroy(1);
+
+ //-------------------------------------------------------------------------
+ // TEST E: Unsolicited completion of RCall::Dial
+ // from LTSY.
+ //-------------------------------------------------------------------------
+
+ iMockLTSY.NotifyTerminated(mockLtsyStatus);
+ expectData.Close();
+ mockData0.SerialiseL(expectData);
+ iMockLTSY.CompleteL(EEtelCallDial, KErrNone, expectData);
+ User::WaitForRequest(mockLtsyStatus);
+ AssertMockLtsyStatusL();
+ ASSERT_EQUALS(KErrNone, mockLtsyStatus.Int());
+
+ //-------------------------------------------------------------------------
+ // TEST : to increase CMmFaxCallTsy::Dial coverage
+ // covers "if( call->GetDialFlag() )" condition
+ //-------------------------------------------------------------------------
+
+ // open new call
+ CleanupClosePushL(call);
+ errorCode = call.OpenNewCall(line, name);
+ ASSERT_EQUALS(KErrNone, errorCode);
+
+ // open new call
+ RCall call2;
+ CleanupClosePushL(call2);
+ errorCode = call2.OpenNewCall(line, name);
+ ASSERT_EQUALS(KErrNone, errorCode);
+
+ call.Dial(requestStatus, pckgMockParams1, KPhoneNumber);
+
+ call2.Dial(requestStatus2, pckgMockParams1, KPhoneNumber);
+
+ User::WaitForRequest(requestStatus);
+ AssertMockLtsyStatusL();
+ ASSERT_EQUALS(KErrNotSupported, requestStatus.Int());
+
+ User::WaitForRequest(requestStatus2);
+ AssertMockLtsyStatusL();
+ ASSERT_EQUALS(KErrServerBusy, requestStatus2.Int());
+
+ call.Close();
+ AssertMockLtsyStatusL();
+ CleanupStack::PopAndDestroy(1);
+
+ call2.Close();
+ AssertMockLtsyStatusL();
+ CleanupStack::PopAndDestroy(1);
+
+ //-------------------------------------------------------------------------
+ // TEST : to increase CMmFaxCallTsy::Dial coverage
+ // covers "if ( ERfsStateInfoInactive == iMmPhone->GetRfStateInfo() )" condition
+ //-------------------------------------------------------------------------
+
+ // open new call
+ CleanupClosePushL(call);
+ errorCode = call.OpenNewCall(line, name);
+ ASSERT_EQUALS(KErrNone, errorCode);
+
+ iMockLTSY.NotifyTerminated(mockLtsyStatus);
+ TRfStateInfo rfInfo = ERfsStateInfoInactive;
+ TMockLtsyData1<TRfStateInfo> mockData1(rfInfo);
+ expectData.Close();
+ mockData1.SerialiseL(expectData);
+ iMockLTSY.CompleteL(EMmTsyBootGetRFStatusIPC, KErrNone, expectData);
+ User::WaitForRequest(mockLtsyStatus);
+ AssertMockLtsyStatusL();
+ ASSERT_EQUALS(KErrNone, mockLtsyStatus.Int());
+
+ RCall::TCallParams callParamsX;
+ TPckg<RCall::TCallParams> pckgCallParamsX(callParamsX);
+ callParamsX.iSpeakerControl = RCall::EMonitorSpeakerControlOnUntilCarrier;
+ callParamsX.iSpeakerVolume = RCall::EMonitorSpeakerVolumeLow;
+ callParamsX.iInterval = 100;
+ callParamsX.iWaitForDialTone = RCall::EDialToneWait;
+
+ call.Dial(requestStatus, pckgCallParamsX, KPhoneNumber);
+ User::WaitForRequest(requestStatus);
+ AssertMockLtsyStatusL();
+ ASSERT_EQUALS(KErrGsmOfflineOpNotAllowed, requestStatus.Int());
+
+ call.Close();
+ AssertMockLtsyStatusL();
+ CleanupStack::PopAndDestroy(1);
+
+ //-------------------------------------------------------------------------
+ // TEST : to increase CMmFaxCallTsy::Dial coverage
+ // covers "else if ( RMobileCall::EStatusIdle != iMobileCallStatus )" condition
+ //-------------------------------------------------------------------------
+
+ TName incomingCallName;
+ RMobileCall::TMobileCallStatus mobileCallStatus = RMobileCall::EStatusRinging;
+
+ //-------------------------------------------------------------------------
+ // create new incoming call
+ errorCode = CreateIncomingCallL(line, callId, incomingCallName,
+ mobileService, mobileCallStatus);
+ ASSERT_EQUALS(KErrNone, errorCode);
+ AssertMockLtsyStatusL();
+ //-------------------------------------------------------------------------
+
+ // open new call
+ CleanupClosePushL(call);
+ errorCode = call.OpenExistingCall(line, incomingCallName);
+ ASSERT_EQUALS(KErrNone, errorCode);
+
+ iMockLTSY.NotifyTerminated(mockLtsyStatus);
+ rfInfo = ERfsStateInfoNormal;
+ TMockLtsyData1<TRfStateInfo> mockData1X(rfInfo);
+ expectData.Close();
+ mockData1X.SerialiseL(expectData);
+ iMockLTSY.CompleteL(EMmTsyBootGetRFStatusIPC, KErrNone, expectData);
+ User::WaitForRequest(mockLtsyStatus);
+ AssertMockLtsyStatusL();
+ ASSERT_EQUALS(KErrNone, mockLtsyStatus.Int());
+
+ call.Dial(requestStatus, pckgCallParamsX, KPhoneNumber);
+
+ User::WaitForRequest(requestStatus);
+ AssertMockLtsyStatusL();
+ ASSERT_EQUALS(KErrNotReady, requestStatus.Int());
+
+ //-------------------------------------------------------------------------
+ // close incoming call
+ TInt hangUpCause = KErrGsmReleaseByUser;
+ TBool autoStChangeDisable = EFalse;
+ RMobilePhone::TMobileService mobileServiceX = RMobilePhone::EFaxService;
+ TMockLtsyCallData2<TInt, TBool> mockData2x(callId, mobileServiceX,
+ hangUpCause,
+ autoStChangeDisable);
+ expectData.Close();
+ mockData2x.SerialiseL(expectData);
+ iMockLTSY.ExpectL(EEtelCallHangUp, expectData);
+
+ call.Close();
+ AssertMockLtsyStatusL();
+ CleanupStack::PopAndDestroy(1);
+
+ AssertMockLtsyStatusL();
+ CleanupStack::PopAndDestroy(4, this); // expectData, completeData, line, this
+ }
+
+/**
+@SYMTestCaseID BA-CTSY-CCON-CHU-0001
+@SYMComponent telephony_ctsy
+@SYMTestCaseDesc Test support in CTSY for RCall::HangUp for voice calls
+@SYMTestPriority High
+@SYMTestActions Invokes RCall::HangUp for voice calls
+@SYMTestExpectedResults Pass
+@SYMTestType CT
+*/
+void CCTsyCallControlFU::TestHangUp0001L()
+ {
+
+ OpenEtelServerL(EUseExtendedError);
+ CleanupStack::PushL(TCleanupItem(Cleanup,this));
+ OpenPhoneL();
+
+ RBuf8 expectData;
+ CleanupClosePushL(expectData);
+
+ RBuf8 completeData;
+ CleanupClosePushL(completeData);
+
+ RLine line;
+ RCall call;
+
+ TInt errorCode = KErrNone;
+ TRequestStatus requestStatus;
+ TRequestStatus mockLtsyStatus;
+
+ // open new line and call for KMmTsyVoice1LineName
+ errorCode = OpenNewLineLC(iPhone, line, KMmTsyVoice1LineName);
+ ASSERT_EQUALS(KErrNone, errorCode);
+
+ TName incomingCallName;
+ TInt callId = 1;
+ TInt callId2 = 2;
+ RMobilePhone::TMobileService mobileService = RMobilePhone::EVoiceService;
+ RMobileCall::TMobileCallStatus mobileCallStatus = RMobileCall::EStatusRinging;
+
+ TInt hangUpCause = KErrGsmBusyUserRequest;
+ TBool autoStChangeDisable = ETrue;
+ TMockLtsyCallData2<TInt, TBool> mockData2(callId, mobileService,
+ hangUpCause,
+ autoStChangeDisable);
+
+ TMockLtsyCallData0 mockData0(callId, mobileService);
+ TMockLtsyCallData0 mockData1(callId2, mobileService);
+
+ //-------------------------------------------------------------------------
+ // TEST A: failure to dispatch request to LTSY
+ //-------------------------------------------------------------------------
+
+ //-------------------------------------------------------------------------
+ // create new incoming call
+ errorCode = CreateIncomingCallL(line, callId, incomingCallName,
+ mobileService, mobileCallStatus);
+ ASSERT_EQUALS(KErrNone, errorCode);
+
+ CleanupClosePushL(call);
+ errorCode = call.OpenExistingCall(line, incomingCallName);
+ ASSERT_EQUALS(KErrNone, errorCode);
+ //-------------------------------------------------------------------------
+
+ expectData.Close();
+ mockData2.SerialiseL(expectData);
+ iMockLTSY.ExpectL(EEtelCallHangUp, expectData, KErrNotSupported);
+
+ call.HangUp(requestStatus);
+ User::WaitForRequest(requestStatus);
+ AssertMockLtsyStatusL();
+ ASSERT_EQUALS(KErrNotSupported, requestStatus.Int());
+
+ // close incoming call
+ CloseIncomingCallL(call, callId, mobileService);
+ AssertMockLtsyStatusL();
+ CleanupStack::PopAndDestroy(1); // call
+
+ //-------------------------------------------------------------------------
+ // TEST C: Successful completion request of
+ // RCall::HangUp when result is not cached.
+ //-------------------------------------------------------------------------
+
+ //-------------------------------------------------------------------------
+ // create new incoming call
+ errorCode = CreateIncomingCallL(line, callId, incomingCallName,
+ mobileService, mobileCallStatus);
+ ASSERT_EQUALS(KErrNone, errorCode);
+
+ CleanupClosePushL(call);
+ errorCode = call.OpenExistingCall(line, incomingCallName);
+ ASSERT_EQUALS(KErrNone, errorCode);
+ //-------------------------------------------------------------------------
+
+ expectData.Close();
+ mockData2.SerialiseL(expectData);
+ iMockLTSY.ExpectL(EEtelCallHangUp, expectData);
+
+ mockData0.SerialiseL(completeData);
+ iMockLTSY.CompleteL(EEtelCallHangUp, KErrNone, completeData);
+
+ call.HangUp(requestStatus);
+ User::WaitForRequest(requestStatus);
+ AssertMockLtsyStatusL();
+ ASSERT_EQUALS(KErrNone, requestStatus.Int());
+
+ // close incoming call
+ CloseIncomingCallL(call, callId, mobileService);
+ CleanupStack::PopAndDestroy(1); // call
+
+ //-------------------------------------------------------------------------
+ // TEST E: Unsolicited completion of RCall::HangUp
+ // from LTSY.
+ //-------------------------------------------------------------------------
+
+ iMockLTSY.NotifyTerminated(mockLtsyStatus);
+ completeData.Close();
+ mockData0.SerialiseL(completeData);
+ iMockLTSY.CompleteL(EEtelCallHangUp, KErrNone, completeData);
+ User::WaitForRequest(mockLtsyStatus);
+ AssertMockLtsyStatusL();
+ ASSERT_EQUALS(KErrNone, mockLtsyStatus.Int());
+
+ //-------------------------------------------------------------------------
+ // TEST : to increase CMmVoiceCallTsy::Dial coverage
+ // covers "if ( 0 < hangUpHandle || iHangUpFlag )" condition
+ //-------------------------------------------------------------------------
+
+ RCall call2;
+ CleanupClosePushL(call2);
+ TRequestStatus requestStatus2;
+
+ //-------------------------------------------------------------------------
+ // create new incoming call
+ errorCode = CreateIncomingCallL(line, callId, incomingCallName,
+ mobileService, mobileCallStatus);
+ ASSERT_EQUALS(KErrNone, errorCode);
+ AssertMockLtsyStatusL();
+
+ errorCode = call.OpenExistingCall(line, incomingCallName);
+ ASSERT_EQUALS(KErrNone, errorCode);
+ AssertMockLtsyStatusL();
+ //-------------------------------------------------------------------------
+
+ //-------------------------------------------------------------------------
+ errorCode = call2.OpenExistingCall(line, incomingCallName);
+ ASSERT_EQUALS(KErrNone, errorCode);
+ AssertMockLtsyStatusL();
+ //-------------------------------------------------------------------------
+
+ expectData.Close();
+ mockData2.SerialiseL(expectData);
+ iMockLTSY.ExpectL(EEtelCallHangUp, expectData);
+ completeData.Close();
+ mockData0.SerialiseL(completeData);
+ iMockLTSY.CompleteL(EEtelCallHangUp, KErrGeneral, completeData);
+ call.HangUp(requestStatus);
+
+ call2.HangUp(requestStatus2);
+
+ User::WaitForRequest(requestStatus);
+ AssertMockLtsyStatusL();
+ ASSERT_EQUALS(KErrGeneral, requestStatus.Int());
+
+ User::WaitForRequest(requestStatus2);
+ AssertMockLtsyStatusL();
+ ASSERT_EQUALS(KErrServerBusy, requestStatus2.Int());
+
+ // close incoming call
+ call.Close();
+ AssertMockLtsyStatusL();
+
+ // close incoming call2
+ CloseIncomingCallL(call2, callId, mobileService);
+ CleanupStack::PopAndDestroy(1); // call2
+
+ //-------------------------------------------------------------------------
+ // TEST : to increase CMmVoiceCallTsy::Dial coverage
+ // covers "if ( ( NULL != callList->GetMmCallByStatus(
+ // RMobileCall::EStatusConnected ) ) &&
+ // ( NULL != callList->GetMmCallByStatus(
+ // RMobileCall::EStatusHold ) ) &&
+ // ( NULL != callList->GetMmCallByStatus(
+ // RMobileCall::EStatusRinging ) ) )" condition
+ //-------------------------------------------------------------------------
+
+ mobileCallStatus = RMobileCall::EStatusConnected;
+ callId = 3;
+
+ //-------------------------------------------------------------------------
+ // create new incoming call
+ errorCode = CreateIncomingCallL(line, callId, incomingCallName,
+ mobileService, mobileCallStatus);
+ ASSERT_EQUALS(KErrNone, errorCode);
+ AssertMockLtsyStatusL();
+ //-------------------------------------------------------------------------
+
+ mobileCallStatus = RMobileCall::EStatusRinging;
+ callId = 2;
+
+ //-------------------------------------------------------------------------
+ // create new incoming call
+ errorCode = CreateIncomingCallL(line, callId, incomingCallName,
+ mobileService, mobileCallStatus);
+ ASSERT_EQUALS(KErrNone, errorCode);
+ AssertMockLtsyStatusL();
+
+ errorCode = call.OpenExistingCall(line, incomingCallName);
+ ASSERT_EQUALS(KErrNone, errorCode);
+ AssertMockLtsyStatusL();
+ //-------------------------------------------------------------------------
+
+ mobileCallStatus = RMobileCall::EStatusHold;
+ callId = 1;
+
+ //-------------------------------------------------------------------------
+ // create new incoming call
+ errorCode = CreateIncomingCallL(line, callId, incomingCallName,
+ mobileService, mobileCallStatus);
+ ASSERT_EQUALS(KErrNone, errorCode);
+ AssertMockLtsyStatusL();
+ //-------------------------------------------------------------------------
+
+ callId = 2;
+ hangUpCause = KErrGsmBusyUserRequest;
+ autoStChangeDisable = ETrue;
+ TMockLtsyCallData2<TInt, TBool> mockData2xx(callId, mobileService,
+ hangUpCause,
+ autoStChangeDisable);
+ expectData.Close();
+ mockData2xx.SerialiseL(expectData);
+ iMockLTSY.ExpectL(EEtelCallHangUp, expectData);
+ completeData.Close();
+ mockData1.SerialiseL(completeData);
+ iMockLTSY.CompleteL(EEtelCallHangUp, KErrNone, completeData);
+ call.HangUp(requestStatus);
+
+ User::WaitForRequest(requestStatus);
+ AssertMockLtsyStatusL();
+ ASSERT_EQUALS(KErrNone, requestStatus.Int());
+
+ // close incoming call for RMobileCall::EStatusRinging
+ callId = 2;
+ CloseIncomingCallL(call, callId, mobileService);
+
+ // open call for RMobileCall::EStatusHold
+ errorCode = call.OpenExistingCall(line, incomingCallName);
+ ASSERT_EQUALS(KErrNone, errorCode);
+
+ // close incoming call for RMobileCall::EStatusHold
+ callId = 1;
+ CloseIncomingCallL(call, callId, mobileService);
+
+ //-------------------------------------------------------------------------
+ // TEST B: failure on completion of pending request from LTSY->CTSY
+ //-------------------------------------------------------------------------
+
+ callId = 1;
+ mobileCallStatus = RMobileCall::EStatusRinging;
+
+ //-------------------------------------------------------------------------
+ // create new incoming call
+ errorCode = CreateIncomingCallL(line, callId, incomingCallName,
+ mobileService, mobileCallStatus);
+ ASSERT_EQUALS(KErrNone, errorCode);
+
+ CleanupClosePushL(call);
+ errorCode = call.OpenExistingCall(line, incomingCallName);
+ ASSERT_EQUALS(KErrNone, errorCode);
+ //-------------------------------------------------------------------------
+
+ hangUpCause = KErrGsmBusyUserRequest;
+ autoStChangeDisable = ETrue;
+ TMockLtsyCallData2<TInt, TBool> mockData2xxx(callId, mobileService,
+ hangUpCause,
+ autoStChangeDisable);
+
+ expectData.Close();
+ mockData2xxx.SerialiseL(expectData);
+ iMockLTSY.ExpectL(EEtelCallHangUp, expectData);
+
+ completeData.Close();
+ mockData0.SerialiseL(completeData);
+ iMockLTSY.CompleteL(EEtelCallHangUp, KErrGeneral, completeData);
+
+ call.HangUp(requestStatus);
+ User::WaitForRequest(requestStatus);
+ AssertMockLtsyStatusL();
+ ASSERT_EQUALS(KErrGeneral, requestStatus.Int());
+
+ // close incoming call
+ CloseIncomingCallL(call, callId, mobileService);
+ AssertMockLtsyStatusL();
+ CleanupStack::PopAndDestroy(1); // call
+
+ //
+ // Added for DEF139341 (Unexpected error note pops up after creating emergency call)
+ // Tests that CTSY treats KErrGsmReleaseByUser as a normal return code, not as an error
+ // (the client request should complete with KErrNone).
+ //
+
+ //-------------------------------------------------------------------------
+ // create new incoming call
+ errorCode = CreateIncomingCallL(line, callId, incomingCallName,
+ mobileService, mobileCallStatus);
+ ASSERT_EQUALS(KErrNone, errorCode);
+
+ CleanupClosePushL(call);
+ errorCode = call.OpenExistingCall(line, incomingCallName);
+ ASSERT_EQUALS(KErrNone, errorCode);
+ //-------------------------------------------------------------------------
+
+ hangUpCause = KErrGsmBusyUserRequest;
+ autoStChangeDisable = ETrue;
+ TMockLtsyCallData2<TInt, TBool> mockData3xxx(callId, mobileService,
+ hangUpCause,
+ autoStChangeDisable);
+
+ expectData.Close();
+ mockData3xxx.SerialiseL(expectData);
+ iMockLTSY.ExpectL(EEtelCallHangUp, expectData);
+
+ completeData.Close();
+ mockData0.SerialiseL(completeData);
+ iMockLTSY.CompleteL(EEtelCallHangUp, KErrGsmReleaseByUser, completeData);
+
+ call.HangUp(requestStatus);
+ User::WaitForRequest(requestStatus);
+ AssertMockLtsyStatusL();
+ ASSERT_EQUALS(KErrNone, requestStatus.Int());
+
+ // close incoming call
+ CloseIncomingCallL(call, callId, mobileService);
+ AssertMockLtsyStatusL();
+ CleanupStack::PopAndDestroy(1); // call
+ //
+
+ AssertMockLtsyStatusL();
+ CleanupStack::PopAndDestroy(4, this); // expectData, completeData, line, this
+
+ }
+
+
+/**
+@SYMTestCaseID BA-CTSY-CCON-CHU-0002
+@SYMComponent telephony_ctsy
+@SYMTestCaseDesc Test support in CTSY for cancelling of RCall::HangUp for voice calls
+@SYMTestPriority High
+@SYMTestActions Invokes cancelling of RCall::HangUp for voice calls
+@SYMTestExpectedResults Pass
+@SYMTestType CT
+*/
+void CCTsyCallControlFU::TestHangUp0002L()
+ {
+
+ OpenEtelServerL(EUseExtendedError);
+ CleanupStack::PushL(TCleanupItem(Cleanup,this));
+ OpenPhoneL();
+
+ RBuf8 expectData;
+ CleanupClosePushL(expectData);
+
+ RBuf8 completeData;
+ CleanupClosePushL(completeData);
+
+ RLine line;
+ RCall call;
+
+ TInt errorCode = KErrNone;
+ TRequestStatus requestStatus;
+ TRequestStatus mockLtsyStatus;
+
+ // open new line and call for KMmTsyVoice1LineName
+ errorCode = OpenNewLineLC(iPhone, line, KMmTsyVoice1LineName);
+ ASSERT_EQUALS(KErrNone, errorCode);
+
+ TName incomingCallName;
+ TInt callId = 1;
+ RMobilePhone::TMobileService mobileService = RMobilePhone::EVoiceService;
+ RMobileCall::TMobileCallStatus mobileCallStatus = RMobileCall::EStatusRinging;
+
+ TInt hangUpCause = KErrGsmBusyUserRequest;
+ TBool autoStChangeDisable = ETrue;
+ TMockLtsyCallData2<TInt, TBool> mockData2(callId, mobileService,
+ hangUpCause,
+ autoStChangeDisable);
+
+ TMockLtsyCallData0 mockData0(callId, mobileService);
+
+ //-------------------------------------------------------------------------
+ // Test cancelling of RCall::HangUp
+ //-------------------------------------------------------------------------
+
+ //-------------------------------------------------------------------------
+ // create new incoming call
+ errorCode = CreateIncomingCallL(line, callId, incomingCallName,
+ mobileService, mobileCallStatus);
+ ASSERT_EQUALS(KErrNone, errorCode);
+
+ CleanupClosePushL(call);
+ errorCode = call.OpenExistingCall(line, incomingCallName);
+ ASSERT_EQUALS(KErrNone, errorCode);
+ //-------------------------------------------------------------------------
+
+ iMockLTSY.NotifyTerminated(mockLtsyStatus);
+
+ expectData.Close();
+ mockData2.SerialiseL(expectData);
+ iMockLTSY.ExpectL(EEtelCallHangUp, expectData);
+
+ mockData0.SerialiseL(completeData);
+ iMockLTSY.CompleteL(EEtelCallHangUp, KErrNone, completeData);
+
+ call.HangUp(requestStatus);
+
+ call.CancelAsyncRequest(EEtelCallHangUp);
+
+ User::WaitForRequest(requestStatus);
+ AssertMockLtsyStatusL();
+ ASSERT_EQUALS(KErrNone, requestStatus.Int());
+
+ // close incoming call
+ CloseIncomingCallL(call, callId, mobileService);
+ AssertMockLtsyStatusL();
+ CleanupStack::PopAndDestroy(1);
+
+ User::WaitForRequest(mockLtsyStatus);
+
+ AssertMockLtsyStatusL();
+ CleanupStack::PopAndDestroy(4, this); // expectData, completeData, line, this
+ }
+
+/**
+@SYMTestCaseID BA-CTSY-CCON-CHU-0004
+@SYMComponent telephony_ctsy
+@SYMTestCaseDesc Test support in CTSY for multiple client requests to RCall::HangUp for voice calls
+@SYMTestPriority High
+@SYMTestActions Invokes multiple client requests to RCall::HangUp for voice calls
+@SYMTestExpectedResults Pass
+@SYMTestType CT
+*/
+void CCTsyCallControlFU::TestHangUp0004L()
+ {
+ OpenEtelServerL(EUseExtendedError);
+ CleanupStack::PushL(TCleanupItem(Cleanup,this));
+ OpenPhoneL();
+
+ RBuf8 expectData;
+ CleanupClosePushL(expectData);
+
+ RBuf8 completeData;
+ CleanupClosePushL(completeData);
+
+ // Open second client
+ RTelServer telServer2;
+ TInt ret = telServer2.Connect();
+ ASSERT_EQUALS(KErrNone, ret);
+ CleanupClosePushL(telServer2);
+
+ RMobilePhone phone2;
+ ret = phone2.Open(iTelServer,KMmTsyPhoneName);
+ ASSERT_EQUALS(KErrNone, ret);
+ CleanupClosePushL(phone2);
+
+ RCall call1;
+ RCall call2;
+ RLine line1;
+ RLine line2;
+
+ TInt errorCode = KErrNone;
+ TRequestStatus requestStatus1;
+ TRequestStatus requestStatus2;
+
+ // open new line1
+ errorCode = OpenNewLineLC(iPhone, line1, KMmTsyVoice1LineName);
+ ASSERT_EQUALS(KErrNone, errorCode);
+
+ // open new line2
+ errorCode = OpenNewLineLC(phone2, line2, KMmTsyVoice1LineName);
+ ASSERT_EQUALS(KErrNone, errorCode);
+
+ TName incomingCallName1;
+ TName incomingCallName2;
+
+ TInt callId1 = 1;
+ TInt callId2 = 2;
+ RMobilePhone::TMobileService mobileService = RMobilePhone::EVoiceService;
+ RMobileCall::TMobileCallStatus mobileCallStatus = RMobileCall::EStatusRinging;
+
+ TInt hangUpCause = KErrGsmBusyUserRequest;
+ TBool autoStChangeDisable = ETrue;
+ TMockLtsyCallData2<TInt, TBool> mockData21(callId1, mobileService,
+ hangUpCause,
+ autoStChangeDisable);
+ TMockLtsyCallData2<TInt, TBool> mockData22(callId2, mobileService,
+ hangUpCause,
+ autoStChangeDisable);
+
+ TMockLtsyCallData0 mockData01(callId1, mobileService);
+ TMockLtsyCallData0 mockData02(callId2, mobileService);
+
+ //-------------------------------------------------------------------------
+ // Test A: Test multiple clients requesting RCall::HangUp
+ //-------------------------------------------------------------------------
+
+ //-------------------------------------------------------------------------
+ // create new incoming call1
+ errorCode = CreateIncomingCallL(line1, callId1, incomingCallName1,
+ mobileService, mobileCallStatus);
+ ASSERT_EQUALS(KErrNone, errorCode);
+
+ CleanupClosePushL(call1);
+ errorCode = call1.OpenExistingCall(line1, incomingCallName1);
+ ASSERT_EQUALS(KErrNone, errorCode);
+ //-------------------------------------------------------------------------
+
+ //-------------------------------------------------------------------------
+ // create new incoming call2
+ errorCode = CreateIncomingCallL(line2, callId2, incomingCallName2,
+ mobileService, mobileCallStatus);
+ ASSERT_EQUALS(KErrNone, errorCode);
+
+ CleanupClosePushL(call2);
+ errorCode = call2.OpenExistingCall(line2, incomingCallName2);
+ ASSERT_EQUALS(KErrNone, errorCode);
+ //-------------------------------------------------------------------------
+
+ expectData.Close();
+ mockData21.SerialiseL(expectData);
+ iMockLTSY.ExpectL(EEtelCallHangUp, expectData);
+ mockData01.SerialiseL(completeData);
+ iMockLTSY.CompleteL(EEtelCallHangUp, KErrNone, completeData);
+
+ call1.HangUp(requestStatus1);
+
+ expectData.Close();
+ mockData22.SerialiseL(expectData);
+ iMockLTSY.ExpectL(EEtelCallHangUp, expectData);
+ completeData.Close();
+ mockData02.SerialiseL(completeData);
+ iMockLTSY.CompleteL(EEtelCallHangUp, KErrNone, completeData);
+
+ call2.HangUp(requestStatus2);
+
+ User::WaitForRequest(requestStatus1);
+ AssertMockLtsyStatusL();
+ ASSERT_EQUALS(KErrNone, requestStatus1.Int());
+
+ User::WaitForRequest(requestStatus2);
+ AssertMockLtsyStatusL();
+ ASSERT_EQUALS(KErrNone, requestStatus2.Int());
+
+ // close incoming call1
+ CloseIncomingCallL(call1, callId1, mobileService);
+ AssertMockLtsyStatusL();
+
+ // close incoming call2
+ CloseIncomingCallL(call2, callId2, mobileService);
+ AssertMockLtsyStatusL();
+
+ CleanupStack::PopAndDestroy(2); // call1, call2
+ CleanupStack::PopAndDestroy(7, this); // phone2, telServer2, expectData, completeData, this
+ // line1, line2
+
+ }
+
+
+/**
+@SYMTestCaseID BA-CTSY-CCON-CHU-0005
+@SYMComponent telephony_ctsy
+@SYMTestCaseDesc Test support in CTSY for RCall::HangUp with timeout for voice calls
+@SYMTestPriority High
+@SYMTestActions Invokes RCall::HangUp and tests for timeout for voice calls
+@SYMTestExpectedResults Pass
+@SYMTestType CT
+*/
+void CCTsyCallControlFU::TestHangUp0005L()
+ {
+ OpenEtelServerL(EUseExtendedError);
+ CleanupStack::PushL(TCleanupItem(Cleanup,this));
+ OpenPhoneL();
+
+ RBuf8 expectData;
+ CleanupClosePushL(expectData);
+
+ RBuf8 completeData;
+ CleanupClosePushL(completeData);
+
+ RLine line;
+ RCall call;
+
+ TInt errorCode = KErrNone;
+ TRequestStatus requestStatus;
+ TRequestStatus mockLtsyStatus;
+
+ // open new line
+ errorCode = OpenNewLineLC(iPhone, line, KMmTsyVoice1LineName);
+ ASSERT_EQUALS(KErrNone, errorCode);
+
+ TName incomingCallName;
+ TInt callId = 1;
+ RMobilePhone::TMobileService mobileService = RMobilePhone::EVoiceService;
+ RMobileCall::TMobileCallStatus mobileCallStatus = RMobileCall::EStatusRinging;
+
+ TInt hangUpCause = KErrGsmBusyUserRequest;
+ TBool autoStChangeDisable = ETrue;
+ TMockLtsyCallData2<TInt, TBool> mockData2(callId, mobileService,
+ hangUpCause,
+ autoStChangeDisable);
+
+ TMockLtsyCallData0 mockData0(callId, mobileService);
+
+ //-------------------------------------------------------------------------
+ // Test A: Test timeout of RCall::HangUp
+ //-------------------------------------------------------------------------
+
+ //-------------------------------------------------------------------------
+ // create new incoming call
+ errorCode = CreateIncomingCallL(line, callId, incomingCallName,
+ mobileService, mobileCallStatus);
+ ASSERT_EQUALS(KErrNone, errorCode);
+
+ CleanupClosePushL(call);
+ errorCode = call.OpenExistingCall(line, incomingCallName);
+ ASSERT_EQUALS(KErrNone, errorCode);
+ //-------------------------------------------------------------------------
+
+ expectData.Close();
+ mockData2.SerialiseL(expectData);
+ iMockLTSY.ExpectL(EEtelCallHangUp, expectData);
+
+ TTime t1,t2; //time stamps for measuring the Time Out
+
+
+ t1.HomeTime(); // time stamp before request
+ call.HangUp(requestStatus);
+ User::WaitForRequest(requestStatus);
+ t2.HomeTime(); // timestamp after request
+
+ AssertMockLtsyStatusL();
+ ASSERT_EQUALS(KErrTimedOut, requestStatus.Int());
+ TTimeIntervalSeconds diff;
+ TInt res = t2.SecondsFrom(t1,diff);
+ ASSERT_EQUALS(KErrNone, res);
+ if(diff.Int() < KMmCallHangUpTimeOut)
+ {
+ ERR_PRINTF3(_L("RCall::Hangup time out too short. Expected: %d Actual: %d "),KMmCallHangUpTimeOut, diff.Int());
+ ASSERT(false);
+ }
+ // close incoming call
+ CloseIncomingCallL(call, callId, mobileService);
+ AssertMockLtsyStatusL();
+ CleanupStack::PopAndDestroy(1);
+
+ AssertMockLtsyStatusL();
+ CleanupStack::PopAndDestroy(4, this); // expectData, completeData, line, this
+
+ }
+
+
+/**
+@SYMTestCaseID BA-CTSY-CCON-CHU-0006
+@SYMComponent telephony_ctsy
+@SYMTestCaseDesc Test support in CTSY for RCall::HangUp for data calls
+@SYMTestPriority High
+@SYMTestActions Invokes RCall::HangUp for data calls
+@SYMTestExpectedResults Pass
+@SYMTestType CT
+*/
+void CCTsyCallControlFU::TestHangUp0006L()
+ {
+
+ OpenEtelServerL(EUseExtendedError);
+ CleanupStack::PushL(TCleanupItem(Cleanup,this));
+ OpenPhoneL();
+
+ RBuf8 expectData;
+ CleanupClosePushL(expectData);
+
+ RBuf8 completeData;
+ CleanupClosePushL(completeData);
+
+ RLine line;
+ RCall call;
+
+ TInt errorCode = KErrNone;
+ TRequestStatus requestStatus;
+ TRequestStatus mockLtsyStatus;
+
+ // open new line
+ errorCode = OpenNewLineLC(iPhone, line, KMmTsyDataLineName);
+ ASSERT_EQUALS(KErrNone, errorCode);
+
+ TName incomingCallName;
+ TInt callId = 1;
+ RMobilePhone::TMobileService mobileService = RMobilePhone::ECircuitDataService;
+ RMobileCall::TMobileCallStatus mobileCallStatus = RMobileCall::EStatusRinging;
+
+ TInt hangUpCause = KErrGsmBusyUserRequest;
+ TBool autoStChangeDisable = EFalse;
+ TMockLtsyCallData2<TInt, TBool> mockData2(callId, mobileService,
+ hangUpCause,
+ autoStChangeDisable);
+
+ TMockLtsyCallData0 mockData0(callId, mobileService);
+
+ //-------------------------------------------------------------------------
+ // TEST A: failure to dispatch request to LTSY
+ //-------------------------------------------------------------------------
+
+ //-------------------------------------------------------------------------
+ // create new incoming call
+ errorCode = CreateIncomingCallL(line, callId, incomingCallName,
+ mobileService, mobileCallStatus);
+ ASSERT_EQUALS(KErrNone, errorCode);
+
+ CleanupClosePushL(call);
+ errorCode = call.OpenExistingCall(line, incomingCallName);
+ ASSERT_EQUALS(KErrNone, errorCode);
+ //-------------------------------------------------------------------------
+
+ expectData.Close();
+ mockData2.SerialiseL(expectData);
+ iMockLTSY.ExpectL(EEtelCallHangUp, expectData, KErrNotSupported);
+
+ call.HangUp(requestStatus);
+ User::WaitForRequest(requestStatus);
+ AssertMockLtsyStatusL();
+ ASSERT_EQUALS(KErrNotSupported, requestStatus.Int());
+
+ //-------------------------------------------------------------------------
+ // TEST C: Successful completion request of
+ // RCall::HangUp when result is not cached.
+ //-------------------------------------------------------------------------
+
+ expectData.Close();
+ mockData2.SerialiseL(expectData);
+ iMockLTSY.ExpectL(EEtelCallHangUp, expectData);
+ mockData0.SerialiseL(completeData);
+ iMockLTSY.CompleteL(EEtelCallHangUp, KErrNone, completeData);
+
+ call.HangUp(requestStatus);
+ User::WaitForRequest(requestStatus);
+ AssertMockLtsyStatusL();
+ ASSERT_EQUALS(KErrNone, requestStatus.Int());
+
+ //-------------------------------------------------------------------------
+ // TEST E: Unsolicited completion of RCall::HangUp
+ // from LTSY.
+ //-------------------------------------------------------------------------
+
+ iMockLTSY.NotifyTerminated(mockLtsyStatus);
+ completeData.Close();
+ mockData0.SerialiseL(completeData);
+ iMockLTSY.CompleteL(EEtelCallHangUp, KErrNone, completeData);
+ User::WaitForRequest(mockLtsyStatus);
+ AssertMockLtsyStatusL();
+ ASSERT_EQUALS(KErrNone, mockLtsyStatus.Int());
+
+ //-------------------------------------------------------------------------
+ // TEST : to increase CMmVoiceCallTsy::Dial coverage
+ // covers "if ( 0 < hangUpHandle || iHangUpFlag )" condition
+ //-------------------------------------------------------------------------
+
+ RCall call2;
+ CleanupClosePushL(call2);
+ TRequestStatus requestStatus2;
+
+ //-------------------------------------------------------------------------
+ errorCode = call2.OpenExistingCall(line, incomingCallName);
+ ASSERT_EQUALS(KErrNone, errorCode);
+ AssertMockLtsyStatusL();
+ //-------------------------------------------------------------------------
+
+ expectData.Close();
+ mockData2.SerialiseL(expectData);
+ iMockLTSY.ExpectL(EEtelCallHangUp, expectData);
+ completeData.Close();
+ mockData0.SerialiseL(completeData);
+ iMockLTSY.CompleteL(EEtelCallHangUp, KErrGeneral, completeData);
+ call.HangUp(requestStatus);
+
+ call2.HangUp(requestStatus2);
+
+ User::WaitForRequest(requestStatus);
+ AssertMockLtsyStatusL();
+ ASSERT_EQUALS(KErrGeneral, requestStatus.Int());
+
+ User::WaitForRequest(requestStatus2);
+ AssertMockLtsyStatusL();
+ ASSERT_EQUALS(KErrServerBusy, requestStatus2.Int());
+
+ // close incoming call2
+ call2.Close();
+ AssertMockLtsyStatusL();
+ CleanupStack::PopAndDestroy(1);
+
+ //-------------------------------------------------------------------------
+ // TEST : to increase CMmVoiceCallTsy::Dial coverage
+ // covers "else if ( RCall::EStatusIdle == iCallStatus &&
+ // EMultimodeCallReqHandleUnknown == dialHandle )" condition
+ //-------------------------------------------------------------------------
+
+ TInt callId2 = 2;
+ mobileCallStatus = RMobileCall::EStatusIdle;
+
+ //-------------------------------------------------------------------------
+ // create new incoming call
+ errorCode = CreateIncomingCallL(line, callId2, incomingCallName,
+ mobileService, mobileCallStatus);
+ ASSERT_EQUALS(KErrNone, errorCode);
+
+ errorCode = call2.OpenExistingCall(line, incomingCallName);
+ ASSERT_EQUALS(KErrNone, errorCode);
+ AssertMockLtsyStatusL();
+ //-------------------------------------------------------------------------
+
+ call2.HangUp(requestStatus);
+
+ User::WaitForRequest(requestStatus);
+ AssertMockLtsyStatusL();
+ ASSERT_EQUALS(KErrNotReady, requestStatus.Int());
+
+ // close incoming call2
+ call2.Close();
+ AssertMockLtsyStatusL();
+
+ //-------------------------------------------------------------------------
+ // TEST B: failure on completion of pending request from LTSY->CTSY
+ //-------------------------------------------------------------------------
+
+ expectData.Close();
+ mockData2.SerialiseL(expectData);
+ iMockLTSY.ExpectL(EEtelCallHangUp, expectData);
+ completeData.Close();
+ mockData0.SerialiseL(completeData);
+ iMockLTSY.CompleteL(EEtelCallHangUp, KErrGeneral, completeData);
+
+ call.HangUp(requestStatus);
+ User::WaitForRequest(requestStatus);
+ AssertMockLtsyStatusL();
+ ASSERT_EQUALS(KErrGeneral, requestStatus.Int());
+
+
+
+ //
+ // Added for DEF139341 (Unexpected error note pops up after creating emergency call)
+ // Tests that CTSY treats KErrGsmReleaseByUser as a normal return code, not as an error
+ // (the client request should complete with KErrNone).
+ //
+
+ //-------------------------------------------------------------------------
+ // create new incoming call
+ TInt callId3 = 3;
+ mobileCallStatus = RMobileCall::EStatusRinging;
+ errorCode = CreateIncomingCallL(line, callId3, incomingCallName,
+ mobileService, mobileCallStatus);
+ ASSERT_EQUALS(KErrNone, errorCode);
+
+ RCall call3;
+ CleanupClosePushL(call3);
+ errorCode = call3.OpenExistingCall(line, incomingCallName);
+ ASSERT_EQUALS(KErrNone, errorCode);
+ //-------------------------------------------------------------------------
+
+ TMockLtsyCallData2<TInt, TBool> mockData23(callId3, mobileService,
+ hangUpCause,
+ autoStChangeDisable);
+
+ TMockLtsyCallData0 mockData03(callId3, mobileService);
+
+ expectData.Close();
+ mockData23.SerialiseL(expectData);
+ iMockLTSY.ExpectL(EEtelCallHangUp, expectData);
+ completeData.Close();
+ mockData03.SerialiseL(completeData);
+ iMockLTSY.CompleteL(EEtelCallHangUp, KErrGsmReleaseByUser, completeData);
+
+ call3.HangUp(requestStatus);
+ User::WaitForRequest(requestStatus);
+ ASSERT_EQUALS(KErrNone, requestStatus.Int());
+ //
+
+ AssertMockLtsyStatusL();
+ CleanupStack::PopAndDestroy(6, this); // call3, call, line, completeData, expectData, this
+
+ }
+
+
+/**
+@SYMTestCaseID BA-CTSY-CCON-CHU-0007
+@SYMComponent telephony_ctsy
+@SYMTestCaseDesc Test support in CTSY for cancelling of RCall::HangUp for data calls
+@SYMTestPriority High
+@SYMTestActions Invokes cancelling of RCall::HangUp for data calls
+@SYMTestExpectedResults Pass
+@SYMTestType CT
+*/
+void CCTsyCallControlFU::TestHangUp0007L()
+ {
+
+ OpenEtelServerL(EUseExtendedError);
+ CleanupStack::PushL(TCleanupItem(Cleanup,this));
+ OpenPhoneL();
+
+ RBuf8 expectData;
+ CleanupClosePushL(expectData);
+
+ RBuf8 completeData;
+ CleanupClosePushL(completeData);
+
+ RLine line;
+ RCall call;
+
+ TInt errorCode = KErrNone;
+ TRequestStatus requestStatus;
+ TRequestStatus mockLtsyStatus;
+
+ // open new line and call for KMmTsyDataLineName
+ errorCode = OpenNewLineLC(iPhone, line, KMmTsyDataLineName);
+ ASSERT_EQUALS(KErrNone, errorCode);
+
+ TName incomingCallName;
+ TInt callId = 1;
+ RMobilePhone::TMobileService mobileService = RMobilePhone::ECircuitDataService;
+ RMobileCall::TMobileCallStatus mobileCallStatus = RMobileCall::EStatusRinging;
+
+ TInt hangUpCause = KErrGsmBusyUserRequest;
+ TBool autoStChangeDisable = EFalse;
+ TMockLtsyCallData2<TInt, TBool> mockData2(callId, mobileService,
+ hangUpCause,
+ autoStChangeDisable);
+
+ //-------------------------------------------------------------------------
+ // Test cancelling of RCall::HangUp
+ //-------------------------------------------------------------------------
+
+ //-------------------------------------------------------------------------
+ // create new incoming call
+ errorCode = CreateIncomingCallL(line, callId, incomingCallName,
+ mobileService, mobileCallStatus);
+ ASSERT_EQUALS(KErrNone, errorCode);
+
+ CleanupClosePushL(call);
+ errorCode = call.OpenExistingCall(line, incomingCallName);
+ ASSERT_EQUALS(KErrNone, errorCode);
+ //-------------------------------------------------------------------------
+
+ expectData.Close();
+ mockData2.SerialiseL(expectData);
+ iMockLTSY.ExpectL(EEtelCallHangUp, expectData);
+
+ call.HangUp(requestStatus);
+
+ // cancel hang-up
+ // TSY has started a HangUp request and it is not possible to cancel this request
+ call.CancelAsyncRequest(EEtelCallHangUp);
+
+ // CTSY hangs up the call and it goes to idle state
+ mobileCallStatus = RMobileCall::EStatusIdle;
+ TMockLtsyCallData1<RMobileCall::TMobileCallStatus> mockCallData2(callId, mobileService, mobileCallStatus);
+ mockCallData2.SerialiseL(completeData);
+ iMockLTSY.NotifyTerminated(mockLtsyStatus);
+ iMockLTSY.CompleteL(EMobileCallNotifyMobileCallStatusChange, KErrGsmBusyUserRequest, completeData);
+ User::WaitForRequest(mockLtsyStatus);
+ ASSERT_EQUALS(KErrNone, mockLtsyStatus.Int());
+
+ User::WaitForRequest(requestStatus);
+ ASSERT_EQUALS(KErrNone, requestStatus.Int());
+ AssertMockLtsyStatusL();
+
+ CleanupStack::PopAndDestroy(5, this); // call, line, expectData, completeData, this
+ }
+
+/**
+@SYMTestCaseID BA-CTSY-CCON-CHU-0009
+@SYMComponent telephony_ctsy
+@SYMTestCaseDesc Test support in CTSY for multiple client requests to RCall::HangUp for data calls
+@SYMTestPriority High
+@SYMTestActions Invokes multiple client requests to RCall::HangUp for data calls
+@SYMTestExpectedResults Pass
+@SYMTestType CT
+*/
+void CCTsyCallControlFU::TestHangUp0009L()
+ {
+ OpenEtelServerL(EUseExtendedError);
+ CleanupStack::PushL(TCleanupItem(Cleanup,this));
+ OpenPhoneL();
+
+ RBuf8 expectData;
+ CleanupClosePushL(expectData);
+
+ RBuf8 completeData;
+ CleanupClosePushL(completeData);
+
+ // Open second client
+ RTelServer telServer2;
+ TInt ret = telServer2.Connect();
+ ASSERT_EQUALS(KErrNone, ret);
+ CleanupClosePushL(telServer2);
+
+ RMobilePhone phone2;
+ ret = phone2.Open(iTelServer,KMmTsyPhoneName);
+ ASSERT_EQUALS(KErrNone, ret);
+ CleanupClosePushL(phone2);
+
+ // Open third client
+ RTelServer telServer3;
+ ret = telServer3.Connect();
+ ASSERT_EQUALS(KErrNone, ret);
+ CleanupClosePushL(telServer3);
+
+ RMobilePhone phone3;
+ ret = phone3.Open(iTelServer,KMmTsyPhoneName);
+ ASSERT_EQUALS(KErrNone, ret);
+ CleanupClosePushL(phone3);
+
+ RCall call1;
+ RCall call2;
+ RCall call3;
+ RLine line1;
+ RLine line2;
+ RLine line3;
+
+ TInt errorCode = KErrNone;
+ TRequestStatus requestStatus1;
+ TRequestStatus requestStatus2;
+ TRequestStatus requestStatus3;
+
+ // open new line1
+ errorCode = OpenNewLineLC(iPhone, line1, KMmTsyDataLineName);
+ ASSERT_EQUALS(KErrNone, errorCode);
+
+ // open new line2
+ errorCode = OpenNewLineLC(phone2, line2, KMmTsyDataLineName);
+ ASSERT_EQUALS(KErrNone, errorCode);
+
+ // open new line3
+ errorCode = OpenNewLineLC(phone3, line3, KMmTsyDataLineName);
+ ASSERT_EQUALS(KErrNone, errorCode);
+
+ TName incomingCallName1;
+ TName incomingCallName2;
+ TName incomingCallName3;
+
+ TInt callId1 = 1;
+ TInt callId2 = 2;
+ TInt callId3 = 3;
+ RMobilePhone::TMobileService mobileService = RMobilePhone::ECircuitDataService;
+ RMobileCall::TMobileCallStatus mobileCallStatus = RMobileCall::EStatusRinging;
+
+ TInt hangUpCause = KErrGsmBusyUserRequest;
+ TBool autoStChangeDisable = EFalse;
+ TMockLtsyCallData2<TInt, TBool> mockData21(callId1, mobileService,
+ hangUpCause,
+ autoStChangeDisable);
+ TMockLtsyCallData2<TInt, TBool> mockData22(callId2, mobileService,
+ hangUpCause,
+ autoStChangeDisable);
+
+ TMockLtsyCallData0 mockData01(callId1, mobileService);
+ TMockLtsyCallData0 mockData02(callId2, mobileService);
+
+ //-------------------------------------------------------------------------
+ // Test A: Test multiple clients requesting RCall::HangUp
+ //-------------------------------------------------------------------------
+
+ //-------------------------------------------------------------------------
+ // create new incoming call1
+ errorCode = CreateIncomingCallL(line1, callId1, incomingCallName1,
+ mobileService, mobileCallStatus);
+ ASSERT_EQUALS(KErrNone, errorCode);
+
+ CleanupClosePushL(call1);
+ errorCode = call1.OpenExistingCall(line1, incomingCallName1);
+ ASSERT_EQUALS(KErrNone, errorCode);
+ //-------------------------------------------------------------------------
+
+ //-------------------------------------------------------------------------
+ // create new incoming call2
+ errorCode = CreateIncomingCallL(line2, callId2, incomingCallName2,
+ mobileService, mobileCallStatus);
+ ASSERT_EQUALS(KErrNone, errorCode);
+
+ CleanupClosePushL(call2);
+ errorCode = call2.OpenExistingCall(line2, incomingCallName2);
+ ASSERT_EQUALS(KErrNone, errorCode);
+ //-------------------------------------------------------------------------
+
+ //-------------------------------------------------------------------------
+ // create new incoming call3
+
+ mobileCallStatus = RMobileCall::EStatusConnected;
+ errorCode = CreateIncomingCallL(line3, callId3, incomingCallName3,
+ mobileService, mobileCallStatus);
+ ASSERT_EQUALS(KErrNone, errorCode);
+
+ CleanupClosePushL(call3);
+ errorCode = call3.OpenExistingCall(line3, incomingCallName3);
+ ASSERT_EQUALS(KErrNone, errorCode);
+ //-------------------------------------------------------------------------
+
+ expectData.Close();
+ mockData21.SerialiseL(expectData);
+ iMockLTSY.ExpectL(EEtelCallHangUp, expectData);
+ mockData01.SerialiseL(completeData);
+ iMockLTSY.CompleteL(EEtelCallHangUp, KErrNone, completeData);
+
+ call1.HangUp(requestStatus1);
+
+ expectData.Close();
+ mockData22.SerialiseL(expectData);
+ iMockLTSY.ExpectL(EEtelCallHangUp, expectData);
+ completeData.Close();
+ mockData02.SerialiseL(completeData);
+ iMockLTSY.CompleteL(EEtelCallHangUp, KErrNone, completeData);
+
+ call2.HangUp(requestStatus2);
+
+ hangUpCause = KErrGsmReleaseByUser;
+ TMockLtsyCallData2<TInt, TBool> mockData23(callId3, mobileService,
+ hangUpCause,
+ autoStChangeDisable);
+ TMockLtsyCallData0 mockData03(callId3, mobileService);
+
+ expectData.Close();
+ mockData23.SerialiseL(expectData);
+ iMockLTSY.ExpectL(EEtelCallHangUp, expectData);
+ completeData.Close();
+ mockData03.SerialiseL(completeData);
+ iMockLTSY.CompleteL(EEtelCallHangUp, KErrNone, completeData);
+
+ call3.HangUp(requestStatus3);
+
+ User::WaitForRequest(requestStatus1);
+ ASSERT_EQUALS(KErrNone, requestStatus1.Int());
+
+ User::WaitForRequest(requestStatus2);
+ ASSERT_EQUALS(KErrNone, requestStatus2.Int());
+
+ User::WaitForRequest(requestStatus3);
+ AssertMockLtsyStatusL();
+ ASSERT_EQUALS(KErrNone, requestStatus3.Int());
+
+ CleanupStack::PopAndDestroy(3); // call1, call2, call3
+ CleanupStack::PopAndDestroy(10, this); // phone2, telServer2, phone3, telServer3,
+ // expectData, completeData, this
+ // line1, line2, line3
+ }
+
+
+/**
+@SYMTestCaseID BA-CTSY-CCON-CHU-00010
+@SYMComponent telephony_ctsy
+@SYMTestCaseDesc Test support in CTSY for RCall::HangUp with timeout for data calls
+@SYMTestPriority High
+@SYMTestActions Invokes RCall::HangUp and tests for timeout for data calls
+@SYMTestExpectedResults Pass
+@SYMTestType CT
+*/
+void CCTsyCallControlFU::TestHangUp00010L()
+ {
+ OpenEtelServerL(EUseExtendedError);
+ CleanupStack::PushL(TCleanupItem(Cleanup,this));
+ OpenPhoneL();
+
+ RBuf8 expectData;
+ CleanupClosePushL(expectData);
+
+ RBuf8 completeData;
+ CleanupClosePushL(completeData);
+
+ RLine line;
+ RCall call;
+
+ TInt errorCode = KErrNone;
+ TRequestStatus requestStatus;
+ TRequestStatus mockLtsyStatus;
+
+ // open new line
+ errorCode = OpenNewLineLC(iPhone, line, KMmTsyDataLineName);
+ ASSERT_EQUALS(KErrNone, errorCode);
+
+ TName incomingCallName;
+ TInt callId = 1;
+ RMobilePhone::TMobileService mobileService = RMobilePhone::ECircuitDataService;
+ RMobileCall::TMobileCallStatus mobileCallStatus = RMobileCall::EStatusRinging;
+
+ TInt hangUpCause = KErrGsmBusyUserRequest;
+ TBool autoStChangeDisable = EFalse;
+ TMockLtsyCallData2<TInt, TBool> mockData2(callId, mobileService,
+ hangUpCause,
+ autoStChangeDisable);
+
+ TMockLtsyCallData0 mockData0(callId, mobileService);
+
+ //-------------------------------------------------------------------------
+ // Test A: Test timeout of RCall::HangUp
+ //-------------------------------------------------------------------------
+
+ //-------------------------------------------------------------------------
+ // create new incoming call
+ errorCode = CreateIncomingCallL(line, callId, incomingCallName,
+ mobileService, mobileCallStatus);
+ ASSERT_EQUALS(KErrNone, errorCode);
+
+ CleanupClosePushL(call);
+ errorCode = call.OpenExistingCall(line, incomingCallName);
+ ASSERT_EQUALS(KErrNone, errorCode);
+ //-------------------------------------------------------------------------
+
+ expectData.Close();
+ mockData2.SerialiseL(expectData);
+ iMockLTSY.ExpectL(EEtelCallHangUp, expectData);
+
+ call.HangUp(requestStatus);
+ User::WaitForRequest(requestStatus);
+ AssertMockLtsyStatusL();
+ ERR_PRINTF2(_L("<font color=Orange>$CTSYKnownFailure: defect id = %d</font>"), 100303);
+ ASSERT_EQUALS(KErrTimedOut, requestStatus.Int());
+
+ // close incoming call
+ CloseIncomingCallL(call, callId, mobileService);
+ AssertMockLtsyStatusL();
+ CleanupStack::PopAndDestroy(1);
+
+ AssertMockLtsyStatusL();
+ CleanupStack::PopAndDestroy(4, this); // expectData, completeData, line, this
+ }
+
+
+/**
+@SYMTestCaseID BA-CTSY-CCON-CHU-00011
+@SYMComponent telephony_ctsy
+@SYMTestCaseDesc Test support in CTSY for RCall::HangUp for fax calls
+@SYMTestPriority High
+@SYMTestActions Invokes RCall::HangUp for fax calls
+@SYMTestExpectedResults Pass
+@SYMTestType CT
+*/
+void CCTsyCallControlFU::TestHangUp00011L()
+ {
+
+ OpenEtelServerL(EUseExtendedError);
+ CleanupStack::PushL(TCleanupItem(Cleanup,this));
+ OpenPhoneL();
+
+ RBuf8 expectData;
+ CleanupClosePushL(expectData);
+
+ RBuf8 completeData;
+ CleanupClosePushL(completeData);
+
+ RLine line;
+ RCall call;
+
+ TInt errorCode = KErrNone;
+ TInt callId = 1;
+ TName incomingCallName;
+
+ TRequestStatus requestStatus;
+ TRequestStatus mockLtsyStatus;
+
+ // open new line for KMmTsyVoice1LineName
+ errorCode = OpenNewLineLC(iPhone, line, KMmTsyFaxLineName);
+ ASSERT_EQUALS(KErrNone, errorCode);
+
+ RMobilePhone::TMobileService mobileService = RMobilePhone::EFaxService;
+ RMobileCall::TMobileCallStatus mobileCallStatus = RMobileCall::EStatusRinging;
+
+ TInt hangUpCause = KErrGsmBusyUserRequest;
+ TBool autoStChangeDisable = EFalse;
+ TMockLtsyCallData2<TInt, TBool> mockData2(callId, mobileService,
+ hangUpCause,
+ autoStChangeDisable);
+
+ TMockLtsyCallData0 mockData0(callId, mobileService);
+
+ //-------------------------------------------------------------------------
+ // TEST A: failure to dispatch request to LTSY
+ //-------------------------------------------------------------------------
+
+ //-------------------------------------------------------------------------
+ // create new incoming call
+ errorCode = CreateIncomingCallL(line, callId, incomingCallName,
+ mobileService, mobileCallStatus);
+ ASSERT_EQUALS(KErrNone, errorCode);
+
+ errorCode = call.OpenExistingCall(line, incomingCallName);
+ CleanupClosePushL(call);
+ ASSERT_EQUALS(KErrNone, errorCode);
+ //-------------------------------------------------------------------------
+
+ expectData.Close();
+ mockData2.SerialiseL(expectData);
+ iMockLTSY.ExpectL(EEtelCallHangUp, expectData, KErrNotSupported);
+
+ call.HangUp(requestStatus);
+ User::WaitForRequest(requestStatus);
+ AssertMockLtsyStatusL();
+ ASSERT_EQUALS(KErrNotSupported, requestStatus.Int());
+
+ //-------------------------------------------------------------------------
+ // TEST C: Successful completion request of
+ // RCall::HangUp when result is not cached.
+ //-------------------------------------------------------------------------
+
+ expectData.Close();
+ mockData2.SerialiseL(expectData);
+ iMockLTSY.ExpectL(EEtelCallHangUp, expectData);
+
+ mockData0.SerialiseL(completeData);
+ iMockLTSY.CompleteL(EEtelCallHangUp, KErrNone, completeData);
+
+ call.HangUp(requestStatus);
+ User::WaitForRequest(requestStatus);
+ AssertMockLtsyStatusL();
+ ASSERT_EQUALS(KErrNone, requestStatus.Int());
+
+ //-------------------------------------------------------------------------
+ // TEST E: Unsolicited completion of RCall::HangUp
+ // from LTSY.
+ //-------------------------------------------------------------------------
+
+ iMockLTSY.NotifyTerminated(mockLtsyStatus);
+ completeData.Close();
+ mockData0.SerialiseL(completeData);
+ iMockLTSY.CompleteL(EEtelCallHangUp, KErrNone, completeData);
+ User::WaitForRequest(mockLtsyStatus);
+ AssertMockLtsyStatusL();
+ ASSERT_EQUALS(KErrNone, mockLtsyStatus.Int());
+
+ //-------------------------------------------------------------------------
+ // TEST : to increase CMmVoiceCallTsy::Dial coverage
+ // covers "if ( 0 < hangUpHandle )" condition
+ //-------------------------------------------------------------------------
+
+ RCall call2;
+ TRequestStatus requestStatus2;
+
+ //-------------------------------------------------------------------------
+ errorCode = call2.OpenExistingCall(line, incomingCallName);
+ CleanupClosePushL(call2);
+ ASSERT_EQUALS(KErrNone, errorCode);
+ AssertMockLtsyStatusL();
+ //-------------------------------------------------------------------------
+
+ expectData.Close();
+ mockData2.SerialiseL(expectData);
+ iMockLTSY.ExpectL(EEtelCallHangUp, expectData);
+ completeData.Close();
+ mockData0.SerialiseL(completeData);
+ iMockLTSY.CompleteL(EEtelCallHangUp, KErrGeneral, completeData);
+ call.HangUp(requestStatus);
+
+ call2.HangUp(requestStatus2);
+
+ User::WaitForRequest(requestStatus);
+ AssertMockLtsyStatusL();
+ ASSERT_EQUALS(KErrGeneral, requestStatus.Int());
+
+ User::WaitForRequest(requestStatus2);
+ AssertMockLtsyStatusL();
+ ASSERT_EQUALS(KErrServerBusy, requestStatus2.Int());
+
+ // close incoming call2
+ call2.Close();
+ AssertMockLtsyStatusL();
+
+ //-------------------------------------------------------------------------
+ // TEST B: failure on completion of pending request from LTSY->CTSY
+ //-------------------------------------------------------------------------
+
+ expectData.Close();
+ mockData2.SerialiseL(expectData);
+ iMockLTSY.ExpectL(EEtelCallHangUp, expectData);
+
+ completeData.Close();
+ mockData0.SerialiseL(completeData);
+ iMockLTSY.CompleteL(EEtelCallHangUp, KErrGeneral, completeData);
+
+ call.HangUp(requestStatus);
+ User::WaitForRequest(requestStatus);
+ AssertMockLtsyStatusL();
+ ASSERT_EQUALS(KErrGeneral, requestStatus.Int());
+
+
+ //
+ // Added for DEF139341 (Unexpected error note pops up after creating emergency call)
+ // Tests that CTSY treats KErrGsmReleaseByUser as a normal return code, not as an error
+ // (the client request should complete with KErrNone).
+ //
+
+ //-------------------------------------------------------------------------
+ // create new incoming call
+ TInt callId3 = 3;
+ mobileCallStatus = RMobileCall::EStatusRinging;
+ errorCode = CreateIncomingCallL(line, callId3, incomingCallName,
+ mobileService, mobileCallStatus);
+ ASSERT_EQUALS(KErrNone, errorCode);
+
+ RCall call3;
+ CleanupClosePushL(call3);
+ errorCode = call3.OpenExistingCall(line, incomingCallName);
+ ASSERT_EQUALS(KErrNone, errorCode);
+ //-------------------------------------------------------------------------
+
+ TMockLtsyCallData2<TInt, TBool> mockData23(callId3, mobileService,
+ hangUpCause,
+ autoStChangeDisable);
+
+ TMockLtsyCallData0 mockData03(callId3, mobileService);
+
+ expectData.Close();
+ mockData23.SerialiseL(expectData);
+ iMockLTSY.ExpectL(EEtelCallHangUp, expectData);
+ completeData.Close();
+ mockData03.SerialiseL(completeData);
+ iMockLTSY.CompleteL(EEtelCallHangUp, KErrGsmReleaseByUser, completeData);
+
+ call3.HangUp(requestStatus);
+ User::WaitForRequest(requestStatus);
+ ASSERT_EQUALS(KErrNone, requestStatus.Int());
+ //
+
+ AssertMockLtsyStatusL();
+ CleanupStack::PopAndDestroy(7, this); // expectData, completeData, this, line, call, call2, call3
+
+ }
+
+/**
+@SYMTestCaseID BA-CTSY-CCON-CHU-00011b
+@SYMComponent telephony_ctsy
+@SYMTestCaseDesc Test support in CTSY for RCall::HangUp for fax calls
+@SYMTestPriority High
+@SYMTestActions Invokes RCall::HangUp for fax calls
+@SYMTestExpectedResults Pass
+@SYMTestType CT
+*/
+void CCTsyCallControlFU::TestHangUp00011bL()
+ {
+ OpenEtelServerL(EUseExtendedError);
+ CleanupStack::PushL(TCleanupItem(Cleanup,this));
+ OpenPhoneL();
+
+ RBuf8 expectData;
+ CleanupClosePushL(expectData);
+
+ RBuf8 completeData;
+ CleanupClosePushL(completeData);
+
+ RLine line;
+ RCall call;
+
+ TInt errorCode = KErrNone;
+ TInt callId = 1;
+ TName incomingCallName;
+
+ TRequestStatus requestStatus;
+ TRequestStatus mockLtsyStatus;
+
+ // open new line for KMmTsyVoice1LineName
+ errorCode = OpenNewLineLC(iPhone, line, KMmTsyFaxLineName);
+ ASSERT_EQUALS(KErrNone, errorCode);
+
+ RMobilePhone::TMobileService mobileService = RMobilePhone::EFaxService;
+ RMobileCall::TMobileCallStatus mobileCallStatus = RMobileCall::EStatusIdle;
+
+ TInt hangUpCause = KErrGsmBusyUserRequest;
+ TBool autoStChangeDisable = EFalse;
+ TMockLtsyCallData2<TInt, TBool> mockData2(callId, mobileService,
+ hangUpCause,
+ autoStChangeDisable);
+
+ TMockLtsyCallData0 mockData0(callId, mobileService);
+
+
+ //-------------------------------------------------------------------------
+ // TEST : to increase CMmVoiceCallTsy::Dial coverage
+ // covers "else if ( RCall::EStatusIdle == iCallStatus &&
+ // EMultimodeCallReqHandleUnknown == dialHandle )" condition
+ //-------------------------------------------------------------------------
+
+ //-------------------------------------------------------------------------
+ // create new incoming call
+ errorCode = CreateIncomingCallL(line, callId, incomingCallName,
+ mobileService, mobileCallStatus);
+ ASSERT_EQUALS(KErrNone, errorCode);
+
+
+ errorCode = call.OpenExistingCall(line, incomingCallName);
+ CleanupClosePushL(call);
+ AssertMockLtsyStatusL();
+ ASSERT_EQUALS(KErrNone, errorCode);
+ //-------------------------------------------------------------------------
+
+ call.HangUp(requestStatus);
+
+ User::WaitForRequest(requestStatus);
+ AssertMockLtsyStatusL();
+ ASSERT_EQUALS(KErrNotReady, requestStatus.Int());
+
+ CleanupStack::PopAndDestroy(5, this); // expectData, completeData, this, line, call
+ }
+
+/**
+@SYMTestCaseID BA-CTSY-CCON-CHU-00011c
+@SYMComponent telephony_ctsy
+@SYMTestCaseDesc Test support in CTSY for RCall::HangUp for fax calls
+@SYMTestPriority High
+@SYMTestActions Invokes RCall::HangUp for fax calls
+@SYMTestExpectedResults Pass
+@SYMTestType CT
+*/
+void CCTsyCallControlFU::TestHangUp00011cL()
+ {
+ OpenEtelServerL(EUseExtendedError);
+ CleanupStack::PushL(TCleanupItem(Cleanup,this));
+ OpenPhoneL();
+
+ RBuf8 expectData;
+ CleanupClosePushL(expectData);
+
+ RBuf8 completeData;
+ CleanupClosePushL(completeData);
+
+ RLine line;
+ RCall call;
+
+ TInt errorCode = KErrNone;
+ TInt callId = 1;
+ TName incomingCallName;
+
+ TRequestStatus requestStatus;
+ TRequestStatus mockLtsyStatus;
+
+ // open new line for KMmTsyFaxLineName
+ errorCode = OpenNewLineLC(iPhone, line, KMmTsyFaxLineName);
+ ASSERT_EQUALS(KErrNone, errorCode);
+
+ RMobilePhone::TMobileService mobileService = RMobilePhone::EFaxService;
+ RMobileCall::TMobileCallStatus mobileCallStatus = RMobileCall::EStatusConnected;
+
+ TInt hangUpCause = KErrGsmReleaseByUser;
+ TBool autoStChangeDisable = EFalse;
+ TMockLtsyCallData2<TInt, TBool> mockData2(callId, mobileService,
+ hangUpCause,
+ autoStChangeDisable);
+
+ TMockLtsyCallData0 mockData0(callId, mobileService);
+
+
+ //-------------------------------------------------------------------------
+ // TEST : to increase CMmVoiceCallTsy::Dial coverage
+ // covers "if ( RCall::EStatusRinging == iCallStatus )" condition
+ //-------------------------------------------------------------------------
+
+ // create new incoming call
+ errorCode = CreateIncomingCallL(line, callId, incomingCallName,
+ mobileService, mobileCallStatus);
+ ASSERT_EQUALS(KErrNone, errorCode);
+
+
+ errorCode = call.OpenExistingCall(line, incomingCallName);
+ CleanupClosePushL(call);
+ AssertMockLtsyStatusL();
+ ASSERT_EQUALS(KErrNone, errorCode);
+ //-------------------------------------------------------------------------
+
+ expectData.Close();
+ mockData2.SerialiseL(expectData);
+ iMockLTSY.ExpectL(EEtelCallHangUp, expectData);
+
+ mockData0.SerialiseL(completeData);
+ iMockLTSY.CompleteL(EEtelCallHangUp, KErrNone, completeData);
+
+ call.HangUp(requestStatus);
+
+ User::WaitForRequest(requestStatus);
+ AssertMockLtsyStatusL();
+ ASSERT_EQUALS(KErrNone, requestStatus.Int());
+
+ CleanupStack::PopAndDestroy(5, this); // expectData, completeData, this, line, call
+ }
+
+
+/**
+@SYMTestCaseID BA-CTSY-CCON-CHU-00012
+@SYMComponent telephony_ctsy
+@SYMTestCaseDesc Test support in CTSY for cancelling of RCall::HangUp for fax calls
+@SYMTestPriority High
+@SYMTestActions Invokes cancelling of RCall::HangUp for fax calls
+@SYMTestExpectedResults Pass
+@SYMTestType CT
+*/
+void CCTsyCallControlFU::TestHangUp00012L()
+ {
+
+ OpenEtelServerL(EUseExtendedError);
+ CleanupStack::PushL(TCleanupItem(Cleanup,this));
+ OpenPhoneL();
+
+ RBuf8 expectData;
+ CleanupClosePushL(expectData);
+
+ RBuf8 completeData;
+ CleanupClosePushL(completeData);
+
+ RLine line;
+ RCall call;
+
+ TInt errorCode = KErrNone;
+ TRequestStatus requestStatus;
+ TRequestStatus mockLtsyStatus;
+
+ // open new line and call for KMmTsyFaxLineName
+ errorCode = OpenNewLineLC(iPhone, line, KMmTsyFaxLineName);
+ ASSERT_EQUALS(KErrNone, errorCode);
+
+ TName incomingCallName;
+ TInt callId = 1;
+ RMobilePhone::TMobileService mobileService = RMobilePhone::EFaxService;
+ RMobileCall::TMobileCallStatus mobileCallStatus = RMobileCall::EStatusRinging;
+
+ TInt hangUpCause = KErrGsmBusyUserRequest;
+ TBool autoStChangeDisable = EFalse;
+ TMockLtsyCallData2<TInt, TBool> mockData2(callId, mobileService,
+ hangUpCause,
+ autoStChangeDisable);
+
+ //-------------------------------------------------------------------------
+ // Test cancelling of RCall::HangUp
+ //-------------------------------------------------------------------------
+
+ //-------------------------------------------------------------------------
+ // create new incoming call
+ errorCode = CreateIncomingCallL(line, callId, incomingCallName,
+ mobileService, mobileCallStatus);
+ ASSERT_EQUALS(KErrNone, errorCode);
+
+ CleanupClosePushL(call);
+ errorCode = call.OpenExistingCall(line, incomingCallName);
+ ASSERT_EQUALS(KErrNone, errorCode);
+ //-------------------------------------------------------------------------
+
+ expectData.Close();
+ mockData2.SerialiseL(expectData);
+ iMockLTSY.ExpectL(EEtelCallHangUp, expectData);
+
+ call.HangUp(requestStatus);
+
+ // cancel hang-up
+ // TSY has started a HangUp request and it is not possible to cancel this request
+ call.CancelAsyncRequest(EEtelCallHangUp);
+
+ // CTSY hangs up the call and it goes to idle state
+ mobileCallStatus = RMobileCall::EStatusIdle;
+ TMockLtsyCallData1<RMobileCall::TMobileCallStatus> mockCallData2(callId, mobileService, mobileCallStatus);
+ mockCallData2.SerialiseL(completeData);
+ iMockLTSY.NotifyTerminated(mockLtsyStatus);
+ iMockLTSY.CompleteL(EMobileCallNotifyMobileCallStatusChange, KErrGsmBusyUserRequest, completeData);
+ User::WaitForRequest(mockLtsyStatus);
+ ASSERT_EQUALS(KErrNone, mockLtsyStatus.Int());
+
+ User::WaitForRequest(requestStatus);
+ ASSERT_EQUALS(KErrNone, requestStatus.Int());
+ AssertMockLtsyStatusL();
+
+ CleanupStack::PopAndDestroy(5, this); // call, line, expectData, completeData, this
+ }
+
+/**
+@SYMTestCaseID BA-CTSY-CCON-CHU-00014
+@SYMComponent telephony_ctsy
+@SYMTestCaseDesc Test support in CTSY for multiple client requests to RCall::HangUp for fax calls
+@SYMTestPriority High
+@SYMTestActions Invokes multiple client requests to RCall::HangUp for fax calls
+@SYMTestExpectedResults Pass
+@SYMTestType CT
+*/
+void CCTsyCallControlFU::TestHangUp00014L()
+ {
+
+
+ OpenEtelServerL(EUseExtendedError);
+ CleanupStack::PushL(TCleanupItem(Cleanup,this));
+ OpenPhoneL();
+
+ RBuf8 expectData;
+ CleanupClosePushL(expectData);
+
+ RBuf8 completeData;
+ CleanupClosePushL(completeData);
+
+ // Open second client
+ RTelServer telServer2;
+ TInt ret = telServer2.Connect();
+ ASSERT_EQUALS(KErrNone, ret);
+ CleanupClosePushL(telServer2);
+
+ RMobilePhone phone2;
+ ret = phone2.Open(iTelServer,KMmTsyPhoneName);
+ ASSERT_EQUALS(KErrNone, ret);
+ CleanupClosePushL(phone2);
+
+ RCall call1;
+ RCall call2;
+ RLine line1;
+ RLine line2;
+
+ TInt errorCode = KErrNone;
+ TRequestStatus requestStatus1;
+ TRequestStatus requestStatus2;
+
+ // open new line1
+ errorCode = OpenNewLineLC(iPhone, line1, KMmTsyFaxLineName);
+ ASSERT_EQUALS(KErrNone, errorCode);
+
+ // open new line2
+ errorCode = OpenNewLineLC(phone2, line2, KMmTsyFaxLineName);
+ ASSERT_EQUALS(KErrNone, errorCode);
+
+ TName incomingCallName1;
+ TName incomingCallName2;
+
+ TInt callId1 = 1;
+ TInt callId2 = 2;
+ RMobilePhone::TMobileService mobileService = RMobilePhone::EFaxService;
+ RMobileCall::TMobileCallStatus mobileCallStatus = RMobileCall::EStatusRinging;
+
+ TInt hangUpCause = KErrGsmBusyUserRequest;
+ TBool autoStChangeDisable = EFalse;
+ TMockLtsyCallData2<TInt, TBool> mockData21(callId1, mobileService,
+ hangUpCause,
+ autoStChangeDisable);
+ TMockLtsyCallData2<TInt, TBool> mockData22(callId2, mobileService,
+ hangUpCause,
+ autoStChangeDisable);
+
+ TMockLtsyCallData0 mockData01(callId1, mobileService);
+ TMockLtsyCallData0 mockData02(callId2, mobileService);
+
+ //-------------------------------------------------------------------------
+ // Test A: Test multiple clients requesting RCall::HangUp
+ //-------------------------------------------------------------------------
+
+ // create new incoming call1
+ errorCode = CreateIncomingCallL(line1, callId1, incomingCallName1,
+ mobileService, mobileCallStatus);
+ ASSERT_EQUALS(KErrNone, errorCode);
+
+ CleanupClosePushL(call1);
+ errorCode = call1.OpenExistingCall(line1, incomingCallName1);
+ ASSERT_EQUALS(KErrNone, errorCode);
+
+ // create new incoming call2
+ errorCode = CreateIncomingCallL(line2, callId2, incomingCallName2,
+ mobileService, mobileCallStatus);
+ ASSERT_EQUALS(KErrNone, errorCode);
+
+ CleanupClosePushL(call2);
+ errorCode = call2.OpenExistingCall(line2, incomingCallName2);
+ ASSERT_EQUALS(KErrNone, errorCode);
+
+ expectData.Close();
+ mockData21.SerialiseL(expectData);
+ iMockLTSY.ExpectL(EEtelCallHangUp, expectData);
+ mockData01.SerialiseL(completeData);
+ iMockLTSY.CompleteL(EEtelCallHangUp, KErrNone, completeData);
+
+ call1.HangUp(requestStatus1);
+
+ expectData.Close();
+ mockData22.SerialiseL(expectData);
+ iMockLTSY.ExpectL(EEtelCallHangUp, expectData);
+ completeData.Close();
+ mockData02.SerialiseL(completeData);
+ iMockLTSY.CompleteL(EEtelCallHangUp, KErrNone, completeData);
+
+ call2.HangUp(requestStatus2);
+
+ User::WaitForRequest(requestStatus1);
+ ASSERT_EQUALS(KErrNone, requestStatus1.Int());
+
+ User::WaitForRequest(requestStatus2);
+ ASSERT_EQUALS(KErrNone, requestStatus2.Int());
+
+ CleanupStack::PopAndDestroy(2); // call1, call2
+ CleanupStack::PopAndDestroy(7, this); // phone2, telServer2, expectData, completeData, this
+ // line1, line2
+ }
+
+
+/**
+@SYMTestCaseID BA-CTSY-CCON-CHU-00015
+@SYMComponent telephony_ctsy
+@SYMTestCaseDesc Test support in CTSY for RCall::HangUp with timeout for fax calls
+@SYMTestPriority High
+@SYMTestActions Invokes RCall::HangUp and tests for timeout for fax calls
+@SYMTestExpectedResults Pass
+@SYMTestType CT
+*/
+void CCTsyCallControlFU::TestHangUp00015L()
+ {
+ OpenEtelServerL(EUseExtendedError);
+ CleanupStack::PushL(TCleanupItem(Cleanup,this));
+ OpenPhoneL();
+
+ RBuf8 expectData;
+ CleanupClosePushL(expectData);
+
+ RBuf8 completeData;
+ CleanupClosePushL(completeData);
+
+ RLine line;
+ RCall call;
+
+ TInt errorCode = KErrNone;
+ TRequestStatus requestStatus;
+ TRequestStatus mockLtsyStatus;
+
+ // open new line
+ errorCode = OpenNewLineLC(iPhone, line, KMmTsyFaxLineName);
+ ASSERT_EQUALS(KErrNone, errorCode);
+
+ TName incomingCallName;
+ TInt callId = 1;
+ RMobilePhone::TMobileService mobileService = RMobilePhone::EFaxService;
+ RMobileCall::TMobileCallStatus mobileCallStatus = RMobileCall::EStatusRinging;
+
+ TInt hangUpCause = KErrGsmBusyUserRequest;
+ TBool autoStChangeDisable = EFalse;
+ TMockLtsyCallData2<TInt, TBool> mockData2(callId, mobileService,
+ hangUpCause,
+ autoStChangeDisable);
+
+ TMockLtsyCallData0 mockData0(callId, mobileService);
+
+ //-------------------------------------------------------------------------
+ // Test A: Test timeout of RCall::HangUp
+ //-------------------------------------------------------------------------
+
+ //-------------------------------------------------------------------------
+ // create new incoming call
+ errorCode = CreateIncomingCallL(line, callId, incomingCallName,
+ mobileService, mobileCallStatus);
+ ASSERT_EQUALS(KErrNone, errorCode);
+
+ CleanupClosePushL(call);
+ errorCode = call.OpenExistingCall(line, incomingCallName);
+ ASSERT_EQUALS(KErrNone, errorCode);
+ //-------------------------------------------------------------------------
+
+ expectData.Close();
+ mockData2.SerialiseL(expectData);
+ iMockLTSY.ExpectL(EEtelCallHangUp, expectData);
+
+ call.HangUp(requestStatus);
+ User::WaitForRequest(requestStatus);
+ AssertMockLtsyStatusL();
+ ERR_PRINTF2(_L("<font color=Orange>$CTSYKnownFailure: defect id = %d</font>"), 100303);
+ ASSERT_EQUALS(KErrTimedOut, requestStatus.Int());
+
+ // close incoming call
+ CloseIncomingCallL(call, callId, mobileService);
+ AssertMockLtsyStatusL();
+ CleanupStack::PopAndDestroy(1);
+
+ AssertMockLtsyStatusL();
+ CleanupStack::PopAndDestroy(4, this); // expectData, completeData, line, this
+ }
+
+
+/**
+@SYMTestCaseID BA-CTSY-CCON-CH-0001
+@SYMComponent telephony_ctsy
+@SYMTestCaseDesc Test support in CTSY for RMobileCall::Hold for voice calls
+@SYMTestPriority High
+@SYMTestActions Invokes RMobileCall::Hold for voice calls
+@SYMTestExpectedResults Pass
+@SYMTestType CT
+*/
+void CCTsyCallControlFU::TestHold0001L()
+ {
+
+ OpenEtelServerL(EUseExtendedError);
+ CleanupStack::PushL(TCleanupItem(Cleanup,this));
+ OpenPhoneL();
+
+ RBuf8 expectData;
+ CleanupClosePushL(expectData);
+
+ RBuf8 completeData;
+ CleanupClosePushL(completeData);
+
+ RLine line;
+ RMobileCall call;
+ CleanupClosePushL(call);
+
+ TInt errorCode = KErrNone;
+ TInt callId = 1;
+ TName incomingCallName;
+ TRequestStatus requestStatus;
+ TRequestStatus mockLtsyStatus;
+
+ // open new line and call for KMmTsyVoice1LineName
+ errorCode = OpenNewLineLC(iPhone, line, KMmTsyVoice1LineName);
+ ASSERT_EQUALS(KErrNone, errorCode);
+
+ RMobileCall::TMobileCallStatus mobileCallStatus = RMobileCall::EStatusRinging;
+ RMobilePhone::TMobileService mobileService = RMobilePhone::EVoiceService;
+
+ TMockLtsyCallData0 mockData0(callId, mobileService);
+
+ //-------------------------------------------------------------------------
+ // TEST A: failure to dispatch request to LTSY
+ //-------------------------------------------------------------------------
+
+ //-------------------------------------------------------------------------
+ // create new incoming call
+ errorCode = CreateIncomingCallL(line, callId, incomingCallName,
+ mobileService, mobileCallStatus);
+ ASSERT_EQUALS(KErrNone, errorCode);
+ AssertMockLtsyStatusL();
+
+ errorCode = call.OpenExistingCall(line, incomingCallName);
+ ASSERT_EQUALS(KErrNone, errorCode);
+ AssertMockLtsyStatusL();
+ //-------------------------------------------------------------------------
+
+ expectData.Close();
+ mockData0.SerialiseL(expectData);
+ iMockLTSY.ExpectL(EMobileCallHold, expectData, KErrNotSupported);
+ call.Hold(requestStatus);
+
+ User::WaitForRequest(requestStatus);
+ AssertMockLtsyStatusL();
+ ASSERT_EQUALS(KErrNotSupported, requestStatus.Int());
+
+ // close incoming call
+ CloseIncomingCallL(call, callId, mobileService);
+
+ //-------------------------------------------------------------------------
+ // TEST B: failure on completion of pending request from LTSY->CTSY
+ //-------------------------------------------------------------------------
+
+ //-------------------------------------------------------------------------
+ // create new incoming call
+ errorCode = CreateIncomingCallL(line, callId, incomingCallName,
+ mobileService, mobileCallStatus);
+ ASSERT_EQUALS(KErrNone, errorCode);
+ AssertMockLtsyStatusL();
+
+ errorCode = call.OpenExistingCall(line, incomingCallName);
+ ASSERT_EQUALS(KErrNone, errorCode);
+ AssertMockLtsyStatusL();
+ //-------------------------------------------------------------------------
+
+ expectData.Close();
+ mockData0.SerialiseL(expectData);
+ iMockLTSY.ExpectL(EMobileCallHold, expectData);
+ iMockLTSY.CompleteL(EMobileCallHold, KErrGeneral, expectData);
+ call.Hold(requestStatus);
+
+ User::WaitForRequest(requestStatus);
+ AssertMockLtsyStatusL();
+ ASSERT_EQUALS(KErrGeneral, requestStatus.Int());
+
+ // close incoming call
+ CloseIncomingCallL(call, callId, mobileService);
+
+ //-------------------------------------------------------------------------
+ // TEST C: Successful completion request of
+ // RMobileCall::Hold when result is not cached.
+ //-------------------------------------------------------------------------
+
+ //-------------------------------------------------------------------------
+ // create new incoming call
+ errorCode = CreateIncomingCallL(line, callId, incomingCallName,
+ mobileService, mobileCallStatus);
+ ASSERT_EQUALS(KErrNone, errorCode);
+ AssertMockLtsyStatusL();
+
+ errorCode = call.OpenExistingCall(line, incomingCallName);
+ ASSERT_EQUALS(KErrNone, errorCode);
+ AssertMockLtsyStatusL();
+ //-------------------------------------------------------------------------
+
+ expectData.Close();
+ mockData0.SerialiseL(expectData);
+ iMockLTSY.ExpectL(EMobileCallHold, expectData);
+ iMockLTSY.CompleteL(EMobileCallHold, KErrNone, expectData);
+ call.Hold(requestStatus);
+
+ User::WaitForRequest(requestStatus);
+ AssertMockLtsyStatusL();
+ ASSERT_EQUALS(KErrNone, requestStatus.Int());
+
+ // close incoming call
+ CloseIncomingCallL(call, callId, mobileService);
+
+ //-------------------------------------------------------------------------
+ // TEST E: Unsolicited completion of RMobileCall::Hold
+ // from LTSY.
+ //-------------------------------------------------------------------------
+
+ iMockLTSY.NotifyTerminated(mockLtsyStatus);
+ expectData.Close();
+ mockData0.SerialiseL(expectData);
+ iMockLTSY.CompleteL(EMobileCallHold, KErrNone, expectData);
+ User::WaitForRequest(mockLtsyStatus);
+ AssertMockLtsyStatusL();
+ ASSERT_EQUALS(KErrNone, mockLtsyStatus.Int());
+
+ AssertMockLtsyStatusL();
+ CleanupStack::PopAndDestroy(5, this); // expectData, completeData, call, line
+
+ }
+
+
+/**
+@SYMTestCaseID BA-CTSY-CCON-CH-0002
+@SYMComponent telephony_ctsy
+@SYMTestCaseDesc Test support in CTSY for cancelling of RMobileCall::Hold for voice calls
+@SYMTestPriority High
+@SYMTestActions Invokes cancelling of RMobileCall::Hold for voice calls
+@SYMTestExpectedResults Pass
+@SYMTestType CT
+*/
+void CCTsyCallControlFU::TestHold0002L()
+ {
+
+ OpenEtelServerL(EUseExtendedError);
+ CleanupStack::PushL(TCleanupItem(Cleanup,this));
+ OpenPhoneL();
+
+ RBuf8 expectData;
+ CleanupClosePushL(expectData);
+
+ RLine line;
+ RMobileCall call;
+ CleanupClosePushL(call);
+
+ TInt errorCode = KErrNone;
+ TInt callId = 1;
+ TName incomingCallName;
+
+ TRequestStatus requestStatus;
+ TRequestStatus mockLtsyStatus;
+
+ RMobileCall::TMobileCallStatus mobileCallStatus = RMobileCall::EStatusRinging;
+ RMobilePhone::TMobileService mobileService = RMobilePhone::EVoiceService;
+
+ TMockLtsyCallData0 mockData0(callId, mobileService);
+
+ //-------------------------------------------------------------------------
+ // Test cancelling of RCall::AnswerIncomingCall
+ //-------------------------------------------------------------------------
+
+ // open new line for KMmTsyVoice1LineName
+ errorCode = OpenNewLineLC(iPhone, line, KMmTsyVoice1LineName);
+ ASSERT_EQUALS(KErrNone, errorCode);
+
+ //-------------------------------------------------------------------------
+ // create new incoming call
+ errorCode = CreateIncomingCallL(line, callId, incomingCallName,
+ mobileService, mobileCallStatus);
+ ASSERT_EQUALS(KErrNone, errorCode);
+ AssertMockLtsyStatusL();
+
+ errorCode = call.OpenExistingCall(line, incomingCallName);
+ ASSERT_EQUALS(KErrNone, errorCode);
+ AssertMockLtsyStatusL();
+ //-------------------------------------------------------------------------
+
+ iMockLTSY.NotifyTerminated(mockLtsyStatus);
+
+
+ expectData.Close();
+ mockData0.SerialiseL(expectData);
+ iMockLTSY.ExpectL(EMobileCallHold, expectData);
+ iMockLTSY.CompleteL(EMobileCallHold, KErrNone, expectData);
+
+ call.Hold(requestStatus);
+
+ call.CancelAsyncRequest(EMobileCallHold);
+
+ User::WaitForRequest(requestStatus);
+ AssertMockLtsyStatusL();
+
+ //TSY has started a request and it is not possible to then cancel this
+ //request. The best thing for the TSY to do in this case is to proceed
+ //as though the Cancel never happened. The server's call to the TSY
+ //cancel function will return synchronously. The TSY then continues to
+ //wait for the original acknowledgement and when it receives it,
+ //the TSY will complete the original request.
+ ASSERT_EQUALS(KErrNone, requestStatus.Int());
+
+ User::WaitForRequest(mockLtsyStatus);
+
+ CleanupStack::PopAndDestroy(4); // expectData, this, call, line
+ }
+
+/**
+@SYMTestCaseID BA-CTSY-CCON-CH-0004
+@SYMComponent telephony_ctsy
+@SYMTestCaseDesc Test support in CTSY for multiple client requests to RMobileCall::Hold for voice calls
+@SYMTestPriority High
+@SYMTestActions Invokes multiple client requests to RMobileCall::Hold for voice calls
+@SYMTestExpectedResults Pass
+@SYMTestType CT
+*/
+void CCTsyCallControlFU::TestHold0004L()
+ {
+
+
+ OpenEtelServerL(EUseExtendedError);
+ CleanupStack::PushL(TCleanupItem(Cleanup,this));
+ OpenPhoneL();
+
+ RBuf8 expectData;
+ CleanupClosePushL(expectData);
+
+ // Open second client
+ RTelServer telServer2;
+ TInt ret = telServer2.Connect();
+ ASSERT_EQUALS(KErrNone, ret);
+ CleanupClosePushL(telServer2);
+
+ RMobilePhone phone2;
+ ret = phone2.Open(iTelServer,KMmTsyPhoneName);
+ ASSERT_EQUALS(KErrNone, ret);
+ CleanupClosePushL(phone2);
+
+ RLine line1;
+ RLine line2;
+
+ RMobileCall call1;
+ CleanupClosePushL(call1);
+
+ RMobileCall call2;
+ CleanupClosePushL(call2);
+
+ TInt errorCode = KErrNone;
+
+ TInt callId1 = 1;
+ TName incomingCallName1;
+
+ TInt callId2 = 2;
+ TName incomingCallName2;
+
+ TRequestStatus requestStatus1;
+ TRequestStatus requestStatus2;
+
+ // open new line1 for KMmTsyVoice1LineName
+ errorCode = OpenNewLineLC(iPhone, line1, KMmTsyVoice1LineName);
+ ASSERT_EQUALS(KErrNone, errorCode);
+
+ // open new line2 for KMmTsyVoice1LineName
+ errorCode = OpenNewLineLC(phone2, line2, KMmTsyVoice1LineName);
+ ASSERT_EQUALS(KErrNone, errorCode);
+
+ RMobileCall::TMobileCallStatus mobileCallStatus = RMobileCall::EStatusRinging;
+ RMobilePhone::TMobileService mobileService = RMobilePhone::EVoiceService;
+
+ TMockLtsyCallData0 mockData01(callId1, mobileService);
+ TMockLtsyCallData0 mockData02(callId2, mobileService);
+
+ //-------------------------------------------------------------------------
+ // Test A: Test multiple clients requesting RCall::AnswerIncomingCall
+ //-------------------------------------------------------------------------
+
+ //-------------------------------------------------------------------------
+ // create new incoming call1
+ errorCode = CreateIncomingCallL(line1, callId1, incomingCallName1,
+ mobileService, mobileCallStatus);
+ ASSERT_EQUALS(KErrNone, errorCode);
+ AssertMockLtsyStatusL();
+
+ errorCode = call1.OpenExistingCall(line1, incomingCallName1);
+ ASSERT_EQUALS(KErrNone, errorCode);
+ AssertMockLtsyStatusL();
+ //-------------------------------------------------------------------------
+
+ //-------------------------------------------------------------------------
+ // create new incoming call2
+ errorCode = CreateIncomingCallL(line2, callId2, incomingCallName2,
+ mobileService, mobileCallStatus);
+ ASSERT_EQUALS(KErrNone, errorCode);
+ AssertMockLtsyStatusL();
+
+ errorCode = call2.OpenExistingCall(line2, incomingCallName2);
+ ASSERT_EQUALS(KErrNone, errorCode);
+ AssertMockLtsyStatusL();
+ //-------------------------------------------------------------------------
+
+ expectData.Close();
+ mockData01.SerialiseL(expectData);
+ iMockLTSY.ExpectL(EMobileCallHold, expectData);
+ iMockLTSY.CompleteL(EMobileCallHold, KErrNone, expectData);
+
+ call1.Hold(requestStatus1);
+
+ expectData.Close();
+ mockData02.SerialiseL(expectData);
+ iMockLTSY.ExpectL(EMobileCallHold, expectData);
+ iMockLTSY.CompleteL(EMobileCallHold, KErrNone, expectData);
+
+ call2.Hold(requestStatus2);
+
+ User::WaitForRequest(requestStatus1);
+ ASSERT_EQUALS(KErrNone, requestStatus1.Int());
+
+ User::WaitForRequest(requestStatus2);
+ AssertMockLtsyStatusL();
+ ASSERT_EQUALS(KErrNone, requestStatus2.Int());
+
+ // Done !
+ CleanupStack::PopAndDestroy(4); // line1, line2, call1, call2
+ CleanupStack::PopAndDestroy(4, this); // phone2, telServer2, expectData, this
+ }
+
+
+/**
+@SYMTestCaseID BA-CTSY-CCON-CH-0005
+@SYMComponent telephony_ctsy
+@SYMTestCaseDesc Test support in CTSY for RMobileCall::Hold with timeout for voice calls
+@SYMTestPriority High
+@SYMTestActions Invokes RMobileCall::Hold and tests for timeout for voice calls
+@SYMTestExpectedResults Pass
+@SYMTestType CT
+*/
+void CCTsyCallControlFU::TestHold0005L()
+ {
+ OpenEtelServerL(EUseExtendedError);
+ CleanupStack::PushL(TCleanupItem(Cleanup,this));
+ OpenPhoneL();
+
+ RBuf8 expectData;
+ CleanupClosePushL(expectData);
+
+ RLine line;
+ RMobileCall call;
+ CleanupClosePushL(call);
+
+ TInt errorCode = KErrNone;
+ TInt callId = 1;
+ TName incomingCallName;
+
+ TRequestStatus requestStatus;
+ TRequestStatus mockLtsyStatus;
+
+ // open new line for KMmTsyVoice1LineName
+ errorCode = OpenNewLineLC(iPhone, line, KMmTsyVoice1LineName);
+ ASSERT_EQUALS(KErrNone, errorCode);
+
+ RMobileCall::TMobileCallStatus mobileCallStatus = RMobileCall::EStatusRinging;
+ RMobilePhone::TMobileService mobileService = RMobilePhone::EVoiceService;
+
+ TMockLtsyCallData0 mockData0(callId, mobileService);
+
+ //-------------------------------------------------------------------------
+ // Test A: Test timeout of RCall::AnswerIncomingCall
+ //-------------------------------------------------------------------------
+
+ //-------------------------------------------------------------------------
+ // create new incoming call
+ errorCode = CreateIncomingCallL(line, callId, incomingCallName,
+ mobileService, mobileCallStatus);
+ ASSERT_EQUALS(KErrNone, errorCode);
+ AssertMockLtsyStatusL();
+
+ errorCode = call.OpenExistingCall(line, incomingCallName);
+ ASSERT_EQUALS(KErrNone, errorCode);
+ AssertMockLtsyStatusL();
+ //-------------------------------------------------------------------------
+
+ expectData.Close();
+ mockData0.SerialiseL(expectData);
+ iMockLTSY.ExpectL(EMobileCallHold, expectData);
+ call.Hold(requestStatus);
+
+ User::WaitForRequest(requestStatus);
+ AssertMockLtsyStatusL();
+ ASSERT_EQUALS(KErrTimedOut, requestStatus.Int());
+
+ CleanupStack::PopAndDestroy(4, this); // expectData, this, line, call
+ }
+
+
+/**
+@SYMTestCaseID BA-CTSY-CCON-CH-0006
+@SYMComponent telephony_ctsy
+@SYMTestCaseDesc Test support in CTSY for RMobileCall::Hold for data calls
+@SYMTestPriority High
+@SYMTestActions Invokes RMobileCall::Hold for data calls
+@SYMTestExpectedResults Pass
+@SYMTestType CT
+*/
+void CCTsyCallControlFU::TestHold0006L()
+ {
+
+ OpenEtelServerL(EUseExtendedError);
+ CleanupStack::PushL(TCleanupItem(Cleanup,this));
+ OpenPhoneL();
+
+ RBuf8 expectData;
+ CleanupClosePushL(expectData);
+
+ RLine line;
+ RMobileCall call;
+ CleanupClosePushL(call);
+
+ TInt errorCode = KErrNone;
+ TInt callId = 1;
+ TName incomingCallName;
+
+ TRequestStatus requestStatus;
+ TRequestStatus mockLtsyStatus;
+
+ // open new line for KMmTsyVoice1LineName
+ errorCode = OpenNewLineLC(iPhone, line, KMmTsyDataLineName);
+ ASSERT_EQUALS(KErrNone, errorCode);
+
+ RMobilePhone::TMobileService mobileService = RMobilePhone::ECircuitDataService;
+ RMobileCall::TMobileCallStatus mobileCallStatus = RMobileCall::EStatusRinging;
+
+ TMockLtsyCallData0 mockData0(callId, mobileService);
+
+ //-------------------------------------------------------------------------
+ // TEST A: failure to dispatch request to LTSY
+ //-------------------------------------------------------------------------
+
+ //-------------------------------------------------------------------------
+ // create new incoming call
+ errorCode = CreateIncomingCallL(line, callId, incomingCallName,
+ mobileService, mobileCallStatus);
+ ASSERT_EQUALS(KErrNone, errorCode);
+
+ errorCode = call.OpenExistingCall(line, incomingCallName);
+ ASSERT_EQUALS(KErrNone, errorCode);
+ //-------------------------------------------------------------------------
+
+ call.Hold(requestStatus);
+
+ User::WaitForRequest(requestStatus);
+ AssertMockLtsyStatusL();
+ ASSERT_EQUALS(KErrNotSupported, requestStatus.Int());
+
+ AssertMockLtsyStatusL();
+ CleanupStack::PopAndDestroy(4); // expectData, call, line
+ }
+
+/**
+@SYMTestCaseID BA-CTSY-CCON-CH-00011
+@SYMComponent telephony_ctsy
+@SYMTestCaseDesc Test support in CTSY for RMobileCall::Hold for fax calls
+@SYMTestPriority High
+@SYMTestActions Invokes RMobileCall::Hold for fax calls
+@SYMTestExpectedResults Pass
+@SYMTestType CT
+*/
+void CCTsyCallControlFU::TestHold00011L()
+ {
+
+ OpenEtelServerL(EUseExtendedError);
+ CleanupStack::PushL(TCleanupItem(Cleanup,this));
+ OpenPhoneL();
+
+ RBuf8 expectData;
+ CleanupClosePushL(expectData);
+
+ RLine line;
+ RMobileCall call;
+ CleanupClosePushL(call);
+
+ TInt errorCode = KErrNone;
+ TInt callId = 1;
+ TName incomingCallName;
+
+ TRequestStatus requestStatus;
+ TRequestStatus mockLtsyStatus;
+
+ // open new line for KMmTsyVoice1LineName
+ errorCode = OpenNewLineLC(iPhone, line, KMmTsyFaxLineName);
+ ASSERT_EQUALS(KErrNone, errorCode);
+
+ RMobilePhone::TMobileService mobileService = RMobilePhone::EFaxService;
+ RMobileCall::TMobileCallStatus mobileCallStatus = RMobileCall::EStatusRinging;
+
+ TMockLtsyCallData0 mockData0(callId, mobileService);
+
+ //-------------------------------------------------------------------------
+ // TEST A: failure to dispatch request to LTSY
+ //-------------------------------------------------------------------------
+
+ //-------------------------------------------------------------------------
+ // create new incoming call
+ errorCode = CreateIncomingCallL(line, callId, incomingCallName,
+ mobileService, mobileCallStatus);
+ ASSERT_EQUALS(KErrNone, errorCode);
+
+ errorCode = call.OpenExistingCall(line, incomingCallName);
+ ASSERT_EQUALS(KErrNone, errorCode);
+ //-------------------------------------------------------------------------
+
+ call.Hold(requestStatus);
+
+ User::WaitForRequest(requestStatus);
+ AssertMockLtsyStatusL();
+ ASSERT_EQUALS(KErrNotSupported, requestStatus.Int());
+
+ AssertMockLtsyStatusL();
+ CleanupStack::PopAndDestroy(4); // expectData, call, line
+ }
+
+/**
+@SYMTestCaseID BA-CTSY-CCON-CH-0001a
+@SYMComponent telephony_ctsy
+@SYMTestCaseDesc Test support in CTSY for RMobileCall::Hold and RMobileCall::AnswerIncomingCall fails because call waiting is disabled
+@SYMTestPriority High
+@SYMTestActions Invokes RMobileCall::Hold for voice and data calls
+@SYMTestExpectedResults Pass
+@SYMTestType CT
+*/
+void CCTsyCallControlFU::TestHold0001aL()
+ {
+ //Test voice call functionality
+ TInt ret = TestAnsweringFailsBecauseHoldDoesNotWorkL( KMmTsyVoice1LineName );
+ ASSERT_EQUALS(KErrNone, ret);
+
+ //Test data call functionality
+ ret = TestAnsweringFailsBecauseHoldDoesNotWorkL( KMmTsyDataLineName );
+ ASSERT_EQUALS(KErrNone, ret);
+ }
+
+/**
+@SYMTestCaseID BA-CTSY-CCON-CS-0001
+@SYMComponent telephony_ctsy
+@SYMTestCaseDesc Test support in CTSY for RMobileCall::Swap for voice calls
+@SYMTestPriority High
+@SYMTestActions Invokes RMobileCall::Swap for voice calls
+@SYMTestExpectedResults Pass
+@SYMTestType CT
+*/
+void CCTsyCallControlFU::TestSwap0001L()
+ {
+
+ OpenEtelServerL(EUseExtendedError);
+ CleanupStack::PushL(TCleanupItem(Cleanup,this));
+ OpenPhoneL();
+
+ RBuf8 expectData;
+ CleanupClosePushL(expectData);
+
+ RBuf8 completeData;
+ CleanupClosePushL(completeData);
+
+ RLine line;
+ RMobileCall call;
+ CleanupClosePushL(call);
+
+ TInt errorCode = KErrNone;
+ TInt callId = 1;
+ TName incomingCallName;
+ TRequestStatus requestStatus;
+ TRequestStatus mockLtsyStatus;
+
+ // open new line and call for KMmTsyVoice1LineName
+ errorCode = OpenNewLineLC(iPhone, line, KMmTsyVoice1LineName);
+ ASSERT_EQUALS(KErrNone, errorCode);
+
+ RMobileCall::TMobileCallStatus mobileCallStatus = RMobileCall::EStatusRinging;
+ RMobilePhone::TMobileService mobileService = RMobilePhone::EVoiceService;
+
+ TMockLtsyCallData0 mockData0(callId, mobileService);
+
+ //-------------------------------------------------------------------------
+ // TEST A: failure to dispatch request to LTSY
+ //-------------------------------------------------------------------------
+
+ //-------------------------------------------------------------------------
+ // create new incoming call
+ errorCode = CreateIncomingCallL(line, callId, incomingCallName,
+ mobileService, mobileCallStatus);
+ ASSERT_EQUALS(KErrNone, errorCode);
+ AssertMockLtsyStatusL();
+
+ errorCode = call.OpenExistingCall(line, incomingCallName);
+ ASSERT_EQUALS(KErrNone, errorCode);
+ AssertMockLtsyStatusL();
+ //-------------------------------------------------------------------------
+
+ expectData.Close();
+ mockData0.SerialiseL(expectData);
+ iMockLTSY.ExpectL(EMobileCallSwap, expectData, KErrNotSupported);
+ call.Swap(requestStatus);
+
+ User::WaitForRequest(requestStatus);
+ AssertMockLtsyStatusL();
+ ASSERT_EQUALS(KErrNotSupported, requestStatus.Int());
+
+ // close incoming call
+ CloseIncomingCallL(call, callId, mobileService);
+
+ //-------------------------------------------------------------------------
+ // TEST B: failure on completion of pending request from LTSY->CTSY
+ //-------------------------------------------------------------------------
+
+ //-------------------------------------------------------------------------
+ // create new incoming call
+ errorCode = CreateIncomingCallL(line, callId, incomingCallName,
+ mobileService, mobileCallStatus);
+ ASSERT_EQUALS(KErrNone, errorCode);
+ AssertMockLtsyStatusL();
+
+ errorCode = call.OpenExistingCall(line, incomingCallName);
+ ASSERT_EQUALS(KErrNone, errorCode);
+ AssertMockLtsyStatusL();
+ //-------------------------------------------------------------------------
+
+ expectData.Close();
+ mockData0.SerialiseL(expectData);
+ iMockLTSY.ExpectL(EMobileCallSwap, expectData);
+ iMockLTSY.CompleteL(EMobileCallSwap, KErrGeneral, expectData);
+ call.Swap(requestStatus);
+
+ User::WaitForRequest(requestStatus);
+ AssertMockLtsyStatusL();
+ ASSERT_EQUALS(KErrGeneral, requestStatus.Int());
+
+ // close incoming call
+ CloseIncomingCallL(call, callId, mobileService);
+
+ //-------------------------------------------------------------------------
+ // TEST C: Successful completion request of
+ // RMobileCall::Swap when result is not cached.
+ //-------------------------------------------------------------------------
+
+ //-------------------------------------------------------------------------
+ // create new incoming call
+ errorCode = CreateIncomingCallL(line, callId, incomingCallName,
+ mobileService, mobileCallStatus);
+ ASSERT_EQUALS(KErrNone, errorCode);
+ AssertMockLtsyStatusL();
+
+ errorCode = call.OpenExistingCall(line, incomingCallName);
+ ASSERT_EQUALS(KErrNone, errorCode);
+ AssertMockLtsyStatusL();
+ //-------------------------------------------------------------------------
+
+ expectData.Close();
+ mockData0.SerialiseL(expectData);
+ iMockLTSY.ExpectL(EMobileCallSwap, expectData);
+ iMockLTSY.CompleteL(EMobileCallSwap, KErrNone, expectData);
+ call.Swap(requestStatus);
+
+ User::WaitForRequest(requestStatus);
+ AssertMockLtsyStatusL();
+ ASSERT_EQUALS(KErrNone, requestStatus.Int());
+
+ // close incoming call
+ CloseIncomingCallL(call, callId, mobileService);
+
+ //-------------------------------------------------------------------------
+ // TEST E: Unsolicited completion of RMobileCall::Swap
+ // from LTSY.
+ //-------------------------------------------------------------------------
+
+ iMockLTSY.NotifyTerminated(mockLtsyStatus);
+ expectData.Close();
+ mockData0.SerialiseL(expectData);
+ iMockLTSY.CompleteL(EMobileCallSwap, KErrNone, expectData);
+ User::WaitForRequest(mockLtsyStatus);
+ AssertMockLtsyStatusL();
+ ASSERT_EQUALS(KErrNone, mockLtsyStatus.Int());
+
+ AssertMockLtsyStatusL();
+ CleanupStack::PopAndDestroy(5, this); // expectData, completeData, call, line
+
+ }
+
+
+/**
+@SYMTestCaseID BA-CTSY-CCON-CS-0002
+@SYMComponent telephony_ctsy
+@SYMTestCaseDesc Test support in CTSY for cancelling of RMobileCall::Swap for voice calls
+@SYMTestPriority High
+@SYMTestActions Invokes cancelling of RMobileCall::Swap for voice calls
+@SYMTestExpectedResults Pass
+@SYMTestType CT
+*/
+void CCTsyCallControlFU::TestSwap0002L()
+ {
+
+// This test should test cancellation of Swap
+// If this API does not have a cancel, the test step should be completely removed.
+
+ OpenEtelServerL(EUseExtendedError);
+ CleanupStack::PushL(TCleanupItem(Cleanup,this));
+ OpenPhoneL();
+
+ RBuf8 expectData;
+ CleanupClosePushL(expectData);
+
+ RLine line;
+ RMobileCall call;
+ CleanupClosePushL(call);
+
+ TInt errorCode = KErrNone;
+ TInt callId = 1;
+ TName incomingCallName;
+
+ TRequestStatus requestStatus;
+ TRequestStatus mockLtsyStatus;
+
+ RMobileCall::TMobileCallStatus mobileCallStatus = RMobileCall::EStatusRinging;
+ RMobilePhone::TMobileService mobileService = RMobilePhone::EVoiceService;
+
+ //-------------------------------------------------------------------------
+ // Test cancelling of RCall::AnswerIncomingCall
+ //-------------------------------------------------------------------------
+
+ // open new line for KMmTsyVoice1LineName
+ errorCode = OpenNewLineLC(iPhone, line, KMmTsyVoice1LineName);
+ ASSERT_EQUALS(KErrNone, errorCode);
+
+ //-------------------------------------------------------------------------
+ // create new incoming call
+ errorCode = CreateIncomingCallL(line, callId, incomingCallName,
+ mobileService, mobileCallStatus);
+ ASSERT_EQUALS(KErrNone, errorCode);
+ AssertMockLtsyStatusL();
+
+ errorCode = call.OpenExistingCall(line, incomingCallName);
+ ASSERT_EQUALS(KErrNone, errorCode);
+ AssertMockLtsyStatusL();
+ //-------------------------------------------------------------------------
+
+ iMockLTSY.NotifyTerminated(mockLtsyStatus);
+ TMockLtsyCallData0 mockData0(callId, mobileService);
+ expectData.Close();
+ mockData0.SerialiseL(expectData);
+
+ iMockLTSY.ExpectL(EMobileCallSwap, expectData);
+ iMockLTSY.CompleteL(EMobileCallSwap, KErrNone, expectData);
+
+ call.Swap(requestStatus);
+
+ call.CancelAsyncRequest(EMobileCallSwap);
+
+ User::WaitForRequest(requestStatus);
+ AssertMockLtsyStatusL();
+ // see CMmVoiceCallTsy::CancelService in line 508 in file CMmVoiceCallTsy.cpp
+ ASSERT_EQUALS(KErrNone, requestStatus.Int());
+
+ User::WaitForRequest(mockLtsyStatus);
+
+ CleanupStack::PopAndDestroy(4); // expectData, this, call, line
+
+ }
+
+/**
+@SYMTestCaseID BA-CTSY-CCON-CS-0004
+@SYMComponent telephony_ctsy
+@SYMTestCaseDesc Test support in CTSY for multiple client requests to RMobileCall::Swap for voice calls
+@SYMTestPriority High
+@SYMTestActions Invokes multiple client requests to RMobileCall::Swap for voice calls
+@SYMTestExpectedResults Pass
+@SYMTestType CT
+*/
+void CCTsyCallControlFU::TestSwap0004L()
+ {
+ OpenEtelServerL(EUseExtendedError);
+ CleanupStack::PushL(TCleanupItem(Cleanup,this));
+ OpenPhoneL();
+
+ RBuf8 expectData;
+ CleanupClosePushL(expectData);
+
+ // Open second client
+ RTelServer telServer2;
+ TInt ret = telServer2.Connect();
+ ASSERT_EQUALS(KErrNone, ret);
+ CleanupClosePushL(telServer2);
+
+ RMobilePhone phone2;
+ ret = phone2.Open(iTelServer,KMmTsyPhoneName);
+ ASSERT_EQUALS(KErrNone, ret);
+ CleanupClosePushL(phone2);
+
+ RLine line1;
+ RLine line2;
+
+ RMobileCall call1;
+ CleanupClosePushL(call1);
+
+ RMobileCall call2;
+ CleanupClosePushL(call2);
+
+ TInt errorCode = KErrNone;
+
+ TInt callId1 = 1;
+ TName incomingCallName1;
+
+ TInt callId2 = 2;
+ TName incomingCallName2;
+
+ TRequestStatus requestStatus1;
+ TRequestStatus requestStatus2;
+
+ // open new line1 for KMmTsyVoice1LineName
+ errorCode = OpenNewLineLC(iPhone, line1, KMmTsyVoice1LineName);
+ ASSERT_EQUALS(KErrNone, errorCode);
+
+ // open new line2 for KMmTsyVoice1LineName
+ errorCode = OpenNewLineLC(phone2, line2, KMmTsyVoice1LineName);
+ ASSERT_EQUALS(KErrNone, errorCode);
+
+ RMobileCall::TMobileCallStatus mobileCallStatus = RMobileCall::EStatusRinging;
+ RMobilePhone::TMobileService mobileService = RMobilePhone::EVoiceService;
+
+ //-------------------------------------------------------------------------
+ // Test A: Test multiple clients requesting RCall::AnswerIncomingCall
+ //-------------------------------------------------------------------------
+
+ //-------------------------------------------------------------------------
+ // create new incoming call1
+ errorCode = CreateIncomingCallL(line1, callId1, incomingCallName1,
+ mobileService, mobileCallStatus);
+ ASSERT_EQUALS(KErrNone, errorCode);
+ AssertMockLtsyStatusL();
+
+ errorCode = call1.OpenExistingCall(line1, incomingCallName1);
+ ASSERT_EQUALS(KErrNone, errorCode);
+ AssertMockLtsyStatusL();
+ //-------------------------------------------------------------------------
+
+ //-------------------------------------------------------------------------
+ // create new incoming call2
+ errorCode = CreateIncomingCallL(line2, callId2, incomingCallName2,
+ mobileService, mobileCallStatus);
+ ASSERT_EQUALS(KErrNone, errorCode);
+ AssertMockLtsyStatusL();
+
+ errorCode = call2.OpenExistingCall(line2, incomingCallName2);
+ ASSERT_EQUALS(KErrNone, errorCode);
+ AssertMockLtsyStatusL();
+ //-------------------------------------------------------------------------
+
+ TMockLtsyCallData0 mockData01(callId1, mobileService);
+ expectData.Close();
+ mockData01.SerialiseL(expectData);
+ iMockLTSY.ExpectL(EMobileCallSwap, expectData);
+ iMockLTSY.CompleteL(EMobileCallSwap, KErrNone, expectData);
+
+ call1.Swap(requestStatus1);
+
+ TMockLtsyCallData0 mockData02(callId2, mobileService);
+ expectData.Close();
+ mockData02.SerialiseL(expectData);
+ iMockLTSY.ExpectL(EMobileCallSwap, expectData);
+ iMockLTSY.CompleteL(EMobileCallSwap, KErrNone, expectData);
+
+ call2.Swap(requestStatus2);
+
+ User::WaitForRequest(requestStatus1);
+ ASSERT_EQUALS(KErrNone, requestStatus1.Int());
+
+ User::WaitForRequest(requestStatus2);
+ AssertMockLtsyStatusL();
+ ASSERT_EQUALS(KErrNone, requestStatus2.Int());
+
+ // Done !
+ CleanupStack::PopAndDestroy(4); // line1, line2, call1, call2
+ CleanupStack::PopAndDestroy(4, this); // phone2, telServer2, expectData, this
+ }
+
+
+/**
+@SYMTestCaseID BA-CTSY-CCON-CS-0005
+@SYMComponent telephony_ctsy
+@SYMTestCaseDesc Test support in CTSY for RMobileCall::Swap with timeout for voice calls
+@SYMTestPriority High
+@SYMTestActions Invokes RMobileCall::Swap and tests for timeout for voice calls
+@SYMTestExpectedResults Pass
+@SYMTestType CT
+*/
+void CCTsyCallControlFU::TestSwap0005L()
+ {
+ OpenEtelServerL(EUseExtendedError);
+ CleanupStack::PushL(TCleanupItem(Cleanup,this));
+ OpenPhoneL();
+
+ RBuf8 expectData;
+ CleanupClosePushL(expectData);
+
+ RLine line;
+ RMobileCall call;
+ CleanupClosePushL(call);
+
+ TInt errorCode = KErrNone;
+ TInt callId = 1;
+ TName incomingCallName;
+
+ TRequestStatus requestStatus;
+ TRequestStatus mockLtsyStatus;
+
+ // open new line for KMmTsyVoice1LineName
+ errorCode = OpenNewLineLC(iPhone, line, KMmTsyVoice1LineName);
+ ASSERT_EQUALS(KErrNone, errorCode);
+
+ RMobileCall::TMobileCallStatus mobileCallStatus = RMobileCall::EStatusRinging;
+ RMobilePhone::TMobileService mobileService = RMobilePhone::EVoiceService;
+
+ //-------------------------------------------------------------------------
+ // Test A: Test timeout of RMobileCall::Swap
+ //-------------------------------------------------------------------------
+
+ //-------------------------------------------------------------------------
+ // create new incoming call
+ errorCode = CreateIncomingCallL(line, callId, incomingCallName,
+ mobileService, mobileCallStatus);
+ ASSERT_EQUALS(KErrNone, errorCode);
+ AssertMockLtsyStatusL();
+
+ errorCode = call.OpenExistingCall(line, incomingCallName);
+ ASSERT_EQUALS(KErrNone, errorCode);
+ AssertMockLtsyStatusL();
+ //-------------------------------------------------------------------------
+
+ TMockLtsyCallData0 mockData0(callId, mobileService);
+ expectData.Close();
+ mockData0.SerialiseL(expectData);
+ iMockLTSY.ExpectL(EMobileCallSwap, expectData);
+
+ call.Swap(requestStatus);
+
+ User::WaitForRequest(requestStatus);
+ AssertMockLtsyStatusL();
+ ASSERT_EQUALS(KErrTimedOut, requestStatus.Int());
+
+ CleanupStack::PopAndDestroy(4, this); // expectData, this, line, call
+ }
+
+
+/**
+@SYMTestCaseID BA-CTSY-CCON-CS-0006
+@SYMComponent telephony_ctsy
+@SYMTestCaseDesc Test support in CTSY for RMobileCall::Swap for data calls
+@SYMTestPriority High
+@SYMTestActions Invokes RMobileCall::Swap for data calls
+@SYMTestExpectedResults Pass
+@SYMTestType CT
+*/
+void CCTsyCallControlFU::TestSwap0006L()
+ {
+ OpenEtelServerL(EUseExtendedError);
+ CleanupStack::PushL(TCleanupItem(Cleanup,this));
+ OpenPhoneL();
+
+ RBuf8 expectData;
+ CleanupClosePushL(expectData);
+
+ RLine line;
+ RMobileCall call;
+ CleanupClosePushL(call);
+
+ TInt errorCode = KErrNone;
+ TInt callId = 1;
+ TName incomingCallName;
+
+ TRequestStatus requestStatus;
+ TRequestStatus mockLtsyStatus;
+
+ // open new line for data
+ errorCode = OpenNewLineLC(iPhone, line, KMmTsyDataLineName);
+ ASSERT_EQUALS(KErrNone, errorCode);
+
+ RMobilePhone::TMobileService mobileService = RMobilePhone::ECircuitDataService;
+ RMobileCall::TMobileCallStatus mobileCallStatus = RMobileCall::EStatusRinging;
+
+ TMockLtsyCallData0 mockData0(callId, mobileService);
+
+ //-------------------------------------------------------------------------
+ // TEST A: failure to dispatch request to LTSY
+ //-------------------------------------------------------------------------
+
+ //-------------------------------------------------------------------------
+ // create new incoming call
+ errorCode = CreateIncomingCallL(line, callId, incomingCallName,
+ mobileService, mobileCallStatus);
+ ASSERT_EQUALS(KErrNone, errorCode);
+
+ errorCode = call.OpenExistingCall(line, incomingCallName);
+ ASSERT_EQUALS(KErrNone, errorCode);
+ //-------------------------------------------------------------------------
+
+ // see line 252 in function CMmDataCallTsy::DoExtFuncL in file CMmDataCallTsy.cpp
+ call.Swap(requestStatus);
+
+ User::WaitForRequest(requestStatus);
+ AssertMockLtsyStatusL();
+ ASSERT_EQUALS(KErrNotSupported, requestStatus.Int());
+
+ AssertMockLtsyStatusL();
+ CleanupStack::PopAndDestroy(4); // expectData, call, line
+ }
+
+/**
+@SYMTestCaseID BA-CTSY-CCON-CS-00011
+@SYMComponent telephony_ctsy
+@SYMTestCaseDesc Test support in CTSY for RMobileCall::Swap for fax calls
+@SYMTestPriority High
+@SYMTestActions Invokes RMobileCall::Swap for fax calls
+@SYMTestExpectedResults Pass
+@SYMTestType CT
+*/
+void CCTsyCallControlFU::TestSwap00011L()
+ {
+ OpenEtelServerL(EUseExtendedError);
+ CleanupStack::PushL(TCleanupItem(Cleanup,this));
+ OpenPhoneL();
+
+ RBuf8 expectData;
+ CleanupClosePushL(expectData);
+
+ RLine line;
+ RMobileCall call;
+ CleanupClosePushL(call);
+
+ TInt errorCode = KErrNone;
+ TInt callId = 1;
+ TName incomingCallName;
+
+ TRequestStatus requestStatus;
+ TRequestStatus mockLtsyStatus;
+
+ // open new line for data
+ errorCode = OpenNewLineLC(iPhone, line, KMmTsyFaxLineName);
+ ASSERT_EQUALS(KErrNone, errorCode);
+
+ RMobilePhone::TMobileService mobileService = RMobilePhone::EFaxService;
+ RMobileCall::TMobileCallStatus mobileCallStatus = RMobileCall::EStatusRinging;
+
+ TMockLtsyCallData0 mockData0(callId, mobileService);
+
+ //-------------------------------------------------------------------------
+ // TEST A: failure to dispatch request to LTSY
+ //-------------------------------------------------------------------------
+
+ //-------------------------------------------------------------------------
+ // create new incoming call
+ errorCode = CreateIncomingCallL(line, callId, incomingCallName,
+ mobileService, mobileCallStatus);
+ ASSERT_EQUALS(KErrNone, errorCode);
+
+ errorCode = call.OpenExistingCall(line, incomingCallName);
+ ASSERT_EQUALS(KErrNone, errorCode);
+ //-------------------------------------------------------------------------
+
+ // see line 265 in function CMmFaxCallTsy::DoExtFuncL in file CMmFaxCallTsy.cpp
+ call.Swap(requestStatus);
+
+ User::WaitForRequest(requestStatus);
+ AssertMockLtsyStatusL();
+ ASSERT_EQUALS(KErrNotSupported, requestStatus.Int());
+
+ AssertMockLtsyStatusL();
+ CleanupStack::PopAndDestroy(4); // expectData, call, line
+ }
+
+/**
+@SYMTestCaseID BA-CTSY-CCON-CR-0001
+@SYMComponent telephony_ctsy
+@SYMTestCaseDesc Test support in CTSY for RMobileCall::Resume for voice calls
+@SYMTestPriority High
+@SYMTestActions Invokes RMobileCall::Resume for voice calls
+@SYMTestExpectedResults Pass
+@SYMTestType CT
+*/
+void CCTsyCallControlFU::TestResume0001L()
+ {
+
+ OpenEtelServerL(EUseExtendedError);
+ CleanupStack::PushL(TCleanupItem(Cleanup,this));
+ OpenPhoneL();
+
+ RBuf8 expectData;
+ CleanupClosePushL(expectData);
+
+ RBuf8 completeData;
+ CleanupClosePushL(completeData);
+
+ RLine line;
+ RMobileCall call;
+ CleanupClosePushL(call);
+
+ TInt errorCode = KErrNone;
+ TInt callId = 1;
+ TName incomingCallName;
+ TRequestStatus requestStatus;
+ TRequestStatus mockLtsyStatus;
+
+ // open new line and call for KMmTsyVoice1LineName
+ errorCode = OpenNewLineLC(iPhone, line, KMmTsyVoice1LineName);
+ ASSERT_EQUALS(KErrNone, errorCode);
+
+ RMobileCall::TMobileCallStatus mobileCallStatus = RMobileCall::EStatusRinging;
+ RMobilePhone::TMobileService mobileService = RMobilePhone::EVoiceService;
+
+ TMockLtsyCallData0 mockData0(callId, mobileService);
+
+
+ //-------------------------------------------------------------------------
+ // TEST A: failure to dispatch request to LTSY
+ //-------------------------------------------------------------------------
+
+ //-------------------------------------------------------------------------
+ // create new incoming call
+ errorCode = CreateIncomingCallL(line, callId, incomingCallName,
+ mobileService, mobileCallStatus);
+ ASSERT_EQUALS(KErrNone, errorCode);
+ AssertMockLtsyStatusL();
+
+ errorCode = call.OpenExistingCall(line, incomingCallName);
+ ASSERT_EQUALS(KErrNone, errorCode);
+ AssertMockLtsyStatusL();
+ //-------------------------------------------------------------------------
+
+ expectData.Close();
+ mockData0.SerialiseL(expectData);
+ iMockLTSY.ExpectL(EMobileCallResume, expectData, KErrNotSupported);
+ call.Resume(requestStatus);
+
+ User::WaitForRequest(requestStatus);
+ AssertMockLtsyStatusL();
+ ASSERT_EQUALS(KErrNotSupported, requestStatus.Int());
+
+ // close incoming call
+ CloseIncomingCallL(call, callId, mobileService);
+
+ //-------------------------------------------------------------------------
+ // TEST B: failure on completion of pending request from LTSY->CTSY
+ //-------------------------------------------------------------------------
+
+ //-------------------------------------------------------------------------
+ // create new incoming call
+ errorCode = CreateIncomingCallL(line, callId, incomingCallName,
+ mobileService, mobileCallStatus);
+ ASSERT_EQUALS(KErrNone, errorCode);
+ AssertMockLtsyStatusL();
+
+ errorCode = call.OpenExistingCall(line, incomingCallName);
+ ASSERT_EQUALS(KErrNone, errorCode);
+ AssertMockLtsyStatusL();
+ //-------------------------------------------------------------------------
+
+ expectData.Close();
+ mockData0.SerialiseL(expectData);
+ iMockLTSY.ExpectL(EMobileCallResume, expectData);
+ iMockLTSY.CompleteL(EMobileCallResume, KErrGeneral, expectData);
+ call.Resume(requestStatus);
+
+ User::WaitForRequest(requestStatus);
+ AssertMockLtsyStatusL();
+ ASSERT_EQUALS(KErrGeneral, requestStatus.Int());
+
+ // close incoming call
+ CloseIncomingCallL(call, callId, mobileService);
+
+ //-------------------------------------------------------------------------
+ // TEST C: Successful completion request of
+ // RMobileCall::Resume when result is not cached.
+ //-------------------------------------------------------------------------
+
+ //-------------------------------------------------------------------------
+ // create new incoming call
+ errorCode = CreateIncomingCallL(line, callId, incomingCallName,
+ mobileService, mobileCallStatus);
+ ASSERT_EQUALS(KErrNone, errorCode);
+ AssertMockLtsyStatusL();
+
+ errorCode = call.OpenExistingCall(line, incomingCallName);
+ ASSERT_EQUALS(KErrNone, errorCode);
+ AssertMockLtsyStatusL();
+ //-------------------------------------------------------------------------
+
+ expectData.Close();
+ mockData0.SerialiseL(expectData);
+ iMockLTSY.ExpectL(EMobileCallResume, expectData);
+ iMockLTSY.CompleteL(EMobileCallResume, KErrNone, expectData);
+ call.Resume(requestStatus);
+
+ User::WaitForRequest(requestStatus);
+ AssertMockLtsyStatusL();
+ ASSERT_EQUALS(KErrNone, requestStatus.Int());
+
+ // close incoming call
+ CloseIncomingCallL(call, callId, mobileService);
+
+ //-------------------------------------------------------------------------
+ // TEST E: Unsolicited completion of RMobileCall::Resume
+ // from LTSY.
+ //-------------------------------------------------------------------------
+
+ iMockLTSY.NotifyTerminated(mockLtsyStatus);
+ expectData.Close();
+ mockData0.SerialiseL(expectData);
+ iMockLTSY.CompleteL(EMobileCallResume, KErrNone, expectData);
+ User::WaitForRequest(mockLtsyStatus);
+ AssertMockLtsyStatusL();
+ ASSERT_EQUALS(KErrNone, mockLtsyStatus.Int());
+
+ AssertMockLtsyStatusL();
+ CleanupStack::PopAndDestroy(5, this); // expectData, completeData, line, this, call
+
+ }
+
+
+/**
+@SYMTestCaseID BA-CTSY-CCON-CR-0002
+@SYMComponent telephony_ctsy
+@SYMTestCaseDesc Test support in CTSY for cancelling of RMobileCall::Resume for voice calls
+@SYMTestPriority High
+@SYMTestActions Invokes cancelling of RMobileCall::Resume for voice calls
+@SYMTestExpectedResults Pass
+@SYMTestType CT
+*/
+void CCTsyCallControlFU::TestResume0002L()
+ {
+
+ OpenEtelServerL(EUseExtendedError);
+ CleanupStack::PushL(TCleanupItem(Cleanup,this));
+ OpenPhoneL();
+
+ RBuf8 expectData;
+ CleanupClosePushL(expectData);
+
+ RLine line;
+ RMobileCall call;
+ CleanupClosePushL(call);
+
+ TInt errorCode = KErrNone;
+ TInt callId = 1;
+ TName incomingCallName;
+
+ TRequestStatus requestStatus;
+ TRequestStatus mockLtsyStatus;
+
+ RMobileCall::TMobileCallStatus mobileCallStatus = RMobileCall::EStatusRinging;
+ RMobilePhone::TMobileService mobileService = RMobilePhone::EVoiceService;
+
+ //-------------------------------------------------------------------------
+ // Test cancelling of RCall::AnswerIncomingCall
+ //-------------------------------------------------------------------------
+
+ // open new line for KMmTsyVoice1LineName
+ errorCode = OpenNewLineLC(iPhone, line, KMmTsyVoice1LineName);
+ ASSERT_EQUALS(KErrNone, errorCode);
+
+ //-------------------------------------------------------------------------
+ // create new incoming call
+ errorCode = CreateIncomingCallL(line, callId, incomingCallName,
+ mobileService, mobileCallStatus);
+ ASSERT_EQUALS(KErrNone, errorCode);
+ AssertMockLtsyStatusL();
+
+ errorCode = call.OpenExistingCall(line, incomingCallName);
+ ASSERT_EQUALS(KErrNone, errorCode);
+ AssertMockLtsyStatusL();
+ //-------------------------------------------------------------------------
+
+ iMockLTSY.NotifyTerminated(mockLtsyStatus);
+ TMockLtsyCallData0 mockData0(callId, mobileService);
+ expectData.Close();
+ mockData0.SerialiseL(expectData);
+
+ iMockLTSY.ExpectL(EMobileCallResume, expectData);
+ iMockLTSY.CompleteL(EMobileCallResume, KErrNone, expectData);
+
+ call.Resume(requestStatus);
+
+ call.CancelAsyncRequest(EMobileCallResume);
+
+ User::WaitForRequest(requestStatus);
+ AssertMockLtsyStatusL();
+ // see CMmVoiceCallTsy::CancelService in line 507 in file CMmVoiceCallTsy.cpp
+ ASSERT_EQUALS(KErrNone, requestStatus.Int());
+
+ User::WaitForRequest(mockLtsyStatus);
+
+ CleanupStack::PopAndDestroy(4); // expectData, this, call, line
+ }
+
+/**
+@SYMTestCaseID BA-CTSY-CCON-CR-0004
+@SYMComponent telephony_ctsy
+@SYMTestCaseDesc Test support in CTSY for multiple client requests to RMobileCall::Resume for voice calls
+@SYMTestPriority High
+@SYMTestActions Invokes multiple client requests to RMobileCall::Resume for voice calls
+@SYMTestExpectedResults Pass
+@SYMTestType CT
+*/
+void CCTsyCallControlFU::TestResume0004L()
+ {
+ OpenEtelServerL(EUseExtendedError);
+ CleanupStack::PushL(TCleanupItem(Cleanup,this));
+ OpenPhoneL();
+
+ RBuf8 expectData;
+ CleanupClosePushL(expectData);
+
+ // Open second client
+ RTelServer telServer2;
+ TInt ret = telServer2.Connect();
+ ASSERT_EQUALS(KErrNone, ret);
+ CleanupClosePushL(telServer2);
+
+ RMobilePhone phone2;
+ ret = phone2.Open(iTelServer,KMmTsyPhoneName);
+ ASSERT_EQUALS(KErrNone, ret);
+ CleanupClosePushL(phone2);
+
+ RLine line1;
+ RLine line2;
+
+ RMobileCall call1;
+ CleanupClosePushL(call1);
+
+ RMobileCall call2;
+ CleanupClosePushL(call2);
+
+ TInt errorCode = KErrNone;
+
+ TInt callId1 = 1;
+ TName incomingCallName1;
+
+ TInt callId2 = 2;
+ TName incomingCallName2;
+
+ TRequestStatus requestStatus1;
+ TRequestStatus requestStatus2;
+
+ // open new line1 for KMmTsyVoice1LineName
+ errorCode = OpenNewLineLC(iPhone, line1, KMmTsyVoice1LineName);
+ ASSERT_EQUALS(KErrNone, errorCode);
+
+ // open new line2 for KMmTsyVoice1LineName
+ errorCode = OpenNewLineLC(phone2, line2, KMmTsyVoice1LineName);
+ ASSERT_EQUALS(KErrNone, errorCode);
+
+ RMobileCall::TMobileCallStatus mobileCallStatus = RMobileCall::EStatusRinging;
+ RMobilePhone::TMobileService mobileService = RMobilePhone::EVoiceService;
+
+ //-------------------------------------------------------------------------
+ // Test A: Test multiple clients requesting RCall::AnswerIncomingCall
+ //-------------------------------------------------------------------------
+
+ //-------------------------------------------------------------------------
+ // create new incoming call1
+ errorCode = CreateIncomingCallL(line1, callId1, incomingCallName1,
+ mobileService, mobileCallStatus);
+ ASSERT_EQUALS(KErrNone, errorCode);
+ AssertMockLtsyStatusL();
+
+ errorCode = call1.OpenExistingCall(line1, incomingCallName1);
+ ASSERT_EQUALS(KErrNone, errorCode);
+ AssertMockLtsyStatusL();
+ //-------------------------------------------------------------------------
+
+ //-------------------------------------------------------------------------
+ // create new incoming call2
+ errorCode = CreateIncomingCallL(line2, callId2, incomingCallName2,
+ mobileService, mobileCallStatus);
+ ASSERT_EQUALS(KErrNone, errorCode);
+ AssertMockLtsyStatusL();
+
+ errorCode = call2.OpenExistingCall(line2, incomingCallName2);
+ ASSERT_EQUALS(KErrNone, errorCode);
+ AssertMockLtsyStatusL();
+ //-------------------------------------------------------------------------
+
+ TMockLtsyCallData0 mockData01(callId1, mobileService);
+ expectData.Close();
+ mockData01.SerialiseL(expectData);
+ iMockLTSY.ExpectL(EMobileCallResume, expectData);
+ iMockLTSY.CompleteL(EMobileCallResume, KErrNone, expectData);
+
+ call1.Resume(requestStatus1);
+
+ TMockLtsyCallData0 mockData02(callId2, mobileService);
+ expectData.Close();
+ mockData02.SerialiseL(expectData);
+ iMockLTSY.ExpectL(EMobileCallResume, expectData);
+ iMockLTSY.CompleteL(EMobileCallResume, KErrNone, expectData);
+
+ call2.Resume(requestStatus2);
+
+ User::WaitForRequest(requestStatus1);
+ ASSERT_EQUALS(KErrNone, requestStatus1.Int());
+
+ User::WaitForRequest(requestStatus2);
+ AssertMockLtsyStatusL();
+ ASSERT_EQUALS(KErrNone, requestStatus2.Int());
+
+ // Done !
+ CleanupStack::PopAndDestroy(4); // line1, line2, call1, call2
+ CleanupStack::PopAndDestroy(4, this); // phone2, telServer2, expectData, this
+ }
+
+
+/**
+@SYMTestCaseID BA-CTSY-CCON-CR-0005
+@SYMComponent telephony_ctsy
+@SYMTestCaseDesc Test support in CTSY for RMobileCall::Resume with timeout for voice calls
+@SYMTestPriority High
+@SYMTestActions Invokes RMobileCall::Resume and tests for timeout for voice calls
+@SYMTestExpectedResults Pass
+@SYMTestType CT
+*/
+void CCTsyCallControlFU::TestResume0005L()
+ {
+ OpenEtelServerL(EUseExtendedError);
+ CleanupStack::PushL(TCleanupItem(Cleanup,this));
+ OpenPhoneL();
+
+ RBuf8 expectData;
+ CleanupClosePushL(expectData);
+
+ RLine line;
+ RMobileCall call;
+ CleanupClosePushL(call);
+
+ TInt errorCode = KErrNone;
+ TInt callId = 1;
+ TName incomingCallName;
+
+ TRequestStatus requestStatus;
+ TRequestStatus mockLtsyStatus;
+
+ // open new line for KMmTsyVoice1LineName
+ errorCode = OpenNewLineLC(iPhone, line, KMmTsyVoice1LineName);
+ ASSERT_EQUALS(KErrNone, errorCode);
+
+ RMobileCall::TMobileCallStatus mobileCallStatus = RMobileCall::EStatusRinging;
+ RMobilePhone::TMobileService mobileService = RMobilePhone::EVoiceService;
+
+ //-------------------------------------------------------------------------
+ // Test A: Test timeout of RCall::AnswerIncomingCall
+ //-------------------------------------------------------------------------
+
+ //-------------------------------------------------------------------------
+ // create new incoming call
+ errorCode = CreateIncomingCallL(line, callId, incomingCallName,
+ mobileService, mobileCallStatus);
+ ASSERT_EQUALS(KErrNone, errorCode);
+ AssertMockLtsyStatusL();
+
+ errorCode = call.OpenExistingCall(line, incomingCallName);
+ ASSERT_EQUALS(KErrNone, errorCode);
+ AssertMockLtsyStatusL();
+ //-------------------------------------------------------------------------
+
+ TMockLtsyCallData0 mockData0(callId, mobileService);
+ expectData.Close();
+ mockData0.SerialiseL(expectData);
+ iMockLTSY.ExpectL(EMobileCallResume, expectData);
+
+ call.Resume(requestStatus);
+
+ User::WaitForRequest(requestStatus);
+ AssertMockLtsyStatusL();
+ ASSERT_EQUALS(KErrTimedOut, requestStatus.Int());
+
+ CleanupStack::PopAndDestroy(4, this); // expectData, this, line, call
+ }
+
+
+/**
+@SYMTestCaseID BA-CTSY-CCON-CR-0006
+@SYMComponent telephony_ctsy
+@SYMTestCaseDesc Test support in CTSY for RMobileCall::Resume for data calls
+@SYMTestPriority High
+@SYMTestActions Invokes RMobileCall::Resume for data calls
+@SYMTestExpectedResults Pass
+@SYMTestType CT
+*/
+void CCTsyCallControlFU::TestResume0006L()
+ {
+
+ OpenEtelServerL(EUseExtendedError);
+ CleanupStack::PushL(TCleanupItem(Cleanup,this));
+ OpenPhoneL();
+
+ RBuf8 expectData;
+ CleanupClosePushL(expectData);
+
+ RLine line;
+ RMobileCall call;
+ CleanupClosePushL(call);
+
+ TInt errorCode = KErrNone;
+ TInt callId = 1;
+ TName incomingCallName;
+
+ TRequestStatus requestStatus;
+ TRequestStatus mockLtsyStatus;
+
+ // open new line for data
+ errorCode = OpenNewLineLC(iPhone, line, KMmTsyDataLineName);
+ ASSERT_EQUALS(KErrNone, errorCode);
+
+ RMobilePhone::TMobileService mobileService = RMobilePhone::ECircuitDataService;
+ RMobileCall::TMobileCallStatus mobileCallStatus = RMobileCall::EStatusRinging;
+
+ TMockLtsyCallData0 mockData0(callId, mobileService);
+
+ //-------------------------------------------------------------------------
+ // TEST A: failure to dispatch request to LTSY
+ //-------------------------------------------------------------------------
+
+ //-------------------------------------------------------------------------
+ // create new incoming call
+ errorCode = CreateIncomingCallL(line, callId, incomingCallName,
+ mobileService, mobileCallStatus);
+ ASSERT_EQUALS(KErrNone, errorCode);
+
+ errorCode = call.OpenExistingCall(line, incomingCallName);
+ ASSERT_EQUALS(KErrNone, errorCode);
+ //-------------------------------------------------------------------------
+
+ // see EMobileCallResume case in function CMmDataCallTsy::DoExtFuncL in file CMmDataCallTsy.cpp
+ call.Resume(requestStatus);
+
+ User::WaitForRequest(requestStatus);
+ AssertMockLtsyStatusL();
+ ASSERT_EQUALS(KErrNotSupported, requestStatus.Int());
+
+ AssertMockLtsyStatusL();
+ CleanupStack::PopAndDestroy(4); // expectData, call, line
+ }
+
+/**
+@SYMTestCaseID BA-CTSY-CCON-CR-00011
+@SYMComponent telephony_ctsy
+@SYMTestCaseDesc Test support in CTSY for RMobileCall::Resume for fax calls
+@SYMTestPriority High
+@SYMTestActions Invokes RMobileCall::Resume for fax calls
+@SYMTestExpectedResults Pass
+@SYMTestType CT
+*/
+void CCTsyCallControlFU::TestResume00011L()
+ {
+
+ OpenEtelServerL(EUseExtendedError);
+ CleanupStack::PushL(TCleanupItem(Cleanup,this));
+ OpenPhoneL();
+
+ RBuf8 expectData;
+ CleanupClosePushL(expectData);
+
+ RLine line;
+ RMobileCall call;
+ CleanupClosePushL(call);
+
+ TInt errorCode = KErrNone;
+ TInt callId = 1;
+ TName incomingCallName;
+
+ TRequestStatus requestStatus;
+ TRequestStatus mockLtsyStatus;
+
+ // open new line for data
+ errorCode = OpenNewLineLC(iPhone, line, KMmTsyFaxLineName);
+ ASSERT_EQUALS(KErrNone, errorCode);
+
+ RMobilePhone::TMobileService mobileService = RMobilePhone::EFaxService;
+ RMobileCall::TMobileCallStatus mobileCallStatus = RMobileCall::EStatusRinging;
+
+ TMockLtsyCallData0 mockData0(callId, mobileService);
+
+ //-------------------------------------------------------------------------
+ // TEST A: failure to dispatch request to LTSY
+ //-------------------------------------------------------------------------
+
+ //-------------------------------------------------------------------------
+ // create new incoming call
+ errorCode = CreateIncomingCallL(line, callId, incomingCallName,
+ mobileService, mobileCallStatus);
+ ASSERT_EQUALS(KErrNone, errorCode);
+
+ errorCode = call.OpenExistingCall(line, incomingCallName);
+ ASSERT_EQUALS(KErrNone, errorCode);
+ //-------------------------------------------------------------------------
+
+ // see EMobileCallResume case in function CMmFaxCallTsy::DoExtFuncL in file CMmFaxCallTsy.cpp
+ call.Resume(requestStatus);
+
+ User::WaitForRequest(requestStatus);
+ AssertMockLtsyStatusL();
+ ASSERT_EQUALS(KErrNotSupported, requestStatus.Int());
+
+ AssertMockLtsyStatusL();
+ CleanupStack::PopAndDestroy(4); // expectData, call, line
+ }
+
+/**
+@SYMTestCaseID BA-CTSY-CCON-CDF-0001
+@SYMComponent telephony_ctsy
+@SYMTestCaseDesc Test support in CTSY for RMobileCall::Deflect for voice calls
+@SYMTestPriority High
+@SYMTestActions Invokes RMobileCall::Deflect for voice calls
+@SYMTestExpectedResults Pass
+@SYMTestType CT
+*/
+void CCTsyCallControlFU::TestDeflect0001L()
+ {
+
+ OpenEtelServerL(EUseExtendedError);
+ CleanupStack::PushL(TCleanupItem(Cleanup,this));
+ OpenPhoneL();
+
+ RBuf8 expectData;
+ CleanupClosePushL(expectData);
+
+ RLine line;
+ RMobileCall call;
+ CleanupClosePushL(call);
+
+ TInt errorCode = KErrNone;
+ TInt callId = 1;
+ TName incomingCallName;
+
+ TRequestStatus requestStatus;
+ TRequestStatus mockLtsyStatus;
+
+ // open new line for data
+ errorCode = OpenNewLineLC(iPhone, line, KMmTsyVoice1LineName);
+ ASSERT_EQUALS(KErrNone, errorCode);
+
+ RMobilePhone::TMobileService mobileService = RMobilePhone::EVoiceService;
+ RMobileCall::TMobileCallStatus mobileCallStatus = RMobileCall::EStatusRinging;
+
+ TMockLtsyCallData0 mockData0(callId, mobileService);
+
+ //-------------------------------------------------------------------------
+ // Test API is not supported
+ //-------------------------------------------------------------------------
+
+ //-------------------------------------------------------------------------
+ // create new incoming call
+ errorCode = CreateIncomingCallL(line, callId, incomingCallName,
+ mobileService, mobileCallStatus);
+ ASSERT_EQUALS(KErrNone, errorCode);
+
+ errorCode = call.OpenExistingCall(line, incomingCallName);
+ ASSERT_EQUALS(KErrNone, errorCode);
+ //-------------------------------------------------------------------------
+
+ RMobileCall::TMobileCallDeflect deflectType = RMobileCall::EDeflectUnspecified;
+ RMobilePhone::TMobileAddress destination;
+ call.Deflect(requestStatus, deflectType, destination);
+
+ User::WaitForRequest(requestStatus);
+ AssertMockLtsyStatusL();
+ ASSERT_EQUALS(KErrNotSupported, requestStatus.Int());
+
+ AssertMockLtsyStatusL();
+ CleanupStack::PopAndDestroy(4); // expectData, call, line
+ }
+
+
+/**
+@SYMTestCaseID BA-CTSY-CCON-CDF-0002
+@SYMComponent telephony_ctsy
+@SYMTestCaseDesc Test support in CTSY for RMobileCall::Deflect for data calls
+@SYMTestPriority High
+@SYMTestActions Invokes RMobileCall::Deflect for data calls
+@SYMTestExpectedResults Pass
+@SYMTestType CT
+*/
+void CCTsyCallControlFU::TestDeflect0002L()
+ {
+
+ OpenEtelServerL(EUseExtendedError);
+ CleanupStack::PushL(TCleanupItem(Cleanup,this));
+ OpenPhoneL();
+
+ RBuf8 expectData;
+ CleanupClosePushL(expectData);
+
+ RLine line;
+ RMobileCall call;
+ CleanupClosePushL(call);
+
+ TInt errorCode = KErrNone;
+ TInt callId = 1;
+ TName incomingCallName;
+
+ TRequestStatus requestStatus;
+ TRequestStatus mockLtsyStatus;
+
+ // open new line for data
+ errorCode = OpenNewLineLC(iPhone, line, KMmTsyDataLineName);
+ ASSERT_EQUALS(KErrNone, errorCode);
+
+ RMobilePhone::TMobileService mobileService = RMobilePhone::ECircuitDataService;
+ RMobileCall::TMobileCallStatus mobileCallStatus = RMobileCall::EStatusRinging;
+
+ TMockLtsyCallData0 mockData0(callId, mobileService);
+
+ //-------------------------------------------------------------------------
+ // Test API is not supported
+ //-------------------------------------------------------------------------
+
+ //-------------------------------------------------------------------------
+ // create new incoming call
+ errorCode = CreateIncomingCallL(line, callId, incomingCallName,
+ mobileService, mobileCallStatus);
+ ASSERT_EQUALS(KErrNone, errorCode);
+
+ errorCode = call.OpenExistingCall(line, incomingCallName);
+ ASSERT_EQUALS(KErrNone, errorCode);
+ //-------------------------------------------------------------------------
+
+ RMobileCall::TMobileCallDeflect deflectType = RMobileCall::EDeflectUnspecified;
+ RMobilePhone::TMobileAddress destination;
+ call.Deflect(requestStatus, deflectType, destination);
+
+ User::WaitForRequest(requestStatus);
+ AssertMockLtsyStatusL();
+ ASSERT_EQUALS(KErrNotSupported, requestStatus.Int());
+
+ AssertMockLtsyStatusL();
+ CleanupStack::PopAndDestroy(4); // expectData, call, line
+ }
+
+
+/**
+@SYMTestCaseID BA-CTSY-CCON-CDF-0003
+@SYMComponent telephony_ctsy
+@SYMTestCaseDesc Test support in CTSY for RMobileCall::Deflect for fax calls
+@SYMTestPriority High
+@SYMTestActions Invokes RMobileCall::Deflect for fax calls
+@SYMTestExpectedResults Pass
+@SYMTestType CT
+*/
+void CCTsyCallControlFU::TestDeflect0003L()
+ {
+
+ OpenEtelServerL(EUseExtendedError);
+ CleanupStack::PushL(TCleanupItem(Cleanup,this));
+ OpenPhoneL();
+
+ RBuf8 expectData;
+ CleanupClosePushL(expectData);
+
+ RLine line;
+ RMobileCall call;
+ CleanupClosePushL(call);
+
+ TInt errorCode = KErrNone;
+ TInt callId = 1;
+ TName incomingCallName;
+
+ TRequestStatus requestStatus;
+ TRequestStatus mockLtsyStatus;
+
+ // open new line for data
+ errorCode = OpenNewLineLC(iPhone, line, KMmTsyFaxLineName);
+ ASSERT_EQUALS(KErrNone, errorCode);
+
+ RMobilePhone::TMobileService mobileService = RMobilePhone::EFaxService;
+ RMobileCall::TMobileCallStatus mobileCallStatus = RMobileCall::EStatusRinging;
+
+ TMockLtsyCallData0 mockData0(callId, mobileService);
+
+ //-------------------------------------------------------------------------
+ // Test API is not supported
+ //-------------------------------------------------------------------------
+
+ //-------------------------------------------------------------------------
+ // create new incoming call
+ errorCode = CreateIncomingCallL(line, callId, incomingCallName,
+ mobileService, mobileCallStatus);
+ ASSERT_EQUALS(KErrNone, errorCode);
+
+ errorCode = call.OpenExistingCall(line, incomingCallName);
+ ASSERT_EQUALS(KErrNone, errorCode);
+ //-------------------------------------------------------------------------
+
+ RMobileCall::TMobileCallDeflect deflectType = RMobileCall::EDeflectUnspecified;
+ RMobilePhone::TMobileAddress destination;
+ call.Deflect(requestStatus, deflectType, destination);
+
+ User::WaitForRequest(requestStatus);
+ AssertMockLtsyStatusL();
+ ASSERT_EQUALS(KErrNotSupported, requestStatus.Int());
+
+ AssertMockLtsyStatusL();
+ CleanupStack::PopAndDestroy(4); // expectData, call, line
+ }
+
+
+/**
+@SYMTestCaseID BA-CTSY-CCON-CT-0001
+@SYMComponent telephony_ctsy
+@SYMTestCaseDesc Test support in CTSY for RMobileCall::Transfer for voice calls
+@SYMTestPriority High
+@SYMTestActions Invokes RMobileCall::Transfer for voice calls
+@SYMTestExpectedResults Pass
+@SYMTestType CT
+*/
+void CCTsyCallControlFU::TestTransfer0001L()
+ {
+
+ OpenEtelServerL(EUseExtendedError);
+ CleanupStack::PushL(TCleanupItem(Cleanup,this));
+ OpenPhoneL();
+
+ RBuf8 expectData;
+ CleanupClosePushL(expectData);
+
+ RBuf8 completeData;
+ CleanupClosePushL(completeData);
+
+ RLine line;
+ RMobileCall call;
+ CleanupClosePushL(call);
+ RMobileCall call2;
+ CleanupClosePushL(call2);
+
+ TInt errorCode = KErrNone;
+ TInt callId(1);
+ TName incomingCallName;
+ TRequestStatus requestStatus;
+ TRequestStatus requestNotify;
+
+ // open new line and call for KMmTsyVoice1LineName
+ errorCode = OpenNewLineLC(iPhone, line, KMmTsyVoice1LineName);
+ ASSERT_EQUALS(KErrNone, errorCode);
+
+ RMobileCall::TMobileCallStatus mobileCallStatus = RMobileCall::EStatusRinging; //RMobileCall::EStatusRinging;
+ RMobilePhone::TMobileService mobileService = RMobilePhone::EVoiceService;
+
+ //-------------------------------------------------------------------------
+ // create new incoming call
+ errorCode = CreateIncomingCallL(line, callId, incomingCallName,
+ mobileService, mobileCallStatus);
+ ASSERT_EQUALS(KErrNone, errorCode);
+
+ errorCode = call2.OpenExistingCall(line, incomingCallName);
+ ASSERT_EQUALS(KErrNone, errorCode);
+ //-------------------------------------------------------------------------
+
+ mobileCallStatus = RMobileCall::EStatusHold;
+ callId = 2;
+
+ //-------------------------------------------------------------------------
+ // TEST A: failure to dispatch request to LTSY
+ //-------------------------------------------------------------------------
+
+ //-------------------------------------------------------------------------
+ // create new incoming call
+ errorCode = CreateIncomingCallL(line, callId, incomingCallName,
+ mobileService, mobileCallStatus);
+ ASSERT_EQUALS(KErrNone, errorCode);
+
+ errorCode = call.OpenExistingCall(line, incomingCallName);
+ ASSERT_EQUALS(KErrNone, errorCode);
+ //-------------------------------------------------------------------------
+
+ TMockLtsyCallData0 mockData0(callId, mobileService);
+ expectData.Close();
+ mockData0.SerialiseL(expectData);
+ iMockLTSY.ExpectL(EMobileCallTransfer, expectData, KErrNotSupported);
+
+ call.Transfer(requestStatus);
+
+ User::WaitForRequest(requestStatus);
+ AssertMockLtsyStatusL();
+ ASSERT_EQUALS(KErrNotSupported, requestStatus.Int());
+
+ // close incoming call
+ CloseIncomingCallL(call, callId, mobileService);
+
+ //-------------------------------------------------------------------------
+ // TEST B: failure on completion of pending request from LTSY->CTSY
+ //-------------------------------------------------------------------------
+
+ //-------------------------------------------------------------------------
+ // create new incoming call
+ errorCode = CreateIncomingCallL(line, callId, incomingCallName,
+ mobileService, mobileCallStatus);
+ ASSERT_EQUALS(KErrNone, errorCode);
+ AssertMockLtsyStatusL();
+
+ errorCode = call.OpenExistingCall(line, incomingCallName);
+ ASSERT_EQUALS(KErrNone, errorCode);
+ AssertMockLtsyStatusL();
+ //-------------------------------------------------------------------------
+
+ expectData.Close();
+ mockData0.SerialiseL(expectData);
+ iMockLTSY.ExpectL(EMobileCallTransfer, expectData);
+ iMockLTSY.CompleteL(EMobileCallTransfer, KErrGeneral, expectData);
+ call.Transfer(requestStatus);
+
+ User::WaitForRequest(requestStatus);
+ AssertMockLtsyStatusL();
+ ASSERT_EQUALS(KErrGeneral, requestStatus.Int());
+
+ // close incoming call
+ CloseIncomingCallL(call, callId, mobileService);
+
+ //-------------------------------------------------------------------------
+ // TEST C: Successful completion request of
+ // RMobileCall::Transfer when result is not cached.
+ //-------------------------------------------------------------------------
+
+ //-------------------------------------------------------------------------
+ // create new incoming call
+ errorCode = CreateIncomingCallL(line, callId, incomingCallName,
+ mobileService, mobileCallStatus);
+ ASSERT_EQUALS(KErrNone, errorCode);
+ AssertMockLtsyStatusL();
+
+ errorCode = call.OpenExistingCall(line, incomingCallName);
+ ASSERT_EQUALS(KErrNone, errorCode);
+ AssertMockLtsyStatusL();
+ //-------------------------------------------------------------------------
+
+ expectData.Close();
+ mockData0.SerialiseL(expectData);
+ iMockLTSY.ExpectL(EMobileCallTransfer, expectData);
+ iMockLTSY.CompleteL(EMobileCallTransfer, KErrNone, expectData);
+ call.Transfer(requestStatus);
+
+ User::WaitForRequest(requestStatus);
+ AssertMockLtsyStatusL();
+ ASSERT_EQUALS(KErrNone, requestStatus.Int());
+
+ // close incoming call
+ CloseIncomingCallL(call, callId, mobileService);
+
+ //-------------------------------------------------------------------------
+ // TEST E: Unsolicited completion of RMobileCall::Transfer
+ // from LTSY.
+ //-------------------------------------------------------------------------
+
+ TRequestStatus mockLtsyStatus;
+
+ iMockLTSY.NotifyTerminated(mockLtsyStatus);
+ expectData.Close();
+ mockData0.SerialiseL(expectData);
+ iMockLTSY.CompleteL(EMobileCallTransfer, KErrNone, expectData);
+ User::WaitForRequest(mockLtsyStatus);
+ AssertMockLtsyStatusL();
+ ASSERT_EQUALS(KErrNone, mockLtsyStatus.Int());
+
+ AssertMockLtsyStatusL();
+ CleanupStack::PopAndDestroy(6, this); // expectData, completeData, call, line, call2
+ }
+
+
+/**
+@SYMTestCaseID BA-CTSY-CCON-CT-0002
+@SYMComponent telephony_ctsy
+@SYMTestCaseDesc Test support in CTSY for cancelling of RMobileCall::Transfer for voice calls
+@SYMTestPriority High
+@SYMTestActions Invokes cancelling of RMobileCall::Transfer for voice calls
+@SYMTestExpectedResults Pass
+@SYMTestType CT
+*/
+void CCTsyCallControlFU::TestTransfer0002L()
+ {
+
+ OpenEtelServerL(EUseExtendedError);
+ CleanupStack::PushL(TCleanupItem(Cleanup,this));
+ OpenPhoneL();
+
+ RBuf8 expectData;
+ CleanupClosePushL(expectData);
+
+ RLine line;
+ RMobileCall call;
+ CleanupClosePushL(call);
+ RMobileCall call2;
+ CleanupClosePushL(call2);
+
+ TInt errorCode = KErrNone;
+ TInt callId = 1;
+ TName incomingCallName;
+
+ TRequestStatus requestStatus;
+ TRequestStatus mockLtsyStatus;
+
+ RMobileCall::TMobileCallStatus mobileCallStatus = RMobileCall::EStatusRinging;
+ RMobilePhone::TMobileService mobileService = RMobilePhone::EVoiceService;
+
+ // open new line for KMmTsyVoice1LineName
+ errorCode = OpenNewLineLC(iPhone, line, KMmTsyVoice1LineName);
+ ASSERT_EQUALS(KErrNone, errorCode);
+
+ //-------------------------------------------------------------------------
+ // create new incoming call
+ errorCode = CreateIncomingCallL(line, callId, incomingCallName,
+ mobileService, mobileCallStatus);
+ ASSERT_EQUALS(KErrNone, errorCode);
+
+ errorCode = call2.OpenExistingCall(line, incomingCallName);
+ ASSERT_EQUALS(KErrNone, errorCode);
+ //-------------------------------------------------------------------------
+
+ mobileCallStatus = RMobileCall::EStatusHold;
+ callId = 2;
+
+ //-------------------------------------------------------------------------
+ // Test cancelling of RMobileCall::Transfer
+ //-------------------------------------------------------------------------
+
+ //-------------------------------------------------------------------------
+ // create new incoming call
+ errorCode = CreateIncomingCallL(line, callId, incomingCallName,
+ mobileService, mobileCallStatus);
+ ASSERT_EQUALS(KErrNone, errorCode);
+ AssertMockLtsyStatusL();
+
+ errorCode = call.OpenExistingCall(line, incomingCallName);
+ ASSERT_EQUALS(KErrNone, errorCode);
+ AssertMockLtsyStatusL();
+ //-------------------------------------------------------------------------
+
+ iMockLTSY.NotifyTerminated(mockLtsyStatus);
+ TMockLtsyCallData0 mockData0(callId, mobileService);
+ expectData.Close();
+ mockData0.SerialiseL(expectData);
+
+ iMockLTSY.ExpectL(EMobileCallTransfer, expectData);
+ iMockLTSY.CompleteL(EMobileCallTransfer, KErrNone, expectData);
+
+ call.Transfer(requestStatus);
+
+ call.CancelAsyncRequest(EMobileCallTransfer);
+
+ User::WaitForRequest(requestStatus);
+ AssertMockLtsyStatusL();
+ // see CMmVoiceCallTsy::CancelService in file CMmVoiceCallTsy.cpp
+ ASSERT_EQUALS(KErrNone, requestStatus.Int());
+
+ User::WaitForRequest(mockLtsyStatus);
+
+ CleanupStack::PopAndDestroy(5); // expectData, this, call, line, call2
+ }
+
+/**
+@SYMTestCaseID BA-CTSY-CCON-CT-0004
+@SYMComponent telephony_ctsy
+@SYMTestCaseDesc Test support in CTSY for multiple client requests to RMobileCall::Transfer for voice calls
+@SYMTestPriority High
+@SYMTestActions Invokes multiple client requests to RMobileCall::Transfer for voice calls
+@SYMTestExpectedResults Pass
+@SYMTestType CT
+*/
+void CCTsyCallControlFU::TestTransfer0004L()
+ {
+ OpenEtelServerL(EUseExtendedError);
+ CleanupStack::PushL(TCleanupItem(Cleanup,this));
+ OpenPhoneL();
+
+ RBuf8 expectData;
+ CleanupClosePushL(expectData);
+
+ RBuf8 completeData;
+ CleanupClosePushL(completeData);
+
+ // 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);
+
+ RLine line11;
+ RLine line12;
+ RLine line22;
+
+ RMobileCall call11;
+ CleanupClosePushL(call11);
+
+ RMobileCall call12;
+ CleanupClosePushL(call12);
+
+ RMobileCall call22;
+ CleanupClosePushL(call22);
+
+ TInt errorCode = KErrNone;
+
+ TInt callId1 = 1;
+ TInt callId2 = 2;
+ TName incomingCallName1;
+ TName incomingCallName2;
+
+ TRequestStatus requestStatus1;
+ TRequestStatus requestStatus2;
+ TRequestStatus mockLtsyStatus;
+
+ // open new line11 for KMmTsyVoice1LineName
+ errorCode = OpenNewLineLC(iPhone, line11, KMmTsyVoice1LineName);
+ ASSERT_EQUALS(KErrNone, errorCode);
+
+ // open new line12 for KMmTsyVoice2LineName
+ errorCode = OpenNewLineLC(iPhone, line12, KMmTsyVoice2LineName);
+ ASSERT_EQUALS(KErrNone, errorCode);
+
+ // open new line22 for KMmTsyVoice2LineName
+ errorCode = OpenNewLineLC(phone2, line22, KMmTsyVoice2LineName);
+ ASSERT_EQUALS(KErrNone, errorCode);
+
+ RMobileCall::TMobileCallStatus mobileCallStatus = RMobileCall::EStatusRinging;
+ RMobilePhone::TMobileService mobileService = RMobilePhone::EVoiceService;
+
+ //-------------------------------------------------------------------------
+ // create new incoming call
+ errorCode = CreateIncomingCallL(line11, callId1, incomingCallName1,
+ mobileService, mobileCallStatus);
+ ASSERT_EQUALS(KErrNone, errorCode);
+
+ errorCode = call11.OpenExistingCall(line11, incomingCallName1);
+ ASSERT_EQUALS(KErrNone, errorCode);
+ //-------------------------------------------------------------------------
+
+ mobileCallStatus = RMobileCall::EStatusHold;
+ mobileService = RMobilePhone::EAuxVoiceService;
+ //-------------------------------------------------------------------------
+ // create new incoming call12 for iPhone
+ errorCode = CreateIncomingCallL(line12, callId2, incomingCallName2,
+ mobileService, mobileCallStatus);
+ ASSERT_EQUALS(KErrNone, errorCode);
+ AssertMockLtsyStatusL();
+
+ errorCode = call12.OpenExistingCall(line12, incomingCallName2);
+ ASSERT_EQUALS(KErrNone, errorCode);
+ AssertMockLtsyStatusL();
+ //-------------------------------------------------------------------------
+
+ RLine::TCallInfo callInfo22;
+ errorCode = line22.GetCallInfo(0, callInfo22);
+ ASSERT_EQUALS(KErrNone, errorCode);
+
+ errorCode = call22.OpenExistingCall(line22, callInfo22.iCallName);
+ ASSERT_EQUALS(KErrNone, errorCode);
+ AssertMockLtsyStatusL();
+
+ //-------------------------------------------------------------------------
+ // Test A: Test multiple clients requesting RMobileCall::Transfer
+ //-------------------------------------------------------------------------
+
+ TMockLtsyCallData0 mockData(callId2, mobileService);
+ expectData.Close();
+ mockData.SerialiseL(expectData);
+ iMockLTSY.ExpectL(EMobileCallTransfer, expectData);
+ iMockLTSY.CompleteL(EMobileCallTransfer, KErrNone, expectData, 10);
+
+ call12.Transfer(requestStatus1);
+ call22.Transfer(requestStatus2);
+
+ User::WaitForRequest(requestStatus1);
+ User::WaitForRequest(requestStatus2);
+
+ ASSERT_EQUALS(KErrNone, requestStatus1.Int());
+ ASSERT_EQUALS(KErrServerBusy, requestStatus2.Int());
+
+ AssertMockLtsyStatusL();
+
+ CleanupStack::PopAndDestroy(6); // line11, line12, line22, call11, call12, call22
+ CleanupStack::PopAndDestroy(5, this); // phone2, telServer2, expectData, this, completeData
+ }
+
+
+/**
+@SYMTestCaseID BA-CTSY-CCON-CT-0005
+@SYMComponent telephony_ctsy
+@SYMTestCaseDesc Test support in CTSY for RMobileCall::Transfer with timeout for voice calls
+@SYMTestPriority High
+@SYMTestActions Invokes RMobileCall::Transfer and tests for timeout for voice calls
+@SYMTestExpectedResults Pass
+@SYMTestType CT
+*/
+void CCTsyCallControlFU::TestTransfer0005L()
+ {
+ OpenEtelServerL(EUseExtendedError);
+ CleanupStack::PushL(TCleanupItem(Cleanup,this));
+ OpenPhoneL();
+
+ RBuf8 expectData;
+ CleanupClosePushL(expectData);
+
+ RLine line;
+
+ RMobileCall call;
+ CleanupClosePushL(call);
+
+ RMobileCall call2;
+ CleanupClosePushL(call2);
+
+ TInt errorCode = KErrNone;
+ TInt callId = 1;
+ TName incomingCallName;
+
+ TRequestStatus requestStatus;
+ TRequestStatus mockLtsyStatus;
+
+ // open new line for KMmTsyVoice1LineName
+ errorCode = OpenNewLineLC(iPhone, line, KMmTsyVoice1LineName);
+ ASSERT_EQUALS(KErrNone, errorCode);
+
+ RMobileCall::TMobileCallStatus mobileCallStatus = RMobileCall::EStatusRinging;
+ RMobilePhone::TMobileService mobileService = RMobilePhone::EVoiceService;
+
+ //-------------------------------------------------------------------------
+ // create new incoming call
+ errorCode = CreateIncomingCallL(line, callId, incomingCallName,
+ mobileService, mobileCallStatus);
+ ASSERT_EQUALS(KErrNone, errorCode);
+ AssertMockLtsyStatusL();
+
+ errorCode = call2.OpenExistingCall(line, incomingCallName);
+ ASSERT_EQUALS(KErrNone, errorCode);
+ AssertMockLtsyStatusL();
+ //-------------------------------------------------------------------------
+
+ //-------------------------------------------------------------------------
+ // Test A: Test timeout of RMobileCall::Transfer
+ //-------------------------------------------------------------------------
+
+ mobileCallStatus = RMobileCall::EStatusHold;
+ callId = 2;
+
+ //-------------------------------------------------------------------------
+ // create new incoming call
+ errorCode = CreateIncomingCallL(line, callId, incomingCallName,
+ mobileService, mobileCallStatus);
+ ASSERT_EQUALS(KErrNone, errorCode);
+ AssertMockLtsyStatusL();
+
+ errorCode = call.OpenExistingCall(line, incomingCallName);
+ ASSERT_EQUALS(KErrNone, errorCode);
+ AssertMockLtsyStatusL();
+ //-------------------------------------------------------------------------
+
+ TMockLtsyCallData0 mockData0(callId, mobileService);
+ expectData.Close();
+ mockData0.SerialiseL(expectData);
+ iMockLTSY.ExpectL(EMobileCallTransfer, expectData);
+
+ call.Transfer(requestStatus);
+
+ User::WaitForRequest(requestStatus);
+ AssertMockLtsyStatusL();
+ ASSERT_EQUALS(KErrTimedOut, requestStatus.Int());
+
+ CleanupStack::PopAndDestroy(5, this); // expectData, this, line, call, call2
+ }
+
+
+/**
+@SYMTestCaseID BA-CTSY-CCON-CT-0006
+@SYMComponent telephony_ctsy
+@SYMTestCaseDesc Test support in CTSY for RMobileCall::Transfer for data calls
+@SYMTestPriority High
+@SYMTestActions Invokes RMobileCall::Transfer for data calls
+@SYMTestExpectedResults Pass
+@SYMTestType CT
+*/
+void CCTsyCallControlFU::TestTransfer0006L()
+ {
+ OpenEtelServerL(EUseExtendedError);
+ CleanupStack::PushL(TCleanupItem(Cleanup,this));
+ OpenPhoneL();
+
+ RBuf8 expectData;
+ CleanupClosePushL(expectData);
+
+ RBuf8 completeData;
+ CleanupClosePushL(completeData);
+
+ RLine line;
+ RMobileCall call;
+ CleanupClosePushL(call);
+
+ RMobileCall ringingCall;
+ CleanupClosePushL(ringingCall);
+
+ TInt errorCode = KErrNone;
+ TInt callId = 1;
+ TName incomingCallName;
+ TRequestStatus requestStatus;
+ TRequestStatus requestNotify;
+
+ // open new line and call for KMmTsyDataLineName
+ errorCode = OpenNewLineLC(iPhone, line, KMmTsyDataLineName);
+ ASSERT_EQUALS(KErrNone, errorCode);
+
+ RMobileCall::TMobileCallStatus mobileCallStatus = RMobileCall::EStatusRinging;
+ RMobilePhone::TMobileService mobileService = RMobilePhone::ECircuitDataService;
+
+ //-------------------------------------------------------------------------
+ // create new incoming call
+ errorCode = CreateIncomingCallL(line, callId, incomingCallName,
+ mobileService, mobileCallStatus);
+ ASSERT_EQUALS(KErrNone, errorCode);
+
+ errorCode = ringingCall.OpenExistingCall(line, incomingCallName);
+ ASSERT_EQUALS(KErrNone, errorCode);
+ //-------------------------------------------------------------------------
+
+ callId = 2;
+ mobileCallStatus = RMobileCall::EStatusHold;
+
+ //-------------------------------------------------------------------------
+ // TEST A: failure to dispatch request to LTSY
+ //-------------------------------------------------------------------------
+
+ //-------------------------------------------------------------------------
+ // create new incoming call
+ errorCode = CreateIncomingCallL(line, callId, incomingCallName,
+ mobileService, mobileCallStatus);
+ ASSERT_EQUALS(KErrNone, errorCode);
+
+ errorCode = call.OpenExistingCall(line, incomingCallName);
+ ASSERT_EQUALS(KErrNone, errorCode);
+ //-------------------------------------------------------------------------
+
+ call.Transfer(requestStatus);
+
+ User::WaitForRequest(requestStatus);
+ AssertMockLtsyStatusL();
+ ASSERT_EQUALS(KErrNotReady, requestStatus.Int());
+
+ // close incoming call
+ CloseIncomingCallL(call, callId, RMobilePhone::ECircuitDataService);
+
+ //-------------------------------------------------------------------------
+ // TEST E: Unsolicited completion of RMobileCall::Transfer
+ // from LTSY.
+ //-------------------------------------------------------------------------
+
+ TRequestStatus mockLtsyStatus;
+
+ iMockLTSY.NotifyTerminated(mockLtsyStatus);
+ TMockLtsyCallData0 mockData0(callId, mobileService);
+ expectData.Close();
+ mockData0.SerialiseL(expectData);
+ iMockLTSY.CompleteL(EMobileCallTransfer, KErrNone, expectData);
+ User::WaitForRequest(mockLtsyStatus);
+ AssertMockLtsyStatusL();
+ ASSERT_EQUALS(KErrNone, mockLtsyStatus.Int());
+
+ CleanupStack::PopAndDestroy(6, this); // expectData, completeData, call, line, ringingCall
+ }
+
+
+/**
+@SYMTestCaseID BA-CTSY-CCON-CT-0009
+@SYMComponent telephony_ctsy
+@SYMTestCaseDesc Test support in CTSY for multiple client requests to RMobileCall::Transfer for data calls
+@SYMTestPriority High
+@SYMTestActions Invokes multiple client requests to RMobileCall::Transfer for data calls
+@SYMTestExpectedResults Pass
+@SYMTestType CT
+*/
+void CCTsyCallControlFU::TestTransfer0009L()
+ {
+
+
+ OpenEtelServerL(EUseExtendedError);
+ CleanupStack::PushL(TCleanupItem(Cleanup,this));
+ OpenPhoneL();
+
+ RBuf8 expectData;
+ CleanupClosePushL(expectData);
+
+ // Open second client
+ RTelServer telServer2;
+ TInt ret = telServer2.Connect();
+ ASSERT_EQUALS(KErrNone, ret);
+ CleanupClosePushL(telServer2);
+
+ RMobilePhone phone2;
+ ret = phone2.Open(iTelServer,KMmTsyPhoneName);
+ ASSERT_EQUALS(KErrNone, ret);
+ CleanupClosePushL(phone2);
+
+ RLine line1;
+ RLine line2;
+
+ RMobileCall call1;
+ CleanupClosePushL(call1);
+ RMobileCall call2;
+ CleanupClosePushL(call2);
+ RMobileCall call3;
+ CleanupClosePushL(call3);
+ RMobileCall call4;
+ CleanupClosePushL(call4);
+
+ TInt errorCode = KErrNone;
+
+ TInt callId1 = 1;
+ TInt callId2 = 2;
+ TInt callId3 = 3;
+ TInt callId4 = 4;
+ TName incomingCallName1;
+ TName incomingCallName2;
+ TName incomingCallName3;
+ TName incomingCallName4;
+
+ TRequestStatus requestStatus1;
+ TRequestStatus requestStatus2;
+
+ // open new line1 for KMmTsyDataLineName
+ errorCode = OpenNewLineLC(iPhone, line1, KMmTsyDataLineName);
+ ASSERT_EQUALS(KErrNone, errorCode);
+
+ // open new line2 for KMmTsyDataLineName
+ errorCode = OpenNewLineLC(phone2, line2, KMmTsyDataLineName);
+ ASSERT_EQUALS(KErrNone, errorCode);
+
+ RMobileCall::TMobileCallStatus mobileCallStatusHold = RMobileCall::EStatusRinging;
+ RMobilePhone::TMobileService mobileService = RMobilePhone::ECircuitDataService;
+
+ //-------------------------------------------------------------------------
+ errorCode = CreateIncomingCallL(line1, callId1, incomingCallName1,
+ mobileService, mobileCallStatusHold);
+ ASSERT_EQUALS(KErrNone, errorCode);
+ AssertMockLtsyStatusL();
+
+ errorCode = call1.OpenExistingCall(line1, incomingCallName1);
+ ASSERT_EQUALS(KErrNone, errorCode);
+ AssertMockLtsyStatusL();
+ //-------------------------------------------------------------------------
+
+ //-------------------------------------------------------------------------
+ // create new incoming call2 for phone2
+ errorCode = CreateIncomingCallL(line2, callId2, incomingCallName2,
+ mobileService, mobileCallStatusHold);
+ ASSERT_EQUALS(KErrNone, errorCode);
+ AssertMockLtsyStatusL();
+
+ errorCode = call2.OpenExistingCall(line2, incomingCallName2);
+ ASSERT_EQUALS(KErrNone, errorCode);
+ AssertMockLtsyStatusL();
+ //-------------------------------------------------------------------------
+
+ //-------------------------------------------------------------------------
+ // Test A: Test multiple clients requesting RMobileCall::Transfer
+ //-------------------------------------------------------------------------
+
+ mobileCallStatusHold = RMobileCall::EStatusHold;
+
+ //-------------------------------------------------------------------------
+ // create new incoming call1 for iPhone
+ errorCode = CreateIncomingCallL(line1, callId3, incomingCallName3,
+ mobileService, mobileCallStatusHold);
+ ASSERT_EQUALS(KErrNone, errorCode);
+ AssertMockLtsyStatusL();
+
+ errorCode = call3.OpenExistingCall(line1, incomingCallName3);
+ ASSERT_EQUALS(KErrNone, errorCode);
+ AssertMockLtsyStatusL();
+ //-------------------------------------------------------------------------
+
+ //-------------------------------------------------------------------------
+ errorCode = CreateIncomingCallL(line2, callId4, incomingCallName4,
+ mobileService, mobileCallStatusHold);
+ ASSERT_EQUALS(KErrNone, errorCode);
+ AssertMockLtsyStatusL();
+
+ errorCode = call4.OpenExistingCall(line2, incomingCallName4);
+ ASSERT_EQUALS(KErrNone, errorCode);
+ AssertMockLtsyStatusL();
+ //-------------------------------------------------------------------------
+
+ call3.Transfer(requestStatus1);
+ call4.Transfer(requestStatus2);
+
+ User::WaitForRequest(requestStatus1);
+ AssertMockLtsyStatusL();
+ ASSERT_EQUALS(KErrNotReady, requestStatus1.Int());
+
+ User::WaitForRequest(requestStatus2);
+ AssertMockLtsyStatusL();
+ ASSERT_EQUALS(KErrNotReady, requestStatus2.Int());
+
+ // Done !
+ CleanupStack::PopAndDestroy(6); // line1, line2, call1, call2, call3, call4
+ CleanupStack::PopAndDestroy(4, this); // phone2, telServer2, expectData, this
+ }
+
+/**
+@SYMTestCaseID BA-CTSY-CCON-CT-00011
+@SYMComponent telephony_ctsy
+@SYMTestCaseDesc Test support in CTSY for RMobileCall::Transfer for fax calls
+@SYMTestPriority High
+@SYMTestActions Invokes RMobileCall::Transfer for fax calls
+@SYMTestExpectedResults Pass
+@SYMTestType CT
+*/
+void CCTsyCallControlFU::TestTransfer00011L()
+ {
+
+ OpenEtelServerL(EUseExtendedError);
+ CleanupStack::PushL(TCleanupItem(Cleanup,this));
+ OpenPhoneL();
+
+ RBuf8 expectData;
+ CleanupClosePushL(expectData);
+
+ RBuf8 completeData;
+ CleanupClosePushL(completeData);
+
+ RLine line;
+ RMobileCall call;
+ CleanupClosePushL(call);
+ RMobileCall ringingCall;
+ CleanupClosePushL(ringingCall);
+
+ TInt errorCode = KErrNone;
+ TInt callId = 1;
+ TName incomingCallName;
+ TRequestStatus requestStatus;
+ TRequestStatus requestNotify;
+
+ // open new line and call for KMmTsyFaxLineName
+ errorCode = OpenNewLineLC(iPhone, line, KMmTsyFaxLineName);
+ ASSERT_EQUALS(KErrNone, errorCode);
+
+ RMobileCall::TMobileCallStatus mobileCallStatus = RMobileCall::EStatusRinging;
+ RMobilePhone::TMobileService mobileService = RMobilePhone::EFaxService;
+
+ //-------------------------------------------------------------------------
+ // create new incoming call
+ errorCode = CreateIncomingCallL(line, callId, incomingCallName,
+ mobileService, mobileCallStatus);
+ ASSERT_EQUALS(KErrNone, errorCode);
+
+ errorCode = ringingCall.OpenExistingCall(line, incomingCallName);
+ ASSERT_EQUALS(KErrNone, errorCode);
+ //-------------------------------------------------------------------------
+
+ //-------------------------------------------------------------------------
+ // TEST A: failure to dispatch request to LTSY
+ //-------------------------------------------------------------------------
+
+ mobileCallStatus = RMobileCall::EStatusHold;
+ callId = 2;
+
+ /*
+ * Can't create incoming call with call status equal RMobileCall::EStatusHold.
+ * Destructor of CMmCallTsy is called for inclomming call (callId = 1)
+ * with call status equal RMobileCall::EStatusRinging by call of RCall::Close().
+ */
+
+// ERR_PRINTF2(_L("<font color=Orange>$CTSYKnownFailure: defect id = %d</font>"), 100804);
+
+ //ASSERT_TRUE(false);
+
+ //-------------------------------------------------------------------------
+ // create new incoming call
+ errorCode = CreateIncomingCallL(line, callId, incomingCallName,
+ mobileService, mobileCallStatus);
+ ASSERT_EQUALS(KErrNone, errorCode);
+
+ errorCode = call.OpenExistingCall(line, incomingCallName);
+ ASSERT_EQUALS(KErrNone, errorCode);
+ //-------------------------------------------------------------------------
+
+ call.Transfer(requestStatus);
+
+ User::WaitForRequest(requestStatus);
+ AssertMockLtsyStatusL();
+ ASSERT_EQUALS(KErrNotSupported, requestStatus.Int());
+
+ AssertMockLtsyStatusL();
+ CleanupStack::PopAndDestroy(6, this); // expectData, completeData, call, line, ringingCall
+ }
+
+
+/**
+@SYMTestCaseID BA-CTSY-CCON-MTAC-0001
+@SYMComponent telephony_ctsy
+@SYMTestCaseDesc Test support in CTSY for RMobilePhone::TerminateAllCalls
+@SYMTestPriority High
+@SYMTestActions Invokes RMobilePhone::TerminateAllCalls
+@SYMTestExpectedResults Pass
+@SYMTestType CT
+*/
+void CCTsyCallControlFU::TestTerminateAllCalls0001L()
+ {
+ OpenEtelServerL(EUseExtendedError);
+ CleanupStack::PushL(TCleanupItem(Cleanup,this));
+ OpenPhoneL();
+
+ RBuf8 expectData;
+ CleanupClosePushL(expectData); // PUSH
+
+ TRequestStatus requestStatus;
+
+ //-----------------------------------------------------------------------
+ // TEST 0: with no active calls
+ //----------------------------------------------------------------------
+
+ iPhone.TerminateAllCalls(requestStatus);
+ User::WaitForRequest(requestStatus);
+ ASSERT_EQUALS(KErrNone, requestStatus.Int());
+ AssertMockLtsyStatusL();
+
+ //-------------------------------------------------------------------------
+ // TEST A: failure to dispatch request to LTSY
+ //-------------------------------------------------------------------------
+
+ // open new line and call for KMmTsyVoice1LineName
+ RLine line;
+ RCall call;
+ TInt errorCode = OpenNewLineLC(iPhone, line, KMmTsyVoice1LineName); // PUSH
+ ASSERT_EQUALS(KErrNone, errorCode);
+
+ // create new incoming call
+ TName incomingCallName;
+ TInt callId = 1;
+ errorCode = CreateIncomingCallL(line, callId, incomingCallName,
+ RMobilePhone::EVoiceService, RMobileCall::EStatusConnecting);
+
+ ASSERT_EQUALS(KErrNone, errorCode);
+
+ CleanupClosePushL(call); // PUSH
+ errorCode = call.OpenExistingCall(line, incomingCallName);
+ ASSERT_EQUALS(KErrNone, errorCode);
+ //-------------------------------------------------------------------------
+
+ TMockLtsyData1<TInt> mockData(callId);
+ mockData.SerialiseL(expectData);
+ iMockLTSY.ExpectL(ECtsyPhoneTerminateAllCallsReq, expectData, KErrNotSupported);
+ iPhone.TerminateAllCalls(requestStatus);
+
+ User::WaitForRequest(requestStatus);
+ ASSERT_EQUALS(KErrNotSupported, requestStatus.Int());
+ AssertMockLtsyStatusL();
+
+
+
+ //-------------------------------------------------------------------------
+ // TEST B: failure on completion of pending request from LTSY->CTSY
+ //-------------------------------------------------------------------------
+ iMockLTSY.ExpectL(ECtsyPhoneTerminateAllCallsReq, expectData);
+ iMockLTSY.CompleteL(ECtsyPhoneTerminateAllCallsComp, KErrGeneral);
+
+ iPhone.TerminateAllCalls(requestStatus);
+
+ User::WaitForRequest(requestStatus);
+ ASSERT_EQUALS(KErrGeneral, requestStatus.Int());
+ AssertMockLtsyStatusL();
+
+ //-------------------------------------------------------------------------
+ // TEST C: Successful completion request of
+ // RMobilePhone::TerminateAllCalls.
+ //-------------------------------------------------------------------------
+
+ iMockLTSY.ExpectL(ECtsyPhoneTerminateAllCallsReq, expectData);
+ iMockLTSY.CompleteL(ECtsyPhoneTerminateAllCallsComp, KErrNone);
+
+ iPhone.TerminateAllCalls(requestStatus);
+ User::WaitForRequest(requestStatus);
+ ASSERT_EQUALS(KErrNone, requestStatus.Int());
+ AssertMockLtsyStatusL();
+
+ //-------------------------------------------------------------------------
+ // TEST E: Unsolicited completion of RMobilePhone::TerminateAllCalls
+ // from LTSY.
+ //-------------------------------------------------------------------------
+
+ TRequestStatus mockLtsyStatus;
+ iMockLTSY.NotifyTerminated(mockLtsyStatus);
+ iMockLTSY.CompleteL(ECtsyPhoneTerminateAllCallsComp, KErrNone);
+ User::WaitForRequest(mockLtsyStatus);
+ ASSERT_EQUALS(KErrNone, mockLtsyStatus.Int());
+ AssertMockLtsyStatusL();
+
+ CleanupStack::PopAndDestroy(4, this); // call, line, expectData, this
+ }
+
+/**
+@SYMTestCaseID BA-CTSY-CCON-MTAC-0002
+@SYMComponent telephony_ctsy
+@SYMTestCaseDesc Test support in CTSY for cancelling RMobilePhone::TerminateAllCalls
+@SYMTestPriority High
+@SYMTestActions Invokes RMobilePhone::TerminateAllCalls and cancels it
+@SYMTestExpectedResults Pass
+@SYMTestType CT
+*/
+void CCTsyCallControlFU::TestTerminateAllCalls0002L()
+ {
+ OpenEtelServerL(EUseExtendedError);
+ CleanupStack::PushL(TCleanupItem(Cleanup,this));
+ OpenPhoneL();
+
+ RBuf8 expectData;
+ CleanupClosePushL(expectData); // PUSH
+
+ //-------------------------------------------------------------------------
+
+ // open new line and call for KMmTsyVoice1LineName
+ RLine line;
+ RCall call;
+ TInt errorCode = OpenNewLineLC(iPhone, line, KMmTsyVoice1LineName); // PUSH
+ ASSERT_EQUALS(KErrNone, errorCode);
+
+ // create new incoming call
+ TName incomingCallName;
+ TInt callId = 1;
+ errorCode = CreateIncomingCallL(line, callId, incomingCallName,
+ RMobilePhone::EVoiceService, RMobileCall::EStatusConnecting);
+
+ ASSERT_EQUALS(KErrNone, errorCode);
+
+ CleanupClosePushL(call); // PUSH
+ errorCode = call.OpenExistingCall(line, incomingCallName);
+ ASSERT_EQUALS(KErrNone, errorCode);
+ //-------------------------------------------------------------------------
+
+ //-------------------------------------------------------------------------
+ // Test A: cancelling of RMobilePhone::TerminateAllCalls
+ //-------------------------------------------------------------------------
+
+ TMockLtsyData1<TInt> mockData(callId);
+ mockData.SerialiseL(expectData);
+
+ TRequestStatus mockLtsyStatus;
+ iMockLTSY.NotifyTerminated(mockLtsyStatus);
+
+ // Expect call down to LTSY for this IPC
+ iMockLTSY.ExpectL(ECtsyPhoneTerminateAllCallsReq, expectData);
+
+ // Queue response to be delayed to give time for cancel to come through
+ iMockLTSY.CompleteL(ECtsyPhoneTerminateAllCallsComp, KErrNone, 10);
+
+ TRequestStatus requestStatus;
+ iPhone.TerminateAllCalls(requestStatus);
+ iPhone.CancelAsyncRequest(EMobilePhoneTerminateAllCalls);
+ User::WaitForRequest(requestStatus);
+ ASSERT_EQUALS(KErrNone, requestStatus.Int());
+ AssertMockLtsyStatusL();
+
+ User::WaitForRequest(mockLtsyStatus);
+ AssertMockLtsyStatusL();
+
+ CleanupStack::PopAndDestroy(4, this); // call, line, expectData, this
+ }
+
+/**
+@SYMTestCaseID BA-CTSY-CCON-MTAC-0004
+@SYMComponent telephony_ctsy
+@SYMTestCaseDesc Test support in CTSY for multiple client requests of RMobilePhone::TerminateAllCalls
+@SYMTestPriority High
+@SYMTestActions Invokes RMobilePhone::TerminateAllCalls on multiple clients
+@SYMTestExpectedResults Pass
+@SYMTestType CT
+*/
+void CCTsyCallControlFU::TestTerminateAllCalls0004L()
+ {
+
+ 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(iTelServer,KMmTsyPhoneName);
+ ASSERT_EQUALS(KErrNone, ret);
+ CleanupClosePushL(phone2);
+
+ //
+ // set up line and call for first client
+
+ RLine line;
+ RCall call;
+ TInt errorCode = OpenNewLineLC(iPhone, line, KMmTsyVoice1LineName); // PUSH
+ ASSERT_EQUALS(KErrNone, errorCode);
+
+ // create new incoming call
+ TName incomingCallName;
+ TInt callId = 1;
+ errorCode = CreateIncomingCallL(line, callId, incomingCallName,
+ RMobilePhone::EVoiceService, RMobileCall::EStatusConnecting);
+
+ ASSERT_EQUALS(KErrNone, errorCode);
+
+ CleanupClosePushL(call); // PUSH
+ errorCode = call.OpenExistingCall(line, incomingCallName);
+ ASSERT_EQUALS(KErrNone, errorCode);
+
+ //
+ // set up call for second client
+
+ RLine line2;
+ RCall call2;
+ errorCode = OpenNewLineLC(phone2, line2, KMmTsyVoice1LineName); // PUSH
+ ASSERT_EQUALS(KErrNone, errorCode);
+
+ // create new incoming call
+ TName incomingCallName2;
+ TInt callId2 = 2;
+ errorCode = CreateIncomingCallL(line2, callId2, incomingCallName2,
+ RMobilePhone::EVoiceService, RMobileCall::EStatusConnecting);
+
+ ASSERT_EQUALS(KErrNone, errorCode);
+
+ CleanupClosePushL(call2); // PUSH
+ errorCode = call2.OpenExistingCall(line2, incomingCallName2);
+ ASSERT_EQUALS(KErrNone, errorCode);
+
+ // let's start testing...
+
+ RBuf8 expectData;
+ CleanupClosePushL(expectData); // PUSH
+ TMockLtsyData1<TInt> mockData(callId);
+ mockData.SerialiseL(expectData);
+
+ //RBuf8 expectData2;
+ //CleanupClosePushL(expectData2); // PUSH
+ //TMockLtsyData1<TInt> mockData2(callId2);
+ //mockData2.SerialiseL(expectData2);
+
+ iMockLTSY.ExpectL(ECtsyPhoneTerminateAllCallsReq, expectData);
+ iMockLTSY.CompleteL(ECtsyPhoneTerminateAllCallsComp, KErrNone, 20);
+ TRequestStatus requestStatus;
+ TRequestStatus requestStatus2;
+ iPhone.TerminateAllCalls(requestStatus);
+ phone2.TerminateAllCalls(requestStatus2);
+
+ User::WaitForRequest(requestStatus);
+ ASSERT_EQUALS(KErrNone, requestStatus.Int());
+
+ User::WaitForRequest(requestStatus2);
+ ASSERT_EQUALS(KErrServerBusy, requestStatus2.Int());
+
+ AssertMockLtsyStatusL();
+
+ CleanupStack::PopAndDestroy(8, this); // expectData,
+ // call2, line2, call, line,
+ // phone2, telServer2, this
+ }
+
+/**
+@SYMTestCaseID BA-CTSY-CCON-MTAC-0005
+@SYMComponent telephony_ctsy
+@SYMTestCaseDesc Test support in CTSY for RMobilePhone::TerminateAllCalls with timeout.
+@SYMTestPriority High
+@SYMTestActions Invokes RMobilePhone::TerminateAllCalls and tests for timeout.
+@SYMTestExpectedResults Pass
+@SYMTestType CT
+*/
+void CCTsyCallControlFU::TestTerminateAllCalls0005L()
+ {
+ OpenEtelServerL(EUseExtendedError);
+ CleanupStack::PushL(TCleanupItem(Cleanup,this));
+ OpenPhoneL();
+
+ RBuf8 expectData;
+ CleanupClosePushL(expectData); // PUSH
+
+
+ // open new line and call for KMmTsyVoice1LineName
+ RLine line;
+ RCall call;
+ TInt errorCode = OpenNewLineLC(iPhone, line, KMmTsyVoice1LineName); // PUSH
+ ASSERT_EQUALS(KErrNone, errorCode);
+
+
+ // create new incoming call
+ TName incomingCallName;
+ TInt callId = 1;
+ errorCode = CreateIncomingCallL(line, callId, incomingCallName,
+ RMobilePhone::EVoiceService, RMobileCall::EStatusConnecting);
+
+ ASSERT_EQUALS(KErrNone, errorCode);
+
+ CleanupClosePushL(call); // PUSH
+ errorCode = call.OpenExistingCall(line, incomingCallName);
+ ASSERT_EQUALS(KErrNone, errorCode);
+ //-------------------------------------------------------------------------
+
+ TMockLtsyData1<TInt> mockData(callId);
+ mockData.SerialiseL(expectData);
+ //-------------------------------------------------------------------------
+ // Test A: Test timeout of RMobilePhone::TerminateAllCalls
+ //-------------------------------------------------------------------------
+
+ TRequestStatus requestStatus;
+ iMockLTSY.ExpectL(ECtsyPhoneTerminateAllCallsReq, expectData);
+ iPhone.TerminateAllCalls(requestStatus);
+ User::WaitForRequest(requestStatus);
+ AssertMockLtsyStatusL();
+ ASSERT_EQUALS(KErrTimedOut, requestStatus.Int());
+
+ CleanupStack::PopAndDestroy(4, this); // call, line, expectData, this
+ }
+
+/**
+@SYMTestCaseID BA-CTSY-CCON-MTACTC-0001
+@SYMComponent telephony_ctsy
+@SYMTestCaseDesc Test support in CTSY for RMobilePhone::TerminateActiveCalls When the call status is EStatusHold
+@SYMTestPriority High
+@SYMTestActions Invokes RMobilePhone::TerminateActiveCalls
+@SYMTestExpectedResults Pass
+@SYMTestType CT
+*/
+void CCTsyCallControlFU::TestTerminateActiveCalls0001L()
+ {
+ OpenEtelServerL(EUseExtendedError);
+ CleanupStack::PushL(TCleanupItem(Cleanup,this));
+ OpenPhoneL();
+
+ RBuf8 expectData;
+ CleanupClosePushL(expectData); // PUSH
+
+ TRequestStatus requestStatus;
+
+ //-----------------------------------------------------------------------
+ // TEST 0: with no active calls
+ //----------------------------------------------------------------------
+ iMockLTSY.ExpectL(ECtsyPhoneTerminateActiveCallsReq,KErrNone);
+ iMockLTSY.CompleteL(ECtsyPhoneTerminateActiveCallsComp, KErrNone);
+ iPhone.TerminateActiveCalls(requestStatus);
+ User::WaitForRequest(requestStatus);
+ ASSERT_EQUALS(KErrNone, requestStatus.Int());
+ AssertMockLtsyStatusL();
+
+ //-------------------------------------------------------------------------
+ // TEST A: failure to dispatch request to LTSY
+ //-------------------------------------------------------------------------
+
+ // open new line and call for KMmTsyVoice1LineName
+ RLine line;
+ RCall call;
+ TInt errorCode = OpenNewLineLC(iPhone, line, KMmTsyVoice1LineName); // PUSH
+ ASSERT_EQUALS(KErrNone, errorCode);
+
+ // create new incoming call
+ TName incomingCallName;
+ TInt callId = 1;
+ errorCode = CreateIncomingCallL(line, callId, incomingCallName,
+ RMobilePhone::EVoiceService, RMobileCall::EStatusHold);
+
+ ASSERT_EQUALS(KErrNone, errorCode);
+
+ CleanupClosePushL(call); // PUSH
+ errorCode = call.OpenExistingCall(line, incomingCallName);
+ ASSERT_EQUALS(KErrNone, errorCode);
+ //-------------------------------------------------------------------------
+
+ TMockLtsyData1<TInt> mockData(callId);
+ mockData.SerialiseL(expectData);
+ iMockLTSY.ExpectL(ECtsyPhoneTerminateActiveCallsReq, expectData, KErrNotSupported);
+ iPhone.TerminateActiveCalls(requestStatus);
+
+ User::WaitForRequest(requestStatus);
+ ASSERT_EQUALS(KErrNotSupported, requestStatus.Int());
+ AssertMockLtsyStatusL();
+
+
+
+ //-------------------------------------------------------------------------
+ // TEST B: failure on completion of pending request from LTSY->CTSY
+ //-------------------------------------------------------------------------
+ iMockLTSY.ExpectL(ECtsyPhoneTerminateActiveCallsReq, expectData);
+ iMockLTSY.CompleteL(ECtsyPhoneTerminateActiveCallsComp, KErrGeneral);
+
+ iPhone.TerminateActiveCalls(requestStatus);
+
+ User::WaitForRequest(requestStatus);
+ ASSERT_EQUALS(KErrGeneral, requestStatus.Int());
+ AssertMockLtsyStatusL();
+
+ //-------------------------------------------------------------------------
+ // TEST C: Successful completion request of
+ // RMobilePhone::TerminateActiveCalls.
+ //-------------------------------------------------------------------------
+
+ iMockLTSY.ExpectL(ECtsyPhoneTerminateActiveCallsReq, expectData);
+ iMockLTSY.CompleteL(ECtsyPhoneTerminateActiveCallsComp, KErrNone);
+
+ iPhone.TerminateActiveCalls(requestStatus);
+ User::WaitForRequest(requestStatus);
+ ASSERT_EQUALS(KErrNone, requestStatus.Int());
+ AssertMockLtsyStatusL();
+
+ //-------------------------------------------------------------------------
+ // TEST E: Unsolicited completion of RMobilePhone::TerminateActiveCalls
+ // from LTSY.
+ //-------------------------------------------------------------------------
+
+ TRequestStatus mockLtsyStatus;
+ iMockLTSY.NotifyTerminated(mockLtsyStatus);
+ iMockLTSY.CompleteL(ECtsyPhoneTerminateActiveCallsComp, KErrNone);
+ User::WaitForRequest(mockLtsyStatus);
+ ASSERT_EQUALS(KErrNone, mockLtsyStatus.Int());
+ AssertMockLtsyStatusL();
+
+ CleanupStack::PopAndDestroy(4, this); // call, line, expectData, this
+ }
+
+
+/**
+@SYMTestCaseID BA-CTSY-CCON-MTACTC-000B1
+@SYMComponent telephony_ctsy
+@SYMTestCaseDesc Test support in CTSY for RMobilePhone::TerminateActiveCalls When the call status is EStatusRinging
+@SYMTestPriority High
+@SYMTestActions Invokes RMobilePhone::TerminateActiveCalls
+@SYMTestExpectedResults Pass
+@SYMTestType CT
+*/
+void CCTsyCallControlFU::TestTerminateActiveCalls0001bL()
+ {
+ OpenEtelServerL(EUseExtendedError);
+ CleanupStack::PushL(TCleanupItem(Cleanup,this));
+ OpenPhoneL();
+
+ RBuf8 expectData;
+ CleanupClosePushL(expectData); // PUSH
+
+ TRequestStatus requestStatus;
+ // open new line and call for KMmTsyVoice1LineName
+ RLine line;
+ RCall call;
+ TInt errorCode = OpenNewLineLC(iPhone, line, KMmTsyVoice1LineName); // PUSH
+ ASSERT_EQUALS(KErrNone, errorCode);
+
+ // create new incoming call
+ TName incomingCallName;
+ TInt callId = 1;
+ errorCode = CreateIncomingCallL(line, callId, incomingCallName,
+ RMobilePhone::EVoiceService, RMobileCall::EStatusRinging);
+
+ ASSERT_EQUALS(KErrNone, errorCode);
+ CleanupClosePushL(call); // PUSH
+ errorCode = call.OpenExistingCall(line, incomingCallName);
+ ASSERT_EQUALS(KErrNone, errorCode);
+ iMockLTSY.ExpectL(ECtsyPhoneTerminateActiveCallsReq,KErrNone);
+ iMockLTSY.CompleteL(ECtsyPhoneTerminateActiveCallsComp, KErrNone);
+ iPhone.TerminateActiveCalls(requestStatus);
+ User::WaitForRequest(requestStatus);
+ ASSERT_EQUALS(KErrNone, requestStatus.Int());
+ AssertMockLtsyStatusL();
+
+ CleanupStack::PopAndDestroy(4, this); // call, line, expectData, this
+ }
+
+/**
+@SYMTestCaseID BA-CTSY-CCON-MTACTC-000C1
+@SYMComponent telephony_ctsy
+@SYMTestCaseDesc Test support in CTSY for RMobilePhone::TerminateActiveCalls When the call status is EStatusConnecting
+@SYMTestPriority High
+@SYMTestActions Invokes RMobilePhone::TerminateActiveCalls
+@SYMTestExpectedResults Pass
+@SYMTestType CT
+*/
+void CCTsyCallControlFU::TestTerminateActiveCalls0001cL()
+ {
+ OpenEtelServerL(EUseExtendedError);
+ CleanupStack::PushL(TCleanupItem(Cleanup,this));
+ OpenPhoneL();
+
+ RBuf8 expectData;
+ CleanupClosePushL(expectData); // PUSH
+
+ TRequestStatus requestStatus;
+ // open new line and call for KMmTsyVoice1LineName
+ RLine line;
+ TInt errorCode = OpenNewLineLC(iPhone, line, KMmTsyVoice1LineName); // PUSH
+ ASSERT_EQUALS(KErrNone, errorCode);
+
+ // create new incoming call
+ TName incomingCallName;
+ TInt callId = 1;
+ errorCode = CreateIncomingCallL(line, callId, incomingCallName,
+ RMobilePhone::EVoiceService, RMobileCall::EStatusConnecting);
+
+ ASSERT_EQUALS(KErrNone, errorCode);
+ RCall call;
+ CleanupClosePushL(call); // PUSH
+ errorCode = call.OpenExistingCall(line, incomingCallName);
+ ASSERT_EQUALS(KErrNone, errorCode);
+ iMockLTSY.ExpectL(ECtsyPhoneTerminateActiveCallsReq,KErrNone);
+ iMockLTSY.CompleteL(ECtsyPhoneTerminateActiveCallsComp, KErrNone);
+ iPhone.TerminateActiveCalls(requestStatus);
+ User::WaitForRequest(requestStatus);
+ ASSERT_EQUALS(KErrNone, requestStatus.Int());
+ AssertMockLtsyStatusL();
+
+ CleanupStack::PopAndDestroy(4, this); // call, line, expectData, this
+ }
+
+
+
+/**
+@SYMTestCaseID BA-CTSY-CCON-MTACTC-0002
+@SYMComponent telephony_ctsy
+@SYMTestCaseDesc Test support in CTSY for cancelling RMobilePhone::TerminateActiveCalls
+@SYMTestPriority High
+@SYMTestActions Invokes RMobilePhone::TerminateActiveCalls and cancels it
+@SYMTestExpectedResults Pass
+@SYMTestType CT
+*/
+void CCTsyCallControlFU::TestTerminateActiveCalls0002L()
+ {
+ OpenEtelServerL(EUseExtendedError);
+ CleanupStack::PushL(TCleanupItem(Cleanup,this));
+ OpenPhoneL();
+
+ RBuf8 expectData;
+ CleanupClosePushL(expectData); // PUSH
+
+ //-------------------------------------------------------------------------
+
+ // open new line and call for KMmTsyVoice1LineName
+ RLine line;
+ RCall call;
+ TInt errorCode = OpenNewLineLC(iPhone, line, KMmTsyVoice1LineName); // PUSH
+ ASSERT_EQUALS(KErrNone, errorCode);
+
+ // create new incoming call
+ TName incomingCallName;
+ TInt callId = 1;
+ errorCode = CreateIncomingCallL(line, callId, incomingCallName,
+ RMobilePhone::EVoiceService, RMobileCall::EStatusHold);
+
+ ASSERT_EQUALS(KErrNone, errorCode);
+
+ CleanupClosePushL(call); // PUSH
+ errorCode = call.OpenExistingCall(line, incomingCallName);
+ ASSERT_EQUALS(KErrNone, errorCode);
+ //-------------------------------------------------------------------------
+
+ //-------------------------------------------------------------------------
+ // Test A: cancelling of RMobilePhone::TerminateActiveCalls
+ //-------------------------------------------------------------------------
+
+ TMockLtsyData1<TInt> mockData(callId);
+ mockData.SerialiseL(expectData);
+
+ TRequestStatus mockLtsyStatus;
+ iMockLTSY.NotifyTerminated(mockLtsyStatus);
+
+ // Expect call down to LTSY for this IPC
+ iMockLTSY.ExpectL(ECtsyPhoneTerminateActiveCallsReq, expectData);
+
+ // Queue response to be delayed to give time for cancel to come through
+ // There is no interface for cancelling the simple TerminateActiveCalls request once passed to LTSY,
+ // however this test will still emulate the completion of the request which will finally return from LTSY regardless.
+
+ iMockLTSY.CompleteL(ECtsyPhoneTerminateActiveCallsComp, KErrNone, 10);
+
+ TRequestStatus requestStatus;
+ iPhone.TerminateActiveCalls(requestStatus);
+ iPhone.CancelAsyncRequest(EMobilePhoneTerminateActiveCalls);
+ User::WaitForRequest(requestStatus);
+ INFO_PRINTF2(_L("requestStatus.Int() %d"),(requestStatus.Int()));
+ ASSERT_EQUALS(KErrNone, requestStatus.Int());
+
+ AssertMockLtsyStatusL();
+
+ User::WaitForRequest(mockLtsyStatus);
+ INFO_PRINTF2(_L("mockLtsyStatus.Int() %d"),(mockLtsyStatus.Int()));
+
+ AssertMockLtsyStatusL();
+
+ CleanupStack::PopAndDestroy(4, this); // call, line, expectData, this
+ }
+
+/**
+@SYMTestCaseID BA-CTSY-CCON-MTACTC-0004
+@SYMComponent telephony_ctsy
+@SYMTestCaseDesc Test support in CTSY for multiple client requests of RMobilePhone::TerminateActiveCalls
+@SYMTestPriority High
+@SYMTestActions Invokes RMobilePhone::TerminateActiveCalls on multiple clients
+@SYMTestExpectedResults Pass
+@SYMTestType CT
+*/
+void CCTsyCallControlFU::TestTerminateActiveCalls0004L()
+ {
+
+ 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(iTelServer,KMmTsyPhoneName);
+ ASSERT_EQUALS(KErrNone, ret);
+ CleanupClosePushL(phone2);
+
+ //
+ // set up line and call for first client
+
+ RLine line;
+ RCall call;
+ TInt errorCode = OpenNewLineLC(iPhone, line, KMmTsyVoice1LineName); // PUSH
+ ASSERT_EQUALS(KErrNone, errorCode);
+
+ // create new incoming call
+ TName incomingCallName;
+ TInt callId = 1;
+ errorCode = CreateIncomingCallL(line, callId, incomingCallName,
+ RMobilePhone::EVoiceService, RMobileCall::EStatusHold);
+
+ ASSERT_EQUALS(KErrNone, errorCode);
+
+ CleanupClosePushL(call); // PUSH
+ errorCode = call.OpenExistingCall(line, incomingCallName);
+ ASSERT_EQUALS(KErrNone, errorCode);
+
+ //
+ // set up call for second client
+
+ RLine line2;
+ RCall call2;
+ errorCode = OpenNewLineLC(phone2, line2, KMmTsyVoice1LineName); // PUSH
+ ASSERT_EQUALS(KErrNone, errorCode);
+
+ // create new incoming call
+ TName incomingCallName2;
+ TInt callId2 = 2;
+ errorCode = CreateIncomingCallL(line2, callId2, incomingCallName2,
+ RMobilePhone::EVoiceService, RMobileCall::EStatusHold);
+
+ ASSERT_EQUALS(KErrNone, errorCode);
+
+ CleanupClosePushL(call2); // PUSH
+ errorCode = call2.OpenExistingCall(line2, incomingCallName2);
+ ASSERT_EQUALS(KErrNone, errorCode);
+
+ // let's start testing...
+
+ RBuf8 expectData;
+ CleanupClosePushL(expectData); // PUSH
+ TMockLtsyData1<TInt> mockData(callId);
+ mockData.SerialiseL(expectData);
+
+ iMockLTSY.ExpectL(ECtsyPhoneTerminateActiveCallsReq, expectData);
+ iMockLTSY.CompleteL(ECtsyPhoneTerminateActiveCallsComp, KErrNone, 20);
+ TRequestStatus requestStatus;
+ TRequestStatus requestStatus2;
+ iPhone.TerminateActiveCalls(requestStatus);
+ phone2.TerminateActiveCalls(requestStatus2);
+
+ User::WaitForRequest(requestStatus);
+ ASSERT_EQUALS(KErrNone, requestStatus.Int());
+
+ User::WaitForRequest(requestStatus2);
+ ASSERT_EQUALS(KErrServerBusy, requestStatus2.Int());
+
+ AssertMockLtsyStatusL();
+
+ CleanupStack::PopAndDestroy(8, this); // expectData,
+ // call2, line2, call, line,
+ // phone2, telServer2, this
+ }
+
+/**
+@SYMTestCaseID BA-CTSY-CCON-MTACTC-0005
+@SYMComponent telephony_ctsy
+@SYMTestCaseDesc Test support in CTSY for RMobilePhone::TerminateActiveCalls with timeout.
+@SYMTestPriority High
+@SYMTestActions Invokes RMobilePhone::TerminateActiveCalls and tests for timeout.
+@SYMTestExpectedResults Pass
+@SYMTestType CT
+*/
+void CCTsyCallControlFU::TestTerminateActiveCalls0005L()
+ {
+ OpenEtelServerL(EUseExtendedError);
+ CleanupStack::PushL(TCleanupItem(Cleanup,this));
+ OpenPhoneL();
+
+ RBuf8 expectData;
+ CleanupClosePushL(expectData); // PUSH
+
+
+ // open new line and call for KMmTsyVoice1LineName
+ RLine line;
+ RCall call;
+ TInt errorCode = OpenNewLineLC(iPhone, line, KMmTsyVoice1LineName); // PUSH
+ ASSERT_EQUALS(KErrNone, errorCode);
+
+
+ // create new incoming call
+ TName incomingCallName;
+ TInt callId = 1;
+ errorCode = CreateIncomingCallL(line, callId, incomingCallName,
+ RMobilePhone::EVoiceService, RMobileCall::EStatusHold);
+
+ ASSERT_EQUALS(KErrNone, errorCode);
+
+ CleanupClosePushL(call); // PUSH
+ errorCode = call.OpenExistingCall(line, incomingCallName);
+ ASSERT_EQUALS(KErrNone, errorCode);
+ //-------------------------------------------------------------------------
+
+ TMockLtsyData1<TInt> mockData(callId);
+ mockData.SerialiseL(expectData);
+ //-------------------------------------------------------------------------
+ // Test A: Test timeout of RMobilePhone::TerminateActiveCalls
+ //-------------------------------------------------------------------------
+
+ TRequestStatus requestStatus;
+ iMockLTSY.ExpectL(ECtsyPhoneTerminateActiveCallsReq, expectData);
+ iPhone.TerminateActiveCalls(requestStatus);
+ User::WaitForRequest(requestStatus);
+ AssertMockLtsyStatusL();
+ ASSERT_EQUALS(KErrTimedOut, requestStatus.Int());
+
+ CleanupStack::PopAndDestroy(4, this); // call, line, expectData, this
+ }
+
+/**
+@SYMTestCaseID BA-CTSY-CCON-MSICT-0001
+@SYMComponent telephony_ctsy
+@SYMTestCaseDesc Test support in CTSY for RMobilePhone::SetIncomingCallType
+@SYMTestPriority High
+@SYMTestActions Invokes RMobilePhone::SetIncomingCallType
+@SYMTestExpectedResults Pass
+@SYMTestType CT
+*/
+void CCTsyCallControlFU::TestSetIncomingCallType0001L()
+ {
+
+ OpenEtelServerL(EUseExtendedError);
+ CleanupStack::PushL(TCleanupItem(Cleanup,this));
+ OpenPhoneL();
+
+ TRequestStatus requestStatus;
+
+ RMobilePhone::TMobilePhoneIncomingCallType callType = RMobilePhone::EIncomingTypeNotSpecified;
+
+ RMobileCall::TMobileDataCallParamsV1 dataCallParamsV1;
+ TPckg<RMobileCall::TMobileDataCallParamsV1> dataCallParamsV1Pckg(dataCallParamsV1);
+
+ //-------------------------------------------------------------------------
+ // Test API is not supported
+ //-------------------------------------------------------------------------
+
+ iPhone.SetIncomingCallType(requestStatus, callType, dataCallParamsV1Pckg);
+
+ User::WaitForRequest(requestStatus);
+ AssertMockLtsyStatusL();
+ ASSERT_EQUALS(KErrNotSupported, requestStatus.Int());
+
+ AssertMockLtsyStatusL();
+ CleanupStack::PopAndDestroy(1, this); // this
+
+ }
+
+
+/**
+@SYMTestCaseID BA-CTSY-CCON-CAICI-0001
+@SYMComponent telephony_ctsy
+@SYMTestCaseDesc Test support in CTSY for RMobileCall::AnswerIncomingCallISV for voice calls
+@SYMTestPriority High
+@SYMTestActions Invokes RMobileCall::AnswerIncomingCallISV for voice calls
+@SYMTestExpectedResults Pass
+@SYMTestType CT
+*/
+void CCTsyCallControlFU::TestAnswerIncomingCallISV0001L()
+ {
+
+ OpenEtelServerL(EUseExtendedError);
+ CleanupStack::PushL(TCleanupItem(Cleanup,this));
+ OpenPhoneL();
+
+ RBuf8 expectData;
+ CleanupClosePushL(expectData);
+
+ RBuf8 completeData;
+ CleanupClosePushL(completeData);
+
+ RLine line;
+ RMobileCall call;
+ CleanupClosePushL(call);
+
+ TInt errorCode = KErrNone;
+ TInt callId = 1;
+ TName incomingCallName;
+ TRequestStatus requestStatus;
+ TRequestStatus requestNotify;
+
+ // open new line and call for KMmTsyVoice1LineName
+ errorCode = OpenNewLineLC(iPhone, line, KMmTsyVoice1LineName);
+ ASSERT_EQUALS(KErrNone, errorCode);
+
+ RMobileCall::TMobileCallStatus mobileCallStatus = RMobileCall::EStatusRinging;
+ RMobilePhone::TMobileService mobileService = RMobilePhone::EVoiceService;
+
+ TMockLtsyCallData0 mockData0(callId, mobileService);
+
+ RMobileCall::TEtel3rdPartyMobileCallParamsV1 callParams;
+ TPckg<RMobileCall::TEtel3rdPartyMobileCallParamsV1> callParamsPckg(callParams);
+
+ //-------------------------------------------------------------------------
+ // TEST A: failure to dispatch request to LTSY
+ //-------------------------------------------------------------------------
+
+ //-------------------------------------------------------------------------
+ // create new incoming call
+ errorCode = CreateIncomingCallL(line, callId, incomingCallName,
+ mobileService, mobileCallStatus);
+ ASSERT_EQUALS(KErrNone, errorCode);
+ AssertMockLtsyStatusL();
+
+ errorCode = call.OpenExistingCall(line, incomingCallName);
+ ASSERT_EQUALS(KErrNone, errorCode);
+ AssertMockLtsyStatusL();
+ //-------------------------------------------------------------------------
+
+ expectData.Close();
+ mockData0.SerialiseL(expectData);
+ iMockLTSY.ExpectL(EMobileCallAnswerISV, expectData, KErrNotSupported);
+ call.AnswerIncomingCallISV(requestStatus, callParamsPckg);
+
+ User::WaitForRequest(requestStatus);
+ AssertMockLtsyStatusL();
+ ASSERT_EQUALS(KErrNotSupported, requestStatus.Int());
+
+ // close incoming call
+ CloseIncomingCallL(call, callId, mobileService);
+
+ //-------------------------------------------------------------------------
+ // TEST B: failure on completion of pending request from LTSY->CTSY
+ //-------------------------------------------------------------------------
+
+ //-------------------------------------------------------------------------
+ // create new incoming call
+ errorCode = CreateIncomingCallL(line, callId, incomingCallName,
+ mobileService, mobileCallStatus);
+ ASSERT_EQUALS(KErrNone, errorCode);
+ AssertMockLtsyStatusL();
+
+ errorCode = call.OpenExistingCall(line, incomingCallName);
+ ASSERT_EQUALS(KErrNone, errorCode);
+ AssertMockLtsyStatusL();
+ //-------------------------------------------------------------------------
+
+ expectData.Close();
+ mockData0.SerialiseL(expectData);
+ iMockLTSY.ExpectL(EMobileCallAnswerISV, expectData);
+ iMockLTSY.CompleteL(EMobileCallAnswerISV, KErrGeneral, expectData);
+ call.AnswerIncomingCallISV(requestStatus, callParamsPckg);
+
+ User::WaitForRequest(requestStatus);
+ AssertMockLtsyStatusL();
+ ASSERT_EQUALS(KErrGeneral, requestStatus.Int());
+
+ // close incoming call
+ CloseIncomingCallL(call, callId, mobileService);
+
+ //-------------------------------------------------------------------------
+ // TEST C: Successful completion request of
+ // RMobileCall::AnswerIncomingCallISV when result is not cached.
+ //-------------------------------------------------------------------------
+
+ //-------------------------------------------------------------------------
+ // create new incoming call
+ errorCode = CreateIncomingCallL(line, callId, incomingCallName,
+ mobileService, mobileCallStatus);
+ ASSERT_EQUALS(KErrNone, errorCode);
+ AssertMockLtsyStatusL();
+
+ errorCode = call.OpenExistingCall(line, incomingCallName);
+ ASSERT_EQUALS(KErrNone, errorCode);
+ AssertMockLtsyStatusL();
+ //-------------------------------------------------------------------------
+
+ expectData.Close();
+ mockData0.SerialiseL(expectData);
+ iMockLTSY.ExpectL(EMobileCallAnswerISV, expectData);
+ iMockLTSY.CompleteL(EMobileCallAnswerISV, KErrNone, expectData);
+ call.AnswerIncomingCallISV(requestStatus, callParamsPckg);
+
+ User::WaitForRequest(requestStatus);
+ AssertMockLtsyStatusL();
+ ASSERT_EQUALS(KErrNone, requestStatus.Int());
+
+ // close incoming call
+ CloseIncomingCallL(call, callId, mobileService);
+
+ //-------------------------------------------------------------------------
+ // TEST E: Unsolicited completion of RMobileCall::AnswerIncomingCallISV
+ // from LTSY.
+ //-------------------------------------------------------------------------
+
+ TRequestStatus mockLtsyStatus;
+
+ iMockLTSY.NotifyTerminated(mockLtsyStatus);
+ expectData.Close();
+ mockData0.SerialiseL(expectData);
+ iMockLTSY.CompleteL(EMobileCallAnswerISV, KErrNone, expectData);
+ User::WaitForRequest(mockLtsyStatus);
+ AssertMockLtsyStatusL();
+ ASSERT_EQUALS(KErrNone, mockLtsyStatus.Int());
+
+ //-------------------------------------------------------------------------
+ // TEST to increase coverage
+ //-------------------------------------------------------------------------
+
+ RMobileCall call2;
+ CleanupClosePushL(call2);
+ TRequestStatus requestStatus2;
+
+ //-------------------------------------------------------------------------
+ // create new incoming call
+ errorCode = CreateIncomingCallL(line, callId, incomingCallName,
+ mobileService, mobileCallStatus);
+ ASSERT_EQUALS(KErrNone, errorCode);
+ AssertMockLtsyStatusL();
+
+ errorCode = call.OpenExistingCall(line, incomingCallName);
+ ASSERT_EQUALS(KErrNone, errorCode);
+ AssertMockLtsyStatusL();
+ //-------------------------------------------------------------------------
+
+ //-------------------------------------------------------------------------
+ errorCode = call2.OpenExistingCall(line, incomingCallName);
+ ASSERT_EQUALS(KErrNone, errorCode);
+ AssertMockLtsyStatusL();
+ //-------------------------------------------------------------------------
+
+ expectData.Close();
+ mockData0.SerialiseL(expectData);
+ iMockLTSY.ExpectL(EMobileCallAnswerISV, expectData);
+ iMockLTSY.CompleteL(EMobileCallAnswerISV, KErrNone, expectData);
+ call.AnswerIncomingCallISV(requestStatus, callParamsPckg);
+
+ call2.AnswerIncomingCallISV(requestStatus2, callParamsPckg);
+
+ User::WaitForRequest(requestStatus);
+ ASSERT_EQUALS(KErrNone, requestStatus.Int());
+
+ User::WaitForRequest(requestStatus2);
+ AssertMockLtsyStatusL();
+ ASSERT_EQUALS(KErrServerBusy, requestStatus2.Int());
+
+ call.Close();
+ CloseIncomingCallL(call2, callId, mobileService);
+
+ //-------------------------------------------------------------------------
+ // TEST : to increase CMmVoiceCallTsy::AnswerIncomingCall coverage
+ // covers "else if( activeCall &&
+ // ( !( KETelExt3rdPartyV1 == activeCall->GetExtensionId() ) &&
+ // ( KETelExt3rdPartyV1 == extensionId ) ) )" condition
+ //-------------------------------------------------------------------------
+
+ mobileCallStatus = RMobileCall::EStatusConnected;
+
+ //-------------------------------------------------------------------------
+ // create new incoming call1
+ errorCode = CreateIncomingCallL(line, callId, incomingCallName,
+ mobileService, mobileCallStatus);
+ ASSERT_EQUALS(KErrNone, errorCode);
+ AssertMockLtsyStatusL();
+
+ errorCode = call.OpenExistingCall(line, incomingCallName);
+ ASSERT_EQUALS(KErrNone, errorCode);
+ AssertMockLtsyStatusL();
+ //-------------------------------------------------------------------------
+
+ call.AnswerIncomingCallISV(requestStatus, callParamsPckg);
+
+ User::WaitForRequest(requestStatus);
+ ASSERT_EQUALS(KErrNotSupported, requestStatus.Int());
+
+ AssertMockLtsyStatusL();
+ CleanupStack::PopAndDestroy(6, this); // expectData, completeData, call, line, call2
+
+ }
+
+
+/**
+@SYMTestCaseID BA-CTSY-CCON-CAICI-0002
+@SYMComponent telephony_ctsy
+@SYMTestCaseDesc Test support in CTSY for cancelling of RMobileCall::AnswerIncomingCallISV for voice calls
+@SYMTestPriority High
+@SYMTestActions Invokes cancelling of RMobileCall::AnswerIncomingCallISV for voice calls
+@SYMTestExpectedResults Pass
+@SYMTestType CT
+*/
+void CCTsyCallControlFU::TestAnswerIncomingCallISV0002L()
+ {
+ OpenEtelServerL(EUseExtendedError);
+ CleanupStack::PushL(TCleanupItem(Cleanup,this));
+ OpenPhoneL();
+
+ RBuf8 expectData;
+ CleanupClosePushL(expectData);
+
+ RBuf8 completeData;
+ CleanupClosePushL(completeData);
+
+ RLine line;
+ RMobileCall call;
+ CleanupClosePushL(call);
+
+ TInt errorCode = KErrNone;
+ TInt callId = 1;
+ TName incomingCallName;
+
+ TRequestStatus requestStatus;
+ TRequestStatus mockLtsyStatus;
+
+ RMobileCall::TMobileCallStatus mobileCallStatus = RMobileCall::EStatusRinging;
+ RMobilePhone::TMobileService mobileService = RMobilePhone::EVoiceService;
+
+ TMockLtsyCallData0 mockData0(callId, mobileService);
+
+ RMobileCall::TEtel3rdPartyMobileCallParamsV1 callParams;
+ TPckg<RMobileCall::TEtel3rdPartyMobileCallParamsV1> callParamsPckg(callParams);
+
+ //-------------------------------------------------------------------------
+ // Test cancelling of RCall::AnswerIncomingCallISV
+ //-------------------------------------------------------------------------
+
+ // open new line for KMmTsyVoice1LineName
+ errorCode = OpenNewLineLC(iPhone, line, KMmTsyVoice1LineName);
+ ASSERT_EQUALS(KErrNone, errorCode);
+
+ //-------------------------------------------------------------------------
+ // create new incoming call
+ errorCode = CreateIncomingCallL(line, callId, incomingCallName,
+ mobileService, mobileCallStatus);
+ ASSERT_EQUALS(KErrNone, errorCode);
+ AssertMockLtsyStatusL();
+
+ errorCode = call.OpenExistingCall(line, incomingCallName);
+ ASSERT_EQUALS(KErrNone, errorCode);
+ AssertMockLtsyStatusL();
+ //-------------------------------------------------------------------------
+
+ iMockLTSY.NotifyTerminated(mockLtsyStatus);
+
+ expectData.Close();
+ mockData0.SerialiseL(expectData);
+ iMockLTSY.ExpectL(EMobileCallAnswerISV, expectData);
+
+ call.AnswerIncomingCallISV(requestStatus, callParamsPckg);
+
+ TInt hangUpCause = KErrGsmBusyUserRequest;
+ TBool autoStChangeDisable = ETrue;
+ TMockLtsyCallData2<TInt, TBool> mockData2(callId, mobileService,
+ hangUpCause,
+ autoStChangeDisable);
+
+ expectData.Close();
+ mockData2.SerialiseL(expectData);
+ iMockLTSY.ExpectL(EEtelCallHangUp, expectData);
+
+ mockData0.SerialiseL(completeData);
+ iMockLTSY.CompleteL(EEtelCallHangUp, KErrNone, completeData);
+
+ call.CancelAsyncRequest(EMobileCallAnswerISV);
+
+ User::WaitForRequest(requestStatus);
+ AssertMockLtsyStatusL();
+ ASSERT_EQUALS(KErrCancel, requestStatus.Int());
+
+ User::WaitForRequest(mockLtsyStatus);
+
+ CleanupStack::PopAndDestroy(5); // expectData, completeData, this, call, line
+ }
+
+
+/**
+@SYMTestCaseID BA-CTSY-CCON-CAICI-0004
+@SYMComponent telephony_ctsy
+@SYMTestCaseDesc Test support in CTSY for multiple client requests to RMobileCall::AnswerIncomingCallISV for voice calls
+@SYMTestPriority High
+@SYMTestActions Invokes multiple client requests to RMobileCall::AnswerIncomingCallISV for voice calls
+@SYMTestExpectedResults Pass
+@SYMTestType CT
+*/
+void CCTsyCallControlFU::TestAnswerIncomingCallISV0004L()
+ {
+ OpenEtelServerL(EUseExtendedError);
+ CleanupStack::PushL(TCleanupItem(Cleanup,this));
+ OpenPhoneL();
+
+ RBuf8 expectData;
+ CleanupClosePushL(expectData);
+
+ // Open second client
+ RTelServer telServer2;
+ TInt ret = telServer2.Connect();
+ ASSERT_EQUALS(KErrNone, ret);
+ CleanupClosePushL(telServer2);
+
+ RMobilePhone phone2;
+ ret = phone2.Open(iTelServer,KMmTsyPhoneName);
+ ASSERT_EQUALS(KErrNone, ret);
+ CleanupClosePushL(phone2);
+
+ RLine line1;
+ RLine line2;
+
+ RMobileCall call1;
+ CleanupClosePushL(call1);
+
+ RMobileCall call2;
+ CleanupClosePushL(call2);
+
+ TInt errorCode = KErrNone;
+
+ TInt callId1 = 1;
+ TName incomingCallName1;
+
+ TInt callId2 = 2;
+ TName incomingCallName2;
+
+ TRequestStatus requestStatus1;
+ TRequestStatus requestStatus2;
+
+ // open new line1 for KMmTsyVoice1LineName
+ errorCode = OpenNewLineLC(iPhone, line1, KMmTsyVoice1LineName);
+ ASSERT_EQUALS(KErrNone, errorCode);
+
+ // open new line2 for KMmTsyVoice1LineName
+ errorCode = OpenNewLineLC(phone2, line2, KMmTsyVoice1LineName);
+ ASSERT_EQUALS(KErrNone, errorCode);
+
+ RMobileCall::TMobileCallStatus mobileCallStatus = RMobileCall::EStatusRinging;
+ RMobilePhone::TMobileService mobileService = RMobilePhone::EVoiceService;
+
+ //-------------------------------------------------------------------------
+ // Test A: Test multiple clients requesting RCall::AnswerIncomingCall
+ //-------------------------------------------------------------------------
+
+ //-------------------------------------------------------------------------
+ // create new incoming call1
+ errorCode = CreateIncomingCallL(line1, callId1, incomingCallName1,
+ mobileService, mobileCallStatus);
+ ASSERT_EQUALS(KErrNone, errorCode);
+ AssertMockLtsyStatusL();
+
+ errorCode = call1.OpenExistingCall(line1, incomingCallName1);
+ ASSERT_EQUALS(KErrNone, errorCode);
+ AssertMockLtsyStatusL();
+ //-------------------------------------------------------------------------
+
+ //-------------------------------------------------------------------------
+ // create new incoming call2
+ errorCode = CreateIncomingCallL(line2, callId2, incomingCallName2,
+ mobileService, mobileCallStatus);
+ ASSERT_EQUALS(KErrNone, errorCode);
+ AssertMockLtsyStatusL();
+
+ errorCode = call2.OpenExistingCall(line2, incomingCallName2);
+ ASSERT_EQUALS(KErrNone, errorCode);
+ AssertMockLtsyStatusL();
+ //-------------------------------------------------------------------------
+
+ TMockLtsyCallData0 mockData01(callId1, mobileService);
+ expectData.Close();
+ mockData01.SerialiseL(expectData);
+ iMockLTSY.ExpectL(EMobileCallAnswerISV, expectData);
+ iMockLTSY.CompleteL(EMobileCallAnswerISV, KErrNone, expectData);
+
+ RMobileCall::TEtel3rdPartyMobileCallParamsV1 callParamsV1;
+ TPckg<RMobileCall::TEtel3rdPartyMobileCallParamsV1> mmParamsPckgV1(callParamsV1);
+ call1.AnswerIncomingCallISV(requestStatus1, mmParamsPckgV1);
+
+ TMockLtsyCallData0 mockData02(callId2, mobileService);
+ expectData.Close();
+ mockData02.SerialiseL(expectData);
+ iMockLTSY.ExpectL(EMobileCallAnswerISV, expectData);
+ iMockLTSY.CompleteL(EMobileCallAnswerISV, KErrNone, expectData);
+
+ call2.AnswerIncomingCallISV(requestStatus2, mmParamsPckgV1);
+
+ User::WaitForRequest(requestStatus1);
+ AssertMockLtsyStatusL();
+ ASSERT_EQUALS(KErrNone, requestStatus1.Int());
+
+ User::WaitForRequest(requestStatus2);
+ AssertMockLtsyStatusL();
+ ASSERT_EQUALS(KErrNone, requestStatus2.Int());
+
+ // Done !
+ CleanupStack::PopAndDestroy(4); // line1, line2, call1, call2
+ CleanupStack::PopAndDestroy(4, this); // phone2, telServer2, expectData, this
+ }
+
+
+/**
+@SYMTestCaseID BA-CTSY-CCON-CAICI-0005
+@SYMComponent telephony_ctsy
+@SYMTestCaseDesc Test support in CTSY for RMobileCall::AnswerIncomingCallISV with timeout for voice calls
+@SYMTestPriority High
+@SYMTestActions Invokes RMobileCall::AnswerIncomingCallISV and tests for timeout for voice calls
+@SYMTestExpectedResults Pass
+@SYMTestType CT
+*/
+void CCTsyCallControlFU::TestAnswerIncomingCallISV0005L()
+ {
+ OpenEtelServerL(EUseExtendedError);
+ CleanupStack::PushL(TCleanupItem(Cleanup,this));
+ OpenPhoneL();
+
+ RBuf8 expectData;
+ CleanupClosePushL(expectData);
+
+ RLine line;
+ RMobileCall call;
+ CleanupClosePushL(call);
+
+ TInt errorCode = KErrNone;
+ TInt callId = 1;
+ TName incomingCallName;
+
+ TRequestStatus requestStatus;
+ TRequestStatus mockLtsyStatus;
+
+ // open new line for KMmTsyVoice1LineName
+ errorCode = OpenNewLineLC(iPhone, line, KMmTsyVoice1LineName);
+ ASSERT_EQUALS(KErrNone, errorCode);
+
+ RMobileCall::TMobileCallStatus mobileCallStatus = RMobileCall::EStatusRinging;
+ RMobilePhone::TMobileService mobileService = RMobilePhone::EVoiceService;
+
+ //-------------------------------------------------------------------------
+ // Test A: Test timeout of RMobileCall::AnswerIncomingCallISV
+ //-------------------------------------------------------------------------
+
+ //-------------------------------------------------------------------------
+ // create new incoming call
+ errorCode = CreateIncomingCallL(line, callId, incomingCallName,
+ mobileService, mobileCallStatus);
+ ASSERT_EQUALS(KErrNone, errorCode);
+ AssertMockLtsyStatusL();
+
+ errorCode = call.OpenExistingCall(line, incomingCallName);
+ ASSERT_EQUALS(KErrNone, errorCode);
+ AssertMockLtsyStatusL();
+ //-------------------------------------------------------------------------
+
+ TMockLtsyCallData0 mockData0(callId, mobileService);
+ expectData.Close();
+ mockData0.SerialiseL(expectData);
+ iMockLTSY.ExpectL(EMobileCallAnswerISV, expectData);
+
+ RMobileCall::TEtel3rdPartyMobileCallParamsV1 callParamsV1;
+ TPckg<RMobileCall::TEtel3rdPartyMobileCallParamsV1> mmParamsPckgV1(callParamsV1);
+ call.AnswerIncomingCallISV(requestStatus, mmParamsPckgV1);
+
+ User::WaitForRequest(requestStatus);
+ AssertMockLtsyStatusL();
+ ASSERT_EQUALS(KErrTimedOut, requestStatus.Int());
+
+ CleanupStack::PopAndDestroy(4, this); // expectData, this, line, call
+ }
+
+
+/**
+@SYMTestCaseID BA-CTSY-CCON-CAICI-0006
+@SYMComponent telephony_ctsy
+@SYMTestCaseDesc Test support in CTSY for RMobileCall::AnswerIncomingCallISV for data calls
+@SYMTestPriority High
+@SYMTestActions Invokes RMobileCall::AnswerIncomingCallISV for data calls
+@SYMTestExpectedResults Pass
+@SYMTestType CT
+*/
+void CCTsyCallControlFU::TestAnswerIncomingCallISV0006L()
+ {
+ OpenEtelServerL(EUseExtendedError);
+ CleanupStack::PushL(TCleanupItem(Cleanup,this));
+ OpenPhoneL();
+
+ RBuf8 expectData;
+ CleanupClosePushL(expectData);
+
+ RLine line;
+ RMobileCall call;
+ CleanupClosePushL(call);
+
+ TInt errorCode = KErrNone;
+ TInt callId = 1;
+ TName incomingCallName;
+
+ TRequestStatus requestStatus;
+ TRequestStatus mockLtsyStatus;
+
+ // open new line for KMmTsyDataLineName
+ errorCode = OpenNewLineLC(iPhone, line, KMmTsyDataLineName);
+ ASSERT_EQUALS(KErrNone, errorCode);
+
+ RMobilePhone::TMobileService mobileService = RMobilePhone::ECircuitDataService;
+ RMobileCall::TMobileCallStatus mobileCallStatus = RMobileCall::EStatusRinging;
+
+ //-------------------------------------------------------------------------
+ // TEST A: failure to dispatch request to LTSY
+ //-------------------------------------------------------------------------
+
+ //-------------------------------------------------------------------------
+ // create new incoming call
+ errorCode = CreateIncomingCallL(line, callId, incomingCallName,
+ mobileService, mobileCallStatus);
+ ASSERT_EQUALS(KErrNone, errorCode);
+
+ errorCode = call.OpenExistingCall(line, incomingCallName);
+ ASSERT_EQUALS(KErrNone, errorCode);
+ //-------------------------------------------------------------------------
+
+ RMobileCall::TEtel3rdPartyMobileCallParamsV1 callParamsV1;
+ TPckg<RMobileCall::TEtel3rdPartyMobileCallParamsV1> mmParamsPckgV1(callParamsV1);
+ call.AnswerIncomingCallISV(requestStatus, mmParamsPckgV1);
+
+ User::WaitForRequest(requestStatus);
+ ASSERT_EQUALS(KErrNotSupported, requestStatus.Int());
+
+ AssertMockLtsyStatusL();
+ CleanupStack::PopAndDestroy(4, this); // expectData, this, line, call
+
+ }
+
+/**
+@SYMTestCaseID BA-CTSY-CCON-CAICI-00011
+@SYMComponent telephony_ctsy
+@SYMTestCaseDesc Test support in CTSY for RMobileCall::AnswerIncomingCallISV for fax calls
+@SYMTestPriority High
+@SYMTestActions Invokes RMobileCall::AnswerIncomingCallISV for fax calls
+@SYMTestExpectedResults Pass
+@SYMTestType CT
+*/
+void CCTsyCallControlFU::TestAnswerIncomingCallISV00011L()
+ {
+
+ OpenEtelServerL(EUseExtendedError);
+ CleanupStack::PushL(TCleanupItem(Cleanup,this));
+ OpenPhoneL();
+
+ RBuf8 expectData;
+ CleanupClosePushL(expectData);
+
+ RLine line;
+ RMobileCall call;
+ CleanupClosePushL(call);
+
+ TInt errorCode = KErrNone;
+ TInt callId = 1;
+ TName incomingCallName;
+
+ TRequestStatus requestStatus;
+ TRequestStatus mockLtsyStatus;
+
+ // open new line for KMmTsyFaxLineName
+ errorCode = OpenNewLineLC(iPhone, line, KMmTsyFaxLineName);
+ ASSERT_EQUALS(KErrNone, errorCode);
+
+ RMobilePhone::TMobileService mobileService = RMobilePhone::EFaxService;
+ RMobileCall::TMobileCallStatus mobileCallStatus = RMobileCall::EStatusRinging;
+
+ RMobileCall::TEtel3rdPartyMobileCallParamsV1 callParamsV1;
+ TPckg<RMobileCall::TEtel3rdPartyMobileCallParamsV1> mmParamsPckgV1(callParamsV1);
+ TMockLtsyCallData0 mockData0(callId, mobileService);
+
+ //-------------------------------------------------------------------------
+ // TEST A: failure to dispatch request to LTSY
+ //-------------------------------------------------------------------------
+
+ //-------------------------------------------------------------------------
+ // create new incoming call
+ errorCode = CreateIncomingCallL(line, callId, incomingCallName,
+ mobileService, mobileCallStatus);
+ ASSERT_EQUALS(KErrNone, errorCode);
+
+ errorCode = call.OpenExistingCall(line, incomingCallName);
+ ASSERT_EQUALS(KErrNone, errorCode);
+ //-------------------------------------------------------------------------
+ expectData.Close();
+ mockData0.SerialiseL(expectData);
+ call.AnswerIncomingCallISV(requestStatus, mmParamsPckgV1);
+
+ User::WaitForRequest(requestStatus);
+ ASSERT_EQUALS(KErrNotSupported, requestStatus.Int());
+
+ AssertMockLtsyStatusL();
+ CleanupStack::PopAndDestroy(4, this); // expectData, this, call, line
+
+ }
+
+/**
+@SYMTestCaseID BA-CTSY-CCON-CDI-0001
+@SYMComponent telephony_ctsy
+@SYMTestCaseDesc Test support in CTSY for RMobileCall::DialISV for voice calls
+@SYMTestPriority High
+@SYMTestActions Invokes RMobileCall::DialISV for voice calls
+@SYMTestExpectedResults Pass
+@SYMTestType CT
+*/
+void CCTsyCallControlFU::TestDialISV0001L()
+ {
+ OpenEtelServerL(EUseExtendedError);
+ CleanupStack::PushL(TCleanupItem(Cleanup,this));
+ OpenPhoneL();
+
+ RBuf8 expectData;
+ CleanupClosePushL(expectData);
+
+ RBuf8 completeData;
+ CleanupClosePushL(completeData);
+
+ RMobileLine line;
+ RMobileCall call;
+
+ TInt errorCode = KErrNone;
+ TRequestStatus requestStatus;
+ TRequestStatus mockLtsyStatus;
+
+ // open new line for KMmTsyVoice1LineName
+ errorCode = line.Open(iPhone, KMmTsyVoice1LineName);
+ CleanupClosePushL(line);
+ ASSERT_EQUALS(KErrNone, errorCode);
+
+ _LIT(KDoubleColon, "::");
+
+ TName name;
+ name = KMmTsyPhoneName;
+ name.Append(KDoubleColon);
+ name.Append(KMmTsyVoice1LineName);
+ name.Append(KDoubleColon);
+
+ _LIT(KPhoneNumber, "101632960000");
+
+ TInt callId = 1;
+ RMobilePhone::TMobileService mobileService = RMobilePhone::EVoiceService;
+
+ RMobileCall::TEtel3rdPartyMobileCallParamsV1 callParams;
+ callParams.iIdRestrict = RMobileCall::ESendMyId;
+ callParams.iAutoRedial = ETrue;
+ TPckg<RMobileCall::TEtel3rdPartyMobileCallParamsV1> pckgCallParams(callParams);
+
+ RMobileCall::TMobileCallInfoV1 callInfo;
+ callInfo.iDialledParty.iTelNumber.Copy(KPhoneNumber);
+ callInfo.iService = mobileService;
+ callInfo.iValid = RMobileCall::KCallDialledParty | RMobileCall::KCallAlternating;
+
+ RMmCustomAPI::TEmerNumberCheckMode emerNumberCheckMode;
+ emerNumberCheckMode.iCheckMode = RMmCustomAPI::EEmerNumberCheckNormal;
+ emerNumberCheckMode.iNumber.Copy(KPhoneNumber);
+
+ RMmCustomAPI::TMobileTelNumber* telNumberPtr = NULL;
+
+ TMockLtsyData1<RMmCustomAPI::TEmerNumberCheckMode> expectLtsyData1(emerNumberCheckMode);
+
+ TMockLtsyCallData2<RMobileCall::TEtel3rdPartyMobileCallParamsV1, RMobileCall::TMobileCallInfoV1>
+ expectLtsyData2(0, mobileService, callParams, callInfo);
+
+ TMockLtsyCallData0 completeLtsyData1(callId, mobileService);
+
+ TMockLtsyData1< RMmCustomAPI::TMobileTelNumber* > completeLtsyData2(telNumberPtr);
+
+ //-------------------------------------------------------------------------
+ // TEST E: Unsolicited completion of RCall::Dial
+ // from LTSY.
+ //-------------------------------------------------------------------------
+
+ iMockLTSY.NotifyTerminated(mockLtsyStatus);
+ expectData.Close();
+ completeLtsyData1.SerialiseL(expectData);
+ iMockLTSY.CompleteL(EMobileCallDialISV, KErrNone, expectData);
+ User::WaitForRequest(mockLtsyStatus);
+ AssertMockLtsyStatusL();
+ ASSERT_EQUALS(KErrNone, mockLtsyStatus.Int());
+
+ //-------------------------------------------------------------------------
+ // TEST A: Try to make RMobileCall::DialISV request in case where
+ // CustomTSY is not opened. This should fail because in DialISV case TSY
+ // checks dialling number type using CustomTSY.
+ //-------------------------------------------------------------------------
+
+ // open new call
+ CleanupClosePushL(call);
+ errorCode = call.OpenNewCall(line, name);
+ ASSERT_EQUALS(KErrNone, errorCode);
+
+ call.DialISV(requestStatus, pckgCallParams, KPhoneNumber);
+ User::WaitForRequest(requestStatus);
+ AssertMockLtsyStatusL();
+ ASSERT_EQUALS(KErrNotReady, requestStatus.Int());
+
+ //-------------------------------------------------------------------------
+ // TEST C: Successful completion request of
+ // RMobileCall::DialISV when result is not cached.
+ //-------------------------------------------------------------------------
+
+ //-------------------------------------------------------------------------
+ // CustomTSY must be open before DialISV is requested
+ iMockLTSY.ExpectL(ECustomGetIccCallForwardingStatusIPC);
+
+ RMmCustomAPI::TViagCacheRecordId currentlyRetrievedCache;
+ currentlyRetrievedCache.iCacheId = 1;
+ currentlyRetrievedCache.iRecordId = 0;
+ TMockLtsyData1 <RMmCustomAPI::TViagCacheRecordId> ltsyData2(currentlyRetrievedCache);
+ expectData.Close();
+ ltsyData2.SerialiseL(expectData);
+ iMockLTSY.ExpectL(EReadViagHomeZoneCacheIPC, expectData);
+
+ RMmCustomAPI customAPI;
+ customAPI.Open(iPhone);
+ CleanupClosePushL(customAPI);
+ AssertMockLtsyStatusL();
+ //-------------------------------------------------------------------------
+
+ completeData.Close();
+ completeLtsyData2.SerialiseL(completeData);
+ iMockLTSY.CompleteL(ECustomCheckEmergencyNumberIPC, KErrNone, completeData);
+
+ expectData.Close();
+ expectLtsyData1.SerialiseL(expectData);
+ iMockLTSY.ExpectL(ECustomCheckEmergencyNumberIPC, expectData);
+
+ expectData.Close();
+ expectLtsyData1.SerialiseL(expectData);
+ iMockLTSY.ExpectL(EMobileCallDialISV, expectData);
+
+ CallGetMobileCallInfoL(callId, mobileService, KPhoneNumber);
+
+ completeData.Close();
+ completeLtsyData1.SerialiseL(completeData);
+ iMockLTSY.CompleteL(EMobileCallDialISV, KErrNone, completeData);
+
+ call.DialISV(requestStatus, pckgCallParams, KPhoneNumber);
+ User::WaitForRequest(requestStatus);
+ AssertMockLtsyStatusL();
+ ASSERT_EQUALS(KErrNone, requestStatus.Int());
+
+ call.Close();
+
+ AssertMockLtsyStatusL();
+ CleanupStack::PopAndDestroy(6, this); // this, expectData, completeData, line, call, customAPI
+
+ }
+
+/**
+@SYMTestCaseID BA-CTSY-CCON-CDI-0006
+@SYMComponent telephony_ctsy
+@SYMTestCaseDesc Test support in CTSY for RMobileCall::DialISV for data calls
+@SYMTestPriority High
+@SYMTestActions Invokes RMobileCall::DialISV for data calls
+@SYMTestExpectedResults Pass
+@SYMTestType CT
+*/
+void CCTsyCallControlFU::TestDialISV0006L()
+ {
+
+ OpenEtelServerL(EUseExtendedError);
+ CleanupStack::PushL(TCleanupItem(Cleanup,this));
+ OpenPhoneL();
+
+ RBuf8 expectData;
+ CleanupClosePushL(expectData);
+
+ RBuf8 completeData;
+ CleanupClosePushL(completeData);
+
+ RMobileLine line;
+ RMobileCall call;
+
+ TInt errorCode = KErrNone;
+ TRequestStatus requestStatus;
+ TRequestStatus mockLtsyStatus;
+
+ // open new line for KMmTsyDataLineName
+ errorCode = line.Open(iPhone, KMmTsyDataLineName);
+ CleanupClosePushL(line);
+ ASSERT_EQUALS(KErrNone, errorCode);
+
+ _LIT(KDoubleColon, "::");
+
+ TName name;
+ name = KMmTsyPhoneName;
+ name.Append(KDoubleColon);
+ name.Append(KMmTsyDataLineName);
+ name.Append(KDoubleColon);
+
+ _LIT(KPhoneNumber, "101632960000");
+
+ TInt callId = 1;
+ RMobilePhone::TMobileService mobileService = RMobilePhone::ECircuitDataService;
+
+ RMobileCall::TEtel3rdPartyMobileCallParamsV1 callParams;
+
+ RMobileCall::TMobileCallInfoV1 callInfo;
+ callInfo.iDialledParty.iTelNumber.Copy(KPhoneNumber);
+ callInfo.iService = mobileService;
+ callInfo.iValid = RMobileCall::KCallDialledParty;
+
+ TMockLtsyCallData2<RMobileCall::TEtel3rdPartyMobileCallParamsV1, RMobileCall::TMobileCallInfoV1>
+ mockData2(0, mobileService, callParams, callInfo);
+
+ TMockLtsyCallData0 mockData0(callId, mobileService);
+
+ TPckg<RMobileCall::TEtel3rdPartyMobileCallParamsV1> pckgCallParams(callParams);
+
+ //-------------------------------------------------------------------------
+ // TEST A: failure to dispatch request to LTSY
+ //-------------------------------------------------------------------------
+
+ // open new call
+ CleanupClosePushL(call);
+ errorCode = call.OpenNewCall(line, name);
+ ASSERT_EQUALS(KErrNone, errorCode);
+
+ call.DialISV(requestStatus, pckgCallParams, KPhoneNumber);
+ User::WaitForRequest(requestStatus);
+ ASSERT_EQUALS(KErrNotSupported, requestStatus.Int());
+
+ call.Close();
+ AssertMockLtsyStatusL();
+ CleanupStack::PopAndDestroy(1);
+
+ //-------------------------------------------------------------------------
+ // TEST E: Unsolicited completion of RMobileCall::DialISV
+ // from LTSY.
+ //-------------------------------------------------------------------------
+
+ iMockLTSY.NotifyTerminated(mockLtsyStatus);
+ expectData.Close();
+ mockData0.SerialiseL(expectData);
+ iMockLTSY.CompleteL(EMobileCallDialISV, KErrNone, expectData);
+ User::WaitForRequest(mockLtsyStatus);
+ AssertMockLtsyStatusL();
+ ASSERT_EQUALS(KErrNone, mockLtsyStatus.Int());
+
+ AssertMockLtsyStatusL();
+ CleanupStack::PopAndDestroy(4, this); // expectData, completeData, line
+
+ }
+
+/**
+@SYMTestCaseID BA-CTSY-CCON-CDI-00011
+@SYMComponent telephony_ctsy
+@SYMTestCaseDesc Test support in CTSY for RMobileCall::DialISV for fax calls
+@SYMTestPriority High
+@SYMTestActions Invokes RMobileCall::DialISV for fax calls
+@SYMTestExpectedResults Pass
+@SYMTestType CT
+*/
+void CCTsyCallControlFU::TestDialISV00011L()
+ {
+
+ OpenEtelServerL(EUseExtendedError);
+ CleanupStack::PushL(TCleanupItem(Cleanup,this));
+ OpenPhoneL();
+
+ RBuf8 expectData;
+ CleanupClosePushL(expectData);
+
+ RBuf8 completeData;
+ CleanupClosePushL(completeData);
+
+ RMobileLine line;
+ RMobileCall call;
+
+ TInt errorCode = KErrNone;
+ TRequestStatus requestStatus;
+ TRequestStatus mockLtsyStatus;
+
+ // open new line for KMmTsyDataLineName
+ errorCode = line.Open(iPhone, KMmTsyFaxLineName);
+ CleanupClosePushL(line);
+ ASSERT_EQUALS(KErrNone, errorCode);
+
+ _LIT(KDoubleColon, "::");
+
+ TName name;
+ name = KMmTsyPhoneName;
+ name.Append(KDoubleColon);
+ name.Append(KMmTsyFaxLineName);
+ name.Append(KDoubleColon);
+
+ _LIT(KPhoneNumber, "101632960000");
+
+ TInt callId = 1;
+ RMobilePhone::TMobileService mobileService = RMobilePhone::EFaxService;
+
+ RMobileCall::TEtel3rdPartyMobileCallParamsV1 callParams;
+
+ RMobileCall::TMobileCallInfoV1 callInfo;
+ callInfo.iDialledParty.iTelNumber.Copy(KPhoneNumber);
+ callInfo.iService = mobileService;
+ callInfo.iValid = RMobileCall::KCallDialledParty;
+
+ TMockLtsyCallData2<RMobileCall::TEtel3rdPartyMobileCallParamsV1, RMobileCall::TMobileCallInfoV1>
+ mockData2(0, mobileService, callParams, callInfo);
+
+ TMockLtsyCallData0 mockData0(callId, mobileService);
+
+ TPckg<RMobileCall::TEtel3rdPartyMobileCallParamsV1> pckgCallParams(callParams);
+
+ //-------------------------------------------------------------------------
+ // TEST A: failure to dispatch request to LTSY
+ //-------------------------------------------------------------------------
+
+ // open new call
+ CleanupClosePushL(call);
+ errorCode = call.OpenNewCall(line, name);
+ ASSERT_EQUALS(KErrNone, errorCode);
+
+ call.DialISV(requestStatus, pckgCallParams, KPhoneNumber);
+ User::WaitForRequest(requestStatus);
+ ASSERT_EQUALS(KErrNotSupported, requestStatus.Int());
+
+ call.Close();
+ AssertMockLtsyStatusL();
+ CleanupStack::PopAndDestroy(1);
+
+ //-------------------------------------------------------------------------
+ // TEST E: Unsolicited completion of RMobileCall::DialISV
+ // from LTSY.
+ //-------------------------------------------------------------------------
+
+ iMockLTSY.NotifyTerminated(mockLtsyStatus);
+ expectData.Close();
+ mockData0.SerialiseL(expectData);
+ iMockLTSY.CompleteL(EMobileCallDialISV, KErrNone, expectData);
+ User::WaitForRequest(mockLtsyStatus);
+ AssertMockLtsyStatusL();
+ ASSERT_EQUALS(KErrNone, mockLtsyStatus.Int());
+
+ AssertMockLtsyStatusL();
+ CleanupStack::PopAndDestroy(4, this); // expectData, completeData, line
+
+ }
+
+
+/**
+@SYMTestCaseID BA-CTSY-CCON-CDCC-0001
+@SYMComponent telephony_ctsy
+@SYMTestCaseDesc Test support in CTSY for RMobileCall::DialCallControl for voice calls
+@SYMTestPriority High
+@SYMTestActions Invokes RMobileCall::DialCallControl for voice calls
+@SYMTestExpectedResults Pass
+@SYMTestType CT
+*/
+void CCTsyCallControlFU::TestDialCallControl0001L()
+ {
+
+ OpenEtelServerL(EUseExtendedError);
+ CleanupStack::PushL(TCleanupItem(Cleanup,this));
+ OpenPhoneL();
+
+ RBuf8 expectData;
+ CleanupClosePushL(expectData);
+
+ RBuf8 completeData;
+ CleanupClosePushL(completeData);
+
+ RMobileLine line;
+ RMobileCall call;
+
+ TInt errorCode = KErrNone;
+ TRequestStatus requestStatus;
+ TRequestStatus mockLtsyStatus;
+
+ // Open new line for KMmTsyVoice1LineName
+ errorCode = line.Open(iPhone, KMmTsyVoice1LineName);
+ CleanupClosePushL(line);
+ ASSERT_EQUALS(KErrNone, errorCode);
+
+ _LIT(KDoubleColon, "::");
+
+ TName name;
+ name = KMmTsyPhoneName;
+ name.Append(KDoubleColon);
+ name.Append(KMmTsyVoice1LineName);
+ name.Append(KDoubleColon);
+
+ _LIT(KPhoneNumber, "101632960000");
+
+ TInt callId = 1;
+ RMobilePhone::TMobileService mobileService = RMobilePhone::EVoiceService;
+
+ RMobileCall::TMobileCallParamsV7 callParams;
+
+ RMobileCall::TMobileCallInfoV8 callInfo;
+ callInfo.iDialledParty.iTelNumber.Copy(KPhoneNumber);
+ callInfo.iService = mobileService;
+ callInfo.iValid = RMobileCall::KCallDialledParty | RMobileCall::KCallAlternating;
+
+ TMockLtsyCallData2<RMobileCall::TMobileCallParamsV7, RMobileCall::TMobileCallInfoV8>
+ mockData2(0, mobileService, callParams, callInfo);
+
+ TMockLtsyCallData0 mockData0(callId, mobileService);
+
+ TPckg<RMobileCall::TMobileCallParamsV7> pckgCallParams(callParams);
+
+ //-------------------------------------------------------------------------
+ // TEST A: failure to dispatch request to LTSY
+ //-------------------------------------------------------------------------
+
+ // Open new call
+ CleanupClosePushL(call);
+ errorCode = call.OpenNewCall(line, name);
+ ASSERT_EQUALS(KErrNone, errorCode);
+
+ call.DialCallControl(requestStatus, pckgCallParams, KPhoneNumber);
+ User::WaitForRequest(requestStatus);
+
+ // This is not a defect. DialCallControl fails because feature is not
+ // supported by CTSY.
+ ASSERT_EQUALS(KErrNotSupported, requestStatus.Int());
+
+
+ call.Close();
+ AssertMockLtsyStatusL();
+ CleanupStack::PopAndDestroy(1); // call
+
+ //-------------------------------------------------------------------------
+ // TEST E: Unsolicited completion of RMobileCall::DialCallControl
+ // from LTSY.
+ //-------------------------------------------------------------------------
+
+ iMockLTSY.NotifyTerminated(mockLtsyStatus);
+ expectData.Close();
+ mockData0.SerialiseL(expectData);
+ iMockLTSY.CompleteL(EMobileCallDialCallControl, KErrNone, expectData);
+ User::WaitForRequest(mockLtsyStatus);
+ AssertMockLtsyStatusL();
+ ASSERT_EQUALS(KErrNone, mockLtsyStatus.Int());
+
+ CleanupStack::PopAndDestroy(4, this); // expectData, completeData, line, this
+
+ }
+
+/**
+@SYMTestCaseID BA-CTSY-CCON-CDCC-0006
+@SYMComponent telephony_ctsy
+@SYMTestCaseDesc Test support in CTSY for RMobileCall::DialCallControl for data calls
+@SYMTestPriority High
+@SYMTestActions Invokes RMobileCall::DialCallControl for data calls
+@SYMTestExpectedResults Pass
+@SYMTestType CT
+*/
+void CCTsyCallControlFU::TestDialCallControl0006L()
+ {
+
+ OpenEtelServerL(EUseExtendedError);
+ CleanupStack::PushL(TCleanupItem(Cleanup,this));
+ OpenPhoneL();
+
+ RBuf8 expectData;
+ CleanupClosePushL(expectData);
+
+ RBuf8 completeData;
+ CleanupClosePushL(completeData);
+
+ RMobileLine line;
+ RMobileCall call;
+
+ TInt errorCode = KErrNone;
+ TRequestStatus requestStatus;
+ TRequestStatus mockLtsyStatus;
+
+ // Open new line for KMmTsyDataLineName
+ errorCode = line.Open(iPhone, KMmTsyDataLineName);
+ CleanupClosePushL(line);
+ ASSERT_EQUALS(KErrNone, errorCode);
+
+ _LIT(KDoubleColon, "::");
+
+ TName name;
+ name = KMmTsyPhoneName;
+ name.Append(KDoubleColon);
+ name.Append(KMmTsyDataLineName);
+ name.Append(KDoubleColon);
+
+ _LIT(KPhoneNumber, "101632960000");
+
+ TInt callId = 1;
+ RMobilePhone::TMobileService mobileService = RMobilePhone::ECircuitDataService;
+
+ RMobileCall::TMobileCallParamsV7 callParams;
+
+ RMobileCall::TMobileCallInfoV8 callInfo;
+ callInfo.iDialledParty.iTelNumber.Copy(KPhoneNumber);
+ callInfo.iService = mobileService;
+ callInfo.iValid = RMobileCall::KCallDialledParty | RMobileCall::KCallAlternating;
+
+ TMockLtsyCallData2<RMobileCall::TMobileCallParamsV7, RMobileCall::TMobileCallInfoV8>
+ mockData2(0, mobileService, callParams, callInfo);
+
+ TMockLtsyCallData0 mockData0(callId, mobileService);
+
+ TPckg<RMobileCall::TMobileCallParamsV7> pckgCallParams(callParams);
+
+ //-------------------------------------------------------------------------
+ // TEST A: failure to dispatch request to LTSY
+ //-------------------------------------------------------------------------
+
+ // Open new call
+ CleanupClosePushL(call);
+ errorCode = call.OpenNewCall(line, name);
+ ASSERT_EQUALS(KErrNone, errorCode);
+
+ call.DialCallControl(requestStatus, pckgCallParams, KPhoneNumber);
+ User::WaitForRequest(requestStatus);
+
+ // This is not a defect. DialCallControl fails because feature is not
+ // supported by CTSY.
+ ASSERT_EQUALS(KErrNotSupported, requestStatus.Int());
+
+ call.Close();
+ AssertMockLtsyStatusL();
+ CleanupStack::PopAndDestroy(1); // call
+
+ //-------------------------------------------------------------------------
+ // TEST E: Unsolicited completion of RMobileCall::DialISV
+ // from LTSY.
+ //-------------------------------------------------------------------------
+
+ iMockLTSY.NotifyTerminated(mockLtsyStatus);
+ expectData.Close();
+ mockData0.SerialiseL(expectData);
+ iMockLTSY.CompleteL(EMobileCallDialCallControl, KErrNone, expectData);
+ User::WaitForRequest(mockLtsyStatus);
+ AssertMockLtsyStatusL();
+ ASSERT_EQUALS(KErrNone, mockLtsyStatus.Int());
+
+ CleanupStack::PopAndDestroy(4, this); // expectData, completeData, line, call
+
+ }
+
+/**
+@SYMTestCaseID BA-CTSY-CCON-CDCC-00011
+@SYMComponent telephony_ctsy
+@SYMTestCaseDesc Test support in CTSY for RMobileCall::DialCallControl for fax calls
+@SYMTestPriority High
+@SYMTestActions Invokes RMobileCall::DialCallControl for fax calls
+@SYMTestExpectedResults Pass
+@SYMTestType CT
+*/
+void CCTsyCallControlFU::TestDialCallControl00011L()
+ {
+
+ OpenEtelServerL(EUseExtendedError);
+ CleanupStack::PushL(TCleanupItem(Cleanup,this));
+ OpenPhoneL();
+
+ RBuf8 expectData;
+ CleanupClosePushL(expectData);
+
+ RBuf8 completeData;
+ CleanupClosePushL(completeData);
+
+ RMobileLine line;
+ RMobileCall call;
+
+ TInt errorCode = KErrNone;
+ TRequestStatus requestStatus;
+ TRequestStatus mockLtsyStatus;
+
+ // Open new line for KMmTsyFaxLineName
+ errorCode = line.Open(iPhone, KMmTsyFaxLineName);
+ CleanupClosePushL(line);
+ ASSERT_EQUALS(KErrNone, errorCode);
+
+ _LIT(KDoubleColon, "::");
+
+ TName name;
+ name = KMmTsyPhoneName;
+ name.Append(KDoubleColon);
+ name.Append(KMmTsyFaxLineName);
+ name.Append(KDoubleColon);
+
+ _LIT(KPhoneNumber, "101632960000");
+
+ TInt callId = 1;
+ RMobilePhone::TMobileService mobileService = RMobilePhone::EFaxService;
+
+ RMobileCall::TMobileCallParamsV7 callParams;
+
+ RMobileCall::TMobileCallInfoV8 callInfo;
+ callInfo.iDialledParty.iTelNumber.Copy(KPhoneNumber);
+ callInfo.iService = mobileService;
+ callInfo.iValid = RMobileCall::KCallDialledParty | RMobileCall::KCallAlternating;
+
+ TMockLtsyCallData2<RMobileCall::TMobileCallParamsV7, RMobileCall::TMobileCallInfoV8>
+ mockData2(0, mobileService, callParams, callInfo);
+
+ TMockLtsyCallData0 mockData0(callId, mobileService);
+
+ TPckg<RMobileCall::TMobileCallParamsV7> pckgCallParams(callParams);
+
+ //-------------------------------------------------------------------------
+ // TEST A: failure to dispatch request to LTSY
+ //-------------------------------------------------------------------------
+
+ // Open new call
+ CleanupClosePushL(call);
+ errorCode = call.OpenNewCall(line, name);
+ ASSERT_EQUALS(KErrNone, errorCode);
+
+ call.DialCallControl(requestStatus, pckgCallParams, KPhoneNumber);
+ User::WaitForRequest(requestStatus);
+
+ // This is not a defect. DialCallControl fails because feature is not
+ // supported by CTSY.
+ ASSERT_EQUALS(KErrNotSupported, requestStatus.Int());
+
+ call.Close();
+ AssertMockLtsyStatusL();
+ CleanupStack::PopAndDestroy(1); //call
+
+ //-------------------------------------------------------------------------
+ // TEST E: Unsolicited completion of RMobileCall::DialISV
+ // from LTSY.
+ //-------------------------------------------------------------------------
+
+ iMockLTSY.NotifyTerminated(mockLtsyStatus);
+ expectData.Close();
+ mockData0.SerialiseL(expectData);
+ iMockLTSY.CompleteL(EMobileCallDialCallControl, KErrNone, expectData);
+ User::WaitForRequest(mockLtsyStatus);
+ AssertMockLtsyStatusL();
+ ASSERT_EQUALS(KErrNone, mockLtsyStatus.Int());
+
+ CleanupStack::PopAndDestroy(4, this); // expectData, completeData, line, this
+ }
+
+/*
+ * Test case where answering fails because automatic hold does not work.
+ *
+ * @param aLineName Line name
+ * @return KErrNone if successful, otherwise another of the system-wide error
+ */
+TInt CCTsyCallControlFU::TestAnsweringFailsBecauseHoldDoesNotWorkL( const TDesC& aLineName )
+ {
+ OpenEtelServerL(EUseExtendedError);
+ CleanupStack::PushL(TCleanupItem(Cleanup,this));
+ OpenPhoneL();
+
+ RBuf8 expectData;
+ CleanupClosePushL(expectData);
+
+ RBuf8 completeData;
+ CleanupClosePushL(completeData);
+
+ RMobilePhone phone2;
+ TInt ret = phone2.Open(iTelServer,KMmTsyPhoneName);
+ ASSERT_EQUALS(KErrNone, ret);
+ CleanupClosePushL(phone2);
+
+ RLine line1;
+ RLine line2;
+
+ //Open new line1 for aLineName
+ TInt errorCode = OpenNewLineLC(iPhone, line1, aLineName);
+ ASSERT_EQUALS(KErrNone, errorCode);
+
+ //Open new line2 for KMmTsyVoice1LineName
+ errorCode = OpenNewLineLC(phone2, line2, KMmTsyVoice1LineName);
+ ASSERT_EQUALS(KErrNone, errorCode);
+
+ RMobileCall call1;
+ CleanupClosePushL(call1);
+
+ RMobileCall call2;
+ CleanupClosePushL(call2);
+
+ _LIT(KPhoneNumber, "101632960000");
+
+ RMobileCall::TMobileCallStatus mobileCallStatus = RMobileCall::EStatusRinging;
+ RMobilePhone::TMobileService mobileService1;
+ RMobilePhone::TMobileService mobileService2 = RMobilePhone::EVoiceService;
+
+ TInt callId1 = 1;
+ TName callName1;
+
+ TInt callId2 = 2;
+ TName callName2;
+
+ TRequestStatus requestStatus;
+ TRequestStatus mockLtsyStatus;
+
+ //-------------------------------------------------------------------------
+ // Create first call outgoing voice or data call
+
+ errorCode = call1.OpenNewCall(line1, callName1);
+ ASSERT_EQUALS(KErrNone, errorCode);
+
+ if ( !aLineName.Compare( KMmTsyDataLineName ) )
+ {
+ //Dial data call
+ mobileService1 = RMobilePhone::ECircuitDataService;
+
+ CallGetMobileCallInfoL(callId1, mobileService1, KPhoneNumber);
+
+ RMobileCall::TMobileDataCallParamsV1 callParams;
+ callParams.iInterval = 4;
+ callParams.iCug.iCugIndex = 0xFFFF;
+
+ RMobileCall::TMobileCallInfoV8 callInfo;
+ callInfo.iDialledParty.iTelNumber.Copy(KPhoneNumber);
+ callInfo.iService = mobileService1;
+ callInfo.iValid = RMobileCall::KCallDialledParty | RMobileCall::KCallAlternating ;
+
+ TMockLtsyCallData2<RMobileCall::TMobileDataCallParamsV1, RMobileCall::TMobileCallInfoV8>
+ mockData0(0, mobileService1, callParams, callInfo);
+
+ TPckg<RMobileCall::TMobileDataCallParamsV1> pckgCallParams(callParams);
+
+ mockData0.SerialiseL(expectData);
+ iMockLTSY.ExpectL(EEtelCallDial, expectData, KErrNone);
+
+ call1.Dial(requestStatus, pckgCallParams, KPhoneNumber);
+ }
+ else
+ {
+ //Dial voice call
+ mobileService1 = RMobilePhone::EVoiceService;
+
+ CallGetMobileCallInfoL(callId1, mobileService1, KPhoneNumber);
+
+ RMobileCall::TMobileCallParamsV1 callParams;
+ callParams.iInterval = 4;
+ callParams.iCug.iCugIndex = 0xFFFF;
+ TPckg<RMobileCall::TMobileCallParamsV1> pckgCallParams(callParams);
+
+ RMobileCall::TMobileCallInfoV8 callInfo;
+ callInfo.iDialledParty.iTelNumber.Copy(KPhoneNumber);
+ callInfo.iService = mobileService1;
+ callInfo.iValid = RMobileCall::KCallDialledParty | RMobileCall::KCallAlternating;
+
+ TMockLtsyCallData2<RMobileCall::TMobileCallParamsV1, RMobileCall::TMobileCallInfoV8>
+ mockData1(0, mobileService1, callParams, callInfo);
+
+ mockData1.SerialiseL(expectData);
+ iMockLTSY.ExpectL(EEtelCallDial, expectData, KErrNone);
+
+ call1.Dial(requestStatus, pckgCallParams, KPhoneNumber);
+ }
+
+ //Change call1 status to connected
+ mobileCallStatus = RMobileCall::EStatusDialling;
+ TMockLtsyCallData1<RMobileCall::TMobileCallStatus> mockData2(callId1, mobileService1, mobileCallStatus);
+ completeData.Close();
+ mockData2.SerialiseL(completeData);
+ iMockLTSY.NotifyTerminated(mockLtsyStatus);
+ iMockLTSY.CompleteL(EMobileCallNotifyMobileCallStatusChange, KErrNone, completeData);
+ User::WaitForRequest(mockLtsyStatus);
+ ASSERT_EQUALS(KErrNone, mockLtsyStatus.Int());
+
+ mobileCallStatus = RMobileCall::EStatusConnecting;
+ TMockLtsyCallData1<RMobileCall::TMobileCallStatus> mockData3(callId1, mobileService1, mobileCallStatus);
+ completeData.Close();
+ mockData3.SerialiseL(completeData);
+ iMockLTSY.NotifyTerminated(mockLtsyStatus);
+ iMockLTSY.CompleteL(EMobileCallNotifyMobileCallStatusChange, KErrNone, completeData);
+ User::WaitForRequest(mockLtsyStatus);
+ ASSERT_EQUALS(KErrNone, mockLtsyStatus.Int());
+
+ mobileCallStatus = RMobileCall::EStatusConnected;
+ TMockLtsyCallData1<RMobileCall::TMobileCallStatus> mockData4(callId1, mobileService1, mobileCallStatus);
+ completeData.Close();
+ mockData4.SerialiseL(completeData);
+ iMockLTSY.NotifyTerminated(mockLtsyStatus);
+ iMockLTSY.CompleteL(EMobileCallNotifyMobileCallStatusChange, KErrNone, completeData);
+ User::WaitForRequest(mockLtsyStatus);
+ ASSERT_EQUALS(KErrNone, mockLtsyStatus.Int());
+
+ if ( !aLineName.Compare( KMmTsyDataLineName ) )
+ {
+ //Dial request for voice call is completed automatically by CTSY when call goes to connected state
+ //Complete here data call Dial.
+ TMockLtsyCallData0 mockData5(callId1, mobileService1);
+ mockData5.SerialiseL(completeData);
+ iMockLTSY.CompleteL(EEtelCallDial, KErrNone, completeData);
+ }
+
+ User::WaitForRequest(requestStatus);
+ AssertMockLtsyStatusL();
+ ASSERT_EQUALS(KErrNone, requestStatus.Int());
+
+ //Check that call1 is active
+ call1.GetMobileCallStatus(mobileCallStatus);
+ ASSERT_EQUALS(RMobileCall::EStatusConnected, mobileCallStatus);
+ AssertMockLtsyStatusL();
+
+ //-------------------------------------------------------------------------
+
+
+ //-------------------------------------------------------------------------
+ // Create second incoming voice call.
+
+ mobileCallStatus = RMobileCall::EStatusRinging;
+ errorCode = CreateIncomingCallL(line2, callId2, callName2,
+ mobileService2, mobileCallStatus);
+ ASSERT_EQUALS(KErrNone, errorCode);
+ AssertMockLtsyStatusL();
+
+ errorCode = call2.OpenExistingCall(line2, callName2);
+ ASSERT_EQUALS(KErrNone, errorCode);
+ AssertMockLtsyStatusL();
+
+ //-------------------------------------------------------------------------
+
+ //-------------------------------------------------------------------------
+ // TEST A: AnswerIncomingCall for call2 is completed with error KErrMMEtelCallForbidden
+ // because automatic hold for call1 fails.
+ //-------------------------------------------------------------------------
+
+ //There is now one active call and one ringing call. Cellular software sets
+ //active call1 to hold automatically when ringing call is answered. Normally this operation
+ //succeeds. In DoCoMo network hold operation fails in this situation if call waiting is
+ //disabled.
+
+ //Background: Incoming call indication should not come from network if there is already an active call
+ //and call waiting is disabled. However in DoCoMo network incoming call indication comes
+ //through but answering to this call fails because hold operation for active call does not work.
+
+ //Expected functionality: In this case CTSY should complete AnswerIncomingCall request with
+ //error and active call should stay in active state.
+
+ TMockLtsyCallData0 mockData6(callId2, mobileService2);
+ expectData.Close();
+ mockData6.SerialiseL(expectData);
+ iMockLTSY.ExpectL(EEtelCallAnswer, expectData);
+
+ RMobileCall::TMobileCallParamsV1 callParamsV1;
+ TPckg<RMobileCall::TMobileCallParamsV1> mmParamsPckgV1(callParamsV1);
+ call2.AnswerIncomingCall(requestStatus, mmParamsPckgV1);
+
+ //Incoming call goes to answering state.
+ mobileCallStatus = RMobileCall::EStatusAnswering;
+ TMockLtsyCallData1<RMobileCall::TMobileCallStatus> mockData7(callId2, mobileService2, mobileCallStatus);
+ completeData.Close();
+ mockData7.SerialiseL(completeData);
+ iMockLTSY.NotifyTerminated(mockLtsyStatus);
+ iMockLTSY.CompleteL(EMobileCallNotifyMobileCallStatusChange, KErrNone, completeData);
+ User::WaitForRequest(mockLtsyStatus);
+
+ //Network rejects hold operation for active call.
+ mobileCallStatus = RMobileCall::EStatusConnected;
+ TMockLtsyCallData1<RMobileCall::TMobileCallStatus> mockData8(callId1, mobileService1, mobileCallStatus);
+ completeData.Close();
+ mockData8.SerialiseL(completeData);
+ iMockLTSY.NotifyTerminated(mockLtsyStatus);
+ iMockLTSY.CompleteL(EMobileCallNotifyMobileCallStatusChange, KErrMMEtelCallForbidden, completeData);
+
+ //AnswerIncomingCall should be completed with error.
+ User::WaitForRequest(requestStatus);
+ User::WaitForRequest(mockLtsyStatus);
+ ASSERT_EQUALS(KErrMMEtelCallForbidden, requestStatus.Int());
+ AssertMockLtsyStatusL();
+
+ //Check that call1 is still in active state.
+ call1.GetMobileCallStatus(mobileCallStatus);
+ ASSERT_EQUALS(RMobileCall::EStatusConnected, mobileCallStatus);
+ AssertMockLtsyStatusL();
+
+ //-------------------------------------------------------------------------
+ // Hangup calls
+
+ TInt hangUpCause = KErrGsmReleaseByUser;
+ TBool autoStChangeDisable = ETrue;
+ TMockLtsyCallData2<TInt, TBool> mockData9(callId2, mobileService2, hangUpCause, autoStChangeDisable);
+ expectData.Close();
+ mockData9.SerialiseL(expectData);
+ iMockLTSY.ExpectL(EEtelCallHangUp, expectData);
+
+ call2.HangUp(requestStatus);
+
+ //Change call2 status to disconnecting
+ mobileCallStatus = RMobileCall::EStatusDisconnecting;
+ TMockLtsyCallData1<RMobileCall::TMobileCallStatus> mockData10(callId2, mobileService2, mobileCallStatus);
+ completeData.Close();
+ mockData10.SerialiseL(completeData);
+ iMockLTSY.NotifyTerminated(mockLtsyStatus);
+ iMockLTSY.CompleteL(EMobileCallNotifyMobileCallStatusChange, KErrNone, completeData);
+ User::WaitForRequest(mockLtsyStatus);
+ ASSERT_EQUALS(KErrNone, mockLtsyStatus.Int());
+
+ //Change call2 status to idle
+ mobileCallStatus = RMobileCall::EStatusIdle;
+ TMockLtsyCallData1<RMobileCall::TMobileCallStatus> mockData11(callId2, mobileService2, mobileCallStatus);
+ completeData.Close();
+ mockData11.SerialiseL(completeData);
+ iMockLTSY.NotifyTerminated(mockLtsyStatus);
+ iMockLTSY.CompleteL(EMobileCallNotifyMobileCallStatusChange, KErrNone, completeData);
+ User::WaitForRequest(mockLtsyStatus);
+ ASSERT_EQUALS(KErrNone, mockLtsyStatus.Int());
+
+ //HangUp complete for call2
+ User::WaitForRequest(requestStatus);
+ AssertMockLtsyStatusL();
+ ASSERT_EQUALS(KErrNone, requestStatus.Int());
+
+ // Only the voice line is needing this flag.
+ if ( !aLineName.Compare( KMmTsyDataLineName ) )
+ {
+ autoStChangeDisable = EFalse;
+ }
+ else
+ {
+ autoStChangeDisable = ETrue;
+ }
+
+ TMockLtsyCallData2<TInt, TBool> mockData12(callId1, mobileService1, hangUpCause, autoStChangeDisable);
+ expectData.Close();
+ mockData12.SerialiseL(expectData);
+ iMockLTSY.ExpectL(EEtelCallHangUp, expectData);
+
+ call1.HangUp(requestStatus);
+
+ //Change call1 status to disconnecting
+ mobileCallStatus = RMobileCall::EStatusDisconnecting;
+ TMockLtsyCallData1<RMobileCall::TMobileCallStatus> mockData13(callId1, mobileService1, mobileCallStatus);
+ completeData.Close();
+ mockData13.SerialiseL(completeData);
+ iMockLTSY.NotifyTerminated(mockLtsyStatus);
+ iMockLTSY.CompleteL(EMobileCallNotifyMobileCallStatusChange, KErrNone, completeData);
+ User::WaitForRequest(mockLtsyStatus);
+ ASSERT_EQUALS(KErrNone, mockLtsyStatus.Int());
+
+ //Change call1 status to idle
+ mobileCallStatus = RMobileCall::EStatusIdle;
+ TMockLtsyCallData1<RMobileCall::TMobileCallStatus> mockData14(callId1, mobileService1, mobileCallStatus);
+ completeData.Close();
+ mockData14.SerialiseL(completeData);
+ iMockLTSY.NotifyTerminated(mockLtsyStatus);
+ iMockLTSY.CompleteL(EMobileCallNotifyMobileCallStatusChange, KErrNone, completeData);
+
+ // when call becomes idle, remaining duration of the call is added to life time param in LTSY:
+ TUint32 duration2 = 4; // this is a dummy value, which won't be checked by mocksy engine
+ TMockLtsyData1<TUint32> ltsyData2( duration2 );
+ expectData.Close();
+ ltsyData2.SerialiseL(expectData);
+ iMockLTSY.ExpectL(EMmTsyUpdateLifeTimeIPC, expectData);
+
+ User::WaitForRequest(mockLtsyStatus);
+ ASSERT_EQUALS(KErrNone, mockLtsyStatus.Int());
+
+ //HangUp complete for call1
+ User::WaitForRequest(requestStatus);
+ AssertMockLtsyStatusL();
+ ASSERT_EQUALS(KErrNone, requestStatus.Int());
+
+ //-------------------------------------------------------------------------
+
+ // Done !
+ CleanupStack::PopAndDestroy(8, this); // call2, call1, line2, line1, phone2,
+ // completeData, expectData, this
+ return KErrNone;
+ }
+
+/*
+ * Opens a phone subsession by name.
+ *
+ * @param aPhone The phone from which the line is to be opened.
+ * @param On return, contains the new line.
+ * @param aName The name of the phone to be opened
+ * @return KErrNone if successful, otherwise another of the system-wide error
+ */
+
+TInt CCTsyCallControlFU::OpenNewLineLC(RMobilePhone& aPhone, RLine& aLine, const TDesC& aLineName)
+ {
+ TInt errorCode = KErrNone;
+
+ // Open new line
+ errorCode = aLine.Open(aPhone, aLineName);
+ CleanupClosePushL(aLine);
+
+ return errorCode;
+ }
+
+/*
+ * This function creates an incomming call for line and returns a name of call.
+ *
+ * @param aLine The line from which the call is to be created.
+ * @param aCallId ID of call.
+ * @param aIncomingCallName On return, contains the new name of incomming call.
+ * @param aMobileService Applicability of request to a mobile service group.
+ * @param aMobileCallStatus Describes the possible call states.
+ * @return KErrNone if successful, otherwise another of the system-wide error
+ */
+
+TInt CCTsyCallControlFU::CreateIncomingCallL(RLine& aLine,
+ const TInt aCallId,
+ TName& aIncomingCallName,
+ RMobilePhone::TMobileService aMobileService,
+ RMobileCall::TMobileCallStatus aMobileCallStatus)
+ {
+ RBuf8 completeData;
+
+ TRequestStatus requestNotify;
+ TRequestStatus mockLtsyStatus;
+
+ //-------------------------------------------------------------------------
+ // call CMmVoiceLineTsy::CompleteNotifyIncomingCall for set iCallId > 0.
+
+ aLine.NotifyIncomingCall(requestNotify, aIncomingCallName);
+
+ iMockLTSY.NotifyTerminated(mockLtsyStatus);
+ RMobileCall::TMobileCallInfoV1 mobileCallInfo;
+ TMockLtsyCallData1<RMobileCall::TMobileCallInfoV1> mockCallData1(aCallId, aMobileService, mobileCallInfo);
+ CleanupClosePushL(completeData);
+ mockCallData1.SerialiseL(completeData);
+ iMockLTSY.CompleteL(EEtelLineNotifyIncomingCall, KErrNone, completeData);
+ User::WaitForRequest(mockLtsyStatus);
+ AssertMockLtsyStatusL();
+ ASSERT_EQUALS(KErrNone, mockLtsyStatus.Int());
+
+ User::WaitForRequest(requestNotify);
+ AssertMockLtsyStatusL();
+ ASSERT_EQUALS(KErrNone, requestNotify.Int());
+
+ //-------------------------------------------------------------------------
+
+ //-------------------------------------------------------------------------
+ // call CMmVoiceCallTsy::CompleteNotifyStatusChange for set
+ // iMobileCallStatus = RMobileCall::EStatusRinging.
+ TMockLtsyCallData1<RMobileCall::TMobileCallStatus> mockCallData2(aCallId, aMobileService, aMobileCallStatus);
+ completeData.Close();
+ mockCallData2.SerialiseL(completeData);
+
+ iMockLTSY.NotifyTerminated(mockLtsyStatus);
+ iMockLTSY.CompleteL(EMobileCallNotifyMobileCallStatusChange, KErrNone, completeData);
+ User::WaitForRequest(mockLtsyStatus);
+ AssertMockLtsyStatusL();
+ ASSERT_EQUALS(KErrNone, mockLtsyStatus.Int());
+ //-------------------------------------------------------------------------
+
+ AssertMockLtsyStatusL();
+ CleanupStack::PopAndDestroy(1); // completeData
+
+ return KErrNone;
+ }
+
+/*
+ * This function closes an incomming call by aCallId.
+ *
+ * @param aCall The incomming call which is to be closed.
+ * @param aCallId ID of call.
+ * @param aMobileService Applicability of request to a mobile service group.
+ */
+
+void CCTsyCallControlFU::CloseIncomingCallL(RCall& aCall, const TInt aCallId,
+ RMobilePhone::TMobileService aMobileService)
+ {
+ RBuf8 expectData;
+ CleanupClosePushL(expectData);
+
+ TInt hangUpCause = KErrGsmReleaseByUser;
+ TBool autoStChangeDisable = EFalse;
+ TMockLtsyCallData2<TInt, TBool> mockData2(aCallId, aMobileService,
+ hangUpCause,
+ autoStChangeDisable);
+ expectData.Close();
+ mockData2.SerialiseL(expectData);
+ iMockLTSY.ExpectL(EEtelCallHangUp, expectData);
+
+ aCall.Close();
+ AssertMockLtsyStatusL();
+
+ CleanupStack::PopAndDestroy(1); // expectData
+ }
+
+// ExpectL and CopmleteL must precede this function.
+void CCTsyCallControlFU::CallGetMobileCallInfoL(TInt aCallId,
+ RMobilePhone::TMobileService aService,
+ const TDesC &aTelNumber)
+ {
+ _LIT(KNullDesC , "");
+
+ RBuf8 data;
+ CleanupClosePushL(data);
+
+ RMobileCall::TMobileCallInfoV1 callInfo;
+ callInfo.iDialledParty.iTelNumber.Copy(aTelNumber);
+ callInfo.iService = aService;
+ callInfo.iEmergency = EFalse;
+ callInfo.iRemoteParty.iCallingName = KNullDesC;
+ callInfo.iRemoteParty.iRemoteIdStatus = RMobileCall::ERemoteIdentityUnknown;
+ callInfo.iRemoteParty.iRemoteNumber.iTelNumber = KNullDesC;
+ callInfo.iRemoteParty.iRemoteNumber.iNumberPlan = RMobilePhone::EUnknownNumberingPlan;
+ callInfo.iRemoteParty.iRemoteNumber.iTypeOfNumber = RMobilePhone::EUnknownNumber;
+ callInfo.iForwarded = EFalse;
+ callInfo.iValid = RMobileCall::KCallDialledParty | RMobileCall::KCallRemoteParty;
+
+ TMockLtsyCallData1<RMobileCall::TMobileCallInfoV1> callInfoData(aCallId, aService, callInfo);
+ callInfoData.SerialiseL(data);
+
+ iMockLTSY.CompleteL(EMobileCallGetMobileCallInfo, KErrNone, data);
+
+ CleanupStack::PopAndDestroy(1);
+ }
+
+/**
+@SYMTestCaseID BA-CTSY-CCON-CEC-0001
+@SYMComponent telephony_ctsy
+@SYMTestCaseDesc Test increase coverage for RLine::EnumerateCall for voice
+@SYMTestPriority High
+@SYMTestActions Invokes RLine::EnumerateCall for voice
+@SYMTestExpectedResults Pass
+@SYMTestType CT
+*/
+void CCTsyCallControlFU::TestEnumerateCall0001L()
+ {
+ AuxEnumerateCallL(KMmTsyVoice1LineName);
+ }
+
+/**
+@SYMTestCaseID BA-CTSY-CCON-CEC-0006
+@SYMComponent telephony_ctsy
+@SYMTestCaseDesc Test increase coverage for RLine::EnumerateCall for data
+@SYMTestPriority High
+@SYMTestActions Invokes RLine::EnumerateCall for data
+@SYMTestExpectedResults Pass
+@SYMTestType CT
+*/
+void CCTsyCallControlFU::TestEnumerateCall0006L()
+ {
+ AuxEnumerateCallL(KMmTsyDataLineName);
+ }
+
+/**
+@SYMTestCaseID BA-CTSY-CCON-CEC-00011
+@SYMComponent telephony_ctsy
+@SYMTestCaseDesc Test increase coverage for RLine::EnumerateCall for fax
+@SYMTestPriority High
+@SYMTestActions Invokes RLine::EnumerateCall for fax
+@SYMTestExpectedResults Pass
+@SYMTestType CT
+*/
+void CCTsyCallControlFU::TestEnumerateCall00011L()
+ {
+ AuxEnumerateCallL(KMmTsyFaxLineName);
+ }
+
+/**
+@SYMTestCaseID BA-CTSY-CCON-CNHC-0001
+@SYMComponent telephony_ctsy
+@SYMTestCaseDesc Test increase coverage for RLine::NotifyHookChange for voice
+@SYMTestPriority High
+@SYMTestActions Invokes RLine::NotifyHookChange for voice
+@SYMTestExpectedResults Pass
+@SYMTestType CT
+*/
+void CCTsyCallControlFU::TestNotifyHookChange0001L()
+ {
+ AuxNotifyHookChangeL(KMmTsyVoice1LineName);
+ }
+
+/**
+@SYMTestCaseID BA-CTSY-CCON-CNHC-0006
+@SYMComponent telephony_ctsy
+@SYMTestCaseDesc Test increase coverage for RLine::NotifyHookChange for data
+@SYMTestPriority High
+@SYMTestActions Invokes RLine::NotifyHookChange for data
+@SYMTestExpectedResults Pass
+@SYMTestType CT
+*/
+void CCTsyCallControlFU::TestNotifyHookChange0006L()
+ {
+ AuxNotifyHookChangeL(KMmTsyDataLineName);
+ }
+
+/**
+@SYMTestCaseID BA-CTSY-CCON-CNHC-00011
+@SYMComponent telephony_ctsy
+@SYMTestCaseDesc Test increase coverage for RLine::NotifyHookChange for fax
+@SYMTestPriority High
+@SYMTestActions Invokes RLine::NotifyHookChange for fax
+@SYMTestExpectedResults Pass
+@SYMTestType CT
+*/
+void CCTsyCallControlFU::TestNotifyHookChange00011L()
+ {
+ AuxNotifyHookChangeL(KMmTsyFaxLineName);
+ }
+
+/**
+@SYMTestCaseID BA-CTSY-CCON-CCNSC-0001
+@SYMComponent telephony_ctsy
+@SYMTestCaseDesc Test increase coverage for CMmLineTsy::CompleteNotifyStatusChange for voice
+@SYMTestPriority High
+@SYMTestActions Invokes CMmLineTsy::CompleteNotifyStatusChange for voice
+@SYMTestExpectedResults Pass
+@SYMTestType CT
+*/
+void CCTsyCallControlFU::TestCompleteNotifyStatusChange0001L()
+ {
+ AuxCompleteNotifyStatusChangeL(KMmTsyVoice1LineName);
+ }
+
+void CCTsyCallControlFU::AuxEnumerateCallL(const TDesC& aName)
+ {
+
+ if (aName.Compare(KMmTsyVoice1LineName) != 0 &&
+ aName.Compare(KMmTsyDataLineName) != 0 &&
+ aName.Compare(KMmTsyFaxLineName) != 0)
+ return;
+
+ OpenEtelServerL(EUseExtendedError);
+ CleanupStack::PushL(TCleanupItem(Cleanup,this));
+ OpenPhoneL();
+
+ RMobileLine line;
+
+ // open new line for KMmTsyDataLineName
+ TInt errorCode = OpenNewLineLC(iPhone, line, aName);
+ ASSERT_EQUALS(KErrNone, errorCode);
+
+ TInt index(0);
+
+ //-------------------------------------------------------------------------
+ // TEST C: Successful completion request of
+ // RLine::EnumerateCall when result is not cached.
+ //-------------------------------------------------------------------------
+
+ errorCode = line.EnumerateCall(index);
+ ASSERT_EQUALS(KErrNone, errorCode);
+
+ CleanupStack::PopAndDestroy(2, this); // line, this
+ }
+
+void CCTsyCallControlFU::AuxNotifyHookChangeL(const TDesC& aName)
+ {
+
+ if (aName.Compare(KMmTsyVoice1LineName) != 0 &&
+ aName.Compare(KMmTsyDataLineName) != 0 &&
+ aName.Compare(KMmTsyFaxLineName) != 0)
+ return;
+
+ OpenEtelServerL(EUseExtendedError);
+ CleanupStack::PushL(TCleanupItem(Cleanup,this));
+ OpenPhoneL();
+
+ RMobileLine line;
+
+ TRequestStatus requestStatus;
+ TRequestStatus mockLtsyStatus;
+
+ RCall::THookStatus hookStatus;
+
+ TInt errorCode = OpenNewLineLC(iPhone, line, aName);
+ ASSERT_EQUALS(KErrNone, errorCode);
+
+ line.NotifyHookChange(requestStatus, hookStatus);
+
+ User::WaitForRequest(requestStatus);
+ AssertMockLtsyStatusL();
+ ASSERT_EQUALS(KErrNotSupported, requestStatus.Int());
+
+ line.NotifyHookChangeCancel();
+
+ CleanupStack::PopAndDestroy(2, this); // line, this
+ }
+
+void CCTsyCallControlFU::AuxCompleteNotifyStatusChangeL(const TDesC& aName)
+ {
+
+ RMobilePhone::TMobileService mobileService = RMobilePhone::EServiceUnspecified;
+
+ if (aName.Compare(KMmTsyVoice1LineName) == 0)
+ {
+ mobileService = RMobilePhone::EVoiceService;
+ }
+ else if (aName.Compare(KMmTsyDataLineName) == 0)
+ {
+ mobileService = RMobilePhone::ECircuitDataService;
+ }
+ else if (aName.Compare(KMmTsyFaxLineName) == 0)
+ {
+ mobileService = RMobilePhone::EFaxService;
+ }
+ else
+ return;
+
+ OpenEtelServerL(EUseExtendedError);
+ CleanupStack::PushL(TCleanupItem(Cleanup,this));
+ OpenPhoneL();
+
+ RMobileLine line;
+ RCall call;
+ RMobileCall::TMobileCallStatus mobileCallStatus(RMobileCall::EStatusUnknown);
+ TName callName;
+ TInt callId(1);
+ RBuf8 completeData;
+ CleanupClosePushL(completeData);
+
+ TRequestStatus mockLtsyStatus;
+ TRequestStatus requestNotify;
+
+ TInt errorCode = OpenNewLineLC(iPhone, line, aName);
+ ASSERT_EQUALS(KErrNone, errorCode);
+
+ //-------------------------------------------------------------------------
+
+ line.NotifyIncomingCall(requestNotify, callName);
+
+ iMockLTSY.NotifyTerminated(mockLtsyStatus);
+ RMobileCall::TMobileCallInfoV1 mobileCallInfo;
+ TMockLtsyCallData1<RMobileCall::TMobileCallInfoV1> mockCallData1(callId, mobileService, mobileCallInfo);
+ mockCallData1.SerialiseL(completeData);
+ iMockLTSY.CompleteL(EEtelLineNotifyIncomingCall, KErrNone, completeData);
+ User::WaitForRequest(mockLtsyStatus);
+ AssertMockLtsyStatusL();
+ ASSERT_EQUALS(KErrNone, mockLtsyStatus.Int());
+
+ User::WaitForRequest(requestNotify);
+ AssertMockLtsyStatusL();
+ ASSERT_EQUALS(KErrNone, requestNotify.Int());
+
+ RArray<RMobileCall::TMobileCallStatus> arrayCallStatus;
+ CleanupClosePushL(arrayCallStatus);
+
+ arrayCallStatus.AppendL(RMobileCall::EStatusDialling);
+ arrayCallStatus.AppendL(RMobileCall::EStatusAnswering);
+ arrayCallStatus.AppendL(RMobileCall::EStatusConnecting);
+
+ for (TInt i = 0; i < arrayCallStatus.Count(); i++)
+ {
+
+ mobileCallStatus = arrayCallStatus[i];
+
+ TMockLtsyCallData1<RMobileCall::TMobileCallStatus> mockCallData2(callId, mobileService, mobileCallStatus);
+ completeData.Close();
+ mockCallData2.SerialiseL(completeData);
+
+ iMockLTSY.NotifyTerminated(mockLtsyStatus);
+ iMockLTSY.CompleteL(EMobileCallNotifyMobileCallStatusChange, KErrNone, completeData);
+ User::WaitForRequest(mockLtsyStatus);
+ AssertMockLtsyStatusL();
+ ASSERT_EQUALS(KErrNone, mockLtsyStatus.Int());
+
+ }
+
+ CleanupStack::PopAndDestroy(4, this); // line, this, completeName
+ // arrayCallStatus
+ }
+
+/**
+@SYMTestCaseID BA-CTSY-CCON-CNUA-0001
+@SYMComponent telephony_ctsy
+@SYMTestCaseDesc Test: generating a call with duration to update life time param of total call time
+@SYMTestPriority High
+@SYMTestActions Invokes updating life time param with every specified interval of sec elapsed
+ and with the reminder of time when call status becomes idle (in case of the conference call
+ it's the last call)
+@SYMTestExpectedResults Pass
+@SYMTestType CT
+*/
+void CCTsyCallControlFU::TestUpdateLifeTime0001L()
+ {
+
+ OpenEtelServerL(EUseExtendedError);
+ CleanupStack::PushL(TCleanupItem(Cleanup,this));
+ OpenPhoneL();
+
+ RBuf8 expectData;
+ CleanupClosePushL(expectData);
+
+ RBuf8 completeData;
+ CleanupClosePushL(completeData);
+
+ RLine line;
+ RMobileCall call;
+
+ TInt errorCode = KErrNone;
+ TRequestStatus requestStatus;
+ TRequestStatus requestStatus2;
+ TRequestStatus mockLtsyStatus;
+
+ // open new line and call for KMmTsyVoice1LineName
+ errorCode = OpenNewLineLC(iPhone, line, KMmTsyVoice1LineName);
+ ASSERT_EQUALS(KErrNone, errorCode);
+
+ TName name;
+
+ // we are preparing to dial the call:
+
+ _LIT(KPhoneNumber, "101632960000");
+
+ TInt callId = 1;
+ RMobilePhone::TMobileService mobileService = RMobilePhone::EVoiceService;
+
+ RMobileCall::TMobileCallParamsV7 callParams;
+ RMobileCall::TMobileCallParamsV7Pckg pckgCallParams(callParams);
+ RMobileCall::TMobileCallInfoV8 callInfo;
+ callParams.iSpeakerControl = RCall::EMonitorSpeakerControlOnUntilCarrier;
+ callParams.iSpeakerVolume = RCall::EMonitorSpeakerVolumeLow;
+ callParams.iInterval = 100;
+ callParams.iWaitForDialTone = RCall::EDialToneWait;
+ callParams.iIdRestrict = RMobileCall::EIdRestrictDefault;
+ callParams.iCug.iExplicitInvoke = EFalse;
+ callParams.iCug.iCugIndex = 0xFFFF;
+ callParams.iCug.iSuppressPrefCug = EFalse;
+ callParams.iCug.iSuppressOA = EFalse;
+ callParams.iAutoRedial = EFalse;
+
+ callInfo.iValid = RMobileCall::KCallDialledParty | RMobileCall::KCallAlternating;
+ callInfo.iService = mobileService;
+ callInfo.iStatus = RMobileCall::EStatusUnknown;
+ callInfo.iCallId =-1;
+ callInfo.iExitCode =0;
+ callInfo.iEmergency =0;
+ callInfo.iForwarded =0;
+ callInfo.iPrivacy = RMobilePhone::EPrivacyUnspecified;
+ callInfo.iAlternatingCall = RMobilePhone::EAlternatingModeUnspecified;
+ callInfo.iDialledParty.iTelNumber.Copy(KPhoneNumber);
+
+ TMockLtsyCallData2<RMobileCall::TMobileCallParamsV1, RMobileCall::TMobileCallInfoV1>
+ mockData2(0, mobileService, callParams, callInfo);
+
+ TMockLtsyCallData0 mockData0(callId, mobileService);
+
+ RCall::TCallParams callDialParams;
+ TPckg<RCall::TCallParams> pckgCallDialParams(callDialParams);
+ callDialParams.iSpeakerControl = RCall::EMonitorSpeakerControlOnUntilCarrier;
+ callDialParams.iSpeakerVolume = RCall::EMonitorSpeakerVolumeLow;
+ callDialParams.iInterval = 100;
+ callDialParams.iWaitForDialTone = RCall::EDialToneWait;
+
+ // open new call
+ CleanupClosePushL(call);
+ errorCode = call.OpenNewCall(line, name);
+ ASSERT_EQUALS(KErrNone, errorCode);
+
+ expectData.Close();
+ mockData2.SerialiseL(expectData);
+ iMockLTSY.ExpectL(EEtelCallDial, expectData);
+
+ CallGetMobileCallInfoL(callId, mobileService, KPhoneNumber);
+
+ completeData.Close();
+ mockData0.SerialiseL(completeData);
+ iMockLTSY.CompleteL(EEtelCallDial, KErrNone, completeData);
+
+ // with a notifications we make sure the state of the call will become: connected
+ TRequestStatus reqState1, reqState2, reqState3;
+ RMobileCall::TMobileCallStatus status;
+ call.NotifyMobileCallStatusChange(reqState1, status);
+
+ // we are dialing the call:
+ call.Dial(requestStatus, pckgCallDialParams, KPhoneNumber);
+
+ RMobileCall::TMobileCallStatus mobileCallStatus = RMobileCall::EStatusDialling;
+ TMockLtsyCallData1<RMobileCall::TMobileCallStatus> mockCallData4(callId, mobileService, mobileCallStatus);
+ completeData.Close();
+ mockCallData4.SerialiseL(completeData);
+
+ iMockLTSY.NotifyTerminated(mockLtsyStatus);
+ iMockLTSY.CompleteL(EMobileCallNotifyMobileCallStatusChange, KErrNone, completeData);
+ User::WaitForRequest(mockLtsyStatus);
+ AssertMockLtsyStatusL();
+ ASSERT_EQUALS(KErrNone, mockLtsyStatus.Int());
+
+ User::WaitForRequest(reqState1);
+ call.NotifyMobileCallStatusChange(reqState2, status);
+
+ mobileCallStatus = RMobileCall::EStatusConnecting;
+ TMockLtsyCallData1<RMobileCall::TMobileCallStatus> mockCallData5(callId, mobileService, mobileCallStatus);
+ completeData.Close();
+ mockCallData5.SerialiseL(completeData);
+
+ iMockLTSY.NotifyTerminated(mockLtsyStatus);
+ iMockLTSY.CompleteL(EMobileCallNotifyMobileCallStatusChange, KErrNone, completeData);
+ User::WaitForRequest(mockLtsyStatus);
+ AssertMockLtsyStatusL();
+ ASSERT_EQUALS(KErrNone, mockLtsyStatus.Int());
+
+ User::WaitForRequest(reqState2);
+ call.NotifyMobileCallStatusChange(reqState3, status);
+
+ mobileCallStatus = RMobileCall::EStatusConnected;
+ TMockLtsyCallData1<RMobileCall::TMobileCallStatus> mockCallData6(callId, mobileService, mobileCallStatus);
+ completeData.Close();
+ mockCallData6.SerialiseL(completeData);
+
+ iMockLTSY.NotifyTerminated(mockLtsyStatus);
+ iMockLTSY.CompleteL(EMobileCallNotifyMobileCallStatusChange, KErrNone, completeData);
+ User::WaitForRequest(mockLtsyStatus);
+ AssertMockLtsyStatusL();
+ ASSERT_EQUALS(KErrNone, mockLtsyStatus.Int());
+
+ // status call becomes 'connected' here...
+
+ User::WaitForRequest(reqState3);
+
+ // completion of the Dial() request:
+ User::WaitForRequest(requestStatus);
+
+ // Here we will trigger call duration of 15sec. Timer interval causing update
+ // of life time parameter is set to 10 sec: so we will have a one update caused
+ // by firing timer. The remainding duration ~5sec will be triggered by
+ // the call status becoming idle.
+ TUint32 duration = 10;
+ TMockLtsyData1<TUint32> ltsyData( duration );
+ expectData.Close();
+ ltsyData.SerialiseL(expectData);
+ // firing timer will cause this:
+ iMockLTSY.ExpectL(EMmTsyUpdateLifeTimeIPC, expectData);
+
+ // 15 sec call duration was chosen to trigger timer firing 1 update plus last update,
+ // when call becomes idle...
+ User::After(15000000);
+
+ // completion of the timer firing event:
+ TRequestStatus mockLtsyStatus2;
+ iMockLTSY.NotifyTerminated(mockLtsyStatus2);
+ iMockLTSY.CompleteL(EMmTsyUpdateLifeTimeIPC, KErrNone);
+
+ User::WaitForRequest(mockLtsyStatus2);
+ ASSERT_EQUALS(KErrNone, mockLtsyStatus2.Int());
+ AssertMockLtsyStatusL();
+
+ //
+
+ // preparing call state to become 'idle' eventually:
+ TRequestStatus notifyCallStatus;
+ RMobileCall::TMobileCallStatus callStatus = RMobileCall::EStatusUnknown;
+ call.NotifyMobileCallStatusChange(notifyCallStatus, callStatus);
+
+ // hangup call is going to LTSY:
+ TInt hangUpCause = KErrGsmReleaseByUser;
+ TBool autoStChangeDisable = ETrue;
+ TMockLtsyCallData2<TInt, TBool> mockData3(callId, mobileService,
+ hangUpCause,
+ autoStChangeDisable);
+ expectData.Close();
+ mockData3.SerialiseL(expectData);
+ iMockLTSY.ExpectL(EEtelCallHangUp, expectData);
+
+ TRequestStatus hangupStatus;
+ call.HangUp(hangupStatus); //<--------- hang up triggers status changes
+
+ callStatus = RMobileCall::EStatusDisconnecting;
+ TMockLtsyCallData1<RMobileCall::TMobileCallStatus> mockCallData7(callId, mobileService, callStatus);
+ completeData.Close();
+ mockCallData7.SerialiseL(completeData);
+
+ iMockLTSY.NotifyTerminated(mockLtsyStatus);
+ iMockLTSY.CompleteL(EMobileCallNotifyMobileCallStatusChange, KErrNone, completeData);
+ User::WaitForRequest(mockLtsyStatus);
+ AssertMockLtsyStatusL();
+ ASSERT_EQUALS(KErrNone, mockLtsyStatus.Int());
+
+ User::WaitForRequest(notifyCallStatus);
+ ASSERT_EQUALS(KErrNone, notifyCallStatus.Int());
+ ASSERT_EQUALS(RMobileCall::EStatusDisconnecting, callStatus); // <------------disconnecting status
+
+ call.NotifyMobileCallStatusChange(notifyCallStatus, callStatus);
+
+ callStatus = RMobileCall::EStatusIdle;
+ TMockLtsyCallData1<RMobileCall::TMobileCallStatus> mockCallData8(callId, mobileService, callStatus);
+ completeData.Close();
+ mockCallData8.SerialiseL(completeData);
+
+ iMockLTSY.NotifyTerminated(mockLtsyStatus);
+ iMockLTSY.CompleteL(EMobileCallNotifyMobileCallStatusChange, KErrNone, completeData);
+
+ // when call becomes idle, remaining duration of the call is added to life time param in LTSY:
+ TUint32 duration2 = 4; // this is a dummy value, which won't be checked by mocksy engine
+ TMockLtsyData1<TUint32> ltsyData2( duration2 );
+ expectData.Close();
+ ltsyData2.SerialiseL(expectData);
+ iMockLTSY.ExpectL(EMmTsyUpdateLifeTimeIPC, expectData);
+
+ User::WaitForRequest(mockLtsyStatus);
+ // we did set a sleep time for 15sec, but after stopping timer it may give us 14 sec or 15 sec
+ // we can not determine the correct value for the mockLTSY;
+ // we tell mocksy engine to ignore duration param value
+ AssertMockLtsyStatusL();
+ ASSERT_EQUALS(KErrNone, mockLtsyStatus.Int());
+
+ User::WaitForRequest(notifyCallStatus);
+ ASSERT_EQUALS(KErrNone, notifyCallStatus.Int());
+ ASSERT_EQUALS(RMobileCall::EStatusIdle, callStatus); // <-------- idle status
+
+ User::WaitForRequest(hangupStatus);
+ ASSERT_EQUALS(KErrNone, hangupStatus.Int()); // <--- then hang up is finished
+
+ call.GetMobileCallStatus(callStatus);
+ ASSERT_EQUALS(RMobileCall::EStatusIdle, callStatus);
+
+ //
+
+ TRequestStatus mockLtsyStatus3;
+ iMockLTSY.NotifyTerminated(mockLtsyStatus3);
+ iMockLTSY.CompleteL(EMmTsyUpdateLifeTimeIPC, KErrNone);
+
+ User::WaitForRequest(mockLtsyStatus3);
+ ASSERT_EQUALS(KErrNone, mockLtsyStatus3.Int());
+
+ call.Close();
+
+ AssertMockLtsyStatusL();
+ CleanupStack::PopAndDestroy(1);
+ CleanupStack::PopAndDestroy(4, this);
+ }
+
+
+