diff -r 33a5d2bbf6fc -r 73a1feb507fb mmsharing/mmshengine/tsrc/ut_engine/src/ut_musengsessionmanager.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/mmsharing/mmshengine/tsrc/ut_engine/src/ut_musengsessionmanager.cpp Tue Aug 31 15:12:07 2010 +0300 @@ -0,0 +1,293 @@ +/* +* Copyright (c) 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: +* +*/ + + +// INTERNAL INCLUDES +#include "musengstubs.h" +#include "ut_musengsessionmanager.h" +#include "musengsessionmanager.h" +#include "musengmcesession.h" +#include "musengmceoutsession.h" +#include "mussessionproperties.h" +#include "centralrepository.h" +#include "e32property.h" +#include "musengtestdefs.h" + +// SYSTEM INCLUDES +#include + + +// ----------------------------------------------------------------------------- +// +// ----------------------------------------------------------------------------- +// +UT_CMusEngSessionManager* UT_CMusEngSessionManager::NewL() + { + UT_CMusEngSessionManager* self = UT_CMusEngSessionManager::NewLC(); + CleanupStack::Pop( self ); + return self; + } + +// ----------------------------------------------------------------------------- +// +// ----------------------------------------------------------------------------- +// +UT_CMusEngSessionManager* UT_CMusEngSessionManager::NewLC() + { + UT_CMusEngSessionManager* self = new( ELeave )UT_CMusEngSessionManager(); + CleanupStack::PushL( self ); + self->ConstructL(); + return self; + } + +// ----------------------------------------------------------------------------- +// +// ----------------------------------------------------------------------------- +// +UT_CMusEngSessionManager::~UT_CMusEngSessionManager() + { + // NOP + } + +// ----------------------------------------------------------------------------- +// Default constructor +// ----------------------------------------------------------------------------- +// +UT_CMusEngSessionManager::UT_CMusEngSessionManager() + { + } + +// ----------------------------------------------------------------------------- +// Second phase construct +// ----------------------------------------------------------------------------- +// +void UT_CMusEngSessionManager::ConstructL() + { + // The ConstructL from the base class CEUnitTestSuiteClass must be called. + // It generates the test case table. + CEUnitTestSuiteClass::ConstructL(); + } + +// ----------------------------------------------------------------------------- +// +// ----------------------------------------------------------------------------- +// +void UT_CMusEngSessionManager::SetupL() + { + User::LeaveIfError( + RProperty::Set( + NMusSessionApi::KCategoryUid, + NMusSessionApi::KUseCase, + MultimediaSharing::EMusLiveVideo ) ); + iSessionManager = CMusEngSessionManager::NewL(); + + iLcUiProvider = new( ELeave )CLcUiProviderStub; + } + +// ----------------------------------------------------------------------------- +// +// ----------------------------------------------------------------------------- +// +void UT_CMusEngSessionManager::Teardown() + { + delete iSessionManager; + delete iLcUiProvider; + // The Central Repository stub is using RProperty stub to store global data. + // The global data must be freed here. + PropertyHelper::Close(); + } + +// TEST CASES + +// ----------------------------------------------------------------------------- +// +// ----------------------------------------------------------------------------- +// +void UT_CMusEngSessionManager::UT_NewL() + { + EUNIT_ASSERT( iSessionManager->iSession != NULL ) + } + +// ----------------------------------------------------------------------------- +// +// ----------------------------------------------------------------------------- +// +void UT_CMusEngSessionManager::UT_SessionL() + { + EUNIT_ASSERT( iSessionManager->iSession == &( iSessionManager->Session() ) ) + } + +// ----------------------------------------------------------------------------- +// +// ----------------------------------------------------------------------------- +// +void UT_CMusEngSessionManager::UT_IsFeatureSupportedL() + { + EUNIT_ASSERT( + iSessionManager->IsFeatureSupported( CLcEngine::ELcShowAcceptQuery ) ) + + EUNIT_ASSERT( + iSessionManager->IsFeatureSupported( CLcEngine::ELcShowInvitingNote ) ) + + EUNIT_ASSERT( + iSessionManager->IsFeatureSupported( CLcEngine::ELcShowWaitingNote ) ) + } + +// ----------------------------------------------------------------------------- +// +// ----------------------------------------------------------------------------- +// +void UT_CMusEngSessionManager::UT_CreateMusSessionL() + { + CMusEngMceSession* session = NULL; + + // Live session + session = + iSessionManager->CreateMusSessionL( + MultimediaSharing::EMusLiveVideo ); + EUNIT_ASSERT( session != NULL ) + delete session; + + // Clip session + session = + iSessionManager->CreateMusSessionL( + MultimediaSharing::EMusClipVideo ); + EUNIT_ASSERT( session != NULL ) + delete session; + + // Receive session + session = + iSessionManager->CreateMusSessionL( + MultimediaSharing::EMusReceive ); + EUNIT_ASSERT( session != NULL ) + delete session; + + // Two way session + session = + iSessionManager->CreateMusSessionL( + MultimediaSharing::EMusTwoWayVideo ); + EUNIT_ASSERT( session != NULL ) + delete session; + + // Two way receive session + session = + iSessionManager->CreateMusSessionL( + MultimediaSharing::EMusReceiveTwoWayVideo ); + EUNIT_ASSERT( session != NULL ) + delete session; + + // Other session types + EUNIT_ASSERT_SPECIFIC_LEAVE( + iSessionManager->CreateMusSessionL( MultimediaSharing::EMusStillImage ), + KErrNotSupported ) + + EUNIT_ASSERT_SPECIFIC_LEAVE( + iSessionManager->CreateMusSessionL( MultimediaSharing::EMusContinue ), + KErrNotSupported ) + } + +// ----------------------------------------------------------------------------- +// +// ----------------------------------------------------------------------------- +// +void UT_CMusEngSessionManager::UT_PropertyChangedL() + { + iSessionManager->Session().SetLcUiProvider( iLcUiProvider ); + + // Background startup not active, property change ignored + MLcSession* origSession = &iSessionManager->Session(); + iSessionManager->PropertyChanged( + NMusSessionApi::KUseCase, MultimediaSharing::EMusReceiveTwoWayVideo ); + + EUNIT_ASSERT( origSession == &iSessionManager->Session() ); + EUNIT_ASSERT( iLcUiProvider->iCalledFunction != CLcUiProviderStub::EHandleForegroundStatus ); + + // Background startup active, usecase not changed, no effect + User::LeaveIfError( RProperty::Set( NMusSessionApi::KCategoryUid, + NMusSessionApi::KFastMode, + MusSettingsKeys::EFastModeOn ) ); + iSessionManager->iSession->iBackground = ETrue; + origSession = &iSessionManager->Session(); + iSessionManager->PropertyChanged( + NMusSessionApi::KUseCase, iSessionManager->iCurrentUseCase ); + + EUNIT_ASSERT( origSession == &iSessionManager->Session() ); + EUNIT_ASSERT( iLcUiProvider->iCalledFunction != CLcUiProviderStub::EHandleForegroundStatus ); + + // Background startup active, usecase changed, uiprovider informed and + // new session replaces old one + origSession = &iSessionManager->Session(); + iSessionManager->PropertyChanged( + NMusSessionApi::KUseCase, MultimediaSharing::EMusClipVideo ); + if ( origSession == &iSessionManager->Session() ) + { + // Couldn't create new session because running out of memory + User::Leave( KErrNoMemory ); + } + EUNIT_ASSERT( origSession != &iSessionManager->Session() ); + EUNIT_ASSERT( iLcUiProvider->iCalledFunction == CLcUiProviderStub::EHandleForegroundStatus ); + EUNIT_ASSERT( iLcUiProvider->iForeground ); + } + +// TEST TABLE + +EUNIT_BEGIN_TEST_TABLE( + UT_CMusEngSessionManager, + "UT_CMusEngSessionManager", + "UNIT" ) + +EUNIT_TEST( + "NewL - test ", + "CMusEngSessionManager", + "NewL", + "FUNCTIONALITY", + SetupL, UT_NewL, Teardown) + +EUNIT_TEST( + "Session - test ", + "CMusEngSessionManager", + "Session", + "FUNCTIONALITY", + SetupL, UT_SessionL, Teardown) + +EUNIT_TEST( + "IsFeatureSupported - test ", + "CMusEngSessionManager", + "IsFeatureSupported", + "FUNCTIONALITY", + SetupL, UT_IsFeatureSupportedL, Teardown) + +EUNIT_TEST( + "CreateMusSessionL - test ", + "CMusEngSessionManager", + "CreateMusSessionL", + "FUNCTIONALITY", + SetupL, UT_CreateMusSessionL, Teardown) + +EUNIT_TEST( + "PropertyChanged - test ", + "CMusEngSessionManager", + "PropertyChanged", + "FUNCTIONALITY", + SetupL, UT_PropertyChangedL, Teardown) + +EUNIT_END_TEST_TABLE + + +// END OF FILE + +