activityfw/activityserviceplugin/tsrc/unittest_activitymanager/src/unittest_activitymanager.cpp
changeset 117 c63ee96dbe5f
--- /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)