/*
* 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 "t_afactivation.h"
#include <QtTest/QtTest>
#include "afactivation.h"
#include "afactivation_p.h"
#include "applicationlauncher_p.h"
TestAfActivation::TestAfActivation()
{
mDefaultActivityName = QString("appto://EBADC0DE?%1=TestActivity&TestParam=TestValue").arg(Af::KActivityUriNameKey);
}
void TestAfActivation::init()
{
mServiceProvider = QSharedPointer<AfStorageProxy>(new AfStorageProxy());
mActivationPrivate = new AfActivationPrivate(mServiceProvider);
}
void TestAfActivation::cleanup()
{
delete mActivationPrivate;
mActivationPrivate = NULL;
}
void TestAfActivation::invokeActivationPublicInterface()
{
// AfActivation is only responsible of correct creation of AfActivationPrivate and
// forwarding requests. Since it's impossible to verify the effects of the member
// calls, just invoke the methods.
AfActivation activation;
activation.parameters();
activation.reason();
activation.name();
}
void TestAfActivation::testDefaultValuesAfterCreation()
{
QCOMPARE(mActivationPrivate->parameters(), QVariantHash());
QCOMPARE(mActivationPrivate->reason(), Af::ActivationReasonNormal);
QCOMPARE(mActivationPrivate->name(), QString());
}
void TestAfActivation::testSignalIsEmittedWhenActivityIsRequested()
{
QSignalSpy activatedSpy(mActivationPrivate, SIGNAL(activated(Af::ActivationReason,QString,QVariantHash)));
QVERIFY(activatedSpy.isValid());
mServiceProvider->emitActivityRequested(mDefaultActivityName);
QCOMPARE(activatedSpy.count(), 1);
}
void TestAfActivation::testValuesChangeWhenActivityIsRequested()
{
QSignalSpy activatedSpy(mActivationPrivate, SIGNAL(activated(Af::ActivationReason,QString,QVariantHash)));
QVERIFY(activatedSpy.isValid());
mServiceProvider->emitActivityRequested(mDefaultActivityName);
QCOMPARE(activatedSpy.count(), 1);
QCOMPARE(mActivationPrivate->reason(), Af::ActivationReasonActivity);
QCOMPARE(mActivationPrivate->name(), QString("TestActivity"));
QVERIFY(mActivationPrivate->parameters().contains("TestParam"));
QCOMPARE(mActivationPrivate->parameters().value("TestParam").toString(), QString("TestValue"));
}
void TestAfActivation::testChangingActivityInBackground()
{
// bring to foreground is called by default
{
mServiceProvider->emitActivityRequested(mDefaultActivityName);
ApplicationLauncherPrivate *launcher = ApplicationLauncherPrivate::instance;
QVERIFY(launcher);
QCOMPARE(launcher->bringToForegroundCalls.count(), 1);
launcher->bringToForegroundCalls.clear();
}
// bring to foreground is not called if background parameter is present
{
mServiceProvider->emitActivityRequested(QString("appto://EBADC0DE?%1=TestActivity&%2=").arg(Af::KActivityUriNameKey).arg(Af::KActivityUriBackgroundKey));
ApplicationLauncherPrivate *launcher = ApplicationLauncherPrivate::instance;
QVERIFY(launcher);
QCOMPARE(launcher->bringToForegroundCalls.count(), 0);
}
}
QTEST_MAIN(TestAfActivation)