telephonyserverplugins/common_tsy/test/component/src/cctsycallemergencyfu.cpp
changeset 0 3553901f7fa8
child 14 7ef16719d8cb
equal deleted inserted replaced
-1:000000000000 0:3553901f7fa8
       
     1 // Copyright (c) 2007-2009 Nokia Corporation and/or its subsidiary(-ies).
       
     2 // All rights reserved.
       
     3 // This component and the accompanying materials are made available
       
     4 // under the terms of "Eclipse Public License v1.0"
       
     5 // which accompanies this distribution, and is available
       
     6 // at the URL "http://www.eclipse.org/legal/epl-v10.html".
       
     7 //
       
     8 // Initial Contributors:
       
     9 // Nokia Corporation - initial contribution.
       
    10 //
       
    11 // Contributors:
       
    12 //
       
    13 // Description:
       
    14 // The TEFUnit test suite for CallEmergency in the Common TSY.
       
    15 // 
       
    16 //
       
    17 
       
    18 /**
       
    19  @file 
       
    20 */
       
    21 
       
    22 #include "cctsycallemergencyfu.h"
       
    23 #include <etel.h>
       
    24 #include <etelmm.h>
       
    25 #include <et_clsvr.h>
       
    26 #include <ctsy/mmtsy_names.h>
       
    27 #include <ctsy/serviceapi/mmtsy_ipcdefs.h>
       
    28 #include "tmockltsydata.h"
       
    29 #include <ctsy/serviceapi/gsmerror.h>
       
    30 #include "e32property.h"
       
    31 
       
    32 #include <ssm/ssmadaptationcli.h>
       
    33 
       
    34 // for keys definition. These keys are  used to manage SSM_Stub behaviour
       
    35 #include "ssmstub_properties.h"
       
    36 
       
    37 #ifndef SYMBIAN_SYSTEM_STATE_MANAGEMENT
       
    38   const TUid KThisUID = {0x101F777C};
       
    39 #endif
       
    40 
       
    41 CTestSuite* CCTsyCallEmergencyFU::CreateSuiteL(const TDesC& aName)
       
    42 	{
       
    43 	SUB_SUITE;
       
    44 	
       
    45 	ADD_TEST_STEP_ISO_CPP(CCTsyCallEmergencyFU, TestDialEmergencyCall0001L);
       
    46 	ADD_TEST_STEP_ISO_CPP(CCTsyCallEmergencyFU, TestDialEmergencyCall0002L);
       
    47 	ADD_TEST_STEP_ISO_CPP(CCTsyCallEmergencyFU, TestDialEmergencyCall0003L);
       
    48 	ADD_TEST_STEP_ISO_CPP(CCTsyCallEmergencyFU, TestDialEmergencyCall0004L);
       
    49 	ADD_TEST_STEP_ISO_CPP(CCTsyCallEmergencyFU, TestDialEmergencyCall0005L);
       
    50 	ADD_TEST_STEP_ISO_CPP(CCTsyCallEmergencyFU, TestDialEmergencyCall0001bL);
       
    51 	ADD_TEST_STEP_ISO_CPP(CCTsyCallEmergencyFU, TestDialEmergencyCall0001cL);
       
    52 	
       
    53 	// tests for SSM plugin (System State Manager)
       
    54 	ADD_TEST_STEP_ISO_CPP(CCTsyCallEmergencyFU, TestDialEmergencyCall0001dL);
       
    55 	ADD_TEST_STEP_ISO_CPP(CCTsyCallEmergencyFU, TestDialEmergencyCall0001eL);
       
    56 
       
    57 	//test for dialling an emergency call when modem boot sequence has not run
       
    58 	ADD_TEST_STEP_ISO_CPP(CCTsyCallEmergencyFU, TestDialEmergencyCall0001fL);
       
    59 	END_SUITE;
       
    60 	}
       
    61 
       
    62 
       
    63 void CCTsyCallEmergencyFU::FillInEmergencyCallInfo(RMobileCall::TMobileCallInfoV1 &aInfo,
       
    64 		const TInt aCallId,
       
    65 		const TName& aCallName,
       
    66 		const RMobilePhone::TMobileService aService)
       
    67 	{
       
    68 	aInfo.iService = aService;
       
    69 	aInfo.iStatus = RMobileCall::EStatusIdle;
       
    70 	aInfo.iCallId = aCallId;
       
    71 	aInfo.iEmergency = ETrue;
       
    72 	aInfo.iCallName = aCallName;
       
    73 	switch ( aService )
       
    74 		{
       
    75 		case RMobilePhone::EAuxVoiceService:
       
    76 			aInfo.iLineName = KMmTsyVoice2LineName;
       
    77 			break;
       
    78 		case RMobilePhone::EVoiceService:
       
    79 		default:
       
    80 			aInfo.iLineName = KMmTsyVoice1LineName;
       
    81 			break;
       
    82 		}
       
    83 	aInfo.iValid = RMobileCall::KCallId | RMobileCall::KCallEmergency;
       
    84 	}
       
    85 
       
    86 
       
    87 //
       
    88 // Actual test cases
       
    89 //
       
    90 
       
    91 
       
    92 /**
       
    93 @SYMTestCaseID BA-CTSY-CEMG-CDEC-0001
       
    94 @SYMComponent  telephony_ctsy
       
    95 @SYMTestCaseDesc Test support in CTSY for RMobileCall::DialEmergencyCall for voice calls
       
    96 @SYMTestPriority High
       
    97 @SYMTestActions Invokes RMobileCall::DialEmergencyCall for voice calls
       
    98 @SYMTestExpectedResults Pass
       
    99 @SYMTestType CT
       
   100 */
       
   101 void CCTsyCallEmergencyFU::TestDialEmergencyCall0001L()
       
   102 	{
       
   103 
       
   104 	OpenEtelServerL(EUseExtendedError);
       
   105 	CleanupStack::PushL(TCleanupItem(Cleanup,this));
       
   106 	OpenPhoneL();
       
   107 
       
   108 	RBuf8 data;
       
   109 	CleanupClosePushL(data);
       
   110 
       
   111 	RLine line;
       
   112 	TInt err = line.Open(iPhone, KMmTsyVoice1LineName);
       
   113 	ASSERT_EQUALS(KErrNone, err)
       
   114     CleanupClosePushL(line);
       
   115 	
       
   116 	TRequestStatus reqStatus;
       
   117 
       
   118 	RMobileCall mobileCall;
       
   119 	TName callName;
       
   120 	err = mobileCall.OpenNewCall(line, callName);
       
   121 	ASSERT_EQUALS(KErrNone, err);
       
   122 	CleanupClosePushL(mobileCall);
       
   123 
       
   124 	RMobileENStore::TEmergencyNumber number(_L("911"));
       
   125 	TMockLtsyData1<RMobileENStore::TEmergencyNumber> numberLtsyData(number);
       
   126 
       
   127 	const TInt KCallId = 1;
       
   128 	RMobilePhone::TMobileService KMobileService = RMobilePhone::EVoiceService;
       
   129 	RMobileCall::TMobileCallInfoV1 callInfo;
       
   130 	FillInEmergencyCallInfo(callInfo, KCallId, callName, KMobileService);
       
   131 	TMockLtsyCallData1<RMobileCall::TMobileCallInfoV1> completeCallInfoData(KCallId, KMobileService, callInfo);
       
   132 	
       
   133 	RMobileCall::TMobileCallStatus mobileCallStatus = RMobileCall::EStatusIdle;
       
   134 	TMockLtsyCallData1<RMobileCall::TMobileCallStatus> completeCallStatusData(KCallId, KMobileService, mobileCallStatus);
       
   135 
       
   136  	//-------------------------------------------------------------------------
       
   137 	// TEST A: failure to dispatch request to LTSY
       
   138  	//-------------------------------------------------------------------------
       
   139  	
       
   140 	numberLtsyData.SerialiseL(data);
       
   141 	iMockLTSY.ExpectL(EMobileCallDialEmergencyCall, data, KErrNotSupported);
       
   142 
       
   143 	mobileCall.DialEmergencyCall(reqStatus, number);
       
   144 	User::WaitForRequest(reqStatus);
       
   145 	ASSERT_EQUALS(KErrNotSupported, reqStatus.Int());
       
   146 	AssertMockLtsyStatusL();
       
   147 	
       
   148 	//-------------------------------------------------------------------------
       
   149 	// TEST B1: failure on completion of pending request from LTSY->CTSY
       
   150  	//-------------------------------------------------------------------------
       
   151 
       
   152 	data.Close();
       
   153 	numberLtsyData.SerialiseL(data);
       
   154 	iMockLTSY.ExpectL(EMobileCallDialEmergencyCall, data, KErrNone);
       
   155 
       
   156     data.Close();
       
   157     completeCallInfoData.SerialiseL(data);
       
   158     iMockLTSY.CompleteL(EMobileCallGetMobileCallInfo, KErrNone, data);
       
   159 
       
   160     data.Close();
       
   161     completeCallStatusData.SerialiseL(data);
       
   162     iMockLTSY.CompleteL(EMobileCallNotifyMobileCallStatusChange, KErrGeneral, data);
       
   163 
       
   164 	mobileCall.DialEmergencyCall(reqStatus, number);
       
   165 	User::WaitForRequest(reqStatus);
       
   166 	ASSERT_EQUALS(KErrGeneral, reqStatus.Int());
       
   167 	AssertMockLtsyStatusL();
       
   168 
       
   169 	//-------------------------------------------------------------------------
       
   170 	// TEST B2: failure on completion of pending request from LTSY->CTSY
       
   171 	// when LTSY returns EStatusIdle call status
       
   172  	//-------------------------------------------------------------------------
       
   173 
       
   174 	data.Close();
       
   175 	numberLtsyData.SerialiseL(data);
       
   176 	iMockLTSY.ExpectL(EMobileCallDialEmergencyCall, data, KErrNone);
       
   177 
       
   178     data.Close();
       
   179     completeCallInfoData.SerialiseL(data);
       
   180     iMockLTSY.CompleteL(EMobileCallGetMobileCallInfo, KErrNone, data);
       
   181 
       
   182     data.Close();
       
   183     completeCallStatusData.SerialiseL(data);
       
   184     iMockLTSY.CompleteL(EMobileCallNotifyMobileCallStatusChange, KErrNone, data);
       
   185 
       
   186 	mobileCall.DialEmergencyCall(reqStatus, number);
       
   187 	User::WaitForRequest(reqStatus);
       
   188 	ASSERT_EQUALS(KErrNotReady, reqStatus.Int());
       
   189 	AssertMockLtsyStatusL();
       
   190 
       
   191  	//-------------------------------------------------------------------------
       
   192 	// TEST C1: Successful completion request of
       
   193 	// RMobileCall::DialEmergencyCall.
       
   194  	//-------------------------------------------------------------------------
       
   195 	
       
   196 	data.Close();
       
   197 	numberLtsyData.SerialiseL(data);
       
   198 	iMockLTSY.ExpectL(EMobileCallDialEmergencyCall, data, KErrNone);
       
   199 
       
   200     data.Close();
       
   201     completeCallInfoData.SerialiseL(data);
       
   202     iMockLTSY.CompleteL(EMobileCallGetMobileCallInfo, KErrNone, data);
       
   203 
       
   204     data.Close();
       
   205     mobileCallStatus = RMobileCall::EStatusDialling;
       
   206     completeCallStatusData.SerialiseL(data);
       
   207     iMockLTSY.CompleteL(EMobileCallNotifyMobileCallStatusChange, KErrNone, data);
       
   208 
       
   209     data.Close();
       
   210     mobileCallStatus = RMobileCall::EStatusConnecting;
       
   211     completeCallStatusData.SerialiseL(data);
       
   212     iMockLTSY.CompleteL(EMobileCallNotifyMobileCallStatusChange, KErrNone, data);
       
   213 
       
   214     data.Close();
       
   215     mobileCallStatus = RMobileCall::EStatusConnected;
       
   216     completeCallStatusData.SerialiseL(data);
       
   217     iMockLTSY.CompleteL(EMobileCallNotifyMobileCallStatusChange, KErrNone, data);
       
   218 
       
   219 	mobileCall.DialEmergencyCall(reqStatus, number);
       
   220 	User::WaitForRequest(reqStatus);
       
   221 	ASSERT_EQUALS(KErrNone, reqStatus.Int());
       
   222 	AssertMockLtsyStatusL();
       
   223 
       
   224  	//-------------------------------------------------------------------------
       
   225 	// TEST: failure to dispatch request to CTSY 
       
   226 	// when emergency call is allready dialed
       
   227  	//-------------------------------------------------------------------------
       
   228 
       
   229 	mobileCall.DialEmergencyCall(reqStatus, number);
       
   230 	User::WaitForRequest(reqStatus);
       
   231 	ASSERT_EQUALS(KErrNotReady, reqStatus.Int());
       
   232 	AssertMockLtsyStatusL();
       
   233 
       
   234 	PrepareCallCloseL(KCallId, KMobileService);
       
   235 	CleanupStack::PopAndDestroy(&mobileCall);
       
   236 	AssertMockLtsyStatusL();
       
   237 
       
   238 	//-------------------------------------------------------------------------
       
   239 	// TEST C2: Successful completion request of
       
   240 	// RMobileCall::DialEmergencyCall in OOM condition.
       
   241  	//-------------------------------------------------------------------------
       
   242 	
       
   243 	data.Close();
       
   244 	numberLtsyData.SerialiseL(data);
       
   245 	iMockLTSY.ExpectL(EMobileCallDialEmergencyCall, data, KErrNone);
       
   246 
       
   247     data.Close();
       
   248     completeCallInfoData.SerialiseL(data);
       
   249     iMockLTSY.CompleteL(EMobileCallGetMobileCallInfo, KErrNone, data);
       
   250 
       
   251     data.Close();
       
   252     mobileCallStatus = RMobileCall::EStatusDialling;
       
   253     completeCallStatusData.SerialiseL(data);
       
   254     iMockLTSY.CompleteL(EMobileCallNotifyMobileCallStatusChange, KErrNone, data);
       
   255 
       
   256     data.Close();
       
   257     mobileCallStatus = RMobileCall::EStatusConnecting;
       
   258     completeCallStatusData.SerialiseL(data);
       
   259     iMockLTSY.CompleteL(EMobileCallNotifyMobileCallStatusChange, KErrNone, data);
       
   260 
       
   261     data.Close();
       
   262     mobileCallStatus = RMobileCall::EStatusConnected;
       
   263     completeCallStatusData.SerialiseL(data);
       
   264     iMockLTSY.CompleteL(EMobileCallNotifyMobileCallStatusChange, KErrNone, data);
       
   265 
       
   266 	err = iTelServer.SetPriorityClientV2();
       
   267 	ASSERT_EQUALS(KErrNone, err);
       
   268 
       
   269 	err = mobileCall.OpenNewCall(line);
       
   270 	ASSERT_EQUALS(KErrNone, err);
       
   271 	CleanupClosePushL(mobileCall);
       
   272 	
       
   273 	// simulate a heap allocation failure
       
   274 	User::__DbgSetAllocFail(EFalse, RAllocator::EDeterministic, 1);
       
   275 	User::__DbgSetAllocFail(ETrue, RAllocator::EDeterministic, 1);
       
   276 
       
   277 	// test RMobileCall::DialEmergencyCall in out-of-memory condition
       
   278 	mobileCall.DialEmergencyCall(reqStatus, number);
       
   279 	User::WaitForRequest(reqStatus);
       
   280 
       
   281 	// turn back a heap allocation possibility
       
   282 	User::__DbgSetAllocFail(EFalse, RAllocator::ENone, 1);
       
   283 	User::__DbgSetAllocFail(ETrue, RAllocator::ENone, 1);
       
   284 
       
   285 	ERR_PRINTF2(_L("<font color=Orange>$CTSYKnownFailure: Dependent on Symbian System State Manager.  DEF141353 </font>"), 210106);
       
   286 	    // Symbian SSM allocates memory in call to Connect() in ActivateRfForEmergencyCall
       
   287 	   
       
   288 	// check results
       
   289 	ASSERT_EQUALS(KErrNone, reqStatus.Int());
       
   290 	AssertMockLtsyStatusL();
       
   291 
       
   292 	//-------------------------------------------------------------------------
       
   293 	// TEST E: Unsolicited completion of RMobileCall::DialEmergencyCall
       
   294 	// from LTSY.
       
   295  	//-------------------------------------------------------------------------
       
   296 
       
   297 	TRequestStatus mockLtsyStatus;
       
   298 	iMockLTSY.NotifyTerminated(mockLtsyStatus);	
       
   299 	//send completion
       
   300 	TMockLtsyCallData0 completeEmptyLtsyData(KCallId, KMobileService);
       
   301 	data.Close();
       
   302 	completeEmptyLtsyData.SerialiseL(data);
       
   303 	iMockLTSY.CompleteL(EMobileCallDialEmergencyCall, KErrNone, data);
       
   304 	// wait for completion
       
   305 	User::WaitForRequest(mockLtsyStatus);
       
   306 	ASSERT_EQUALS(KErrNone, mockLtsyStatus.Int());
       
   307 	
       
   308 	// increase coverage
       
   309 
       
   310 	iMockLTSY.NotifyTerminated(mockLtsyStatus);	
       
   311     data.Close();
       
   312     mobileCallStatus = RMobileCall::EStatusIdle;
       
   313     completeCallStatusData.SerialiseL(data);
       
   314     iMockLTSY.CompleteL(EMobileCallNotifyMobileCallStatusChange, KErrNone, data);
       
   315 	User::WaitForRequest(mockLtsyStatus);
       
   316 	ASSERT_EQUALS(KErrNone, mockLtsyStatus.Int());
       
   317 
       
   318 	AssertMockLtsyStatusL();
       
   319 	CleanupStack::PopAndDestroy(2); // mobileCall, line
       
   320 	CleanupStack::PopAndDestroy(2, this); // data, this
       
   321 	
       
   322 	}
       
   323 
       
   324 
       
   325 /**
       
   326 @SYMTestCaseID BA-CTSY-CEMG-CDEC-0002
       
   327 @SYMComponent  telephony_ctsy
       
   328 @SYMTestCaseDesc Test support in CTSY for cancelling of RMobileCall::DialEmergencyCall for voice calls
       
   329 @SYMTestPriority High
       
   330 @SYMTestActions Invokes cancelling of RMobileCall::DialEmergencyCall for voice calls
       
   331 @SYMTestExpectedResults Pass
       
   332 @SYMTestType CT
       
   333 */
       
   334 void CCTsyCallEmergencyFU::TestDialEmergencyCall0002L()
       
   335 	{
       
   336 
       
   337 	OpenEtelServerL(EUseExtendedError);
       
   338 	CleanupStack::PushL(TCleanupItem(Cleanup,this));
       
   339 	OpenPhoneL();
       
   340 
       
   341 	RBuf8 data;
       
   342 	CleanupClosePushL(data);
       
   343 
       
   344 	RLine line;
       
   345 	TInt err = line.Open(iPhone, KMmTsyVoice1LineName);
       
   346 	ASSERT_EQUALS(KErrNone, err)
       
   347     CleanupClosePushL(line);
       
   348 	
       
   349 	TRequestStatus reqStatus;
       
   350 	TRequestStatus mockLtsyStatus;
       
   351 
       
   352 	TName callName;
       
   353 	RMobileENStore::TEmergencyNumber number(_L("911"));
       
   354 	TMockLtsyData1<RMobileENStore::TEmergencyNumber> numberLtsyData(number);
       
   355 
       
   356 	const RMobilePhone::TMobileService KMobileService = RMobilePhone::EVoiceService;
       
   357 	const TInt KCallId1 = 1;
       
   358 	RMobileCall::TMobileCallInfoV1 callInfo;
       
   359 	FillInEmergencyCallInfo(callInfo, KCallId1, callName, KMobileService);
       
   360 	callInfo.iValid = RMobileCall::KCallId | RMobileCall::KCallEmergency;
       
   361 	
       
   362 	TMockLtsyCallData1<RMobileCall::TMobileCallInfoV1> completeCallInfoData(KCallId1, KMobileService, callInfo);
       
   363 	
       
   364 	TInt hangUpCause = KErrGsmReleaseByUser;
       
   365 	TBool autoStChangeDisable = ETrue;
       
   366     TMockLtsyCallData2<TInt, TBool> expHangUpData(KCallId1, KMobileService, 
       
   367                                               hangUpCause, 
       
   368                                               autoStChangeDisable);
       
   369 
       
   370 	TMockLtsyCallData0 completeEmptyLtsyData(KCallId1, KMobileService);
       
   371 
       
   372 	RMobileCall::TMobileCallStatus mobileCallStatus = RMobileCall::EStatusIdle;
       
   373 	TMockLtsyCallData1<RMobileCall::TMobileCallStatus> completeCallStatusData(KCallId1, KMobileService, mobileCallStatus);
       
   374 
       
   375 	//-------------------------------------------------------------------------
       
   376     // Test cancelling of RMobileCall::DialEmergencyCall
       
   377     // before than LTSY sends any completions
       
   378     //-------------------------------------------------------------------------
       
   379 
       
   380     RMobileCall mobileCall1;
       
   381     err = mobileCall1.OpenNewCall(line, callName);
       
   382     ASSERT_EQUALS(KErrNone, err);
       
   383     CleanupClosePushL(mobileCall1);
       
   384 
       
   385     numberLtsyData.SerialiseL(data);
       
   386     iMockLTSY.ExpectL(EMobileCallDialEmergencyCall, data, KErrNone);
       
   387     
       
   388     mobileCall1.DialEmergencyCall(reqStatus, number);
       
   389     User::After(1000); // Delay needed to reach DialEmergencyCall request to LTSY
       
   390     mobileCall1.CancelAsyncRequest(EMobileCallDialEmergencyCall);
       
   391     
       
   392     data.Close();
       
   393     iMockLTSY.NotifyTerminated(mockLtsyStatus);
       
   394     completeCallInfoData.SerialiseL(data);
       
   395     iMockLTSY.CompleteL(EMobileCallGetMobileCallInfo, KErrNone, data);
       
   396     User::WaitForRequest(mockLtsyStatus);      
       
   397     
       
   398     data.Close();
       
   399     mobileCallStatus = RMobileCall::EStatusDialling; 
       
   400     completeCallStatusData.SerialiseL(data);
       
   401     iMockLTSY.NotifyTerminated(mockLtsyStatus);
       
   402         
       
   403     iMockLTSY.CompleteL(EMobileCallNotifyMobileCallStatusChange, hangUpCause, data);
       
   404       
       
   405     data.Close();
       
   406     expHangUpData.SerialiseL(data);
       
   407     iMockLTSY.ExpectL(EEtelCallHangUp, data, KErrNone);
       
   408        
       
   409     User::WaitForRequest(mockLtsyStatus);
       
   410    
       
   411     data.Close();
       
   412     mobileCallStatus = RMobileCall::EStatusIdle;
       
   413     completeCallStatusData.SerialiseL(data);
       
   414     iMockLTSY.CompleteL(EMobileCallNotifyMobileCallStatusChange, hangUpCause, data);
       
   415     User::WaitForRequest(reqStatus);
       
   416     
       
   417     ASSERT_EQUALS(KErrCancel, reqStatus.Int());
       
   418 
       
   419     CleanupStack::PopAndDestroy(&mobileCall1);
       
   420     AssertMockLtsyStatusL();
       
   421 	//-------------------------------------------------------------------------
       
   422 	// Test cancelling of RMobileCall::DialEmergencyCall
       
   423 	// after callId is changed
       
   424  	//-------------------------------------------------------------------------
       
   425 
       
   426 	RMobileCall mobileCall2;
       
   427 	err = mobileCall2.OpenNewCall(line, callName);
       
   428 	ASSERT_EQUALS(KErrNone, err);
       
   429 	CleanupClosePushL(mobileCall2);
       
   430 
       
   431     data.Close();
       
   432 	numberLtsyData.SerialiseL(data);
       
   433 	iMockLTSY.ExpectL(EMobileCallDialEmergencyCall, data, KErrNone);
       
   434 
       
   435     data.Close();
       
   436     mobileCallStatus = RMobileCall::EStatusDialling;
       
   437     completeCallStatusData.SerialiseL(data);
       
   438     iMockLTSY.CompleteL(EMobileCallNotifyMobileCallStatusChange, KErrNone, data, 10);
       
   439 
       
   440     mobileCall2.DialEmergencyCall(reqStatus, number);
       
   441 
       
   442 	iMockLTSY.NotifyTerminated(mockLtsyStatus);	
       
   443     data.Close();
       
   444 	callInfo.iCallName = callName;
       
   445     completeCallInfoData.SerialiseL(data);
       
   446     iMockLTSY.CompleteL(EMobileCallGetMobileCallInfo, KErrNone, data);
       
   447 	User::WaitForRequest(mockLtsyStatus);
       
   448 	ASSERT_EQUALS(KErrNone, mockLtsyStatus.Int());
       
   449 	
       
   450 	data.Close();
       
   451 	expHangUpData.SerialiseL(data);
       
   452     iMockLTSY.ExpectL(EEtelCallHangUp, data, KErrNone);
       
   453 
       
   454     data.Close();
       
   455     mobileCallStatus = RMobileCall::EStatusIdle;
       
   456     completeCallStatusData.SerialiseL(data);
       
   457     iMockLTSY.CompleteL(EMobileCallNotifyMobileCallStatusChange, hangUpCause, data, 10);
       
   458 
       
   459 	mobileCall2.CancelAsyncRequest(EMobileCallDialEmergencyCall);
       
   460 	
       
   461 	User::WaitForRequest(reqStatus);
       
   462 	ASSERT_EQUALS(KErrCancel, reqStatus.Int());
       
   463 
       
   464 	CleanupStack::PopAndDestroy(&mobileCall2);
       
   465 	AssertMockLtsyStatusL();
       
   466 
       
   467 	//-------------------------------------------------------------------------
       
   468 	// Test cancelling of RMobileCall::DialEmergencyCall
       
   469 	// after call status is changed to dialling
       
   470  	//-------------------------------------------------------------------------
       
   471 
       
   472 	RMobileCall mobileCall3;
       
   473 	err = mobileCall3.OpenNewCall(line, callName);
       
   474 	ASSERT_EQUALS(KErrNone, err);
       
   475 	CleanupClosePushL(mobileCall3);
       
   476 
       
   477     data.Close();
       
   478 	numberLtsyData.SerialiseL(data);
       
   479 	iMockLTSY.ExpectL(EMobileCallDialEmergencyCall, data, KErrNone);
       
   480 
       
   481 	mobileCall3.DialEmergencyCall(reqStatus, number);
       
   482 
       
   483 	iMockLTSY.NotifyTerminated(mockLtsyStatus);	
       
   484     data.Close();
       
   485 	callInfo.iCallName = callName;
       
   486     completeCallInfoData.SerialiseL(data);
       
   487     iMockLTSY.CompleteL(EMobileCallGetMobileCallInfo, KErrNone, data);
       
   488 	User::WaitForRequest(mockLtsyStatus);
       
   489 	ASSERT_EQUALS(KErrNone, mockLtsyStatus.Int());
       
   490 	
       
   491 	ChangeCallStatusL(KCallId1 , KMobileService, RMobileCall::EStatusDialling);
       
   492 
       
   493 	data.Close();
       
   494 	expHangUpData.SerialiseL(data);
       
   495     iMockLTSY.ExpectL(EEtelCallHangUp, data, KErrNone);
       
   496 
       
   497     data.Close();
       
   498     mobileCallStatus = RMobileCall::EStatusIdle;
       
   499     completeCallStatusData.SerialiseL(data);
       
   500     iMockLTSY.CompleteL(EMobileCallNotifyMobileCallStatusChange, hangUpCause, data);
       
   501 
       
   502 	mobileCall3.CancelAsyncRequest(EMobileCallDialEmergencyCall);
       
   503 	
       
   504 	User::WaitForRequest(reqStatus);
       
   505 	ASSERT_EQUALS(KErrCancel, reqStatus.Int());
       
   506 
       
   507 	CleanupStack::PopAndDestroy(&mobileCall3);
       
   508 	AssertMockLtsyStatusL();
       
   509 
       
   510 	//-------------------------------------------------------------------------
       
   511 	// Test cancelling of RMobileCall::DialEmergencyCall
       
   512 	// after call status is changed to connecting
       
   513  	//-------------------------------------------------------------------------
       
   514 
       
   515 	RMobileCall mobileCall4;
       
   516 	err = mobileCall4.OpenNewCall(line, callName);
       
   517 	ASSERT_EQUALS(KErrNone, err);
       
   518 	CleanupClosePushL(mobileCall4);
       
   519 
       
   520     data.Close();
       
   521 	numberLtsyData.SerialiseL(data);
       
   522 	iMockLTSY.ExpectL(EMobileCallDialEmergencyCall, data, KErrNone);
       
   523 
       
   524 	mobileCall4.DialEmergencyCall(reqStatus, number);
       
   525 
       
   526 	iMockLTSY.NotifyTerminated(mockLtsyStatus);	
       
   527     data.Close();
       
   528 	callInfo.iCallName = callName;
       
   529     completeCallInfoData.SerialiseL(data);
       
   530     iMockLTSY.CompleteL(EMobileCallGetMobileCallInfo, KErrNone, data);
       
   531 	User::WaitForRequest(mockLtsyStatus);
       
   532 	ASSERT_EQUALS(KErrNone, mockLtsyStatus.Int());
       
   533 	
       
   534 	ChangeCallStatusL(KCallId1 , KMobileService, RMobileCall::EStatusDialling);
       
   535 	ChangeCallStatusL(KCallId1 , KMobileService, RMobileCall::EStatusConnecting);
       
   536 
       
   537 	data.Close();
       
   538 	expHangUpData.SerialiseL(data);
       
   539     iMockLTSY.ExpectL(EEtelCallHangUp, data, KErrNone);
       
   540 
       
   541     data.Close();
       
   542     mobileCallStatus = RMobileCall::EStatusDisconnecting;
       
   543     completeCallStatusData.SerialiseL(data);
       
   544     iMockLTSY.CompleteL(EMobileCallNotifyMobileCallStatusChange, hangUpCause, data);
       
   545 
       
   546     data.Close();
       
   547     mobileCallStatus = RMobileCall::EStatusIdle;
       
   548     completeCallStatusData.SerialiseL(data);
       
   549     iMockLTSY.CompleteL(EMobileCallNotifyMobileCallStatusChange, hangUpCause, data);
       
   550 
       
   551 	mobileCall4.CancelAsyncRequest(EMobileCallDialEmergencyCall);
       
   552 	
       
   553 	User::WaitForRequest(reqStatus);
       
   554 	ASSERT_EQUALS(KErrCancel, reqStatus.Int());
       
   555 
       
   556 	CleanupStack::PopAndDestroy(&mobileCall4);
       
   557 	AssertMockLtsyStatusL();
       
   558 	CleanupStack::PopAndDestroy(3, this); // line, data, this
       
   559 	
       
   560 	}
       
   561 
       
   562 
       
   563 /**
       
   564 @SYMTestCaseID BA-CTSY-CEMG-CDEC-0003
       
   565 @SYMComponent  telephony_ctsy
       
   566 @SYMTestCaseDesc Test support in CTSY for RMobileCall::DialEmergencyCall with bad parameter data for voice calls
       
   567 @SYMTestPriority High
       
   568 @SYMTestActions Invokes RMobileCall::DialEmergencyCall with bad parameter data for voice calls
       
   569 @SYMTestExpectedResults Pass
       
   570 @SYMTestType CT
       
   571 */
       
   572 void CCTsyCallEmergencyFU::TestDialEmergencyCall0003L()
       
   573 	{
       
   574 
       
   575 	OpenEtelServerL(EUseExtendedError);
       
   576 	CleanupStack::PushL(TCleanupItem(Cleanup,this));
       
   577 	OpenPhoneL();
       
   578 
       
   579 	RBuf8 data;
       
   580 	CleanupClosePushL(data);
       
   581 
       
   582 	RLine line;
       
   583 	TInt err = line.Open(iPhone, KMmTsyVoice1LineName);
       
   584 	ASSERT_EQUALS(KErrNone, err)
       
   585     CleanupClosePushL(line);
       
   586 	
       
   587 	TRequestStatus reqStatus;
       
   588 
       
   589 	RMobileCall mobileCall;
       
   590 	err = mobileCall.OpenNewCall(line);
       
   591 	ASSERT_EQUALS(KErrNone, err);
       
   592 	CleanupClosePushL(mobileCall);
       
   593 
       
   594 	//-------------------------------------------------------------------------
       
   595 	// Test B: Test passing wrong descriptor size to parameter in
       
   596 	// RMobileCall::DialEmergencyCall
       
   597  	//-------------------------------------------------------------------------
       
   598 
       
   599 	RMobileENStore::TEmergencyNumber number(KNullDesC);
       
   600 	TMockLtsyData1<RMobileENStore::TEmergencyNumber> numberLtsyData(number);
       
   601 	numberLtsyData.SerialiseL(data);
       
   602 	iMockLTSY.ExpectL(EMobileCallDialEmergencyCall, data, KErrArgument);
       
   603 
       
   604 	TBuf<1> bufNumber(KNullDesC);
       
   605 	mobileCall.DialEmergencyCall(reqStatus, bufNumber);
       
   606 	User::WaitForRequest(reqStatus);
       
   607 	AssertMockLtsyStatusL();
       
   608 	ASSERT_EQUALS(KErrArgument, reqStatus.Int());
       
   609 
       
   610 	TBuf<7> emergNumber = _L("9111120");
       
   611 	mobileCall.DialEmergencyCall(reqStatus, emergNumber);
       
   612 	User::WaitForRequest(reqStatus);
       
   613 	AssertMockLtsyStatusL();
       
   614 	ASSERT_EQUALS(KErrArgument, reqStatus.Int());
       
   615 	
       
   616 	CleanupStack::PopAndDestroy(4, this); // mobileCall, line, data, this
       
   617 	}
       
   618 
       
   619 
       
   620 /**
       
   621 @SYMTestCaseID BA-CTSY-CEMG-CDEC-0004
       
   622 @SYMComponent  telephony_ctsy
       
   623 @SYMTestCaseDesc Test support in CTSY for multiple client requests to RMobileCall::DialEmergencyCall for voice calls
       
   624 @SYMTestPriority High
       
   625 @SYMTestActions Invokes multiple client requests to RMobileCall::DialEmergencyCall for voice calls
       
   626 @SYMTestExpectedResults Pass
       
   627 @SYMTestType CT
       
   628 */
       
   629 void CCTsyCallEmergencyFU::TestDialEmergencyCall0004L()
       
   630 	{
       
   631 
       
   632 	OpenEtelServerL(EUseExtendedError);
       
   633 	CleanupStack::PushL(TCleanupItem(Cleanup,this));
       
   634 	OpenPhoneL();
       
   635 
       
   636 	RBuf8 data;
       
   637 	CleanupClosePushL(data);
       
   638 
       
   639 	RLine line;
       
   640 	TInt err = line.Open(iPhone, KMmTsyVoice1LineName);
       
   641 	ASSERT_EQUALS(KErrNone, err)
       
   642     CleanupClosePushL(line);
       
   643 	
       
   644 	TRequestStatus reqStatus;
       
   645 
       
   646 	RMobileCall mobileCall;
       
   647 	TName callName;
       
   648 	err = mobileCall.OpenNewCall(line, callName);
       
   649 	ASSERT_EQUALS(KErrNone, err);
       
   650 	CleanupClosePushL(mobileCall);
       
   651 
       
   652 	RMobileENStore::TEmergencyNumber number(_L("911"));
       
   653 	TMockLtsyData1<RMobileENStore::TEmergencyNumber> numberLtsyData(number);
       
   654 	RMobileENStore::TEmergencyNumber number2(_L("112"));
       
   655 	TMockLtsyData1<RMobileENStore::TEmergencyNumber> numberLtsyData2(number2);
       
   656 
       
   657 	const RMobilePhone::TMobileService KMobileService = RMobilePhone::EVoiceService;
       
   658 	const TInt KCallId = 1;
       
   659 	const TInt KCallId2 = 2;
       
   660 
       
   661 	RMobileCall::TMobileCallInfoV1 completeDialCallInfo;
       
   662 	completeDialCallInfo.iService = KMobileService;
       
   663 	completeDialCallInfo.iStatus = RMobileCall::EStatusIdle;
       
   664 	completeDialCallInfo.iCallId = KCallId;
       
   665 	completeDialCallInfo.iCallName = callName;
       
   666 	completeDialCallInfo.iLineName = KMmTsyVoice1LineName;
       
   667 	completeDialCallInfo.iValid = RMobileCall::KCallId;
       
   668 	TMockLtsyCallData1<RMobileCall::TMobileCallInfoV1> completeDialCallInfoData(KCallId, KMobileService, completeDialCallInfo);
       
   669 
       
   670 	RMobileCall::TMobileCallInfoV1 callInfo;
       
   671 	FillInEmergencyCallInfo(callInfo, KCallId, callName, KMobileService);
       
   672 	TMockLtsyCallData1<RMobileCall::TMobileCallInfoV1> completeCallInfoData(KCallId, KMobileService, callInfo);
       
   673 	TMockLtsyCallData1<RMobileCall::TMobileCallInfoV1> completeCallInfoData2(KCallId2, KMobileService, callInfo);
       
   674 	
       
   675 	RMobileCall::TMobileCallStatus mobileCallStatus = RMobileCall::EStatusIdle;
       
   676 	TMockLtsyCallData1<RMobileCall::TMobileCallStatus> completeCallStatusData(KCallId, KMobileService, mobileCallStatus);
       
   677 	TMockLtsyCallData1<RMobileCall::TMobileCallStatus> completeCallStatusData2(KCallId2, KMobileService, mobileCallStatus);
       
   678 
       
   679 	//-------------------------------------------------------------------------
       
   680 	// Test requesting RMobileCall::DialEmergencyCall 
       
   681 	// when pending RCall::Dial
       
   682  	//-------------------------------------------------------------------------
       
   683 
       
   684 	// create pending dial request
       
   685 	RMobileCall::TMobileCallParamsV1 expDialCallParams;
       
   686 	expDialCallParams.iInterval = 0;
       
   687 	expDialCallParams.iCug.iCugIndex = 0xFFFF;
       
   688 	expDialCallParams.iSpeakerControl = 
       
   689         RCall::EMonitorSpeakerControlOnUntilCarrier;
       
   690 	expDialCallParams.iSpeakerVolume = RCall::EMonitorSpeakerVolumeLow;
       
   691 	expDialCallParams.iWaitForDialTone = RCall::EDialToneWait;
       
   692 	expDialCallParams.iIdRestrict = RMobileCall::EIdRestrictDefault;
       
   693 	expDialCallParams.iCug.iExplicitInvoke = EFalse;
       
   694 	expDialCallParams.iCug.iSuppressPrefCug = EFalse;
       
   695 	expDialCallParams.iCug.iSuppressOA = EFalse;
       
   696 	expDialCallParams.iAutoRedial = EFalse;
       
   697 	
       
   698     
       
   699 	RMobileCall::TMobileCallInfoV8 expDialCallInfo;
       
   700 	_LIT(KPhoneNumber, "101632960000");   	
       
   701 	expDialCallInfo.iDialledParty.iTelNumber.Copy(KPhoneNumber);
       
   702 	expDialCallInfo.iService = KMobileService;
       
   703 	expDialCallInfo.iValid = RMobileCall::KCallDialledParty|RMobileCall::KCallAlternating;
       
   704 	expDialCallInfo.iDialledParty.iNumberPlan = 
       
   705             RMobilePhone::EUnknownNumberingPlan;
       
   706 	expDialCallInfo.iDialledParty.iTypeOfNumber = 
       
   707 	        RMobilePhone::EUnknownNumber;
       
   708 	expDialCallInfo.iAlternatingCall = 
       
   709 	        RMobilePhone::EAlternatingModeUnspecified;
       
   710 
       
   711 	
       
   712 	TMockLtsyCallData2<RMobileCall::TMobileCallParamsV1, RMobileCall::TMobileCallInfoV1> 
       
   713 		dialExpectData(0, KMobileService, expDialCallParams, expDialCallInfo);
       
   714 
       
   715     data.Close();
       
   716     dialExpectData.SerialiseL(data);
       
   717 	iMockLTSY.ExpectL(EEtelCallDial, data);
       
   718 
       
   719     data.Close();
       
   720     completeDialCallInfoData.SerialiseL(data);
       
   721     iMockLTSY.CompleteL(EMobileCallGetMobileCallInfo, KErrNone, data, 10);
       
   722 
       
   723     data.Close();
       
   724     mobileCallStatus = RMobileCall::EStatusDialling;
       
   725     completeCallStatusData.SerialiseL(data);
       
   726     iMockLTSY.CompleteL(EMobileCallNotifyMobileCallStatusChange, KErrNone, data, 10);
       
   727 
       
   728 	ERR_PRINTF2(_L("<font color=Orange>$CTSYKnownFailure: defect id = %d</font>"), 210106);
       
   729 	// Test fails, TEF aborts the test and all the following
       
   730 	// Actually DialEmergencyCall completes with KErrServerBusy
       
   731 	
       
   732 	// following assert is added to prevent test abortions
       
   733 	ASSERT_TRUE( EFalse );
       
   734 
       
   735 	TRequestStatus dialStatus;
       
   736 	mobileCall.Dial(dialStatus, KPhoneNumber);
       
   737 
       
   738 	// prepare test
       
   739 
       
   740 	// prepare canceling dial request
       
   741     data.Close();
       
   742 	TInt hangUpCause = KErrGsmReleaseByUser;
       
   743 	TBool autoStChangeDisable = ETrue;
       
   744     TMockLtsyCallData2<TInt, TBool> expHangupData(KCallId, KMobileService, 
       
   745                                              hangUpCause, 
       
   746                                              autoStChangeDisable);
       
   747     expHangupData.SerialiseL(data);
       
   748     iMockLTSY.ExpectL(EEtelCallHangUp, data);
       
   749 
       
   750     data.Close();
       
   751     mobileCallStatus = RMobileCall::EStatusIdle;
       
   752     completeCallStatusData.SerialiseL(data);
       
   753     iMockLTSY.CompleteL(EMobileCallNotifyMobileCallStatusChange, hangUpCause, data, 10);
       
   754 
       
   755 	// prepare dialling emergency call
       
   756     data.Close();
       
   757 	numberLtsyData.SerialiseL(data);
       
   758 	iMockLTSY.ExpectL(EMobileCallDialEmergencyCall, data, KErrNone);
       
   759 
       
   760     data.Close();
       
   761     completeCallInfoData.SerialiseL(data);
       
   762     iMockLTSY.CompleteL(EMobileCallGetMobileCallInfo, KErrNone, data);
       
   763 
       
   764     data.Close();
       
   765     mobileCallStatus = RMobileCall::EStatusDialling;
       
   766     completeCallStatusData.SerialiseL(data);
       
   767     iMockLTSY.CompleteL(EMobileCallNotifyMobileCallStatusChange, KErrNone, data);
       
   768 
       
   769     data.Close();
       
   770     mobileCallStatus = RMobileCall::EStatusConnecting;
       
   771     completeCallStatusData.SerialiseL(data);
       
   772     iMockLTSY.CompleteL(EMobileCallNotifyMobileCallStatusChange, KErrNone, data);
       
   773 
       
   774     data.Close();
       
   775     mobileCallStatus = RMobileCall::EStatusConnected;
       
   776     completeCallStatusData.SerialiseL(data);
       
   777     iMockLTSY.CompleteL(EMobileCallNotifyMobileCallStatusChange, KErrNone, data);
       
   778 
       
   779 	// actual test
       
   780 	mobileCall.DialEmergencyCall(reqStatus, number);
       
   781 
       
   782 	User::WaitForRequest(dialStatus);
       
   783 	ASSERT_EQUALS(KErrCancel, dialStatus.Int());
       
   784 
       
   785 	User::WaitForRequest(reqStatus);
       
   786 	ASSERT_EQUALS(KErrNone, reqStatus.Int());
       
   787 
       
   788 	PrepareCallCloseL(KCallId, KMobileService);
       
   789 	CleanupStack::PopAndDestroy(&mobileCall);
       
   790 	AssertMockLtsyStatusL();
       
   791 
       
   792 	//-------------------------------------------------------------------------
       
   793 	// Test A: Test multiple clients requesting RMobileCall::DialEmergencyCall
       
   794  	//-------------------------------------------------------------------------
       
   795 
       
   796 	err = mobileCall.OpenNewCall(line, callName);
       
   797 	ASSERT_EQUALS(KErrNone, err);
       
   798 	CleanupClosePushL(mobileCall);
       
   799 
       
   800 	// Open second client
       
   801 	RTelServer telServer2;
       
   802 	err = telServer2.Connect();
       
   803 	ASSERT_EQUALS(KErrNone, err);
       
   804 	CleanupClosePushL(telServer2);
       
   805 
       
   806 	RMobilePhone phone2;
       
   807 	err = phone2.Open(telServer2, KMmTsyPhoneName);
       
   808 	ASSERT_EQUALS(KErrNone, err);
       
   809 	CleanupClosePushL(phone2);
       
   810 
       
   811 	RLine line2;
       
   812 	err = line2.Open(phone2, KMmTsyVoice1LineName);
       
   813 	ASSERT_EQUALS(KErrNone, err)
       
   814     CleanupClosePushL(line2);
       
   815 	
       
   816 	RMobileCall mobileCall2;
       
   817 	TName callName2;
       
   818 	err = mobileCall2.OpenNewCall(line2, callName2);
       
   819 	ASSERT_EQUALS(KErrNone, err);
       
   820 	CleanupClosePushL(mobileCall2);
       
   821 
       
   822 	data.Close();
       
   823 	numberLtsyData.SerialiseL(data);
       
   824 	iMockLTSY.ExpectL(EMobileCallDialEmergencyCall, data, KErrNone);
       
   825 
       
   826 	mobileCall.DialEmergencyCall(reqStatus, number);
       
   827 
       
   828 	data.Close();
       
   829 	numberLtsyData2.SerialiseL(data);
       
   830 	iMockLTSY.ExpectL(EMobileCallDialEmergencyCall, data, KErrNone);
       
   831 
       
   832 	data.Close();
       
   833     callInfo.iCallName = callName;
       
   834     completeCallInfoData.SerialiseL(data);
       
   835     iMockLTSY.CompleteL(EMobileCallGetMobileCallInfo, KErrNone, data);
       
   836     data.Close();
       
   837     callInfo.iCallId = KCallId2;
       
   838     callInfo.iCallName = callName2;
       
   839     completeCallInfoData2.SerialiseL(data);
       
   840     iMockLTSY.CompleteL(EMobileCallGetMobileCallInfo, KErrNone, data);
       
   841 
       
   842     data.Close();
       
   843     mobileCallStatus = RMobileCall::EStatusDialling;
       
   844     completeCallStatusData.SerialiseL(data);
       
   845     iMockLTSY.CompleteL(EMobileCallNotifyMobileCallStatusChange, KErrNone, data);
       
   846     data.Close();
       
   847     completeCallStatusData2.SerialiseL(data);
       
   848     iMockLTSY.CompleteL(EMobileCallNotifyMobileCallStatusChange, KErrNone, data);
       
   849 
       
   850     data.Close();
       
   851     mobileCallStatus = RMobileCall::EStatusConnecting;
       
   852     completeCallStatusData.SerialiseL(data);
       
   853     iMockLTSY.CompleteL(EMobileCallNotifyMobileCallStatusChange, KErrNone, data);
       
   854     data.Close();
       
   855     completeCallStatusData2.SerialiseL(data);
       
   856     iMockLTSY.CompleteL(EMobileCallNotifyMobileCallStatusChange, KErrNone, data);
       
   857 
       
   858     data.Close();
       
   859     mobileCallStatus = RMobileCall::EStatusConnected;
       
   860     completeCallStatusData.SerialiseL(data);
       
   861     iMockLTSY.CompleteL(EMobileCallNotifyMobileCallStatusChange, KErrNone, data);
       
   862     data.Close();
       
   863     completeCallStatusData2.SerialiseL(data);
       
   864     iMockLTSY.CompleteL(EMobileCallNotifyMobileCallStatusChange, KErrNone, data);
       
   865 
       
   866 	ASSERT_EQUALS(KRequestPending, reqStatus.Int());
       
   867 	TRequestStatus reqStatus2;
       
   868 	mobileCall2.DialEmergencyCall(reqStatus2, number2);
       
   869 
       
   870 	User::WaitForRequest(reqStatus);
       
   871 	User::WaitForRequest(reqStatus2);
       
   872 	AssertMockLtsyStatusL();
       
   873 	ASSERT_EQUALS(KErrNone, reqStatus.Int());
       
   874 	ERR_PRINTF2(_L("<font color=Orange>$CTSYKnownFailure: defect id = %d</font>"), 210104);
       
   875 	// Second completion with EMobileCallGetMobileCallInfo ipc
       
   876 	// changes callid of 1st call from 1 to 2
       
   877 	// can not invoke completions for 2nd call 
       
   878 	ASSERT_EQUALS(KErrNone, reqStatus2.Int()); // KErrTimedOut
       
   879 
       
   880 	// Done !
       
   881 	CleanupStack::PopAndDestroy(8, this); // mobileCall2, line2, phone2, telServer2, mobileCall, line, data, this
       
   882 
       
   883 	}
       
   884 
       
   885 
       
   886 /**
       
   887 @SYMTestCaseID BA-CTSY-CEMG-CDEC-0005
       
   888 @SYMComponent  telephony_ctsy
       
   889 @SYMTestCaseDesc Test support in CTSY for RMobileCall::DialEmergencyCall with timeout for voice calls
       
   890 @SYMTestPriority High
       
   891 @SYMTestActions Invokes RMobileCall::DialEmergencyCall and tests for timeout for voice calls
       
   892 @SYMTestExpectedResults Pass
       
   893 @SYMTestType CT
       
   894 */
       
   895 void CCTsyCallEmergencyFU::TestDialEmergencyCall0005L()
       
   896 	{
       
   897 
       
   898 	OpenEtelServerL(EUseExtendedError);
       
   899 	CleanupStack::PushL(TCleanupItem(Cleanup,this));
       
   900 	OpenPhoneL();
       
   901 
       
   902 	RBuf8 data;
       
   903 	CleanupClosePushL(data);
       
   904 
       
   905 	RLine line;
       
   906 	TInt err = line.Open(iPhone, KMmTsyVoice1LineName);
       
   907 	ASSERT_EQUALS(KErrNone, err)
       
   908 	CleanupClosePushL(line);
       
   909 	
       
   910 	RMobileCall mobileCall;
       
   911 	TName callName;
       
   912 	err = mobileCall.OpenNewCall(line, callName);
       
   913 	ASSERT_EQUALS(KErrNone, err);
       
   914 	CleanupClosePushL(mobileCall);
       
   915 
       
   916 	//-------------------------------------------------------------------------
       
   917 	// Test A: Test timeout of RMobileCall::DialEmergencyCall
       
   918  	//-------------------------------------------------------------------------
       
   919 
       
   920 	RMobileENStore::TEmergencyNumber number(_L("911"));
       
   921 	TMockLtsyData1<RMobileENStore::TEmergencyNumber> numberLtsyData(number);
       
   922 	numberLtsyData.SerialiseL(data);
       
   923 	iMockLTSY.ExpectL(EMobileCallDialEmergencyCall, data, KErrNone);
       
   924 
       
   925 	TRequestStatus reqStatus;
       
   926 	mobileCall.DialEmergencyCall(reqStatus, number);
       
   927 	User::WaitForRequest(reqStatus);
       
   928 	ASSERT_EQUALS(KErrTimedOut, reqStatus.Int());
       
   929 
       
   930 	AssertMockLtsyStatusL();
       
   931 
       
   932 	//-------------------------------------------------------------------------
       
   933 	// Test: Test timeout of RMobileCall::DialEmergencyCall
       
   934 	// when callId is changed
       
   935  	//-------------------------------------------------------------------------
       
   936 
       
   937 	data.Close();
       
   938 	numberLtsyData.SerialiseL(data);
       
   939 	iMockLTSY.ExpectL(EMobileCallDialEmergencyCall, data, KErrNone);
       
   940 
       
   941 	const RMobilePhone::TMobileService KMobileService = RMobilePhone::EVoiceService;
       
   942 	const TInt KCallId = 1;
       
   943 	RMobileCall::TMobileCallInfoV1 callInfo;
       
   944 	FillInEmergencyCallInfo(callInfo, KCallId, callName, KMobileService);
       
   945 	TMockLtsyCallData1<RMobileCall::TMobileCallInfoV1> completeCallInfoData(KCallId, KMobileService, callInfo);
       
   946 	data.Close();
       
   947 	completeCallInfoData.SerialiseL(data);
       
   948 	iMockLTSY.CompleteL(EMobileCallGetMobileCallInfo, KErrNone, data);
       
   949 
       
   950 	mobileCall.DialEmergencyCall(reqStatus, number);
       
   951 	User::WaitForRequest(reqStatus);
       
   952 	ASSERT_EQUALS(KErrTimedOut, reqStatus.Int());
       
   953 
       
   954 	AssertMockLtsyStatusL();
       
   955 
       
   956 	//-------------------------------------------------------------------------
       
   957 	// Test: Test timeout of RMobileCall::DialEmergencyCall
       
   958 	// when call status is changed to RMobileCall::EStatusDialling
       
   959  	//-------------------------------------------------------------------------
       
   960 
       
   961 	data.Close();
       
   962 	numberLtsyData.SerialiseL(data);
       
   963 	iMockLTSY.ExpectL(EMobileCallDialEmergencyCall, data, KErrNone);
       
   964 
       
   965 	data.Close();
       
   966 	completeCallInfoData.SerialiseL(data);
       
   967 	iMockLTSY.CompleteL(EMobileCallGetMobileCallInfo, KErrNone, data);
       
   968 
       
   969 	RMobileCall::TMobileCallStatus mobileCallStatus = RMobileCall::EStatusDialling;
       
   970 	TMockLtsyCallData1<RMobileCall::TMobileCallStatus> completeCallStatusData(KCallId, KMobileService, mobileCallStatus);
       
   971 	data.Close();
       
   972 	completeCallStatusData.SerialiseL(data);
       
   973 	iMockLTSY.CompleteL(EMobileCallNotifyMobileCallStatusChange, KErrNone, data);
       
   974 
       
   975 	mobileCall.DialEmergencyCall(reqStatus, number);
       
   976 	ERR_PRINTF2(_L("<font color=Orange>$CTSYKnownFailure: defect id = %d</font>"), 210107);
       
   977 	// TEF aborts the test
       
   978 	User::WaitForRequest(reqStatus);
       
   979 	ASSERT_EQUALS(KErrTimedOut, reqStatus.Int());
       
   980 
       
   981 	AssertMockLtsyStatusL();
       
   982 
       
   983 	//-------------------------------------------------------------------------
       
   984 	// Test: Test timeout of RMobileCall::DialEmergencyCall
       
   985 	// when call status is changed to RMobileCall::EStatusConnecting
       
   986  	//-------------------------------------------------------------------------
       
   987 
       
   988 	data.Close();
       
   989 	numberLtsyData.SerialiseL(data);
       
   990 	iMockLTSY.ExpectL(EMobileCallDialEmergencyCall, data, KErrNone);
       
   991 
       
   992 	data.Close();
       
   993 	completeCallInfoData.SerialiseL(data);
       
   994 	iMockLTSY.CompleteL(EMobileCallGetMobileCallInfo, KErrNone, data);
       
   995 
       
   996 	data.Close();
       
   997 	mobileCallStatus = RMobileCall::EStatusDialling;
       
   998 	completeCallStatusData.SerialiseL(data);
       
   999 	iMockLTSY.CompleteL(EMobileCallNotifyMobileCallStatusChange, KErrNone, data);
       
  1000 
       
  1001 	data.Close();
       
  1002 	mobileCallStatus = RMobileCall::EStatusConnecting;
       
  1003 	completeCallStatusData.SerialiseL(data);
       
  1004 	iMockLTSY.CompleteL(EMobileCallNotifyMobileCallStatusChange, KErrNone, data);
       
  1005 
       
  1006 	mobileCall.DialEmergencyCall(reqStatus, number);
       
  1007 	User::WaitForRequest(reqStatus);
       
  1008 	ASSERT_EQUALS(KErrTimedOut, reqStatus.Int());
       
  1009 
       
  1010 	AssertMockLtsyStatusL();
       
  1011 
       
  1012 	CleanupStack::PopAndDestroy(2); // mobileCall, line
       
  1013 	CleanupStack::PopAndDestroy(2, this); // data, this
       
  1014 
       
  1015 	}
       
  1016 
       
  1017 
       
  1018 /**
       
  1019 @SYMTestCaseID BA-CTSY-CEMG-CDEC-0001b
       
  1020 @SYMComponent  telephony_ctsy
       
  1021 @SYMTestCaseDesc Test support in CTSY for RMobileCall::DialEmergencyCall for data calls
       
  1022 @SYMTestPriority High
       
  1023 @SYMTestActions Invokes RMobileCall::DialEmergencyCall for data calls
       
  1024 @SYMTestExpectedResults Pass
       
  1025 @SYMTestType CT
       
  1026 */
       
  1027 void CCTsyCallEmergencyFU::TestDialEmergencyCall0001bL()
       
  1028 	{
       
  1029 
       
  1030 	OpenEtelServerL(EUseExtendedError);
       
  1031 	CleanupStack::PushL(TCleanupItem(Cleanup,this));
       
  1032 	OpenPhoneL();
       
  1033 
       
  1034  	//-------------------------------------------------------------------------
       
  1035 	// TEST C: Successful completion request of
       
  1036 	// RMobileCall::DialEmergencyCall.
       
  1037  	//-------------------------------------------------------------------------
       
  1038 
       
  1039 	RMobileCall mobileCall;
       
  1040 	RLine line;
       
  1041 
       
  1042 	TInt err = line.Open(iPhone, KMmTsyDataLineName);
       
  1043 	ASSERT_EQUALS(KErrNone, err)
       
  1044     CleanupClosePushL(line);
       
  1045 	
       
  1046 	err = OpenNewCall(line, mobileCall, KMmTsyDataLineName);
       
  1047 	ASSERT_EQUALS(KErrNone, err)
       
  1048     CleanupClosePushL(mobileCall);
       
  1049 
       
  1050 	TRequestStatus reqStatus;
       
  1051 	RMobileENStore::TEmergencyNumber number(_L("911"));
       
  1052 	mobileCall.DialEmergencyCall(reqStatus, number);
       
  1053 	User::WaitForRequest(reqStatus);
       
  1054 	ASSERT_EQUALS(KErrNotSupported, reqStatus.Int());
       
  1055 	AssertMockLtsyStatusL();
       
  1056 
       
  1057 	CleanupStack::PopAndDestroy(2); // mobileCall, line
       
  1058 	CleanupStack::PopAndDestroy(this);
       
  1059 	
       
  1060 	}
       
  1061 
       
  1062 
       
  1063 /**
       
  1064 @SYMTestCaseID BA-CTSY-CEMG-CDEC-0001c
       
  1065 @SYMComponent  telephony_ctsy
       
  1066 @SYMTestCaseDesc Test support in CTSY for RMobileCall::DialEmergencyCall for fax calls
       
  1067 @SYMTestPriority High
       
  1068 @SYMTestActions Invokes RMobileCall::DialEmergencyCall for fax calls
       
  1069 @SYMTestExpectedResults Pass
       
  1070 @SYMTestType CT
       
  1071 */
       
  1072 void CCTsyCallEmergencyFU::TestDialEmergencyCall0001cL()
       
  1073 	{
       
  1074 
       
  1075 	OpenEtelServerL(EUseExtendedError);
       
  1076 	CleanupStack::PushL(TCleanupItem(Cleanup,this));
       
  1077 	OpenPhoneL();
       
  1078 
       
  1079  	//-------------------------------------------------------------------------
       
  1080 	// TEST C: Successful completion request of
       
  1081 	// RMobileCall::DialEmergencyCall.
       
  1082  	//-------------------------------------------------------------------------
       
  1083 
       
  1084 	RMobileCall mobileCall;
       
  1085 	RLine line;
       
  1086 
       
  1087 	TInt err = line.Open(iPhone, KMmTsyFaxLineName);
       
  1088 	ASSERT_EQUALS(KErrNone, err)
       
  1089     CleanupClosePushL(line);
       
  1090 	
       
  1091 	err = OpenNewCall(line, mobileCall, KMmTsyFaxLineName);
       
  1092 	ASSERT_EQUALS(KErrNone, err)
       
  1093     CleanupClosePushL(mobileCall);
       
  1094 
       
  1095 	TRequestStatus reqStatus;
       
  1096 	RMobileENStore::TEmergencyNumber number(_L("911"));
       
  1097 	mobileCall.DialEmergencyCall(reqStatus, number);
       
  1098 	User::WaitForRequest(reqStatus);
       
  1099 	ASSERT_EQUALS(KErrNotSupported, reqStatus.Int());
       
  1100 	AssertMockLtsyStatusL();
       
  1101 
       
  1102 	CleanupStack::PopAndDestroy(2); // mobileCall, line
       
  1103 	CleanupStack::PopAndDestroy(this);
       
  1104 	
       
  1105 	}
       
  1106 
       
  1107 /**
       
  1108 @SYMTestCaseID BA-CTSY-CEMG-CDEC-0001d
       
  1109 @SYMComponent  telephony_ctsy
       
  1110 @SYMTestCaseDesc Test support in CTSY for RMobileCall::DialEmergencyCall for voice calls
       
  1111 @SYMTestPriority High
       
  1112 @SYMTestActions Invokes RMobileCall::DialEmergencyCall for voice calls. It tests differen answers from SSMPlugin
       
  1113 @SYMTestExpectedResults Pass
       
  1114 @SYMTestType CT
       
  1115 */
       
  1116 void CCTsyCallEmergencyFU::TestDialEmergencyCall0001dL()
       
  1117 	{
       
  1118 	// if there is no SSM it means that we use SSMStub -> we can use RProperty for emulation   
       
  1119 #ifndef SYMBIAN_SYSTEM_STATE_MANAGEMENT    
       
  1120 
       
  1121 	OpenEtelServerL(EUseExtendedError);
       
  1122 	CleanupStack::PushL(TCleanupItem(Cleanup,this));
       
  1123 	OpenPhoneL();
       
  1124 
       
  1125 	RBuf8 data;
       
  1126 	CleanupClosePushL(data);
       
  1127 
       
  1128 	RLine line;
       
  1129 	TInt err = line.Open(iPhone, KMmTsyVoice1LineName);
       
  1130 	ASSERT_EQUALS(KErrNone, err)
       
  1131     CleanupClosePushL(line);
       
  1132 	
       
  1133 	TRequestStatus reqStatus;
       
  1134 
       
  1135 	RMobileCall mobileCall;
       
  1136 	TName callName;
       
  1137 	err = mobileCall.OpenNewCall(line, callName);
       
  1138 	ASSERT_EQUALS(KErrNone, err);
       
  1139 	CleanupClosePushL(mobileCall);
       
  1140 
       
  1141 	RMobileENStore::TEmergencyNumber number(_L("911"));
       
  1142 	TMockLtsyData1<RMobileENStore::TEmergencyNumber> numberLtsyData(number);
       
  1143 
       
  1144 	const TInt KCallId = 1;
       
  1145 	const RMobilePhone::TMobileService KMobileService = RMobilePhone::EVoiceService;
       
  1146 	RMobileCall::TMobileCallInfoV1 callInfo;
       
  1147 	FillInEmergencyCallInfo(callInfo, KCallId, callName, KMobileService);
       
  1148 	TMockLtsyCallData1<RMobileCall::TMobileCallInfoV1> completeCallInfoData(KCallId, KMobileService, callInfo);
       
  1149 	
       
  1150 	RMobileCall::TMobileCallStatus mobileCallStatus = RMobileCall::EStatusIdle;
       
  1151 	TMockLtsyCallData1<RMobileCall::TMobileCallStatus> completeCallStatusData(KCallId, KMobileService, mobileCallStatus);
       
  1152 
       
  1153  	//-------------------------------------------------------------------------
       
  1154 	// TEST: Failure to connect to System State Manager
       
  1155  	//------------------------------------------------------------------------- 	
       
  1156  	
       
  1157  	// Forse  SSMStub's Connect() to return KErrNotSupported  	
       
  1158  	TInt ssmError(KErrNotSupported);
       
  1159  	err = RProperty::Define(KThisProcessUID, EErrorForConnect, RProperty::EInt);
       
  1160  	ASSERT_EQUALS(KErrNone, err); 	
       
  1161  	RProperty::Set(KThisProcessUID, EErrorForConnect, ssmError);
       
  1162  	
       
  1163  	mobileCall.DialEmergencyCall(reqStatus, number);
       
  1164 	User::WaitForRequest(reqStatus);
       
  1165 	ASSERT_EQUALS(KErrNotSupported, reqStatus.Int());
       
  1166 	AssertMockLtsyStatusL();
       
  1167 	
       
  1168 	// Forse  SSMStub's Connect() to return KErrNone 
       
  1169 	ssmError = KErrNone;
       
  1170 	RProperty::Set(KThisProcessUID, EErrorForConnect, ssmError);	
       
  1171 	
       
  1172 	//-------------------------------------------------------------------------
       
  1173 	// TEST: Failure to connect to Activate RF in System State Manager
       
  1174  	//-------------------------------------------------------------------------
       
  1175  
       
  1176  	// Forse  SSMStub's ActivateRfForEmergencyCall() to return KErrGeneral 	
       
  1177  	ssmError = KErrGeneral;
       
  1178  	err = RProperty::Define(KThisProcessUID, EErrorForActivate, RProperty::EInt);
       
  1179  	ASSERT_EQUALS(KErrNone, err); 	
       
  1180  	RProperty::Set(KThisProcessUID, EErrorForActivate, ssmError);
       
  1181 
       
  1182 	mobileCall.DialEmergencyCall(reqStatus, number);
       
  1183 	User::WaitForRequest(reqStatus);
       
  1184 	ASSERT_EQUALS(KErrGeneral, reqStatus.Int());
       
  1185 	AssertMockLtsyStatusL();
       
  1186 	
       
  1187 	// Forse  SSMStub's ActivateRfForEmergencyCall() to return KErrNone 
       
  1188 	ssmError = KErrNone;
       
  1189 	RProperty::Set(KThisProcessUID, EErrorForActivate, ssmError);
       
  1190 	
       
  1191 	
       
  1192 	//-------------------------------------------------------------------------
       
  1193 	// TEST: Failure to connect to Deactivate RF in System State Manager
       
  1194  	//-------------------------------------------------------------------------
       
  1195 	
       
  1196 	// Forse  SSMStub's DeactivateRfForEmergencyCall() to return KErrNotFound 	
       
  1197  	ssmError = KErrNotFound;
       
  1198  	err = RProperty::Define(KThisProcessUID, EErrorForDeactivate, RProperty::EInt);
       
  1199  	ASSERT_EQUALS(KErrNone, err); 	
       
  1200  	RProperty::Set(KThisProcessUID, EErrorForDeactivate, ssmError);
       
  1201  	 	
       
  1202  	
       
  1203 	numberLtsyData.SerialiseL(data);
       
  1204 	iMockLTSY.ExpectL(EMobileCallDialEmergencyCall, data, KErrNone);
       
  1205 
       
  1206     data.Close();
       
  1207     completeCallInfoData.SerialiseL(data);
       
  1208     iMockLTSY.CompleteL(EMobileCallGetMobileCallInfo, KErrNone, data);
       
  1209 
       
  1210     data.Close();
       
  1211     mobileCallStatus = RMobileCall::EStatusDialling;
       
  1212     completeCallStatusData.SerialiseL(data);
       
  1213     iMockLTSY.CompleteL(EMobileCallNotifyMobileCallStatusChange, KErrNone, data);
       
  1214 
       
  1215     data.Close();
       
  1216     mobileCallStatus = RMobileCall::EStatusConnecting;
       
  1217     completeCallStatusData.SerialiseL(data);
       
  1218     iMockLTSY.CompleteL(EMobileCallNotifyMobileCallStatusChange, KErrNone, data);
       
  1219 
       
  1220     data.Close();
       
  1221     mobileCallStatus = RMobileCall::EStatusConnected;
       
  1222     completeCallStatusData.SerialiseL(data);
       
  1223     iMockLTSY.CompleteL(EMobileCallNotifyMobileCallStatusChange, KErrNone, data);
       
  1224 
       
  1225 	mobileCall.DialEmergencyCall(reqStatus, number);
       
  1226 	User::WaitForRequest(reqStatus);
       
  1227 	// KErrNone (not KErrNotFound) because CTSY doesn't care about result of RF Deactivating
       
  1228 	ASSERT_EQUALS(KErrNone, reqStatus.Int());
       
  1229 	AssertMockLtsyStatusL();
       
  1230 
       
  1231 	
       
  1232 	// Forse  SSMStub's DeactivateRfForEmergencyCall() to return KErrNone 
       
  1233 	ssmError = KErrNone;
       
  1234 	RProperty::Set(KThisProcessUID, EErrorForDeactivate, ssmError);
       
  1235 	
       
  1236 	// Delete defined Properties
       
  1237 	err = RProperty::Delete(KThisProcessUID, EErrorForConnect);
       
  1238  	ASSERT_EQUALS(KErrNone, err); 
       
  1239 	err = RProperty::Delete(KThisProcessUID, EErrorForActivate);
       
  1240  	ASSERT_EQUALS(KErrNone, err); 
       
  1241 	err = RProperty::Delete(KThisProcessUID, EErrorForDeactivate);
       
  1242  	ASSERT_EQUALS(KErrNone, err);  	
       
  1243  	
       
  1244  	AssertMockLtsyStatusL();
       
  1245 	CleanupStack::PopAndDestroy(2); // mobileCall, line
       
  1246 	CleanupStack::PopAndDestroy(2, this); // data, this	
       
  1247 #endif	
       
  1248 	}
       
  1249 	
       
  1250 	
       
  1251 	
       
  1252 /**
       
  1253 @SYMTestCaseID BA-CTSY-CEMG-CDEC-0001e
       
  1254 @SYMComponent  telephony_ctsy
       
  1255 @SYMTestCaseDesc Test support in CTSY for RMobileCall::DialEmergencyCall cancelling becase of SSM delay
       
  1256 @SYMTestPriority High
       
  1257 @SYMTestActions Invokes RMobileCall::DialEmergencyCall for voice calls. It tests cases when there is no answer from SSM
       
  1258 @SYMTestExpectedResults Pass
       
  1259 @SYMTestType CT
       
  1260 */
       
  1261 void CCTsyCallEmergencyFU::TestDialEmergencyCall0001eL()
       
  1262 	{
       
  1263 	// if there is no SSM it means that we use SSMStub -> we can use RProperty for emulation   
       
  1264 #ifndef SYMBIAN_SYSTEM_STATE_MANAGEMENT 
       
  1265 	OpenEtelServerL(EUseExtendedError);
       
  1266 	CleanupStack::PushL(TCleanupItem(Cleanup,this));
       
  1267 	OpenPhoneL();
       
  1268 
       
  1269 	RBuf8 data;
       
  1270 	CleanupClosePushL(data);
       
  1271 
       
  1272 	RLine line;
       
  1273 	TInt err = line.Open(iPhone, KMmTsyVoice1LineName);
       
  1274 	ASSERT_EQUALS(KErrNone, err)
       
  1275     CleanupClosePushL(line);
       
  1276 	
       
  1277 	TRequestStatus reqStatus;
       
  1278 
       
  1279 	RMobileCall mobileCall;
       
  1280 	TName callName;
       
  1281 	err = mobileCall.OpenNewCall(line, callName);
       
  1282 	ASSERT_EQUALS(KErrNone, err);
       
  1283 	CleanupClosePushL(mobileCall);
       
  1284 
       
  1285 	RMobileENStore::TEmergencyNumber number(_L("911"));
       
  1286 	TMockLtsyData1<RMobileENStore::TEmergencyNumber> numberLtsyData(number);
       
  1287 
       
  1288 	const TInt KCallId = 1;
       
  1289 	const RMobilePhone::TMobileService KMobileService = RMobilePhone::EVoiceService;
       
  1290 	RMobileCall::TMobileCallInfoV1 callInfo;
       
  1291 	FillInEmergencyCallInfo(callInfo, KCallId, callName, KMobileService);
       
  1292 	TMockLtsyCallData1<RMobileCall::TMobileCallInfoV1> completeCallInfoData(KCallId, KMobileService, callInfo);
       
  1293 	
       
  1294 	RMobileCall::TMobileCallStatus mobileCallStatus = RMobileCall::EStatusIdle;
       
  1295 	TMockLtsyCallData1<RMobileCall::TMobileCallStatus> completeCallStatusData(KCallId, KMobileService, mobileCallStatus);
       
  1296 	
       
  1297 	TInt hangUpCause = KErrGsmReleaseByUser;
       
  1298 	TBool autoStChangeDisable = EFalse;
       
  1299 	TMockLtsyCallData2<TInt, TBool> expHangUpData(KCallId, KMobileService, 
       
  1300                                               hangUpCause, 
       
  1301                                               autoStChangeDisable);
       
  1302                                               
       
  1303 	TMockLtsyCallData0 completeEmptyLtsyData(KCallId, KMobileService);                                              
       
  1304 
       
  1305  	//-------------------------------------------------------------------------
       
  1306 	// TEST: No answer from Activate RF in System State Manager
       
  1307 	// if there is no answer from Activate RF, then this request is never completed
       
  1308 	// So let's cancel DialEmergencyCall
       
  1309  	//------------------------------------------------------------------------- 	
       
  1310  	
       
  1311  	// Forse  SSMStub's Activate RF no to complete request 	
       
  1312  	TInt complete(0); // EFalse
       
  1313  	err = RProperty::Define(KThisProcessUID, ECompleteActivate, RProperty::EInt);
       
  1314  	ASSERT_EQUALS(KErrNone, err); 	
       
  1315  	RProperty::Set(KThisProcessUID, ECompleteActivate, complete);
       
  1316   
       
  1317 	mobileCall.DialEmergencyCall(reqStatus, number);
       
  1318 
       
  1319 	mobileCall.CancelAsyncRequest(EMobileCallDialEmergencyCall);
       
  1320 
       
  1321 	User::WaitForRequest(reqStatus);
       
  1322 	ASSERT_EQUALS(KErrCancel, reqStatus.Int());
       
  1323 
       
  1324 	AssertMockLtsyStatusL();
       
  1325 
       
  1326 	// Allow   SSMStub's Activate RF to to complete request
       
  1327 	complete = 1;// ETrue
       
  1328 	RProperty::Set(KThisProcessUID, ECompleteActivate, complete);	
       
  1329 	
       
  1330 	
       
  1331 	//-------------------------------------------------------------------------
       
  1332 	// TEST: No answer from Deactivate RF in System State Manager
       
  1333  	//------------------------------------------------------------------------- 
       
  1334  	 	
       
  1335  	// Forse  SSMStub's Deactivate  RF no to complete request 	
       
  1336  	complete = 0; // EFalse
       
  1337  	err = RProperty::Define(KThisProcessUID, ECompleteDeactivate, RProperty::EInt);
       
  1338  	ASSERT_EQUALS(KErrNone, err); 	
       
  1339  	RProperty::Set(KThisProcessUID, ECompleteDeactivate, complete);
       
  1340  	
       
  1341  	numberLtsyData.SerialiseL(data);
       
  1342 	iMockLTSY.ExpectL(EMobileCallDialEmergencyCall, data, KErrNone);
       
  1343 	
       
  1344     data.Close();
       
  1345     completeCallInfoData.SerialiseL(data);
       
  1346     iMockLTSY.CompleteL(EMobileCallGetMobileCallInfo, KErrNone, data);
       
  1347 
       
  1348     data.Close();
       
  1349     mobileCallStatus = RMobileCall::EStatusDialling;
       
  1350     completeCallStatusData.SerialiseL(data);
       
  1351     iMockLTSY.CompleteL(EMobileCallNotifyMobileCallStatusChange, KErrNone, data);
       
  1352 
       
  1353     data.Close();
       
  1354     mobileCallStatus = RMobileCall::EStatusConnecting;
       
  1355     completeCallStatusData.SerialiseL(data);
       
  1356     iMockLTSY.CompleteL(EMobileCallNotifyMobileCallStatusChange, KErrNone, data);
       
  1357 
       
  1358     data.Close();
       
  1359     mobileCallStatus = RMobileCall::EStatusConnected;
       
  1360     completeCallStatusData.SerialiseL(data);
       
  1361     iMockLTSY.CompleteL(EMobileCallNotifyMobileCallStatusChange, KErrNone, data);
       
  1362 
       
  1363 	mobileCall.DialEmergencyCall(reqStatus, number);
       
  1364 	User::WaitForRequest(reqStatus);
       
  1365 	ASSERT_EQUALS(KErrNone, reqStatus.Int()); // KErrNone cause CTSY doesn't care about result of Deactivating
       
  1366 	AssertMockLtsyStatusL();
       
  1367 		
       
  1368 	// Allow   SSMStub's Deactivete RF to to complete request
       
  1369 	complete = 1;// ETrue
       
  1370 	RProperty::Set(KThisProcessUID, ECompleteDeactivate, complete);	
       
  1371 	
       
  1372 	
       
  1373 	
       
  1374 	// Delete defined Properties
       
  1375 	err = RProperty::Delete(KThisProcessUID, ECompleteActivate);
       
  1376  	ASSERT_EQUALS(KErrNone, err); 
       
  1377 	err = RProperty::Delete(KThisProcessUID, ECompleteDeactivate);
       
  1378  	ASSERT_EQUALS(KErrNone, err); 
       
  1379 	
       
  1380 	CleanupStack::PopAndDestroy(4, this); // ...,  this	
       
  1381 #endif		
       
  1382 	}
       
  1383 
       
  1384 void CCTsyCallEmergencyFU::TestDialEmergencyCall0001fL()
       
  1385     {
       
  1386     OpenEtelServerL();
       
  1387     CleanupStack::PushL(TCleanupItem(Cleanup,this));
       
  1388     TInt err = iPhone.Open(iTelServer, KMmTsyPhoneName);
       
  1389     ASSERT_EQUALS(KErrNone, err);
       
  1390 
       
  1391     err = iMockLTSY.Connect();
       
  1392     ASSERT_EQUALS(KErrNone, err);
       
  1393     RBuf8 data;
       
  1394     CleanupClosePushL(data);
       
  1395 
       
  1396     RLine line;
       
  1397     err = line.Open(iPhone, KMmTsyVoice1LineName);
       
  1398     ASSERT_EQUALS(KErrNone, err)
       
  1399     CleanupClosePushL(line);
       
  1400 
       
  1401     TRequestStatus reqStatus;
       
  1402 
       
  1403     RMobileCall mobileCall;
       
  1404     TName callName;
       
  1405     err = mobileCall.OpenNewCall(line, callName);
       
  1406     ASSERT_EQUALS(KErrNone, err);
       
  1407     CleanupClosePushL(mobileCall);
       
  1408 
       
  1409     RMobileENStore::TEmergencyNumber number(_L("911"));
       
  1410     TMockLtsyData1<RMobileENStore::TEmergencyNumber> numberLtsyData(number);
       
  1411 
       
  1412     const TInt KCallId = 1;
       
  1413     RMobilePhone::TMobileService KMobileService = RMobilePhone::EVoiceService;
       
  1414     RMobileCall::TMobileCallInfoV1 callInfo;
       
  1415     FillInEmergencyCallInfo(callInfo, KCallId, callName, KMobileService);
       
  1416     TMockLtsyCallData1<RMobileCall::TMobileCallInfoV1> completeCallInfoData(KCallId, KMobileService, callInfo);
       
  1417 
       
  1418     RMobileCall::TMobileCallStatus mobileCallStatus = RMobileCall::EStatusIdle;
       
  1419     TMockLtsyCallData1<RMobileCall::TMobileCallStatus> completeCallStatusData(KCallId, KMobileService, mobileCallStatus);
       
  1420 
       
  1421 
       
  1422     data.Close();
       
  1423     numberLtsyData.SerialiseL(data);
       
  1424     iMockLTSY.ExpectL(EMobileCallDialEmergencyCall, data, KErrNone);
       
  1425 
       
  1426     data.Close();
       
  1427     completeCallInfoData.SerialiseL(data);
       
  1428     iMockLTSY.CompleteL(EMobileCallGetMobileCallInfo, KErrNone, data);
       
  1429 
       
  1430     data.Close();
       
  1431     mobileCallStatus = RMobileCall::EStatusDialling;
       
  1432     completeCallStatusData.SerialiseL(data);
       
  1433     iMockLTSY.CompleteL(EMobileCallNotifyMobileCallStatusChange, KErrNone, data);
       
  1434 
       
  1435     data.Close();
       
  1436     mobileCallStatus = RMobileCall::EStatusConnecting;
       
  1437     completeCallStatusData.SerialiseL(data);
       
  1438     iMockLTSY.CompleteL(EMobileCallNotifyMobileCallStatusChange, KErrNone, data);
       
  1439 
       
  1440     data.Close();
       
  1441     mobileCallStatus = RMobileCall::EStatusConnected;
       
  1442     completeCallStatusData.SerialiseL(data);
       
  1443     iMockLTSY.CompleteL(EMobileCallNotifyMobileCallStatusChange, KErrNone, data);
       
  1444 
       
  1445     mobileCall.DialEmergencyCall(reqStatus, number);
       
  1446     User::WaitForRequest(reqStatus);
       
  1447     ASSERT_EQUALS(KErrNone, reqStatus.Int());
       
  1448     AssertMockLtsyStatusL();
       
  1449 
       
  1450     CleanupStack::PopAndDestroy(4); //mobileCall, line, data, this
       
  1451     
       
  1452     }