taskswitcher/backstepping/tsrc/t_tsbackstepping/t_tsbackstepping.cpp
changeset 117 c63ee96dbe5f
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/taskswitcher/backstepping/tsrc/t_tsbackstepping/t_tsbackstepping.cpp	Thu Sep 16 12:11:40 2010 +0100
@@ -0,0 +1,109 @@
+/** 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:
+*
+*/
+#include <QtTest/QtTest>
+#include <QPixmap>
+#include <e32std.h>
+#include <AknDef.h>
+#include <QString>
+#include <qdebug>
+#include <apgcli.h>
+#include <apacmdln.h>
+#include <apgtask.h>
+#include <eikenv.h>
+#include <s32strm.h>
+#include <S32MEM.H>
+#include <APGWGNAM.H>
+#include <FBS.H>
+#include "t_tsbackstepping.h"
+#include "tsbackstepping.h"
+#include <tsresourcemanager.h>
+#include <tswindowgroupsobserver.h>
+
+#include "tstestutils.h"
+
+const TUid KIconApplicationUid = {0xEd0b4e47};
+const TUid KNoIconApplicationUid = {0xE453fc1b};
+const TUid KHsApplicationUid = {0x20022F35};
+
+namespace {
+    const char KIconApplicationName[] = "appwithicon";
+    const char KNoIconApplicationName[] = "appwithouticon";
+}
+
+// -----------------------------------------------------------------------------
+//  init and cleanup methods
+// -----------------------------------------------------------------------------
+//
+void TestBackStepping::initTestCase()
+{
+    mResources = CTsResourceManager::NewL();
+    mMonitor = CTsWindowGroupsMonitor::NewL(*mResources);
+}
+
+void TestBackStepping::cleanupTestCase()
+{
+    delete mMonitor;
+    delete mResources;
+}
+
+// -----------------------------------------------------------------------------
+//  test cases
+// -----------------------------------------------------------------------------
+//
+void TestBackStepping::testBacksteppingMovesHomescreenToSecondPosition()
+{   
+    // start test applicationss
+    quint64 iconAppId;
+    quint64 noIconAppId;
+    QVERIFY(TsTestUtils::startApplication(KIconApplicationName, iconAppId));
+    QVERIFY(TsTestUtils::startApplication(KNoIconApplicationName, noIconAppId));
+        
+    // get window group list that will be passed to backstepping algorithm    
+    RArray<RWsSession::TWindowGroupChainInfo> windowGroupList;
+    QCOMPARE(mResources->WsSession().WindowGroupList(0, &windowGroupList), KErrNone);
+    
+    // we don't test window server events monitor. manually force backstepping algorithm 
+    CTsBackstepping *backstepping = CTsBackstepping::NewL(*mMonitor);
+    static_cast<MTsWindowGroupsObserver*>(backstepping)->HandleWindowGroupChanged(*mResources, windowGroupList.Array());
+    
+    // read window group list list after backstepping
+    QCOMPARE(mResources->WsSession().WindowGroupList(0, &windowGroupList), KErrNone);
+    
+    QCOMPARE(getUidForWgId(windowGroupList[0].iId), KNoIconApplicationUid);        
+    QCOMPARE(getUidForWgId(windowGroupList[1].iId), KHsApplicationUid);
+    QCOMPARE(getUidForWgId(windowGroupList[2].iId), KIconApplicationUid);
+    
+    delete backstepping;
+    windowGroupList.Close();
+    
+    // close test applications
+    QVERIFY(TsTestUtils::closeApplication(noIconAppId));
+    QVERIFY(TsTestUtils::closeApplication(iconAppId));
+}
+
+// -----------------------------------------------------------------------------
+//  helper method
+// -----------------------------------------------------------------------------
+//
+TUid TestBackStepping::getUidForWgId(int wgId) const
+{
+    CApaWindowGroupName *windowName = CApaWindowGroupName::NewLC(mResources->WsSession(), wgId);
+    TUid appUid = windowName->AppUid();
+    CleanupStack::PopAndDestroy(windowName);
+    return appUid; 
+}
+
+QTEST_MAIN(TestBackStepping)