gssettingsuis/Gs/tsrc/public/basic/GSFramework/MT_GSFramework.cpp
branchRCL_3
changeset 54 7e0eff37aedb
parent 0 8c5d936e5675
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/gssettingsuis/Gs/tsrc/public/basic/GSFramework/MT_GSFramework.cpp	Wed Sep 01 12:20:44 2010 +0100
@@ -0,0 +1,1315 @@
+/*
+* Copyright (c) 2002 - 2008 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:
+*
+*/
+
+
+//  CLASS HEADER
+#include "MT_GSFramework.h"
+
+//  EXTERNAL INCLUDES
+#include <EUnitMacros.h>
+#include <EUnitDecorators.h>
+
+//#include <..\..\..\..\GSFramework\src\GSParentContainer.cpp>
+#include <APGCLI.H>	// RApaLsSession
+
+#include "TestGSPlugin.h"
+
+
+//  INTERNAL INCLUDES
+
+const TUid KTestActiveViewId = {  0x10 };
+const TUid KTestWhateverPubSubId = {  0x00 };
+const TInt KTestWhateverPubSubKey = 0;
+
+
+// CONSTRUCTION
+MT_GSFramework* MT_GSFramework::NewL()
+    {
+    MT_GSFramework* self = MT_GSFramework::NewLC();
+    CleanupStack::Pop();
+
+    return self;
+    }
+
+MT_GSFramework* MT_GSFramework::NewLC()
+    {
+    MT_GSFramework* self = new( ELeave ) MT_GSFramework();
+    CleanupStack::PushL( self );
+
+    self->ConstructL();
+
+    return self;
+    }
+
+// Destructor (virtual by CBase)
+MT_GSFramework::~MT_GSFramework()
+    {
+    }
+
+// Default constructor
+MT_GSFramework::MT_GSFramework()
+    {
+    }
+
+// Second phase construct
+void MT_GSFramework::ConstructL()
+    {
+    // The ConstructL from the base class CEUnitTestSuiteClass must be called.
+    // It generates the test case table.
+    CEUnitTestSuiteClass::ConstructL();
+    }
+
+void MT_GSFramework::SetupNone()
+    {
+    }
+
+
+void MT_GSFramework::TeardownNone()
+    {
+    }
+
+
+
+////////////////// CGSTabHelper test cases //////////////////////////////////
+
+
+void MT_GSFramework::SetupTabHelperL(  )
+    {
+    iCGSTabHelper = CGSTabHelper::NewL();
+    iPlugins = 	new (ELeave) CArrayPtrFlat<CGSPluginInterface>(2);
+    iTabbedViews = 	new (ELeave) CArrayPtrFlat<MGSTabbedView>(2);
+    }
+
+
+void MT_GSFramework::TeardownTabHelper()
+    {
+    delete iCGSTabHelper;
+    iCGSTabHelper = NULL;
+    delete iPlugins;
+    iPlugins = NULL;
+    delete iTabbedViews;
+    iTabbedViews = NULL;
+    }
+
+
+void MT_GSFramework::T_CGSTabHelper_NewLL()
+    {
+    CGSTabHelper* ptr = CGSTabHelper::NewL();
+    EUNIT_ASSERT( ptr );
+    delete ptr;
+    }
+
+void MT_GSFramework::T_CGSTabHelper_NewLCL()
+    {
+    CGSTabHelper* ptr = CGSTabHelper::NewLC();
+    EUNIT_ASSERT( ptr );
+    CleanupStack::PopAndDestroy();
+    }
+
+
+
+void MT_GSFramework::T_CGSTabHelper__CGSTabHelperL(  )
+    {
+    RHeap heap = User::Heap();
+    TInt block = 0;
+    TInt after;
+    CGSTabHelper* th;
+
+    TInt before = heap.Available( block );
+
+    th = CGSTabHelper::NewL();
+    delete th;
+
+    after = heap.Available( block );
+    TInt delta = before - after;
+
+    EUNIT_ASSERT_DESC( before <= after, "Possible heap memory leak");
+    }
+
+void MT_GSFramework::T_CGSTabHelper_CreateTabGroupLL(  )
+    {
+    iCGSTabHelper->CreateTabGroupL( KTestActiveViewId, this );
+    EUNIT_ASSERT_DESC( ETrue, "Tab group pseudo creation done");
+    }
+
+void MT_GSFramework::T_CGSTabHelper_CreateTabGroupL2L(  )
+    {
+    iCGSTabHelper->CreateTabGroupL( KTestActiveViewId, iPlugins );
+    EUNIT_ASSERT_DESC( ETrue, "Run this far wihout panic?");
+    }
+
+void MT_GSFramework::T_CGSTabHelper_CreateTabGroupL3L(  )
+    {
+    iCGSTabHelper->CreateTabGroupL( KTestActiveViewId, iTabbedViews );
+    EUNIT_ASSERT_DESC( ETrue, "Run this far without panic?");
+    }
+
+void MT_GSFramework::T_CGSTabHelper_RemoveTabGroupL(  )
+    {
+    iCGSTabHelper->RemoveTabGroup();
+    EUNIT_ASSERT_DESC( ETrue, "Run this far without panic?");
+    }
+
+void MT_GSFramework::T_CGSTabHelper_TabChangedLL(  )
+    {
+    TInt tabIndex = 0;
+    iCGSTabHelper->TabChangedL( tabIndex );
+    EUNIT_ASSERT_DESC( ETrue, "Run this far without panic?");
+    }
+
+// MGSTabbedViewOwner
+CArrayPtrFlat<CGSPluginInterface>* MT_GSFramework::TabbedViews()
+	{
+	return iPlugins;
+	}
+
+// MGSTabbedViewOwner
+void MT_GSFramework::TabChangedL( TUid /*selectedTabUid*/ )
+	{
+
+	}
+
+// MGSPluginLoadObserver
+void MT_GSFramework::HandlePluginLoaded( KGSPluginLoaderStatus aStatus )
+    {
+
+    }
+
+
+/////////////////////// CGSPluginLoader test cases ///////////////////////////////////
+void MT_GSFramework::SetupPluginLoaderL()
+    {
+    iPlugins =  new (ELeave) CArrayPtrFlat<CGSPluginInterface>(2);
+
+    CAknViewAppUi* appUi = (CAknViewAppUi*)CEikonEnv::Static()->EikAppUi();
+    iCGSPluginLoader = CGSPluginLoader::NewL( appUi );
+    }
+
+void MT_GSFramework::TearDownPluginLoader()
+    {
+    delete iCGSPluginLoader;
+    iCGSPluginLoader = NULL;
+
+    delete iPlugins;
+    iPlugins = NULL;
+    }
+
+
+void MT_GSFramework::T_CGSPluginLoader_NewL()
+    {
+    CAknViewAppUi* appUi = (CAknViewAppUi*)CEikonEnv::Static()->EikAppUi();
+    iCGSPluginLoader = CGSPluginLoader::NewL( appUi );
+    delete iCGSPluginLoader;
+    iCGSPluginLoader = NULL;
+
+    EUNIT_ASSERT_DESC( ETrue, "Run this far?");
+    }
+
+void MT_GSFramework::T_CGSPluginLoader__CGSPluginLoader()
+    {
+    CAknViewAppUi* appUi = (CAknViewAppUi*)CEikonEnv::Static()->EikAppUi();
+    iCGSPluginLoader = CGSPluginLoader::NewL( appUi );
+    delete iCGSPluginLoader;
+    iCGSPluginLoader = NULL;
+
+    EUNIT_ASSERT_DESC( ETrue, "Run this far?");
+    }
+
+void MT_GSFramework::T_CGSPluginLoader_LoadAsyncL()
+    {
+    iCGSPluginLoader->LoadAsyncL( KGSPluginInterfaceUid,
+                                  KTestActiveViewId,
+                                  iPlugins );
+
+    EUNIT_ASSERT_DESC( ETrue, "Run this far?");
+    }
+
+void MT_GSFramework::T_CGSPluginLoader_SetObserver()
+    {
+    iCGSPluginLoader->SetObserver( this );
+    EUNIT_ASSERT_DESC( ETrue, "Run this far?");
+    }
+
+void MT_GSFramework::T_CGSPluginLoader_AbortAsyncLoad()
+    {
+    iCGSPluginLoader->AbortAsyncLoad();
+    EUNIT_ASSERT_DESC( ETrue, "Run this far?");
+    }
+
+void MT_GSFramework::T_CGSPluginLoader_SortPluginsL()
+    {
+    iCGSPluginLoader->SortPluginsL( iPlugins );
+    EUNIT_ASSERT_DESC( ETrue, "Run this far?");
+    }
+
+
+
+/////////////// CGSParentContainer test cases //////////////////////////////
+
+
+// CGSParentContainer
+void MT_GSFramework::SetupParentContainerL()
+	{
+//    iGSParentContainer = new (ELeave) CGSParentContainer();
+//    iGSParentContainer->ConstructL();
+	}
+
+
+void MT_GSFramework::TearDownParentContainer()
+	{
+//	delete iGSParentContainer;
+//    iGSParentContainer = NULL;
+	}
+
+
+// CGSParentContainer test cases:
+void MT_GSFramework::T_CGSParentContainer_FocusChanged()
+	{
+//    iGSParentContainer->FocusChanged( ENoDrawNow );
+#pragma message("TODO: implement real test case!")
+    EUNIT_ASSERT_DESC( EFalse, "Not implemented.");
+	}
+
+
+///////////////////// CGSPubSubsListener test cases ///////////////////////
+
+void MT_GSFramework::SetupPubSubsListenerL()
+    {
+    iCGSPubSubsListener = CGSPubSubsListener::NewL( KTestWhateverPubSubId,
+                                                    KTestWhateverPubSubKey,
+                                                    this );
+    }
+
+void MT_GSFramework::TearDownPubSubsListener()
+    {
+    delete iCGSPubSubsListener;
+    iCGSPubSubsListener = NULL;
+    }
+
+
+void MT_GSFramework::T_CGSPubSubsListener_NewL()
+    {
+    CGSPubSubsListener* psl = CGSPubSubsListener::NewL( KTestWhateverPubSubId,
+            KTestWhateverPubSubKey,
+            this );
+    delete psl;
+    psl = NULL;
+
+    EUNIT_ASSERT_DESC( ETrue, "Run this far?");
+    }
+
+void MT_GSFramework::T_CGSPubSubsListener__CGSPubSubsListener()
+    {
+    CGSPubSubsListener* psl = CGSPubSubsListener::NewL( KTestWhateverPubSubId,
+            KTestWhateverPubSubKey,
+            this );
+    delete psl;
+    psl = NULL;
+
+    EUNIT_ASSERT_DESC( ETrue, "Run this far?");
+    }
+
+void MT_GSFramework::T_CGSPubSubsListener_Get1()
+    {
+    TInt val = 0;
+    iCGSPubSubsListener->Get( val );
+    EUNIT_ASSERT_DESC( ETrue, "Run this far?");
+    }
+
+void MT_GSFramework::T_CGSPubSubsListener_Get2()
+    {
+    TBuf8<25> buf;
+    iCGSPubSubsListener->Get( buf );
+    EUNIT_ASSERT_DESC( ETrue, "Run this far?");
+    }
+
+void MT_GSFramework::T_CGSPubSubsListener_Get3()
+    {
+    TBuf16<25> buf;
+    iCGSPubSubsListener->Get( buf );
+    EUNIT_ASSERT_DESC( ETrue, "Run this far?");
+    }
+
+
+// From MGSSettingPSObserver
+void MT_GSFramework::HandleNotifyPSL( const TUid aUid,
+                                      const TInt& aKey,
+                                      const TRequestStatus& aStatus )
+    {
+
+    }
+
+// ------------------------------- Launch Gs application test cases ---------------------------------------//
+
+void MT_GSFramework::SetupLaunch()
+    {
+    iPeriodic = CPeriodic::NewL( CActive::EPriorityStandard );
+
+    // Launch Gs application...
+    RApaLsSession lsSession;
+    User::LeaveIfError( lsSession.Connect() );
+    CleanupClosePushL( lsSession );
+
+	TApaAppInfo appInfo;
+	TUid uid;
+	uid.iUid = 0x100058EC;	// Gs application uid
+	User::LeaveIfError( lsSession.GetAppInfo(appInfo, uid) );
+    TFileName appName = appInfo.iFullName;
+
+    CApaCommandLine* cmdLine = CApaCommandLine::NewLC();
+    cmdLine->SetExecutableNameL( appName );
+    cmdLine->SetCommandL( EApaCommandRun );
+    User::LeaveIfError( lsSession.StartApp( *cmdLine ) );
+
+    CleanupStack::PopAndDestroy( cmdLine );
+    CleanupStack::PopAndDestroy();	// lsSession
+    }
+
+
+void MT_GSFramework::TeardownLaunch()
+    {
+    if ( !iPeriodic->IsActive() )
+    	{
+	    iPeriodic->Start( 2000000, 1000000, TCallBack( CloseTopMostWindow, static_cast<TAny*>( this ) ) );
+    	}
+
+    CActiveScheduler::Start();
+
+	// Close the error note
+	ikeySimulateCase = 0;
+	iKeyNumber = 0;
+    if ( !iPeriodic->IsActive() )
+    	{
+	    iPeriodic->Start( 2000000, 500000, TCallBack( SimulateKeyEvent, static_cast<TAny*>( this ) ) );
+    	}
+
+    CActiveScheduler::Start();
+
+    if ( iPeriodic )
+        {
+        iPeriodic->Cancel();
+        }
+    delete iPeriodic;
+    }
+
+
+TBool MT_GSFramework::GetKeyCodeCase0( TKeyCode& aKeyCode )
+	{
+	TBool ret = ETrue;
+    iKeyNumber++;
+
+    switch ( iKeyNumber )
+    	{
+    	case 1:
+    		aKeyCode = EKeyOK;
+    		break;
+    	default:
+    		ret = EFalse;
+    	}
+
+    return ret;
+	}
+
+
+TInt MT_GSFramework::CloseTopMostWindow( TAny* aPtr )
+    {
+    MT_GSFramework* instL = static_cast<MT_GSFramework*>( aPtr );
+    instL->DoCloseTopMostWindowL();
+
+    CActiveScheduler::Stop();
+	return KErrNone;
+    }
+
+void MT_GSFramework::DoCloseTopMostWindowL()
+	{
+	RWsSession* ws = &CCoeEnv::Static()->WsSession();
+
+    // Get a list of IDs of the all the window groups
+    CArrayFixFlat<TInt>* windowList = new CArrayFixFlat<TInt>(4);
+    CleanupStack::PushL(windowList);
+    // Get a list of window group IDs
+    User::LeaveIfError(ws->WindowGroupList(0, windowList));
+
+    // Get the top most window group
+    TInt wgId = (*windowList)[0];
+
+	CleanupStack::PopAndDestroy(); // windowList
+
+	TApaTask task(*ws);
+	task.SetWgId(wgId);
+	task.SendSystemEvent(EApaSystemEventShutdown);
+
+	iPeriodic->Cancel();
+	}
+
+TInt MT_GSFramework::SimulateKeyEvent( TAny* aPtr )
+    {
+    MT_GSFramework* instL = static_cast<MT_GSFramework*>( aPtr );
+
+    instL->DoSimulateKeyEventL();
+
+	return KErrNone;
+    }
+
+void MT_GSFramework::DoSimulateKeyEventL()
+	{
+	TKeyCode keyCode;
+	TBool hasKey;
+
+	switch ( ikeySimulateCase )
+		{
+		case 0:
+			hasKey = GetKeyCodeCase0( keyCode );
+			break;
+		case 1:
+			hasKey = GetKeyCodeCase1( keyCode );
+			break;
+		case 2:
+			hasKey = GetKeyCodeCase2( keyCode );
+			break;
+		case 3:
+			hasKey = GetKeyCodeCase3( keyCode );
+			break;
+		case 4:
+			hasKey = GetKeyCodeCase4( keyCode );
+			break;
+		default:
+			hasKey = EFalse;
+		}
+
+	if ( hasKey )
+		{
+	    TKeyEvent event;
+	    event.iCode = keyCode;
+	    event.iScanCode = 0;
+	    event.iRepeats = 0;
+	    event.iModifiers = 0;
+
+		TWsEvent wsEvent;
+		*( wsEvent.Key() ) = event;
+		wsEvent.SetType( EEventKey );
+		wsEvent.SetTimeNow();
+
+		RWsSession*	ws = &CCoeEnv::Static()->WsSession();
+
+		TInt wgId = ws->GetFocusWindowGroup();
+		ws->SendEventToWindowGroup( wgId, wsEvent );
+		}
+	else
+		{
+		iPeriodic->Cancel();
+		CActiveScheduler::Stop();
+		}
+	}
+void MT_GSFramework::LaunchGsApp1L()
+	{
+	ikeySimulateCase = 1;
+	iKeyNumber = 0;
+    if ( !iPeriodic->IsActive() )
+    {
+    iPeriodic->Start( 2000000, 1000000, TCallBack( SimulateKeyEvent, static_cast<TAny*>( this ) ) );
+    }
+
+    CActiveScheduler::Start();
+	}
+
+TBool MT_GSFramework::GetKeyCodeCase1( TKeyCode& aKeyCode )
+	{
+	TBool ret = ETrue;
+    iKeyNumber++;
+
+    switch ( iKeyNumber )
+    	{
+    	case 1:
+    		aKeyCode = EKeyDownArrow;
+    		break;
+    	case 2:
+    		aKeyCode = EKeyDownArrow;
+    		break;
+    	case 3:
+    		aKeyCode = EKeyUpArrow;
+    		break;
+    	case 4:
+    		aKeyCode = EKeyEnter;	// Phone
+    		break;
+    	case 5:
+    		aKeyCode = EKeyEnter;	// Date & time
+    		break;
+    	case 6:
+    		aKeyCode = EKeyEnter;	// Time
+    		break;
+    	case 7:
+    		aKeyCode = EKeyCBA2;
+    		break;
+    	case 8:
+    		aKeyCode = EKeyDownArrow;
+    		break;
+    	case 9:
+    		aKeyCode = EKeyEnter;	// Time Zone
+    		break;
+    	case 10:
+    		aKeyCode = EKeyCBA2;
+    		break;
+    	case 11:
+    		aKeyCode = EKeyDownArrow;
+    		break;
+     	case 12:
+    		aKeyCode = EKeyEnter;	// Date
+    		break;
+    	case 13:
+    		aKeyCode = EKeyCBA2;
+    		break;
+    	case 14:
+    		aKeyCode = EKeyDownArrow;
+    		break;
+     	case 15:
+    		aKeyCode = EKeyEnter;	// Date format
+    		break;
+    	case 16:
+    		aKeyCode = EKeyDownArrow;
+    		break;
+    	case 17:
+    		aKeyCode = EKeyCBA1;
+    		break;
+     	case 18:
+    		aKeyCode = EKeyDownArrow;
+    		break;
+     	case 19:
+    		aKeyCode = EKeyEnter;	// Date separator
+    		break;
+    	case 20:
+    		aKeyCode = EKeyCBA2;
+    		break;
+    	case 21:
+    		aKeyCode = EKeyDownArrow;
+    		break;
+     	case 22:
+    		aKeyCode = EKeyEnter;	// Time format
+    		break;
+    	case 23:
+    		aKeyCode = EKeyDownArrow;
+    		break;
+     	case 24:
+    		aKeyCode = EKeyEnter;	// Time separator
+    		break;
+    	case 25:
+    		aKeyCode = EKeyDownArrow;
+    		break;
+     	case 26:
+    		aKeyCode = EKeyEnter;	// Clock type
+    		break;
+    	case 27:
+    		aKeyCode = EKeyDownArrow;
+    		break;
+     	case 28:
+    		aKeyCode = EKeyEnter;	// Clock Alarm Tone
+    		break;
+     	case 29:
+     		User::After(2000000);
+    		aKeyCode = EKeyCBA2;
+    		break;
+     	case 30:
+    		aKeyCode = EKeyDownArrow;
+    		break;
+     	case 31:
+    		aKeyCode = EKeyEnter;	// Alarm Snooze Time
+    		break;
+     	case 32:
+    		aKeyCode = EKeyCBA2;
+    		break;
+    	case 33:
+    		aKeyCode = EKeyDownArrow;
+    		break;
+     	case 34:
+    		aKeyCode = EKeyEnter;	// Workdays
+    		break;
+     	case 35:
+    		aKeyCode = EKeyCBA2;
+    		break;
+     	case 36:
+    		aKeyCode = EKeyCBA2;
+    		break;
+     	case 37:
+    		aKeyCode = EKeyCBA2;
+    		break;
+    	default:
+    		ret = EFalse;
+    	}
+
+    return ret;
+	}
+
+void MT_GSFramework::LaunchGsApp2L()
+	{
+	ikeySimulateCase = 2;
+	iKeyNumber = 0;
+    if ( !iPeriodic->IsActive() )
+    {
+    iPeriodic->Start( 2000000, 1000000, TCallBack( SimulateKeyEvent, static_cast<TAny*>( this ) ) );
+    }
+
+    CActiveScheduler::Start();
+	}
+
+TBool MT_GSFramework::GetKeyCodeCase2( TKeyCode& aKeyCode )
+	{
+	TBool ret = ETrue;
+    iKeyNumber++;
+
+    switch ( iKeyNumber )
+    	{
+    	case 1:
+    		aKeyCode = EKeyDownArrow;
+    		break;
+    	case 2:
+    		aKeyCode = EKeyEnter;	// phone
+    		break;
+    	case 3:
+    		aKeyCode = EKeyDownArrow;
+    		break;
+    	case 4:
+    		aKeyCode = EKeyDownArrow;
+    		break;
+    	case 5:
+    		aKeyCode = EKeyDownArrow;
+    		break;
+    	case 6:
+    		aKeyCode = EKeyEnter;	// Display
+    		break;
+    	case 7:
+    		aKeyCode = EKeyEnter;	// Light sensor
+    		break;
+     	case 8:
+    		aKeyCode = EKeyCBA2;
+    		break;
+    	case 9:
+    		aKeyCode = EKeyDownArrow;
+    		break;
+    	case 10:
+    		aKeyCode = EKeyEnter;	// Display text size
+    		break;
+    	case 11:
+    		aKeyCode = EKeyCBA2;
+    		break;
+    	case 12:
+    		aKeyCode = EKeyDownArrow;
+    		break;
+     	case 13:
+    		aKeyCode = EKeyEnter;	// Screen save time-out
+    		break;
+    	case 14:
+    		aKeyCode = EKeyCBA2;
+    		break;
+    	case 15:
+    		aKeyCode = EKeyDownArrow;
+    		break;
+     	case 16:
+    		aKeyCode = EKeyEnter;	// Welcome note or image
+    		break;
+    	case 17:
+    		aKeyCode = EKeyCBA1;
+    		break;
+     	case 18:
+    		aKeyCode = EKeyDownArrow;
+    		break;
+     	case 19:
+    		aKeyCode = EKeyEnter;	// Backlight time-out
+    		break;
+    	case 20:
+    		aKeyCode = EKeyCBA2;
+    		break;
+     	case 21:
+    		aKeyCode = EKeyCBA2;
+    		break;
+     	case 22:
+    		aKeyCode = EKeyCBA2;
+    		break;
+    	default:
+    		ret = EFalse;
+    	}
+
+    return ret;
+	}
+
+void MT_GSFramework::LaunchGsApp3L()
+	{
+	ikeySimulateCase = 3;
+	iKeyNumber = 0;
+    if ( !iPeriodic->IsActive() )
+    {
+    iPeriodic->Start( 2000000, 1000000, TCallBack( SimulateKeyEvent, static_cast<TAny*>( this ) ) );
+    }
+
+    CActiveScheduler::Start();
+	}
+
+TBool MT_GSFramework::GetKeyCodeCase3( TKeyCode& aKeyCode )
+	{
+	TBool ret = ETrue;
+    iKeyNumber++;
+
+    switch ( iKeyNumber )
+    	{
+    	case 1:
+    		aKeyCode = EKeyEnter;	// open Persional
+    		break;
+    	case 2:
+    		aKeyCode = EKeyDownArrow;
+    		break;
+    	case 3:
+    		aKeyCode = EKeyDownArrow;
+    		break;
+    	case 4:
+    		aKeyCode = EKeyDownArrow;
+    		break;
+    	case 5:
+    		aKeyCode = EKeyEnter;	// open Standby
+    		break;
+    	case 6:
+    		aKeyCode = EKeyEnter;	// open Shortcut
+    		break;
+    	case 7:
+    		aKeyCode = EKeyEnter;	// open Lift idle softkey
+    		break;
+     	case 8:
+    		aKeyCode = EKeyCBA2;
+    		break;
+    	case 9:
+    		aKeyCode = EKeyCBA2;
+    		break;
+/*    	case 10:
+    		aKeyCode = EKeyCBA2;
+    		break;
+    	case 11:
+    		aKeyCode = EKeyCBA2;
+    		break;*/
+    	default:
+    		ret = EFalse;
+    	}
+
+    return ret;
+	}
+
+void MT_GSFramework::LaunchGsApp4L()
+	{
+	ikeySimulateCase = 4;
+	iKeyNumber = 0;
+    if ( !iPeriodic->IsActive() )
+    {
+    iPeriodic->Start( 2000000, 1000000, TCallBack( SimulateKeyEvent, static_cast<TAny*>( this ) ) );
+    }
+
+    CActiveScheduler::Start();
+	}
+
+TBool MT_GSFramework::GetKeyCodeCase4( TKeyCode& aKeyCode )
+	{
+	TBool ret = ETrue;
+    iKeyNumber++;
+
+    switch ( iKeyNumber )
+    	{
+    	case 1:
+    		aKeyCode = EKeyEnter;	// open Persional
+    		break;
+    	case 2:
+    		aKeyCode = EKeyDownArrow;
+    		break;
+    	case 3:
+    		aKeyCode = EKeyDownArrow;
+    		break;
+    	case 4:
+    		aKeyCode = EKeyEnter;	// open Standby
+    		break;
+    	case 5:
+    		aKeyCode = EKeyEnter;	// open Shortcut
+    		break;
+    	case 6:
+    		aKeyCode = EKeyEnter;	// open Lift idle softkey
+    		break;
+     	case 7:
+    		aKeyCode = EKeyCBA2;
+    		break;
+    	case 8:
+    		aKeyCode = EKeyCBA2;
+    		break;
+/*    	case 10:
+    		aKeyCode = EKeyCBA2;
+    		break;
+    	case 11:
+    		aKeyCode = EKeyCBA2;
+    		break;*/
+    	default:
+    		ret = EFalse;
+    	}
+
+    return ret;
+	}
+
+// ----------------------------- CGSBaseView test cases ------------------------------------ //
+void MT_GSFramework::SetupCGSBaseViewL()
+	{
+	iTestBaseView = CTestGSBaseView::NewL();
+	}
+
+void MT_GSFramework::TeardownCGSBaseView()
+	{
+	delete iTestBaseView;
+	iTestBaseView = NULL;
+	}
+
+void MT_GSFramework::MT_CGSBaseView_SetCurrentItemL()
+	{
+	iTestBaseView->SetCurrentItem( 0 );
+	}
+
+void MT_GSFramework::MT_CGSBaseView_ContainerL()
+	{
+	iTestBaseView->Container();
+	}
+
+void MT_GSFramework::MT_CGSBaseView_SetNaviPaneLL()
+	{
+	iTestBaseView->SetNaviPaneL();
+	}
+
+void MT_GSFramework::MT_CGSBaseView_CreateNaviPaneContextLL()
+	{
+	iTestBaseView->CreateNaviPaneContextL( 1 );
+	}
+
+
+
+
+// -------------------------------	CGSParentPlugin test cases -------------------------------- //
+void MT_GSFramework::SetupCGSParentPluginL()
+	{
+	iParentPlugin = static_cast<CGSParentPlugin*> ( CTestGSPlugin::NewL() );
+	}
+
+void MT_GSFramework::TeardownCGSParentPlugin()
+	{
+	delete iParentPlugin;
+	iParentPlugin = NULL;
+	}
+
+
+void MT_GSFramework::MT_CGSParentPlugin_UpperLevelViewUidL()
+	{
+	EUNIT_ASSERT_NO_LEAVE( iParentPlugin->UpperLevelViewUid() );
+	}
+
+void MT_GSFramework::MT_CGSParentPlugin_UpdateViewL()
+	{
+	EUNIT_ASSERT_NO_LEAVE( iParentPlugin->UpdateView() );
+	}
+
+void MT_GSFramework::MT_CGSParentPlugin_SetOptionFlagsL()
+	{
+	TBitFlags optionFlags;
+	EUNIT_ASSERT_NO_LEAVE( iParentPlugin->SetOptionFlags( optionFlags ) );
+	}
+
+void MT_GSFramework::MT_CGSParentPlugin_OptionFlagsL()
+	{
+	EUNIT_ASSERT_NO_LEAVE( iParentPlugin->OptionFlags() );
+	}
+
+void MT_GSFramework::MT_CGSParentPlugin_GetHelpContextL()
+	{
+	TCoeHelpContext context;
+	EUNIT_ASSERT_NO_LEAVE( iParentPlugin->GetHelpContext( context ) );
+	}
+
+void MT_GSFramework::MT_CGSParentPlugin_SelectedPluginL()
+	{
+	CGSPluginInterface* plug = iParentPlugin->SelectedPlugin();
+	EUNIT_ASSERT( plug == NULL );
+	}
+
+void MT_GSFramework::MT_CGSParentPlugin_TransferDynamicPluginLL()
+	{
+	TRAPD( err, iParentPlugin->TransferDynamicPluginL( NULL ) )
+	EUNIT_PRINT( _L("error = %d"), err );
+	}
+
+// ---------------------------- CGSPluginInterface test cases -------------------------- //
+void MT_GSFramework::MT_CGSPluginInterface_ItemTypeL()
+	{
+	CGSPluginInterface* plugInterface = static_cast<CGSPluginInterface*> ( iParentPlugin );
+	EUNIT_ASSERT_NO_LEAVE( plugInterface->ItemType() );
+	}
+
+void MT_GSFramework::MT_CGSPluginInterface_HandleSelectionL()
+	{
+	CGSPluginInterface* plugInterface = static_cast<CGSPluginInterface*> ( iParentPlugin );
+	TGSSelectionTypes selectionType = EGSSelectionBySelectionKey;
+	EUNIT_ASSERT_NO_LEAVE( plugInterface->HandleSelection( selectionType ) );
+	}
+
+void MT_GSFramework::MT_CGSPluginInterface_PluginProviderCategoryL()
+	{
+	CGSPluginInterface* plugInterface = static_cast<CGSPluginInterface*> ( iParentPlugin );
+	EUNIT_ASSERT_NO_LEAVE( plugInterface->PluginProviderCategory() );
+	}
+
+void MT_GSFramework::MT_CGSPluginInterface_CustomOperationLL()
+	{
+	CGSPluginInterface* plugInterface = static_cast<CGSPluginInterface*> ( iParentPlugin );
+	TAny* any = plugInterface->CustomOperationL( NULL, NULL );
+	EUNIT_ASSERT( any == NULL );
+	}
+
+void MT_GSFramework::MT_CGSPluginInterface_SetOrderL()
+	{
+	CGSPluginInterface* plugInterface = static_cast<CGSPluginInterface*> ( iParentPlugin );
+	EUNIT_ASSERT_NO_LEAVE( plugInterface->SetOrder( 0 ) );
+	}
+
+void MT_GSFramework::MT_CGSPluginInterface_CreateIconLL()
+	{
+	CGSPluginInterface* plugInterface = static_cast<CGSPluginInterface*> ( iParentPlugin );
+	CGulIcon* icon = plugInterface->CreateIconL( KGSIconTypeLbxItem );
+	CleanupStack::PushL( icon );
+	EUNIT_ASSERT( icon != NULL );
+	CleanupStack::PopAndDestroy( icon );
+	}
+
+
+void MT_GSFramework::MT_CGSPluginInterface_GetEcomDestructorKey()
+	{
+	CGSPluginInterface* plugInterface = static_cast<CGSPluginInterface*> ( iParentPlugin );
+	TUid dTorID;
+	EUNIT_ASSERT_NO_LEAVE( dTorID = plugInterface->GetEcomDestructorKey() );
+	}
+
+
+
+/**
+ * @param text1 Textual description of the test case.
+ * @param text2 The class to be tested.
+ * @param text3 The method to be tested.
+ * @param text4 Test case type: refer to EUnit User Manual for correct values.
+ * @param setupFunc Test setup function.
+ * @param runFunc Test run function.
+ * @param teardownFunc Test teardown function.
+ */
+
+//  TEST TABLE
+EUNIT_BEGIN_TEST_TABLE(
+    MT_GSFramework,
+    "Tests for GSFramework.dll.",
+    "MODULE" )
+
+EUNIT_TEST(
+    "#1 launch Gs application",
+    "Settings framework classes",
+    "settings framework api",
+    "FUNCTIONALITY",
+    SetupLaunch, LaunchGsApp1L, TeardownLaunch)
+
+EUNIT_TEST(
+    "#2 launch Gs application",
+    "Settings framework classes",
+    "settings framework api",
+    "FUNCTIONALITY",
+    SetupLaunch, LaunchGsApp2L, TeardownLaunch)
+
+EUNIT_TEST(
+    "#3 launch Gs application",
+    "Settings framework classes",
+    "settings framework api",
+    "FUNCTIONALITY",
+    SetupLaunch, LaunchGsApp3L, TeardownLaunch)
+
+EUNIT_TEST(
+    "#4 launch Gs application",
+    "Settings framework classes",
+    "settings framework api",
+    "FUNCTIONALITY",
+    SetupLaunch, LaunchGsApp4L, TeardownLaunch)
+
+EUNIT_TEST(
+    "GSBsView:SetCurrentItem",
+    "CGSBaseView",
+    "SetCurrentItem",
+    "FUNCTIONALITY",
+    SetupCGSBaseViewL, MT_CGSBaseView_SetCurrentItemL, TeardownCGSBaseView)
+
+EUNIT_TEST(
+    "GSBsView:Container",
+    "CGSBaseView",
+    "Container",
+    "FUNCTIONALITY",
+    SetupCGSBaseViewL, MT_CGSBaseView_ContainerL, TeardownCGSBaseView)
+
+EUNIT_TEST(
+    "GSBsView:SetNaviPaneL",
+    "CGSBaseView",
+    "SetNaviPaneL",
+    "FUNCTIONALITY",
+    SetupCGSBaseViewL, MT_CGSBaseView_SetNaviPaneLL, TeardownCGSBaseView)
+
+EUNIT_TEST(
+    "GSBsView:CreateNaviPaneContextL",
+    "CGSBaseView",
+    "CreateNaviPaneContextL",
+    "FUNCTIONALITY",
+    SetupCGSBaseViewL, MT_CGSBaseView_CreateNaviPaneContextLL, TeardownCGSBaseView)
+
+EUNIT_TEST(
+    "GSPrntPlg:UpperLevelViewUid",
+    "CGSParentPlugin",
+    "UpperLevelViewUid",
+    "FUNCTIONALITY",
+    SetupCGSParentPluginL, MT_CGSParentPlugin_UpperLevelViewUidL, TeardownCGSParentPlugin)
+
+EUNIT_TEST(
+    "GSPrntPlg:UpdateView",
+    "CGSParentPlugin",
+    "UpdateView",
+    "FUNCTIONALITY",
+    SetupCGSParentPluginL, MT_CGSParentPlugin_UpdateViewL, TeardownCGSParentPlugin)
+
+EUNIT_TEST(
+    "GSPrntPlg:SetOptionFlags",
+    "CGSParentPlugin",
+    "SetOptionFlags",
+    "FUNCTIONALITY",
+    SetupCGSParentPluginL, MT_CGSParentPlugin_SetOptionFlagsL, TeardownCGSParentPlugin)
+
+EUNIT_TEST(
+    "GSPrntPlg:OptionFlags",
+    "CGSParentPlugin",
+    "OptionFlags",
+    "FUNCTIONALITY",
+    SetupCGSParentPluginL, MT_CGSParentPlugin_OptionFlagsL, TeardownCGSParentPlugin)
+
+EUNIT_TEST(
+    "GSPrntPlg:GetHelpContext",
+    "CGSParentPlugin",
+    "GetHelpContext",
+    "FUNCTIONALITY",
+    SetupCGSParentPluginL, MT_CGSParentPlugin_GetHelpContextL, TeardownCGSParentPlugin)
+
+EUNIT_TEST(
+    "GSPrntPlg:SelectedPlugin",
+    "CGSParentPlugin",
+    "SelectedPlugin",
+    "FUNCTIONALITY",
+    SetupCGSParentPluginL, MT_CGSParentPlugin_SelectedPluginL, TeardownCGSParentPlugin)
+
+EUNIT_TEST(
+    "GSPrntPlg:TransferDynamicPluginL",
+    "CGSParentPlugin",
+    "TransferDynamicPluginL",
+    "FUNCTIONALITY",
+    SetupCGSParentPluginL, MT_CGSParentPlugin_TransferDynamicPluginLL, TeardownCGSParentPlugin)
+
+EUNIT_TEST(
+    "GSPlgIF:ItemType",
+    "CGSPluginInterface",
+    "ItemType",
+    "FUNCTIONALITY",
+    SetupCGSParentPluginL, MT_CGSPluginInterface_ItemTypeL, TeardownCGSParentPlugin)
+
+EUNIT_TEST(
+    "GSPlgIF:HandleSelection",
+    "CGSPluginInterface",
+    "HandleSelection",
+    "FUNCTIONALITY",
+    SetupCGSParentPluginL, MT_CGSPluginInterface_HandleSelectionL, TeardownCGSParentPlugin)
+
+EUNIT_TEST(
+    "GSPlgIF:PluginProviderCategory",
+    "CGSPluginInterface",
+    "PluginProviderCategory",
+    "FUNCTIONALITY",
+    SetupCGSParentPluginL, MT_CGSPluginInterface_PluginProviderCategoryL, TeardownCGSParentPlugin)
+
+EUNIT_TEST(
+    "GSPlgIF:CustomOperationL",
+    "CGSPluginInterface",
+    "CustomOperationL",
+    "FUNCTIONALITY",
+    SetupCGSParentPluginL, MT_CGSPluginInterface_CustomOperationLL, TeardownCGSParentPlugin)
+
+EUNIT_TEST(
+    "GSPlgIF:SetOrder",
+    "CGSPluginInterface",
+    "SetOrder",
+    "FUNCTIONALITY",
+    SetupCGSParentPluginL, MT_CGSPluginInterface_SetOrderL, TeardownCGSParentPlugin)
+
+EUNIT_TEST(
+    "GSPlgIF:CreateIconL",
+    "CGSPluginInterface",
+    "CreateIconL",
+    "FUNCTIONALITY",
+    SetupCGSParentPluginL, MT_CGSPluginInterface_CreateIconLL, TeardownCGSParentPlugin)
+
+EUNIT_TEST(
+    "GSPlgIF:GetEcomDestructorKey",
+    "CGSPluginInterface",
+    "GetEcomDestructorKey",
+    "FUNCTIONALITY",
+    SetupCGSParentPluginL, MT_CGSPluginInterface_GetEcomDestructorKey, TeardownCGSParentPlugin)
+
+EUNIT_TEST(
+    "GSTabHlpr:~CGSTabHelper",
+    "CGSTabHelper",
+    "~CGSTabHelper",
+    "FUNCTIONALITY",
+    SetupTabHelperL, T_CGSTabHelper__CGSTabHelperL, TeardownTabHelper)
+
+EUNIT_TEST(
+    "GSTabHlpr:CreateTabGroupL",
+    "CGSTabHelper",
+    "CreateTabGroupL",
+    "FUNCTIONALITY",
+    SetupTabHelperL, T_CGSTabHelper_CreateTabGroupLL, TeardownTabHelper)
+
+EUNIT_TEST(
+    "GSTabHlpr:CreateTabGroupL2",
+    "CGSTabHelper",
+    "CreateTabGroupL2",
+    "FUNCTIONALITY",
+    SetupTabHelperL, T_CGSTabHelper_CreateTabGroupL2L, TeardownTabHelper)
+
+EUNIT_TEST(
+    "GSTabHlpr:CreateTabGroupL3",
+    "CGSTabHelper",
+    "CreateTabGroupL3",
+    "FUNCTIONALITY",
+    SetupTabHelperL, T_CGSTabHelper_CreateTabGroupL3L, TeardownTabHelper)
+
+EUNIT_TEST(
+    "GSTabHlpr:RemoveTabGroupL",
+    "CGSTabHelper",
+    "RemoveTabGroupL",
+    "FUNCTIONALITY",
+    SetupTabHelperL, T_CGSTabHelper_RemoveTabGroupL, TeardownTabHelper)
+
+EUNIT_TEST(
+    "GSTabHlpr:TabChangedL",
+    "CGSTabHelper",
+    "TabChangedL",
+    "FUNCTIONALITY",
+    SetupTabHelperL, T_CGSTabHelper_TabChangedLL, TeardownTabHelper)
+
+EUNIT_TEST(
+    "GSTabHlpr:NewL",
+    "CGSTabHelper",
+    "NewL",
+    "FUNCTIONALITY",
+    SetupNone, T_CGSTabHelper_NewLL, TeardownNone)
+
+EUNIT_TEST(
+    "GSTabHlpr:NewLC",
+    "CGSTabHelper",
+    "NewLC",
+    "FUNCTIONALITY",
+    SetupNone, T_CGSTabHelper_NewLCL, TeardownNone)
+/*
+EUNIT_TEST(
+    "FocusChanged",
+    "CGSParentContainer",
+    "FocusChanged",
+    "FUNCTIONALITY",
+    SetupParentContainerL, T_CGSParentContainer_FocusChanged, TearDownParentContainer)
+*/
+
+EUNIT_TEST(
+    "GSPlgLdr:NewL",
+    "CGSPluginLoader",
+    "NewL",
+    "FUNCTIONALITY",
+    SetupNone, T_CGSPluginLoader_NewL, TeardownNone)
+
+EUNIT_TEST(
+    "GSPlgLdr:Destructor",
+    "CGSPluginLoader",
+    "~CGSPluginLoader",
+    "FUNCTIONALITY",
+    SetupNone, T_CGSPluginLoader__CGSPluginLoader, TeardownNone)
+
+EUNIT_TEST(
+    "GSPlgLdr:LoadAsyncL",
+    "CGSPluginLoader",
+    "LoadAsyncL",
+    "FUNCTIONALITY",
+    SetupPluginLoaderL, T_CGSPluginLoader_LoadAsyncL, TearDownPluginLoader)
+
+EUNIT_TEST(
+    "GSPlgLdr:SetObserver",
+    "CGSPluginLoader",
+    "SetObserver",
+    "FUNCTIONALITY",
+    SetupPluginLoaderL, T_CGSPluginLoader_SetObserver, TearDownPluginLoader)
+
+EUNIT_TEST(
+    "GSPlgLdr:AbortAsyncLoad",
+    "CGSPluginLoader",
+    "AbortAsyncLoad",
+    "FUNCTIONALITY",
+    SetupPluginLoaderL, T_CGSPluginLoader_AbortAsyncLoad, TearDownPluginLoader)
+
+EUNIT_TEST(
+    "GSPlgLdr:SortPluginsL",
+    "CGSPluginLoader",
+    "SortPluginsL",
+    "FUNCTIONALITY",
+    SetupPluginLoaderL, T_CGSPluginLoader_SortPluginsL, TearDownPluginLoader)
+
+EUNIT_TEST(
+    "GSPSLsnr:NewL",
+    "CGSPubSubsListener",
+    "NewL",
+    "FUNCTIONALITY",
+    SetupNone, T_CGSPubSubsListener_NewL, TeardownNone)
+
+EUNIT_TEST(
+    "GSPSLsnr:CGSPubSubsListener",
+    "CGSPubSubsListener",
+    "~CGSPubSubsListener",
+    "FUNCTIONALITY",
+    SetupNone, T_CGSPubSubsListener__CGSPubSubsListener, TeardownNone)
+
+EUNIT_TEST(
+    "GSPSLsnr:Get1",
+    "CGSPubSubsListener",
+    "Get1",
+    "FUNCTIONALITY",
+    SetupPubSubsListenerL, T_CGSPubSubsListener_Get1, TearDownPubSubsListener)
+
+EUNIT_TEST(
+    "GSPSLsnr:Get2",
+    "CGSPubSubsListener",
+    "Get2",
+    "FUNCTIONALITY",
+    SetupPubSubsListenerL, T_CGSPubSubsListener_Get2, TearDownPubSubsListener)
+
+EUNIT_TEST(
+    "GSPSLsnr:Get3",
+    "CGSPubSubsListener",
+    "Get3",
+    "FUNCTIONALITY",
+    SetupPubSubsListenerL, T_CGSPubSubsListener_Get3, TearDownPubSubsListener)
+
+EUNIT_END_TEST_TABLE
+
+//  END OF FILE