activityfw/activityserviceplugin/tsrc/t_afactivation/src/t_afactivation.cpp
changeset 117 c63ee96dbe5f
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/activityfw/activityserviceplugin/tsrc/t_afactivation/src/t_afactivation.cpp	Thu Sep 16 12:11:40 2010 +0100
@@ -0,0 +1,106 @@
+/*
+* 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)