activityfw/orbitintegration/hb/tsrc/unit/unittest_hbactivitymanager/unittest_hbactivitymanager/unittest_hbactivitymanager.cpp
changeset 117 c63ee96dbe5f
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/activityfw/orbitintegration/hb/tsrc/unit/unittest_hbactivitymanager/unittest_hbactivitymanager/unittest_hbactivitymanager.cpp	Thu Sep 16 12:11:40 2010 +0100
@@ -0,0 +1,182 @@
+/*
+* ============================================================================
+*  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"