activityfw/orbitintegration/hb/tsrc/unit/unittest_hbactivitymanager/unittest_hbactivitymanager/unittest_hbactivitymanager.cpp
/*
* ============================================================================
* Name : unittest_hbactivitymanager.cpp
* Part of : LibHb / HbActivityManager
* Description : HbActivityManager unit tests
* Version : %version: 5 %
*
* 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 TestHbActivityManager : public QObject
{
Q_OBJECT
public slots:
void cleanup();
private slots:
void testConstruction();
void testAddActivity();
void testRemoveActivity();
void testActivityData();
void testUpdateActivity();
void testWaitActivity();
void testActivities();
void testCommandLineParsing();
void testFalseAndEmptyValuesReturnedWhenPluginCannotBeLoaded();
};
void TestHbActivityManager::cleanup()
{
HbActivityManager manager;
manager.removeActivity("TestActivity1");
manager.removeActivity("TestActivity2");
}
void TestHbActivityManager::testConstruction()
{
HbActivityManager *manager = new HbActivityManager;
QVERIFY(manager);
delete manager;
}
void TestHbActivityManager::testAddActivity()
{
HbActivityManager manager;
QVERIFY(manager.addActivity("TestActivity1", "TestData", QVariantHash()));
// cannot add same activity twice
QVERIFY(!manager.addActivity("TestActivity1", "TestData2", QVariantHash()));
}
void TestHbActivityManager::testRemoveActivity()
{
HbActivityManager manager;
// activity have to be added before it's deleted
QVERIFY(!manager.removeActivity("TestActivity1"));
QVERIFY(manager.addActivity("TestActivity1", "TestData", QVariantHash()));
QVERIFY(manager.removeActivity("TestActivity1"));
}
void TestHbActivityManager::testActivityData()
{
HbActivityManager manager;
// empty data is returned for non existing activity
QCOMPARE(manager.activityData("TestActivity1"), QVariant());
// correct data is returned for existing activity
QVERIFY(manager.addActivity("TestActivity1", "TestData", QVariantHash()));
QCOMPARE(manager.activityData("TestActivity1"), QVariant("TestData"));
}
void TestHbActivityManager::testUpdateActivity()
{
HbActivityManager manager;
// activity have to be added before it's updated
QVERIFY(!manager.updateActivity("TestActivity1", "TestData", QVariantHash()));
// activity can be succesfully updated
QVERIFY(manager.addActivity("TestActivity1", "TestData", QVariantHash()));
QCOMPARE(manager.activityData("TestActivity1"), QVariant("TestData"));
QVERIFY(manager.updateActivity("TestActivity1", "TestData2", QVariantHash()));
QCOMPARE(manager.activityData("TestActivity1"), QVariant("TestData2"));
}
void TestHbActivityManager::testWaitActivity()
{
HbActivityManager manager;
// mocked plugin returns false when there are no activities, so we have to add something
QVERIFY(manager.addActivity("TestActivity1", "TestData", QVariantHash()));
QVERIFY(manager.waitActivity());
}
void TestHbActivityManager::testActivities()
{
HbActivityManager manager;
// empty list returned when there is no activities
QCOMPARE(manager.activities().count(), 0);
QVERIFY(manager.addActivity("TestActivity1", "TestData", QVariantHash()));
QCOMPARE(manager.activities().count(), 1);
QVERIFY(manager.addActivity("TestActivity2", "TestData", QVariantHash()));
QCOMPARE(manager.activities().count(), 2);
}
void TestHbActivityManager::testCommandLineParsing()
{
HbActivityManager manager;
// fake activity plugin returns valid fake activity when QStringList with
// single "UnitTest" QString is used as argument
Hb::ActivationReason reason(Hb::ActivationReasonNormal);
QString id;
QVariantHash params;
manager.parseCommandLine(QStringList(), reason, id, params);
QCOMPARE(reason, Hb::ActivationReasonNormal);
QCOMPARE(id, QString());
QVERIFY(params.isEmpty());
manager.parseCommandLine(QStringList("UnitTest"), reason, id, params);
QCOMPARE(reason, Hb::ActivationReasonActivity);
QCOMPARE(id, QString("TestActivity"));
QCOMPARE(params.count(), 2);
QVERIFY(params.contains("activityname"));
QCOMPARE(params.value("activityname"), QVariant("TestActivity"));
QVERIFY(params.contains("fakeParam"));
QCOMPARE(params.value("fakeParam"), QVariant("fakeValue"));
}
void TestHbActivityManager::testFalseAndEmptyValuesReturnedWhenPluginCannotBeLoaded()
{
QSKIP("This test can't be performed, because the plugin path is hardcoded into HbActivityManager", SkipAll);
QVERIFY(QFile::rename("/resource/qt/plugins/hbactivityplugin.qtplugin", "/resource/qt/plugins/hbactivityplugin.tmp"));
HbActivityManager manager;
// every method will return false or empty value
QVERIFY(!manager.addActivity("TestActivity1", "TestData2", QVariantHash()));
QVERIFY(!manager.removeActivity("TestActivity1"));
QCOMPARE(manager.activityData("TestActivity1"), QVariant());
QVERIFY(!manager.updateActivity("TestActivity1", "TestData", QVariantHash()));
QVERIFY(!manager.waitActivity());
QCOMPARE(manager.activities().count(), 0);
QVERIFY(QFile::rename("/resource/qt/plugins/hbactivityplugin.tmp", "/resource/qt/plugins/hbactivityplugin.qtplugin"));
}
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);
TestHbActivityManager tc;
int ret = QTest::qExec(&tc, argc, argv);
QMetaObject::invokeMethod(&app, "aboutToQuit", Qt::DirectConnection);
return ret;
}
#include "unittest_hbactivitymanager.moc"