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