diff -r 33a5d2bbf6fc -r 73a1feb507fb mmsharing/mmshindicator/tsrc/ut_indicator/src/ut_cmusindicatordsa.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/mmsharing/mmshindicator/tsrc/ut_indicator/src/ut_cmusindicatordsa.cpp Tue Aug 31 15:12:07 2010 +0300 @@ -0,0 +1,501 @@ +/* +* Copyright (c) 2007 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: Implements unit tests for CMusIndicatorApi class. +* +*/ + + + +#include "ut_cmusindicatordsa.h" +#include "musindicatordsa.h" +#include "mustesthelp.h" +#include "e32property.h" + +#include +#include +#include + + +// Next row is to disable warning emerging from EUnit code. +#pragma warn_illtokenpasting off + +const TSize KOriginalSize = TSize( 176, 208 ); +const TSize KDifferentSize = TSize( 208, 176 ); + +static CWindowGc* gc = NULL; +static TAny* cc = NULL; +static TTimeIntervalMicroSeconds32 delay = 0; +static TSize sizeInPixels = KOriginalSize; + + +// ======== stubs ======== + + +void CCoeControl::CreateWindowL() + { + + } + +void CCoeControl::ActivateL() + { + + } + +void CCoeControl::DrawDeferred() const + { + } + +CWindowGc& CCoeControl::SystemGc() const + { + return *gc; + } + +MWsClientClass::MWsClientClass() + { + } + +CWindowGc::CWindowGc(CWsScreenDevice* /*aDevice*/ ) + { + + } + +CWindowGc::~CWindowGc() + { + + } + +void CWindowGc::SetBrushStyle( TBrushStyle /*aBrushStyle*/ ) + { + } + +void CWindowGc::Clear( const TRect& /*aRect*/ ) + { + } + +void CWindowGc::UseFont( const CFont* /*aFont*/ ) + { + } + +void CWindowGc::SetPenStyle( TPenStyle /*aPenStyle*/ ) + { + } + +void CWindowGc::SetPenColor( const TRgb& /*aColor*/ ) + { + } + +void CWindowGc::SetPenSize( const TSize& /*aSize*/ ) + { + } + +void CWindowGc::DrawRoundRect( const TRect& /*aRect*/,const TSize& /*aEllipse*/ ) + { + } + +void CWindowGc::DrawText( const TDesC& /*aBuf*/,const TPoint& /*aPos*/ ) + { + } + +//Cannot stub due it is virtual method. This is not called +TSize CWsScreenDevice::SizeInPixels() const + { + return sizeInPixels; + } + +void CWindowGc::BitBltMasked(const TPoint& /*aPoint*/,const CFbsBitmap* /*aBitmap*/, + const TRect& /*aSourceRect*/,const CFbsBitmap* /*aMaskBitmap*/,TBool /*aInvertMask*/) + { + } + +MAknsControlContext* AknsDrawUtils::ControlContext( const MObjectProvider* /*aMop*/ ) + { + return static_cast( cc ); + } + +TBool AknsDrawUtils::Background( MAknsSkinInstance* /*aInstance*/, + MAknsControlContext* /*aContext*/, const CCoeControl* /*aControl*/, + CWindowGc& /*aGc*/, const TRect& /*aRect*/, const TInt /*aDrawParam*/ ) + { + return ETrue; + } + + +void CPeriodic::Start(TTimeIntervalMicroSeconds32 aDelay,TTimeIntervalMicroSeconds32 /*anInterval*/,TCallBack /*aCallBack*/) + { + delay = aDelay; + After(aDelay); + + } + + + +// ======== MEMBER FUNCTIONS ======== + + +UT_CMusIndicatorDsa* UT_CMusIndicatorDsa::NewL() + { + UT_CMusIndicatorDsa* self = UT_CMusIndicatorDsa::NewLC(); + CleanupStack::Pop( self ); + return self; + } + + +UT_CMusIndicatorDsa* UT_CMusIndicatorDsa::NewLC() + { + UT_CMusIndicatorDsa* self = new( ELeave ) UT_CMusIndicatorDsa(); + CleanupStack::PushL( self ); + self->ConstructL(); + return self; + } + + +UT_CMusIndicatorDsa::~UT_CMusIndicatorDsa() + { + } + + +UT_CMusIndicatorDsa::UT_CMusIndicatorDsa() + { + delete iIndicatorDsa; + iIndicatorDsa = NULL; + } + + +// --------------------------------------------------------------------------- +// The ConstructL from the base class CEUnitTestSuiteClass must be called. +// It generates the test case table. +// --------------------------------------------------------------------------- +// +void UT_CMusIndicatorDsa::ConstructL() + { + CEUnitTestSuiteClass::ConstructL(); + } + + +// ---------------------------------------------------------------------------- +// Prepares a test for execution. +// ---------------------------------------------------------------------------- +// +void UT_CMusIndicatorDsa::SetupL() + { + /* NOTE: EUnit reports leak for any first test due AVKON resource reservation, + * which is not released by AVKON at end of test. Resource reservation + * happend in contruction of CMusIndicatorDsa + */ + + cc = this; + iIndicatorDsa = CMusIndicatorDsa::NewL(); + if ( !gc ) + { + gc = new (ELeave) CWindowGc( NULL ); + } + delay = 0; + sizeInPixels = KOriginalSize; + + } + + +// ---------------------------------------------------------------------------- +// Finalizes a test by releasing used resources. +// ---------------------------------------------------------------------------- +// +void UT_CMusIndicatorDsa::Teardown() + { + delete iIndicatorDsa; + iIndicatorDsa = NULL; + delete gc; + gc = NULL; + cc = NULL; + delay = 0; + sizeInPixels = KOriginalSize; + PropertyHelper::Close(); + + } + + +// ======== UNIT TEST METHODS ======== + + +// ---------------------------------------------------------------------------- +// Asserts successful instantiation. +// ---------------------------------------------------------------------------- +// + +void UT_CMusIndicatorDsa::UT_CMusIndicatorDsa_NewLL() + { + EUNIT_ASSERT( iIndicatorDsa ); + } + + +// ---------------------------------------------------------------------------- +// +// ---------------------------------------------------------------------------- +// +void UT_CMusIndicatorDsa::UT_CMusIndicatorDsa_DrawL() + { + EUNIT_ASSERT( !iIndicatorDsa->iPeriodic->IsActive() ); + + TRect rect; + iIndicatorDsa->Draw( rect ); + EUNIT_ASSERT( !iIndicatorDsa->iPeriodic->IsActive() ); + + cc = NULL; + iIndicatorDsa->Draw( rect ); + EUNIT_ASSERT( !iIndicatorDsa->iPeriodic->IsActive() ); + + /*size cannot be changed + sizeInPixels = KDifferentSize; + iIndicatorDsa->Draw( rect ); + EUNIT_ASSERT( iIndicatorDsa->iPeriodic->IsActive() ); + */ + + } + +// ---------------------------------------------------------------------------- +// +// ---------------------------------------------------------------------------- +// +void UT_CMusIndicatorDsa::UT_CMusIndicatorDsa_InitializeL() + { + iIndicatorDsa->Initialize(); + + + EUNIT_ASSERT( iIndicatorDsa->iTextpos.iX ); + EUNIT_ASSERT( iIndicatorDsa->iTextpos.iY ); + + } + + +// ---------------------------------------------------------------------------- +// Asserts that load image is not doing anything if icon is already loaded +// ---------------------------------------------------------------------------- +// +void UT_CMusIndicatorDsa::UT_CMusIndicatorDsa_LoadImageLL() + { + CFbsBitmap* icon = iIndicatorDsa->iIcon; + CFbsBitmap* iconMask = iIndicatorDsa->iIconMask; + EUNIT_ASSERT( icon != NULL ); + EUNIT_ASSERT( iconMask != NULL ); + iIndicatorDsa->LoadImageL(); + + EUNIT_ASSERT( icon == iIndicatorDsa->iIcon ); + EUNIT_ASSERT( iconMask == iIndicatorDsa->iIconMask ); + } + + +// ---------------------------------------------------------------------------- +// Asserts successful loading of resource string. +// ---------------------------------------------------------------------------- +// +void UT_CMusIndicatorDsa::UT_CMusIndicatorDsa_LoadResourceStringLL() + { + iIndicatorDsa->LoadResourceStringL(); + EUNIT_ASSERT( iIndicatorDsa->iText ); + EUNIT_ASSERT( iIndicatorDsa->iText->Length() ); + } + + + +// ---------------------------------------------------------------------------- +// Asserts that periodic timer is started after method call. +// ---------------------------------------------------------------------------- +// +void UT_CMusIndicatorDsa::UT_CMusIndicatorDsa_StartPeriodicTimerL() + { + EUNIT_ASSERT( iIndicatorDsa->iPeriodic ); + EUNIT_ASSERT( !iIndicatorDsa->iPeriodic->IsActive() ); + EUNIT_ASSERT( delay.Int() == 0 ); + + iIndicatorDsa->StartPeriodicTimer( iIndicatorDsa->iActivateCallBack ); + EUNIT_ASSERT( iIndicatorDsa->iPeriodic->IsActive() ); + EUNIT_ASSERT( delay.Int() == KMusIndicatorDelay ); + + delay = 0; + iIndicatorDsa->StartPeriodicTimer( iIndicatorDsa->iActivateCallBack ); + EUNIT_ASSERT( delay.Int() == 0 ); + + iIndicatorDsa->iPeriodic->Cancel(); + EUNIT_ASSERT( !iIndicatorDsa->iPeriodic->IsActive() ); + EUNIT_ASSERT( delay.Int() == 0 ); + + iIndicatorDsa->StartPeriodicTimer( iIndicatorDsa->iRedrawCallBack ); + EUNIT_ASSERT( iIndicatorDsa->iPeriodic->IsActive() ); + EUNIT_ASSERT( delay.Int() == KMusRedrawDelay ); + + } + + +// ---------------------------------------------------------------------------- +// Asserts that periodic timer is stopped after method call. +// ---------------------------------------------------------------------------- +// +void UT_CMusIndicatorDsa::UT_CMusIndicatorDsa_StopPeriodicTimerL() + { + EUNIT_ASSERT( iIndicatorDsa->iPeriodic ); + EUNIT_ASSERT( !iIndicatorDsa->iPeriodic->IsActive() ); + iIndicatorDsa->StopPeriodicTimer(); + EUNIT_ASSERT( iIndicatorDsa->iPeriodic ); + EUNIT_ASSERT( !iIndicatorDsa->iPeriodic->IsActive() ); + + iIndicatorDsa->StartPeriodicTimer( iIndicatorDsa->iActivateCallBack ); + EUNIT_ASSERT( iIndicatorDsa->iPeriodic ); + EUNIT_ASSERT( iIndicatorDsa->iPeriodic->IsActive() ); + + iIndicatorDsa->StopPeriodicTimer(); + EUNIT_ASSERT( iIndicatorDsa->iPeriodic ); + EUNIT_ASSERT( !iIndicatorDsa->iPeriodic->IsActive() ); + + } + +// ---------------------------------------------------------------------------- +// Asserts that periodic timer +// ---------------------------------------------------------------------------- +// +void UT_CMusIndicatorDsa::UT_CMusIndicatorDsa_TryActivateL() + { + EUNIT_ASSERT( iIndicatorDsa->iPeriodic ); + EUNIT_ASSERT( !iIndicatorDsa->iPeriodic->IsActive() ); + + EUNIT_ASSERT_EQUALS( iIndicatorDsa->TryActivate( iIndicatorDsa ), KErrNone ); + EUNIT_ASSERT( iIndicatorDsa->iPeriodic ); + EUNIT_ASSERT( !iIndicatorDsa->iPeriodic->IsActive() ); + + cc = NULL; + + // Through async callback + EUNIT_ASSERT_EQUALS( iIndicatorDsa->TryActivate( iIndicatorDsa ), KErrNone ); + EUNIT_ASSERT( iIndicatorDsa->iPeriodic->IsActive() ); + + EUNIT_ASSERT_EQUALS( iIndicatorDsa->TryActivate( NULL ), KErrArgument ); + EUNIT_ASSERT( iIndicatorDsa->iPeriodic->IsActive() ); + + } + +void UT_CMusIndicatorDsa::UT_CMusIndicatorDsa_DoHandleResourceChangeL() + { + EUNIT_ASSERT( iIndicatorDsa->iPeriodic ); + EUNIT_ASSERT( !iIndicatorDsa->iPeriodic->IsActive() ); + + EUNIT_ASSERT_EQUALS( iIndicatorDsa->DoHandleResourceChange( iIndicatorDsa ), KErrNone ); + EUNIT_ASSERT( iIndicatorDsa->iPeriodic ); + EUNIT_ASSERT( !iIndicatorDsa->iPeriodic->IsActive() ); + + EUNIT_ASSERT_EQUALS( iIndicatorDsa->DoHandleResourceChange( NULL ), KErrArgument ); + EUNIT_ASSERT( !iIndicatorDsa->iPeriodic->IsActive() ); + + } + +void UT_CMusIndicatorDsa::UT_CMusIndicatorDsa_HandleResourceChangeL() + { + EUNIT_ASSERT( !iIndicatorDsa->iPeriodic->IsActive() ); + iIndicatorDsa->StartPeriodicTimer( iIndicatorDsa->iRedrawCallBack ); + EUNIT_ASSERT( iIndicatorDsa->iPeriodic->IsActive() ); + + iIndicatorDsa->iScreenSize = TSize(); + iIndicatorDsa->HandleResourceChange( KEikDynamicLayoutVariantSwitch ); + EUNIT_ASSERT( !iIndicatorDsa->iPeriodic->IsActive() ); + + EUNIT_ASSERT( iIndicatorDsa->iScreenSize != TSize() ); + + iIndicatorDsa->iScreenSize = TSize(); + iIndicatorDsa->HandleResourceChange( 0 ); + EUNIT_ASSERT( iIndicatorDsa->iScreenSize == TSize() ); + + } + + + +// ======== EUNIT TEST TABLE ======== + + +EUNIT_BEGIN_TEST_TABLE( + UT_CMusIndicatorDsa, + "UT_CMusIndicatorDsa", + "UNIT" ) + +EUNIT_TEST( + "NewL - test", + "CMusIndicatorDsa", + "NewL", + "FUNCTIONALITY", + SetupL, UT_CMusIndicatorDsa_NewLL, Teardown ) + + +EUNIT_TEST( + "Draw - test", + "CMusIndicatorDsa", + "Draw", + "FUNCTIONALITY", + SetupL, UT_CMusIndicatorDsa_DrawL, Teardown ) + + +EUNIT_TEST( + "Initialize - test", + "CMusIndicatorDsa", + "Initialize", + "FUNCTIONALITY", + SetupL, UT_CMusIndicatorDsa_InitializeL, Teardown ) + +EUNIT_TEST( + "LoadImageL - test", + "CMusIndicatorDsa", + "LoadImageL", + "FUNCTIONALITY", + SetupL, UT_CMusIndicatorDsa_LoadImageLL, Teardown ) + +EUNIT_TEST( + "LoadResourceStringL - test", + "CMusIndicatorDsa", + "LoadResourceStringL", + "FUNCTIONALITY", + SetupL, UT_CMusIndicatorDsa_LoadResourceStringLL, Teardown ) + + +EUNIT_TEST( + "TryActivate - test", + "CMusIndicatorDsa", + "TryActivate", + "FUNCTIONALITY", + SetupL, UT_CMusIndicatorDsa_TryActivateL, Teardown ) + +EUNIT_TEST( + "StartPeriodicTimer - test", + "CMusIndicatorDsa", + "StartPeriodicTimer", + "FUNCTIONALITY", + SetupL, UT_CMusIndicatorDsa_StartPeriodicTimerL, Teardown ) + +EUNIT_TEST( + "StopPeriodicTimer - test", + "CMusIndicatorDsa", + "StopPeriodicTimer", + "FUNCTIONALITY", + SetupL, UT_CMusIndicatorDsa_StopPeriodicTimerL, Teardown ) + +EUNIT_TEST( + "DoHandleResourceChange - test", + "CMusIndicatorDsa", + "DoHandleResourceChange", + "FUNCTIONALITY", + SetupL, UT_CMusIndicatorDsa_DoHandleResourceChangeL, Teardown ) + +EUNIT_TEST( + "HandleResourceChange - test", + "CMusIndicatorDsa", + "HandleResourceChange", + "FUNCTIONALITY", + SetupL, UT_CMusIndicatorDsa_HandleResourceChangeL, Teardown ) + + +EUNIT_END_TEST_TABLE