85 |
84 |
86 void UT_CMusAvaOptionHandler::SetupL( ) |
85 void UT_CMusAvaOptionHandler::SetupL( ) |
87 { |
86 { |
88 iSharedObject = CMusAvaSharedObject::GetSingletonL(); |
87 iSharedObject = CMusAvaSharedObject::GetSingletonL(); |
89 iAvailabilityObserver = CMusAvaAvailabilityObserverImp::NewL(); |
88 iAvailabilityObserver = CMusAvaAvailabilityObserverImp::NewL(); |
90 iSettingsObserver = CMusAvaSettingsObserverImp::NewL(); |
|
91 iConcreteSettings = CMusAvaSettingsImp::NewL(); |
89 iConcreteSettings = CMusAvaSettingsImp::NewL(); |
92 iConcreteSettings->SetObserver( *iSettingsObserver ); |
|
93 iOptionHandler = CMusAvaOptionHandler::NewL( *iAvailabilityObserver, |
90 iOptionHandler = CMusAvaOptionHandler::NewL( *iAvailabilityObserver, |
94 *iConcreteSettings ); |
91 *iConcreteSettings ); |
95 |
92 |
96 MSIPConnectionObserver& connectionObserver = |
93 MSIPConnectionObserver& connectionObserver = |
97 iSharedObject->MusAvaSip().ConnectionObserver(); |
94 iSharedObject->MusAvaSip().ConnectionObserver(); |
98 CSIP& sip = iSharedObject->MusAvaSip().Sip(); |
95 CSIP& sip = iSharedObject->MusAvaSip().Sip(); |
99 CSipSseTestTls::OpenL(); |
96 CSipSseTestTls::OpenL(); |
100 iStorage = CSipSseTestTls::Storage(); |
97 iStorage = CSipSseTestTls::Storage(); |
101 iStorage->Set( MusSettingsKeys::KFastStartupMode, |
|
102 MusSettingsKeys::EFastModeOff ); |
|
103 |
|
104 iSharedObject->MusAvaSip().CreateProfileL(); |
98 iSharedObject->MusAvaSip().CreateProfileL(); |
105 iProfile = iSharedObject->MusAvaSip().Profile(); |
99 iProfile = iSharedObject->MusAvaSip().Profile(); |
106 iSharedObject->MusAvaSip().ConnectionL( ); |
100 iSharedObject->MusAvaSip().ConnectionL( ); |
107 |
101 |
108 if ( !iProfile->iArray ) |
102 if ( !iProfile->iArray ) |
329 CleanupStack::PopAndDestroy( videoCodecs ); |
320 CleanupStack::PopAndDestroy( videoCodecs ); |
330 CleanupStack::PopAndDestroy(); |
321 CleanupStack::PopAndDestroy(); |
331 |
322 |
332 } |
323 } |
333 |
324 |
334 void UT_CMusAvaOptionHandler::UT_CMusAvaOptionHandler_DoSetStateL() |
|
335 { |
|
336 // Set some state which does not cause special handling |
|
337 iOptionHandler->iFastModeCapable = EFalse; |
|
338 iOptionHandler->DoSetState( MMusAvaObserver::EMusAvaStatusOptionsSent ); |
|
339 EUNIT_ASSERT( iOptionHandler->iState == MMusAvaObserver::EMusAvaStatusOptionsSent ); |
|
340 |
|
341 // Set special handling state, but fast mode is not enabled |
|
342 iOptionHandler->DoSetState( MMusAvaObserver::EMusAvaStatusAvailable ); |
|
343 EUNIT_ASSERT( iOptionHandler->iState == MMusAvaObserver::EMusAvaStatusAvailable ); |
|
344 EUNIT_ASSERT( !iSettingsObserver->iApplicationStarted ); |
|
345 |
|
346 // Set special handling state, fast capable but mode is not enabled |
|
347 iOptionHandler->iFastModeCapable = ETrue; |
|
348 iConcreteSettings->SetFastMode( MusSettingsKeys::EFastModeOff ); |
|
349 iOptionHandler->DoSetState( MMusAvaObserver::EMusAvaStatusAvailable ); |
|
350 EUNIT_ASSERT( iOptionHandler->iState == MMusAvaObserver::EMusAvaStatusAvailable ); |
|
351 EUNIT_ASSERT( !iSettingsObserver->iApplicationStarted ); |
|
352 } |
|
353 |
|
354 void UT_CMusAvaOptionHandler::UT_CMusAvaOptionHandler_DoSetStateFastModeL() |
|
355 { |
|
356 iOptionHandler->iFastModeCapable = ETrue; |
|
357 iConcreteSettings->SetFastMode( MusSettingsKeys::EFastModeOn ); |
|
358 iOptionHandler->iSettings.SetCallDirection( 1 ); |
|
359 |
|
360 // State which does not have special handling |
|
361 iOptionHandler->DoSetState( MMusAvaObserver::EMusAvaFailureCode ); |
|
362 EUNIT_ASSERT( iOptionHandler->iState == MMusAvaObserver::EMusAvaFailureCode ); |
|
363 EUNIT_ASSERT( !iOptionHandler->iFastModeAvailabilityDelayed ); |
|
364 |
|
365 // OptionsNotSent handling |
|
366 // |
|
367 |
|
368 // MT, not answered |
|
369 iOptionHandler->iSettings.SetCallDirection( 2 ); |
|
370 iOptionHandler->iCapabilityQueryAnswered = EFalse; |
|
371 iOptionHandler->DoSetState( MMusAvaObserver::EMusAvaStatusOptionsNotSent ); |
|
372 EUNIT_ASSERT( iOptionHandler->iState == MMusAvaObserver::EMusAvaStatusOptionsNotSent ); |
|
373 EUNIT_ASSERT( !iOptionHandler->iFastModeAvailabilityDelayed ); |
|
374 |
|
375 // MT, answered (makes state available delayed) |
|
376 iOptionHandler->iCapabilityQueryAnswered = ETrue; |
|
377 iOptionHandler->DoSetState( MMusAvaObserver::EMusAvaStatusOptionsNotSent ); |
|
378 EUNIT_ASSERT( iOptionHandler->iState == MMusAvaObserver::EMusAvaStatusOptionsNotSent ); |
|
379 EUNIT_ASSERT( iOptionHandler->iFastModeAvailabilityDelayed ); |
|
380 |
|
381 // Available handling |
|
382 // |
|
383 |
|
384 // MO, start app |
|
385 iOptionHandler->iSettings.SetCallDirection( 1 ); |
|
386 iSettingsObserver->iApplicationStarted = EFalse; |
|
387 iOptionHandler->iFastModeAvailabilityDelayed = EFalse; |
|
388 iOptionHandler->DoSetState( MMusAvaObserver::EMusAvaStatusAvailable ); |
|
389 EUNIT_ASSERT( iOptionHandler->iState == MMusAvaObserver::EMusAvaStatusAvailable ); |
|
390 EUNIT_ASSERT( !iOptionHandler->iFastModeAvailabilityDelayed ); |
|
391 EUNIT_ASSERT( iSettingsObserver->iApplicationStarted ); |
|
392 |
|
393 // App already started by going to available state, do not do twice |
|
394 iSettingsObserver->iApplicationStarted = EFalse; |
|
395 iOptionHandler->DoSetState( MMusAvaObserver::EMusAvaStatusAvailable ); |
|
396 EUNIT_ASSERT( iOptionHandler->iState == MMusAvaObserver::EMusAvaStatusAvailable ); |
|
397 EUNIT_ASSERT( !iOptionHandler->iFastModeAvailabilityDelayed ); |
|
398 EUNIT_ASSERT( !iSettingsObserver->iApplicationStarted ); |
|
399 |
|
400 // MT, delayed availability publishing (state not changed yet) |
|
401 iOptionHandler->iSettings.SetCallDirection( 2 ); |
|
402 iOptionHandler->iFastModeAvailabilityDelayed = EFalse; |
|
403 iSettingsObserver->iApplicationStarted = EFalse; |
|
404 iOptionHandler->iState = MMusAvaObserver::EMusAvaStatusOptionsNotSent; |
|
405 iOptionHandler->DoSetState( MMusAvaObserver::EMusAvaStatusAvailable ); |
|
406 EUNIT_ASSERT( iOptionHandler->iState == MMusAvaObserver::EMusAvaStatusOptionsNotSent ); |
|
407 EUNIT_ASSERT( iOptionHandler->iFastModeAvailabilityDelayed ); |
|
408 EUNIT_ASSERT( !iSettingsObserver->iApplicationStarted ); |
|
409 |
|
410 // Invite ends availability delaying |
|
411 iOptionHandler->PrepareForReceivedInviteL(); |
|
412 EUNIT_ASSERT( iOptionHandler->iState == MMusAvaObserver::EMusAvaStatusAvailable ); |
|
413 EUNIT_ASSERT( !iOptionHandler->iFastModeAvailabilityDelayed ); |
|
414 |
|
415 // No effect if no delay pending |
|
416 iOptionHandler->iState = MMusAvaObserver::EMusAvaStatusOptionsNotSent; |
|
417 iOptionHandler->PrepareForReceivedInviteL(); |
|
418 EUNIT_ASSERT( iOptionHandler->iState == MMusAvaObserver::EMusAvaStatusOptionsNotSent ); |
|
419 |
|
420 // OptionNotAvailable handling |
|
421 // |
|
422 |
|
423 // Normal handling when no pending availabilty publishing nor state is |
|
424 // not already available |
|
425 iOptionHandler->iFastModeAvailabilityDelayed = EFalse; |
|
426 iOptionHandler->DoSetState( MMusAvaObserver::EMusAvaOptionNotAvailable ); |
|
427 EUNIT_ASSERT( iOptionHandler->iState == MMusAvaObserver::EMusAvaOptionNotAvailable ); |
|
428 |
|
429 // If already set to available by succesfull answer, sending failure |
|
430 // does not clear availability |
|
431 iOptionHandler->iState = MMusAvaObserver::EMusAvaStatusAvailable; |
|
432 iOptionHandler->DoSetState( MMusAvaObserver::EMusAvaOptionNotAvailable ); |
|
433 EUNIT_ASSERT( iOptionHandler->iState == MMusAvaObserver::EMusAvaStatusAvailable ); |
|
434 } |
|
435 |
|
436 void UT_CMusAvaOptionHandler::UT_CMusAvaOptionHandler_FastModeResolvedL() |
|
437 { |
|
438 iOptionHandler->iFastModeCapable = ETrue; |
|
439 |
|
440 // Normal case |
|
441 iOptionHandler->iSettings.SetFastMode( MusSettingsKeys::EFastModeOff ); |
|
442 iOptionHandler->FastModeResolved( MusSettingsKeys::EFastModeOn ); |
|
443 EUNIT_ASSERT( iOptionHandler->iSettings.FastMode() == MusSettingsKeys::EFastModeOn ) |
|
444 |
|
445 // MO side fast mode negotiation has failed, value is not set |
|
446 iOptionHandler->iSettings.SetFastMode( MusSettingsKeys::EFastModeOff ); |
|
447 iOptionHandler->iSettings.SetCallDirection( 1 ); |
|
448 iOptionHandler->iState = MMusAvaObserver::EMusAvaOptionNotAvailable; |
|
449 iOptionHandler->FastModeResolved( MusSettingsKeys::EFastModeOn ); |
|
450 EUNIT_ASSERT( iOptionHandler->iSettings.FastMode() == MusSettingsKeys::EFastModeOff ) |
|
451 } |
|
452 |
|
453 void UT_CMusAvaOptionHandler::UT_CMusAvaOptionHandler_CapabilityQueryAnsweredL() |
|
454 { |
|
455 iOptionHandler->iFastModeCapable = ETrue; |
|
456 |
|
457 // If fast mode MO side, no special handling for answer |
|
458 iOptionHandler->CapabilityQueryAnswered( ETrue ); |
|
459 EUNIT_ASSERT( iOptionHandler->iCapabilityQueryAnswered ) |
|
460 EUNIT_ASSERT( !iOptionHandler->iFastModeAvailabilityDelayed ); |
|
461 |
|
462 // If fast mode MT side, MT can start waiting for invite already after answering |
|
463 iOptionHandler->iCapabilityQueryAnswered = EFalse; |
|
464 iOptionHandler->iSettings.SetFastMode( MusSettingsKeys::EFastModeOn ); |
|
465 iOptionHandler->iSettings.SetCallDirection( 2 ); |
|
466 iOptionHandler->CapabilityQueryAnswered( ETrue ); |
|
467 EUNIT_ASSERT( iOptionHandler->iCapabilityQueryAnswered ) |
|
468 EUNIT_ASSERT( iOptionHandler->iFastModeAvailabilityDelayed ); |
|
469 } |
|
470 |
|
471 // TEST TABLE |
325 // TEST TABLE |
472 |
326 |
473 EUNIT_BEGIN_TEST_TABLE( |
327 EUNIT_BEGIN_TEST_TABLE( |
474 UT_CMusAvaOptionHandler, |
328 UT_CMusAvaOptionHandler, |
475 "CMusAvaOptionHandler", |
329 "CMusAvaOptionHandler", |