diff -r 000000000000 -r 15bf7259bb7c uiaccelerator_plat/alf_visual_api/tsrc/src/testplatalfvisualblocksroster.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/uiaccelerator_plat/alf_visual_api/tsrc/src/testplatalfvisualblocksroster.cpp Tue Feb 02 07:56:43 2010 +0200 @@ -0,0 +1,452 @@ +/* +* Copyright (c) 2002 - 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: test functions for alfroster.h +* +*/ + + + +// [INCLUDE FILES] +#include +#include + +#include "testplatalfvisual.h" + + +// CONSTANTS +const TInt KNum3 = 3; +const TInt KNum4 = 4; +const TInt KNum5 = 5; +const TReal32 KMagnitude = 5; +const TInt KControlId = 222; + + +// FORWARD DECLARATION +//class CTestControlGroupOrderChangedObserver for testing CAlfRoster +class CTestControlGroupOrderChangedObserver +: public CBase, public MAlfControlGroupOrderChangedObserver + { +public: + /** + * Default constructor + */ + CTestControlGroupOrderChangedObserver( CAlfRoster& aRoster ) + : iRoster( aRoster ), iNoOfCalls( 0 ) + {} + + /** + * Default destructor + */ + ~CTestControlGroupOrderChangedObserver() + { + iRoster.RemoveControlGroupOrderChangedObserver( *this ); + } + + /** + * ConstructL + */ + void ConstructL() + { + iRoster.AddControlGroupOrderChangedObserverL( *this ); + } + + /** + * From MAlfControlGroupOrderChangedObserver + */ + void NotifyControlGroupOrderChanged() + { + iNoOfCalls++; + } + + /** + * Accessor to the number of calls to the callback method + */ + TInt NumberOfCalls() const + { + return iNoOfCalls; + } + +private: + /** Roster to which this callback object is added to. */ + CAlfRoster& iRoster; + + /** + * Number of calls to the callback method + */ + TInt iNoOfCalls; + }; + + +// ============================ MEMBER FUNCTIONS =============================== + +// ----------------------------------------------------------------------------- +// CTestPlatAlfVisual::TestRosterCtrlGroupMethodsL +// ----------------------------------------------------------------------------- +// +TInt CTestPlatAlfVisual::TestRosterCtrlGroupMethodsL( CStifItemParser& /*aItem*/ ) + { + // Print to UI + _LIT( KTestPlatAlfVisual, "TestPlatAlfVisual" ); + _LIT( KTestRosterCtrlGroupMethodsL, "TestRosterCtrlGroupMethodsL" ); + TestModuleIf().Printf( 0, KTestPlatAlfVisual, KTestRosterCtrlGroupMethodsL ); + // Print to log file + iLog->Log( KTestRosterCtrlGroupMethodsL ); + + CAlfRoster* roster = &( iAlfDisplay->Roster() ); + STIF_ASSERT_NOT_NULL( roster ); + + CAlfControlGroup& group1 = iAlfEnv->NewControlGroupL( 2 ); + CAlfControlGroup& group2 = iAlfEnv->NewControlGroupL( KNum3 ); + CAlfControlGroup& group3 = iAlfEnv->NewControlGroupL( KNum4 ); + CAlfControlGroup& group4 = iAlfEnv->NewControlGroupL( KNum5 ); + + STIF_ASSERT_EQUALS( KErrNotFound, roster->Find( group1 ) ); + STIF_ASSERT_EQUALS( 0, roster->Count() ); + + // Create controls and append them to control group 1 + CAlfControl* control = new (ELeave) CAlfControl; + CleanupStack::PushL( control ); + control->ConstructL( *iAlfEnv ); + group1.AppendL( control ); + CleanupStack::Pop( control ); + CAlfControl* control1 = new (ELeave) CAlfControl; + CleanupStack::PushL( control1 ); + control1->ConstructL( *iAlfEnv ); + group1.AppendL( control1 ); + CleanupStack::Pop( control1 ); + + roster->ShowL( group1 ); + STIF_ASSERT_EQUALS( 1, roster->Count() ); + roster->ShowL( group2 ); + STIF_ASSERT_EQUALS( 2, roster->Count() ); + roster->ShowL( group3 ); + STIF_ASSERT_EQUALS( KNum3, roster->Count() ); + roster->ShowL( group4 ); + STIF_ASSERT_EQUALS( KNum4, roster->Count() ); + + STIF_ASSERT_EQUALS( 0, roster->Find( group1 ) ); + STIF_ASSERT_EQUALS( 1, roster->Find( group2 ) ); + STIF_ASSERT_EQUALS( 2, roster->Find( group3 ) ); + STIF_ASSERT_EQUALS( KNum3, roster->Find( group4 ) ); + + if ( roster->Count() > 0 ) + { + STIF_ASSERT_EQUALS( &group1, &roster->ControlGroup( 0 ) ); + } + + // Verify that the controls are shown + STIF_ASSERT_EQUALS( iAlfDisplay, control->Display() ); + STIF_ASSERT_EQUALS( iAlfDisplay, control1->Display() ); + + roster->ShowL( group3, KAlfRosterShowAtBottom ); + + STIF_ASSERT_EQUALS( 0, roster->Find( group3 ) ); + STIF_ASSERT_EQUALS( 1, roster->Find( group1 ) ); + STIF_ASSERT_EQUALS( 2, roster->Find( group2 ) ); + STIF_ASSERT_EQUALS( KNum3, roster->Find( group4 ) ); + + if ( roster->Count() > 0 ) + { + STIF_ASSERT_EQUALS( &group3, &roster->ControlGroup( 0 ) ); + } + + roster->ShowL( group3, KNum3 ); + + STIF_ASSERT_EQUALS( 0, roster->Find( group1 ) ); + STIF_ASSERT_EQUALS( 1, roster->Find( group2 ) ); + STIF_ASSERT_EQUALS( 2, roster->Find( group4 ) ); + STIF_ASSERT_EQUALS( KNum3, roster->Find( group3 ) ); + + if ( roster->Count() > 0 ) + { + STIF_ASSERT_EQUALS( &group1, &roster->ControlGroup( 0 ) ); + } + + // Focus the appended control + roster->SetFocus( *control ); + STIF_ASSERT_TRUE( control->Focus() ); + + roster->Hide( group1 ); + STIF_ASSERT_EQUALS( KErrNotFound, roster->Find( group1 ) ); + STIF_ASSERT_EQUALS( KNum3, roster->Count() ); + roster->Hide( group2 ); + STIF_ASSERT_EQUALS( 2, roster->Count() ); + roster->Hide( group3 ); + STIF_ASSERT_EQUALS( 1, roster->Count() ); + roster->Hide( group4 ); + STIF_ASSERT_EQUALS( 0, roster->Count() ); + + // Verify that focus was removed from control and + // that the control was hidden + STIF_ASSERT_FALSE( control->Focus() ); + STIF_ASSERT_NULL( control->Display() ); + + // Add a control to a hidden control group + // Create controls and append them to iAlfCtrlGroup + CAlfControl* control2 = new (ELeave) CAlfControl; + CleanupStack::PushL( control2 ); + control2->ConstructL( *iAlfEnv ); + group1.AppendL( control2 ); + CleanupStack::Pop( control2 ); + + // Verify that the control2 is not shown + STIF_ASSERT_NULL( control2->Display() ); + + return KErrNone; + } + +// ----------------------------------------------------------------------------- +// CTestPlatAlfVisual::TestRosterCtrlMethodsL +// ----------------------------------------------------------------------------- +// +TInt CTestPlatAlfVisual::TestRosterCtrlMethodsL( CStifItemParser& /*aItem*/ ) + { + // Print to UI + _LIT( KTestPlatAlfVisual, "TestPlatAlfVisual" ); + _LIT( KTestRosterCtrlMethodsL, "TestRosterCtrlMethodsL" ); + TestModuleIf().Printf( 0, KTestPlatAlfVisual, KTestRosterCtrlMethodsL ); + // Print to log file + iLog->Log( KTestRosterCtrlMethodsL ); + + CAlfRoster* roster = &( iAlfDisplay->Roster() ); + STIF_ASSERT_NOT_NULL( roster ); + STIF_ASSERT_NULL( roster->FindControl( KControlId ) ); + iAlfCtl->SetId( KControlId ); + roster->ShowL( *iAlfCtrlGroup ); + roster->SetFocus( *iAlfCtl ); + STIF_ASSERT_TRUE( iAlfCtl->Focus() ); + STIF_ASSERT_EQUALS( iAlfCtl, roster->FindControl( KControlId ) ); + roster->ClearFocus(); + roster->Hide( *iAlfCtrlGroup ); + STIF_ASSERT_FALSE( iAlfCtl->Focus() ); + + return KErrNone; + } + +// ----------------------------------------------------------------------------- +// CTestPlatAlfVisual::TestRosterVisualMethodsL +// ----------------------------------------------------------------------------- +// +TInt CTestPlatAlfVisual::TestRosterVisualMethodsL( CStifItemParser& /*aItem*/ ) + { + // Print to UI + _LIT( KTestPlatAlfVisual, "TestPlatAlfVisual" ); + _LIT( KTestRosterVisualMethodsL, "TestRosterVisualMethodsL" ); + TestModuleIf().Printf( 0, KTestPlatAlfVisual, KTestRosterVisualMethodsL ); + // Print to log file + iLog->Log( KTestRosterVisualMethodsL ); + + CAlfRoster* roster = &( iAlfDisplay->Roster() ); + STIF_ASSERT_NOT_NULL( roster ); + + CAlfLayout* layout = CAlfLayout::AddNewL( *iAlfCtl ); + + roster->ShowL( *iAlfCtrlGroup ); + + TInt err = KErrNone; +// TRAP( err, roster->ShowVisualL( *layout ) ); +// roster->MoveVisualToFront( *layout ); + roster->HideVisual( *layout ); + if ( err != KErrNone ) + { + return KErrNone; + } + + return KErrNone; + } + +// ----------------------------------------------------------------------------- +// CTestPlatAlfVisual::TestRosterPointerEventObserverMethodsL +// ----------------------------------------------------------------------------- +// +TInt CTestPlatAlfVisual::TestRosterPointerEventObserverMethodsL( CStifItemParser& /*aItem*/ ) + { + // Print to UI + _LIT( KTestPlatAlfVisual, "TestPlatAlfVisual" ); + _LIT( KTestRosterPointerEventObserverMethodsL, "TestRosterPointerEventObserverMethodsL" ); + TestModuleIf().Printf( 0, KTestPlatAlfVisual, KTestRosterPointerEventObserverMethodsL ); + // Print to log file + iLog->Log( KTestRosterPointerEventObserverMethodsL ); + + CAlfRoster* roster = &( iAlfDisplay->Roster() ); + STIF_ASSERT_NOT_NULL( roster ); + + STIF_ASSERT_EQUALS( KErrNone, + roster->AddPointerEventObserver( EAlfPointerEventReportDrag, *iAlfCtl ) ); + STIF_ASSERT_EQUALS( KErrNone, + roster->AddPointerEventObserver( EAlfPointerEventReportLongTap, *iAlfCtl ) ); + STIF_ASSERT_EQUALS( KErrNone, + roster->AddPointerEventObserver( EAlfPointerEventReportUnhandled, *iAlfCtl ) ); + + STIF_ASSERT_EQUALS( KErrNone, + roster->RemovePointerEventObserver( EAlfPointerEventReportDrag, *iAlfCtl ) ); + STIF_ASSERT_EQUALS( KErrNone, + roster->RemovePointerEventObserver( EAlfPointerEventReportLongTap, *iAlfCtl ) ); + STIF_ASSERT_EQUALS( KErrNone, + roster->RemovePointerEventObserver( EAlfPointerEventReportUnhandled, *iAlfCtl ) ); + + STIF_ASSERT_EQUALS( KErrNone, + roster->SetPointerEventObservers( EAlfPointerEventReportDrag, *iAlfCtl ) ); + STIF_ASSERT_EQUALS( + KErrNone, + roster->SetPointerEventObservers( + EAlfPointerEventReportDrag | EAlfPointerEventReportUnhandled, + *iAlfCtl + ) + ); + STIF_ASSERT_EQUALS( KErrNone, + roster->SetPointerEventObservers( EAlfPointerEventReportLongTap, *iAlfCtl ) ); + STIF_ASSERT_EQUALS( KErrNone + , roster->SetPointerEventObservers( 0, *iAlfCtl ) ); + + return KErrNone; + } + +// ----------------------------------------------------------------------------- +// CTestPlatAlfVisual::TestRosterSetPointerDragThresholdL +// ----------------------------------------------------------------------------- +// +TInt CTestPlatAlfVisual::TestRosterSetPointerDragThresholdL( CStifItemParser& /*aItem*/ ) + { + // Print to UI + _LIT( KTestPlatAlfVisual, "TestPlatAlfVisual" ); + _LIT( KTestRosterSetPointerDragThresholdL, "TestRosterSetPointerDragThresholdL" ); + TestModuleIf().Printf( 0, KTestPlatAlfVisual, KTestRosterSetPointerDragThresholdL ); + // Print to log file + iLog->Log( KTestRosterSetPointerDragThresholdL ); + + CAlfRoster* roster = &( iAlfDisplay->Roster() ); + STIF_ASSERT_NOT_NULL( roster ); + + STIF_ASSERT_EQUALS( KErrNone, + roster->SetPointerEventObservers( EAlfPointerEventReportDrag, *iAlfCtl ) ); + STIF_ASSERT_EQUALS( + KErrNone, + roster->SetPointerDragThreshold( + *iAlfCtl, + TAlfXYMetric( KMagnitude, KMagnitude ) + ) + ); + STIF_ASSERT_EQUALS( + KErrNone, + roster->SetPointerDragThreshold( + *iAlfCtl, + TAlfXYMetric( + TAlfMetric( KMagnitude, EAlfUnitS60 ), + TAlfMetric( 0.2, EAlfUnitRelativeToDisplay ) + ) + ) + ); + + return KErrNone; + } + +// ----------------------------------------------------------------------------- +// CTestPlatAlfVisual::TestRosterDisableLongTapEventsWhenDraggingL +// ----------------------------------------------------------------------------- +// +TInt CTestPlatAlfVisual::TestRosterDisableLongTapEventsWhenDraggingL( CStifItemParser& /*aItem*/ ) + { + // Print to UI + _LIT( KTestPlatAlfVisual, "TestPlatAlfVisual" ); + _LIT( KTestRosterDisableLongTapEventsWhenDraggingL, "TestRosterDisableLongTapEventsWhenDraggingL" ); + TestModuleIf().Printf( 0, KTestPlatAlfVisual, KTestRosterDisableLongTapEventsWhenDraggingL ); + // Print to log file + iLog->Log( KTestRosterDisableLongTapEventsWhenDraggingL ); + + CAlfRoster* roster = &( iAlfDisplay->Roster() ); + STIF_ASSERT_NOT_NULL( roster ); + + STIF_ASSERT_EQUALS( KErrNone, + roster->SetPointerEventObservers( EAlfPointerEventReportDrag, *iAlfCtl ) ); + STIF_ASSERT_EQUALS( KErrNone, + roster->DisableLongTapEventsWhenDragging( *iAlfCtl )); + STIF_ASSERT_EQUALS( KErrNone, + roster->DisableLongTapEventsWhenDragging( *iAlfCtl, EFalse ) ); + + + return KErrNone; + } + +// ----------------------------------------------------------------------------- +// CTestPlatAlfVisual::TestRosterCtrlGroupOrderChangedObserverL +// ----------------------------------------------------------------------------- +// +TInt CTestPlatAlfVisual::TestRosterCtrlGroupOrderChangedObserverL( CStifItemParser& /*aItem*/ ) + { + // Print to UI + _LIT( KTestPlatAlfVisual, "TestPlatAlfVisual" ); + _LIT( KTestRosterCtrlGroupOrderChangedObserverL, "TestRosterCtrlGroupOrderChangedObserverL" ); + TestModuleIf().Printf( 0, KTestPlatAlfVisual, KTestRosterCtrlGroupOrderChangedObserverL ); + // Print to log file + iLog->Log( KTestRosterCtrlGroupOrderChangedObserverL ); + + CAlfRoster* roster = &( iAlfDisplay->Roster() ); + STIF_ASSERT_NOT_NULL( roster ); + // Create test control groups + CAlfControlGroup& group2 = iAlfEnv->NewControlGroupL( 2 ); + CAlfControlGroup& group3 = iAlfEnv->NewControlGroupL( KNum3 ); + + // Show first control group [Roster: cg1] + roster->ShowL( *iAlfCtrlGroup ); + + // Create an observer + CTestControlGroupOrderChangedObserver* observer = + new ( ELeave ) CTestControlGroupOrderChangedObserver( *roster ); + CleanupStack::PushL( observer ); + observer->ConstructL(); + + // Show second control group [Roster: cg2, cg1] + roster->ShowL( group2 ); + + // Remove observer + roster->RemoveControlGroupOrderChangedObserver( *observer ); + + // Swap order of control group 1 and 2 [Roster: cg1, cg2] + roster->ShowL( *iAlfCtrlGroup ); + + // Re-add observer + roster->AddControlGroupOrderChangedObserverL( *observer ); + + // Reswap order of control group 1 and 2 [Roster: cg2, cg1] + roster->ShowL( group2 ); + + // Don't modify the order of control groups [Roster: cg2, cg1] + roster->ShowL( group2 ); + + // Delete control group 2 [Roster: cg1] + iAlfEnv->DeleteControlGroup( 2 ); + + // Show new control group [Roster: cg3, cg1] + roster->ShowL( group3 ); + + // Hide old control group [Roster: cg3] + roster->Hide( *iAlfCtrlGroup ); + + // Hide hidden control group [Roster: cg3] + roster->Hide( *iAlfCtrlGroup ); + + // Hide last control group [Roster: ] + roster->Hide( group3 ); + + CleanupStack::PopAndDestroy( observer ); + + // Verify that control group order change does not panic + roster->ShowL( *iAlfCtrlGroup ); + + return KErrNone; + } + + +// [End of File]