diff -r d1dadafc5584 -r 26079c1bb561 homescreensrv_plat/activity_framework_api/tsrc/t_afactivation/src/t_afactivation.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/homescreensrv_plat/activity_framework_api/tsrc/t_afactivation/src/t_afactivation.cpp Wed Oct 06 16:00:22 2010 +0300 @@ -0,0 +1,141 @@ +/* + * 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 + +#include "afactivation.h" +#include "afactivation_p.h" +#include "applicationlauncher_p.h" + +TestAfActivation::TestAfActivation() +{ + mDefaultActivityName = QString("appto://EBADC0DE?%1=TestActivity&TestParam=TestValue").arg( + Af::KActivityUriNameKey); + qRegisterMetaType ("Af::ActivationReason"); +} + +void TestAfActivation::init() +{ + mActivation = new AfActivation(); + mServiceProvider = AfStorageProxy::instance; +} + +void TestAfActivation::cleanup() +{ + delete mActivation; + mActivation = 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::invokeActivationPublicInterfaceCorrupt() +{ + bool errorReceived = false; + //af storage proxy is mocked so I can set static variable making it leave + AfStorageProxy::waitFailed = true; + try + { + AfActivation *activation = new AfActivation(); + } + catch(...) + { + errorReceived = true; + } + QVERIFY(errorReceived); + } + + void TestAfActivation::testDefaultValuesAfterCreation() + { + QCOMPARE(mActivation->parameters(), QVariantHash()); + QCOMPARE(mActivation->reason(), Af::ActivationReasonNormal); + QCOMPARE(mActivation->name(), QString()); + } + + void TestAfActivation::testSignalIsEmittedWhenActivityIsRequested() + { + QSignalSpy activatedSpy(mActivation, + SIGNAL(activated(Af::ActivationReason,QString,QVariantHash))); + QVERIFY(activatedSpy.isValid()); + + mServiceProvider->emitActivityRequested(mDefaultActivityName); + + QCOMPARE(activatedSpy.count(), 1); + } + + void TestAfActivation::testValuesChangeWhenActivityIsRequested() + { + QSignalSpy activatedSpy(mActivation, + SIGNAL(activated(Af::ActivationReason,QString,QVariantHash))); + QVERIFY(activatedSpy.isValid()); + + mServiceProvider->emitActivityRequested(mDefaultActivityName); + + QCOMPARE(activatedSpy.count(), 1); + QCOMPARE(mActivation->reason(), Af::ActivationReasonActivity); + QCOMPARE(mActivation->name(), QString("TestActivity")); + QVERIFY(mActivation->parameters().contains("TestParam")); + QCOMPARE(mActivation->parameters().value("TestParam").toString(), QString("TestValue")); + } + + void TestAfActivation::testValuesChangeWhenActivityIsRequestedNoName() + { + QString activityname("appto://EBADC0DE?TestParam=TestValue"); + QSignalSpy activatedSpy(mActivation, + SIGNAL(activated(Af::ActivationReason,QString,QVariantHash))); + QVERIFY(activatedSpy.isValid()); + + mServiceProvider->emitActivityRequested(activityname); + QCOMPARE(activatedSpy.count(), 1); + + QCOMPARE(mActivation->reason(), Af::ActivationReasonActivity); + QCOMPARE(mActivation->name(), QString()); + QVERIFY(mActivation->parameters().contains("TestParam")); + QCOMPARE(mActivation->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)); + + launcher = ApplicationLauncherPrivate::instance; + QVERIFY(launcher); + QCOMPARE(launcher->bringToForegroundCalls.count(), 0); + } + + QTEST_MAIN(TestAfActivation)