activityfw/activityserviceplugin/tsrc/unittest_activitymanager/src/unittest_activitymanager.cpp
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/activityfw/activityserviceplugin/tsrc/unittest_activitymanager/src/unittest_activitymanager.cpp Thu Sep 16 12:11:40 2010 +0100
@@ -0,0 +1,183 @@
+/*
+* 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 "unittest_activitymanager.h"
+
+#include <QtTest/QtTest>
+#include <QVariant>
+#include <QTimer>
+
+#include "afactivities_global.h"
+#include "applicationlauncher_p.h"
+#include "afmanager.h"
+
+const char DefaultActivityName [] = "DefaultTestActivityName";
+
+void TestActivityManager::init()
+{
+ mServiceProvider = QSharedPointer<AfStorageProxy>(new AfStorageProxy());
+ mManager = new AfManager(mServiceProvider);
+}
+
+void TestActivityManager::cleanup()
+{
+ delete mManager;
+ mManager = NULL;
+}
+
+
+void TestActivityManager::testActivityList()
+{
+ mManager->activitiesList();
+}
+
+void TestActivityManager::testLaunchStartupCaseWithoutUri()
+{
+ RProcess process;
+ const int applicationId(process.SecureId().iId);
+ QString activityId(DefaultActivityName);
+
+ mManager->launchActivity(applicationId, activityId);
+
+ // verify output
+ ApplicationLauncherPrivate *launcher = ApplicationLauncherPrivate::instance;
+ QVERIFY(launcher); //sanity check
+ QCOMPARE(launcher->startApplicationCalls.count(), 1);
+ QCOMPARE(launcher->startApplicationCalls.first().value("applicationId").toUInt(), QVariant(applicationId).toUInt());
+ QCOMPARE(launcher->startApplicationCalls.first().value("uri").toUrl().queryItemValue(Af::KActivityUriNameKey), activityId);
+}
+
+void TestActivityManager::testLaunchRunningCaseWithoutUri()
+{
+ ApplicationLauncherPrivate::isRunningReturnValue = true;
+ RProcess process;
+ const int applicationId(process.SecureId().iId);
+ QString activityId(DefaultActivityName);
+
+ mManager->launchActivity(applicationId, activityId);
+
+ QVERIFY(applicationId == mServiceProvider->mLastCallParams.value("applicationId").toInt());
+ QCOMPARE(QUrl(mServiceProvider->mLastCallParams.value("activityUri").toString()).queryItemValue(Af::KActivityUriNameKey), activityId);
+
+ ApplicationLauncherPrivate *launcher = ApplicationLauncherPrivate::instance;
+ QVERIFY(launcher); //sanity check
+ QCOMPARE(launcher->startApplicationCalls.count(), 0);
+}
+
+void TestActivityManager::testLaunchStartupCaseUsingUris()
+{
+ ApplicationLauncherPrivate::isRunningReturnValue = false;
+
+ mManager->launchActivity(QUrl(QString("appto://EEEE0000?%1=TestName").arg(Af::KActivityUriNameKey)));
+
+ ApplicationLauncherPrivate *launcher = ApplicationLauncherPrivate::instance;
+ QVERIFY(launcher); //sanity check
+ QCOMPARE(launcher->startApplicationCalls.count(), 1);
+ QCOMPARE(launcher->startApplicationCalls.first().value("applicationId").toUInt(), QVariant(0xEEEE0000).toUInt());
+ QCOMPARE(launcher->startApplicationCalls.first().value("uri").toUrl().queryItemValue(Af::KActivityUriNameKey), QString("TestName"));
+}
+
+void TestActivityManager::testLaunchRunningCaseUsingUris()
+{
+ ApplicationLauncherPrivate::isRunningReturnValue = true;
+
+ mManager->launchActivity(QUrl(QString("appto://EEEE0000?%1=TestName").arg(Af::KActivityUriNameKey)));
+
+ ApplicationLauncherPrivate *launcher = ApplicationLauncherPrivate::instance;
+ QVERIFY(launcher); //sanity check
+ QCOMPARE(launcher->startApplicationCalls.count(), 0);
+
+ QVERIFY(0xEEEE0000 == mServiceProvider->mLastCallParams.value("applicationId").toInt());
+ QCOMPARE(QUrl(mServiceProvider->mLastCallParams.value("activityUri").toString()).queryItemValue(Af::KActivityUriNameKey), QString("TestName"));
+}
+
+void TestActivityManager::testLaunchRequestsWithInvalidUris()
+{
+ // neither of the launchActivity() calls in this test should succeed, so the ActivityLauncher mock
+ // won't be created and we can expect that ApplicationLauncherPrivate::instance will return the
+ // same object through entire test.
+ ApplicationLauncherPrivate *expectedLauncherInstance = ApplicationLauncherPrivate::instance;
+
+ mManager->launchActivity(QUrl());
+ QVERIFY(ApplicationLauncherPrivate::instance == expectedLauncherInstance);
+
+ mManager->launchActivity(QUrl("arrr://DEADDEAD?pirates=yes"));
+ QVERIFY(ApplicationLauncherPrivate::instance == expectedLauncherInstance);
+
+ mManager->launchActivity(QUrl("appto://kaboom"));
+ QVERIFY(ApplicationLauncherPrivate::instance == expectedLauncherInstance);
+
+ mManager->launchActivity(QUrl(QString("appto://?%1=TestName").arg(Af::KActivityUriNameKey)));
+ QVERIFY(ApplicationLauncherPrivate::instance == expectedLauncherInstance);
+}
+
+void TestActivityManager::testStartApplicationWithoutActivity()
+{
+ ApplicationLauncherPrivate::isRunningReturnValue = false;
+
+ mManager->launchActivity(QUrl("appto://DEADBEEF"));
+
+ ApplicationLauncherPrivate *launcher = ApplicationLauncherPrivate::instance;
+ QVERIFY(launcher); //sanity check
+ QCOMPARE(launcher->startApplicationCalls.count(), 1);
+ QCOMPARE(launcher->bringToForegroundCalls.count(), 0);
+
+ QCOMPARE(launcher->startApplicationCalls.first().value("applicationId").toUInt(), QVariant(0xDEADBEEF).toUInt());
+ QCOMPARE(launcher->startApplicationCalls.first().value("uri").toUrl().queryItems().count(), 0);
+}
+
+void TestActivityManager::testSwitchApplicationToForegroundWithoutActivity()
+{
+ ApplicationLauncherPrivate::isRunningReturnValue = true;
+
+ mManager->launchActivity(QUrl("appto://DEADBEEF"));
+
+ ApplicationLauncherPrivate *launcher = ApplicationLauncherPrivate::instance;
+ QVERIFY(launcher); //sanity check
+ QCOMPARE(launcher->startApplicationCalls.count(), 0);
+
+ QVERIFY(0xDEADBEEF == mServiceProvider->mLastCallParams.value("applicationId").toInt());
+ QCOMPARE(QUrl(mServiceProvider->mLastCallParams.value("activityUri").toString()).queryItemValue(Af::KActivityUriNameKey), QString());
+}
+
+void TestActivityManager::testGetThumbnail()
+{
+ QSignalSpy spy(mManager, SIGNAL(thumbnailReady(QPixmap, void *)));
+ QEventLoop loop;
+ connect(mManager,
+ SIGNAL(thumbnailReady(QPixmap, void *)),
+ &loop,
+ SLOT(quit()));
+ //mManager->getThumbnail(23459821);
+ mManager->getThumbnail(QSize(128, 128), "somestring");
+ QTimer::singleShot(3000, &loop, SLOT(quit()));
+ loop.exec();
+ QVERIFY(1==spy.count());
+}
+
+void TestActivityManager::testUriWithTestRangeUid()
+{
+ ApplicationLauncherPrivate::isRunningReturnValue = false;
+
+ mManager->launchActivity(QUrl(QString("appto://EBADC0DE?%1=TestName").arg(Af::KActivityUriNameKey)));
+
+ ApplicationLauncherPrivate *launcher = ApplicationLauncherPrivate::instance;
+ QVERIFY(launcher); //sanity check
+ QCOMPARE(launcher->startApplicationCalls.count(), 1);
+ QCOMPARE(launcher->startApplicationCalls.first().value("applicationId").toUInt(), QVariant(0xEBADC0DE).toUInt());
+}
+
+QTEST_MAIN(TestActivityManager)