activityfw/orbitintegration/hb/tsrc/unit/unittest_hbapplication/unittest_hbapplication/unittest_hbapplication.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

/*
* ============================================================================
*  Name        : unittest_hbapplication.cpp
*  Part of     : LibHb / HbApplication
*  Description : HbApplication unit tests
*  Version     : %version: 4 %
*
*  Copyright (c) 2008-2009 Nokia.  All rights reserved.
*  This material, including documentation and any related computer
*  programs, is protected by copyright controlled by Nokia.  All
*  rights are reserved.  Copying, including reproducing, storing,
*  adapting or translating, any or all of this material requires the
*  prior written consent of Nokia.  This material also contains
*  confidential information which may not be disclosed to others
*  without the prior written consent of Nokia.
* ============================================================================
*/

#include <QtTest/QtTest>

#include <hbapplication.h>
#include <hbactivitymanager.h>
#include <hbtest.h>

class TestHbApplication : public QObject
{
    Q_OBJECT

public slots:
    void cleanup();
    
private slots:
	void testHideSplash();
    void testActivityManager();
    void testActivityGettersForNoActivity();
    void testActivityGettersAfterActivitySignal();

private:
    HbApplication *hbApp() {return qobject_cast<HbApplication*>(qApp);}
    
};


void TestHbApplication::cleanup()
{
    HbActivityManager *manager = hbApp()->activityManager();
    manager->removeActivity("TestActivity1");
}

void TestHbApplication::testHideSplash()
{
    HbApplication *app = static_cast<HbApplication *>(qApp);
    app->hideSplash();
    app->hideSplash();
}

void TestHbApplication::testActivityManager() 
{
    QVERIFY(hbApp()->activityManager());
}

void TestHbApplication::testActivityGettersForNoActivity() 
{
    HbApplication *app = hbApp();
    QCOMPARE(app->activateReason(), Hb::ActivationReasonNormal);
    QCOMPARE(app->activateId(), QString());
    QCOMPARE(app->activateData(), QVariant());
    QCOMPARE(app->activateParams(), QVariantHash());
}

void TestHbApplication::testActivityGettersAfterActivitySignal() 
{
    HbApplication *app = hbApp();
    HbActivityManager *manager = app->activityManager();
    
    // our fake activity manager emits the activity singal immediately 
    // after wait, given that there is any activity added    
    QVERIFY(manager->addActivity("TestActivity1", "TestData", QVariantHash()));
    
    QSignalSpy spy(app, SIGNAL(activate()));
    QVERIFY(spy.isValid());
    
    QVERIFY(manager->waitActivity());
    QCOMPARE(spy.count(), 1);
    
    QCOMPARE(app->activateReason(), Hb::ActivationReasonActivity);
    QCOMPARE(app->activateId(), QString("TestActivity1"));
    QCOMPARE(app->activateData(), QVariant("TestData"));
}

int main(int argc, char *argv[])
{
#if defined(Q_OS_WIN32) || defined(Q_OS_LINUX)
    QCoreApplication::addLibraryPath("testplugins/");
#elif defined(Q_OS_SYMBIAN)
    QCoreApplication::addLibraryPath("/resource/qt/plugins/testplugins/");
#endif
    
    HbApplication app(argc, argv);
    TestHbApplication tc;
    int ret = QTest::qExec(&tc, argc, argv);
    QMetaObject::invokeMethod(&app, "aboutToQuit", Qt::DirectConnection);
    return ret;
}

#include "unittest_hbapplication.moc"