activityfw/activityserviceplugin/tsrc/t_afactivation/src/t_afactivation.cpp
author Jaakko Haukipuro (Nokia-MS/Oulu) <Jaakko.Haukipuro@nokia.com>
Thu, 16 Sep 2010 12:11:40 +0100
changeset 117 c63ee96dbe5f
permissions -rw-r--r--
Missing activityfw and taskswitcher components - fix for Bug 3670

/*
* 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)