homescreensrv_plat/activity_framework_api/tsrc/t_afactivation/src/t_afactivation.cpp
author hgs
Wed, 06 Oct 2010 16:00:22 +0300
changeset 125 26079c1bb561
child 127 7b66bc3c6dc9
permissions -rw-r--r--
201039_01
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
125
26079c1bb561 201039_01
hgs
parents:
diff changeset
     1
/*
26079c1bb561 201039_01
hgs
parents:
diff changeset
     2
 * Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
26079c1bb561 201039_01
hgs
parents:
diff changeset
     3
 * All rights reserved.
26079c1bb561 201039_01
hgs
parents:
diff changeset
     4
 * This component and the accompanying materials are made available
26079c1bb561 201039_01
hgs
parents:
diff changeset
     5
 * under the terms of "Eclipse Public License v1.0"
26079c1bb561 201039_01
hgs
parents:
diff changeset
     6
 * which accompanies this distribution, and is available
26079c1bb561 201039_01
hgs
parents:
diff changeset
     7
 * at the URL "http://www.eclipse.org/legal/epl-v10.html".
26079c1bb561 201039_01
hgs
parents:
diff changeset
     8
 *
26079c1bb561 201039_01
hgs
parents:
diff changeset
     9
 * Initial Contributors:
26079c1bb561 201039_01
hgs
parents:
diff changeset
    10
 * Nokia Corporation - initial contribution.
26079c1bb561 201039_01
hgs
parents:
diff changeset
    11
 *
26079c1bb561 201039_01
hgs
parents:
diff changeset
    12
 * Contributors:
26079c1bb561 201039_01
hgs
parents:
diff changeset
    13
 *
26079c1bb561 201039_01
hgs
parents:
diff changeset
    14
 * Description:
26079c1bb561 201039_01
hgs
parents:
diff changeset
    15
 *
26079c1bb561 201039_01
hgs
parents:
diff changeset
    16
 */
26079c1bb561 201039_01
hgs
parents:
diff changeset
    17
#include "t_afactivation.h"
26079c1bb561 201039_01
hgs
parents:
diff changeset
    18
26079c1bb561 201039_01
hgs
parents:
diff changeset
    19
#include <QtTest/QtTest>
26079c1bb561 201039_01
hgs
parents:
diff changeset
    20
26079c1bb561 201039_01
hgs
parents:
diff changeset
    21
#include "afactivation.h"
26079c1bb561 201039_01
hgs
parents:
diff changeset
    22
#include "afactivation_p.h"
26079c1bb561 201039_01
hgs
parents:
diff changeset
    23
#include "applicationlauncher_p.h"
26079c1bb561 201039_01
hgs
parents:
diff changeset
    24
26079c1bb561 201039_01
hgs
parents:
diff changeset
    25
TestAfActivation::TestAfActivation()
26079c1bb561 201039_01
hgs
parents:
diff changeset
    26
{
26079c1bb561 201039_01
hgs
parents:
diff changeset
    27
    mDefaultActivityName = QString("appto://EBADC0DE?%1=TestActivity&TestParam=TestValue").arg(
26079c1bb561 201039_01
hgs
parents:
diff changeset
    28
        Af::KActivityUriNameKey);
26079c1bb561 201039_01
hgs
parents:
diff changeset
    29
    qRegisterMetaType<Af::ActivationReason> ("Af::ActivationReason");
26079c1bb561 201039_01
hgs
parents:
diff changeset
    30
}
26079c1bb561 201039_01
hgs
parents:
diff changeset
    31
26079c1bb561 201039_01
hgs
parents:
diff changeset
    32
void TestAfActivation::init()
26079c1bb561 201039_01
hgs
parents:
diff changeset
    33
{
26079c1bb561 201039_01
hgs
parents:
diff changeset
    34
    mActivation = new AfActivation();
26079c1bb561 201039_01
hgs
parents:
diff changeset
    35
    mServiceProvider = AfStorageProxy::instance;
26079c1bb561 201039_01
hgs
parents:
diff changeset
    36
}
26079c1bb561 201039_01
hgs
parents:
diff changeset
    37
26079c1bb561 201039_01
hgs
parents:
diff changeset
    38
void TestAfActivation::cleanup()
26079c1bb561 201039_01
hgs
parents:
diff changeset
    39
{
26079c1bb561 201039_01
hgs
parents:
diff changeset
    40
    delete mActivation;
26079c1bb561 201039_01
hgs
parents:
diff changeset
    41
    mActivation = NULL;
26079c1bb561 201039_01
hgs
parents:
diff changeset
    42
}
26079c1bb561 201039_01
hgs
parents:
diff changeset
    43
26079c1bb561 201039_01
hgs
parents:
diff changeset
    44
void TestAfActivation::invokeActivationPublicInterface()
26079c1bb561 201039_01
hgs
parents:
diff changeset
    45
{
26079c1bb561 201039_01
hgs
parents:
diff changeset
    46
    // AfActivation is only responsible of correct creation of AfActivationPrivate and
26079c1bb561 201039_01
hgs
parents:
diff changeset
    47
    // forwarding requests. Since it's impossible to verify the effects of the member
26079c1bb561 201039_01
hgs
parents:
diff changeset
    48
    // calls, just invoke the methods.
26079c1bb561 201039_01
hgs
parents:
diff changeset
    49
    AfActivation activation;
26079c1bb561 201039_01
hgs
parents:
diff changeset
    50
26079c1bb561 201039_01
hgs
parents:
diff changeset
    51
    activation.parameters();
26079c1bb561 201039_01
hgs
parents:
diff changeset
    52
    activation.reason();
26079c1bb561 201039_01
hgs
parents:
diff changeset
    53
    activation.name();
26079c1bb561 201039_01
hgs
parents:
diff changeset
    54
}
26079c1bb561 201039_01
hgs
parents:
diff changeset
    55
26079c1bb561 201039_01
hgs
parents:
diff changeset
    56
void TestAfActivation::invokeActivationPublicInterfaceCorrupt()
26079c1bb561 201039_01
hgs
parents:
diff changeset
    57
{
26079c1bb561 201039_01
hgs
parents:
diff changeset
    58
    bool errorReceived = false;
26079c1bb561 201039_01
hgs
parents:
diff changeset
    59
    //af storage proxy is mocked so I can set static variable making it leave
26079c1bb561 201039_01
hgs
parents:
diff changeset
    60
    AfStorageProxy::waitFailed = true;
26079c1bb561 201039_01
hgs
parents:
diff changeset
    61
    try
26079c1bb561 201039_01
hgs
parents:
diff changeset
    62
    {
26079c1bb561 201039_01
hgs
parents:
diff changeset
    63
        AfActivation *activation = new AfActivation();
26079c1bb561 201039_01
hgs
parents:
diff changeset
    64
    }
26079c1bb561 201039_01
hgs
parents:
diff changeset
    65
    catch(...)
26079c1bb561 201039_01
hgs
parents:
diff changeset
    66
    {
26079c1bb561 201039_01
hgs
parents:
diff changeset
    67
        errorReceived = true;
26079c1bb561 201039_01
hgs
parents:
diff changeset
    68
    }
26079c1bb561 201039_01
hgs
parents:
diff changeset
    69
    QVERIFY(errorReceived);
26079c1bb561 201039_01
hgs
parents:
diff changeset
    70
    }
26079c1bb561 201039_01
hgs
parents:
diff changeset
    71
26079c1bb561 201039_01
hgs
parents:
diff changeset
    72
    void TestAfActivation::testDefaultValuesAfterCreation()
26079c1bb561 201039_01
hgs
parents:
diff changeset
    73
    {
26079c1bb561 201039_01
hgs
parents:
diff changeset
    74
        QCOMPARE(mActivation->parameters(), QVariantHash());
26079c1bb561 201039_01
hgs
parents:
diff changeset
    75
        QCOMPARE(mActivation->reason(), Af::ActivationReasonNormal);
26079c1bb561 201039_01
hgs
parents:
diff changeset
    76
        QCOMPARE(mActivation->name(), QString());
26079c1bb561 201039_01
hgs
parents:
diff changeset
    77
    }
26079c1bb561 201039_01
hgs
parents:
diff changeset
    78
26079c1bb561 201039_01
hgs
parents:
diff changeset
    79
    void TestAfActivation::testSignalIsEmittedWhenActivityIsRequested()
26079c1bb561 201039_01
hgs
parents:
diff changeset
    80
    {
26079c1bb561 201039_01
hgs
parents:
diff changeset
    81
        QSignalSpy activatedSpy(mActivation,
26079c1bb561 201039_01
hgs
parents:
diff changeset
    82
            SIGNAL(activated(Af::ActivationReason,QString,QVariantHash)));
26079c1bb561 201039_01
hgs
parents:
diff changeset
    83
        QVERIFY(activatedSpy.isValid());
26079c1bb561 201039_01
hgs
parents:
diff changeset
    84
26079c1bb561 201039_01
hgs
parents:
diff changeset
    85
        mServiceProvider->emitActivityRequested(mDefaultActivityName);
26079c1bb561 201039_01
hgs
parents:
diff changeset
    86
26079c1bb561 201039_01
hgs
parents:
diff changeset
    87
        QCOMPARE(activatedSpy.count(), 1);
26079c1bb561 201039_01
hgs
parents:
diff changeset
    88
    }
26079c1bb561 201039_01
hgs
parents:
diff changeset
    89
26079c1bb561 201039_01
hgs
parents:
diff changeset
    90
    void TestAfActivation::testValuesChangeWhenActivityIsRequested()
26079c1bb561 201039_01
hgs
parents:
diff changeset
    91
    {
26079c1bb561 201039_01
hgs
parents:
diff changeset
    92
        QSignalSpy activatedSpy(mActivation,
26079c1bb561 201039_01
hgs
parents:
diff changeset
    93
            SIGNAL(activated(Af::ActivationReason,QString,QVariantHash)));
26079c1bb561 201039_01
hgs
parents:
diff changeset
    94
        QVERIFY(activatedSpy.isValid());
26079c1bb561 201039_01
hgs
parents:
diff changeset
    95
26079c1bb561 201039_01
hgs
parents:
diff changeset
    96
        mServiceProvider->emitActivityRequested(mDefaultActivityName);
26079c1bb561 201039_01
hgs
parents:
diff changeset
    97
26079c1bb561 201039_01
hgs
parents:
diff changeset
    98
        QCOMPARE(activatedSpy.count(), 1);
26079c1bb561 201039_01
hgs
parents:
diff changeset
    99
        QCOMPARE(mActivation->reason(), Af::ActivationReasonActivity);
26079c1bb561 201039_01
hgs
parents:
diff changeset
   100
        QCOMPARE(mActivation->name(), QString("TestActivity"));
26079c1bb561 201039_01
hgs
parents:
diff changeset
   101
        QVERIFY(mActivation->parameters().contains("TestParam"));
26079c1bb561 201039_01
hgs
parents:
diff changeset
   102
        QCOMPARE(mActivation->parameters().value("TestParam").toString(), QString("TestValue"));
26079c1bb561 201039_01
hgs
parents:
diff changeset
   103
    }
26079c1bb561 201039_01
hgs
parents:
diff changeset
   104
26079c1bb561 201039_01
hgs
parents:
diff changeset
   105
    void TestAfActivation::testValuesChangeWhenActivityIsRequestedNoName()
26079c1bb561 201039_01
hgs
parents:
diff changeset
   106
    {
26079c1bb561 201039_01
hgs
parents:
diff changeset
   107
        QString activityname("appto://EBADC0DE?TestParam=TestValue");
26079c1bb561 201039_01
hgs
parents:
diff changeset
   108
        QSignalSpy activatedSpy(mActivation,
26079c1bb561 201039_01
hgs
parents:
diff changeset
   109
            SIGNAL(activated(Af::ActivationReason,QString,QVariantHash)));
26079c1bb561 201039_01
hgs
parents:
diff changeset
   110
        QVERIFY(activatedSpy.isValid());
26079c1bb561 201039_01
hgs
parents:
diff changeset
   111
26079c1bb561 201039_01
hgs
parents:
diff changeset
   112
        mServiceProvider->emitActivityRequested(activityname);
26079c1bb561 201039_01
hgs
parents:
diff changeset
   113
        QCOMPARE(activatedSpy.count(), 1);
26079c1bb561 201039_01
hgs
parents:
diff changeset
   114
26079c1bb561 201039_01
hgs
parents:
diff changeset
   115
        QCOMPARE(mActivation->reason(), Af::ActivationReasonActivity);
26079c1bb561 201039_01
hgs
parents:
diff changeset
   116
        QCOMPARE(mActivation->name(), QString());
26079c1bb561 201039_01
hgs
parents:
diff changeset
   117
        QVERIFY(mActivation->parameters().contains("TestParam"));
26079c1bb561 201039_01
hgs
parents:
diff changeset
   118
        QCOMPARE(mActivation->parameters().value("TestParam").toString(), QString("TestValue"));
26079c1bb561 201039_01
hgs
parents:
diff changeset
   119
    }
26079c1bb561 201039_01
hgs
parents:
diff changeset
   120
26079c1bb561 201039_01
hgs
parents:
diff changeset
   121
    void TestAfActivation::testChangingActivityInBackground()
26079c1bb561 201039_01
hgs
parents:
diff changeset
   122
    {
26079c1bb561 201039_01
hgs
parents:
diff changeset
   123
        // bring to foreground is called by default
26079c1bb561 201039_01
hgs
parents:
diff changeset
   124
        mServiceProvider->emitActivityRequested(mDefaultActivityName);
26079c1bb561 201039_01
hgs
parents:
diff changeset
   125
26079c1bb561 201039_01
hgs
parents:
diff changeset
   126
        ApplicationLauncherPrivate *launcher = ApplicationLauncherPrivate::instance;
26079c1bb561 201039_01
hgs
parents:
diff changeset
   127
        QVERIFY(launcher);
26079c1bb561 201039_01
hgs
parents:
diff changeset
   128
        QCOMPARE(launcher->bringToForegroundCalls.count(), 1);
26079c1bb561 201039_01
hgs
parents:
diff changeset
   129
        launcher->bringToForegroundCalls.clear();
26079c1bb561 201039_01
hgs
parents:
diff changeset
   130
26079c1bb561 201039_01
hgs
parents:
diff changeset
   131
        // bring to foreground is not called if background parameter is present
26079c1bb561 201039_01
hgs
parents:
diff changeset
   132
        mServiceProvider->emitActivityRequested(
26079c1bb561 201039_01
hgs
parents:
diff changeset
   133
            QString("appto://EBADC0DE?%1=TestActivity&%2=").arg(Af::KActivityUriNameKey).arg(
26079c1bb561 201039_01
hgs
parents:
diff changeset
   134
                Af::KActivityUriBackgroundKey));
26079c1bb561 201039_01
hgs
parents:
diff changeset
   135
26079c1bb561 201039_01
hgs
parents:
diff changeset
   136
        launcher = ApplicationLauncherPrivate::instance;
26079c1bb561 201039_01
hgs
parents:
diff changeset
   137
        QVERIFY(launcher);
26079c1bb561 201039_01
hgs
parents:
diff changeset
   138
        QCOMPARE(launcher->bringToForegroundCalls.count(), 0);
26079c1bb561 201039_01
hgs
parents:
diff changeset
   139
    }
26079c1bb561 201039_01
hgs
parents:
diff changeset
   140
26079c1bb561 201039_01
hgs
parents:
diff changeset
   141
    QTEST_MAIN(TestAfActivation)