uiaccelerator_plat/alf_visual_api/tsrc/src/testplatalfvisualblocksroster.cpp
changeset 0 15bf7259bb7c
--- /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 <alf/alfroster.h>
+#include <alf/alfmetric.h>
+
+#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]