--- /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)