homescreensrv_plat/activity_framework_api/tsrc/t_afactivation/src/t_afactivation.cpp
author hgs
Mon, 18 Oct 2010 10:44:15 +0300
changeset 127 7b66bc3c6dc9
parent 125 26079c1bb561
permissions -rw-r--r--
201041

/*
 * 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()
{
    mActivation = new AfActivation();
    mServiceProvider = AfStorageProxy::instance;
}

void TestAfActivation::cleanup()
{
    delete mActivation;
    mActivation = NULL;
}

void TestAfActivation::testFailedActivityRequestSubscription()
{
    bool errorReceived = false;
    //af storage proxy is mocked so I can set static variable making it leave
    AfStorageProxy::waitFailed = true;
    try {
        AfActivation activation;
    } 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)