phoneplugins/infowidgetplugin/tsrc/ut_infowidget/src/ut_infowidget.cpp
changeset 45 6b911d05207e
child 46 bc5a64e5bc3c
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/phoneplugins/infowidgetplugin/tsrc/ut_infowidget/src/ut_infowidget.cpp	Wed Jun 23 18:12:20 2010 +0300
@@ -0,0 +1,823 @@
+/*
+* 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 <QString>
+#include <QPainter>
+#include <QEvent>
+#include <QGraphicsWidget>
+#include <QGraphicsSceneMouseEvent>
+#include <HbMarqueeItem>
+#include <HbPushButton>
+#include <HbCheckBox>
+#include <HbEvent>
+#include <HbColorScheme>
+#include <hbframedrawer.h>
+#include "ut_infowidget.h"
+#include "qtestmains60.h"
+
+#define private friend class UT_InfoWidget;private
+#include "infowidget.h"
+
+// mocked dependencies
+#include "infowidgetpreferences.h"
+
+const QString KPreferenceOn("On"); 
+const QString KPreferenceOff("Off"); 
+const QString KSpnName("testprovider");
+const QString KMcnName("tnw1: 3233255435"); 
+const QString KSatText("satdisplaytesttext"); 
+
+
+// Stub 
+void QGraphicsWidget::resize( 
+        const QSizeF & size ) 
+{
+    Q_UNUSED(size); 
+}
+
+
+/*!
+  UT_InfoWidget::UT_InfoWidget
+ */
+UT_InfoWidget::UT_InfoWidget() 
+    : m_infoWidget(0)
+{
+    m_modelData.setActiveLine(1);
+    m_modelData.setHomeZoneIndicatorType(1);
+    m_modelData.setMcnName(KMcnName);
+    m_modelData.setServiceProviderName(KSpnName);
+    m_modelData.setSatDisplayText(KSatText);
+    
+    SmcDefaultValue<const InfoWidgetEngine::ModelData &>::SetL(m_modelData);
+    SmcDefaultValue<QColor>::SetL(m_qcolor);
+    SmcDefaultValue<QGraphicsWidget*>::SetL(&m_qgraphicswidget);
+}
+
+/*!
+  UT_InfoWidget::~UT_InfoWidget
+ */
+UT_InfoWidget::~UT_InfoWidget()
+{
+    delete m_infoWidget;
+}
+
+/*!
+  UT_InfoWidget::init
+ */
+void UT_InfoWidget::init()
+{
+    initialize();
+    
+    SmcDefaultValue<QString>::SetL("On");
+    SmcDefaultValue<InfoWidgetLayoutManager::DisplayRole>::SetL(
+        InfoWidgetLayoutManager::InfoDisplay);
+    m_infoWidget = new InfoWidget();
+    SmcDefaultValue<QString>::SetL("");
+    
+    QVERIFY(verify());
+}
+
+/*!
+  UT_InfoWidget::cleanup
+ */
+void UT_InfoWidget::cleanup()
+{
+    reset();
+    
+    delete m_infoWidget;
+    m_infoWidget = 0;
+}
+
+/*!
+  UT_InfoWidget::t_boundingRect
+ */
+void UT_InfoWidget::t_boundingRect()
+{
+    m_infoWidget->boundingRect();
+}
+
+/*!
+  UT_InfoWidget::t_shape
+ */
+void UT_InfoWidget::t_shape()
+{
+    m_infoWidget->shape();
+}
+
+
+/*!
+  UT_InfoWidget::t_sizePolicy
+ */
+void UT_InfoWidget::t_sizePolicy()
+{
+    QVERIFY(m_infoWidget->sizePolicy() == 
+        QSizePolicy(QSizePolicy::Fixed, QSizePolicy::Fixed));
+}
+
+/*!
+  UT_InfoWidget::t_setSpnDisplay
+ */
+void UT_InfoWidget::t_setSpnDisplay()
+{
+    EXPECT(InfoWidgetPreferences::setPreference)
+        .with(InfoWidgetPreferences::DisplaySpn, KPreferenceOn);
+    
+    m_infoWidget->setSpnDisplay(KPreferenceOn);
+    
+    QVERIFY(verify());
+}
+
+/*!
+  UT_InfoWidget::t_setMcnDisplay
+ */
+void UT_InfoWidget::t_setMcnDisplay()
+{
+    EXPECT(InfoWidgetPreferences::setPreference)
+        .with(InfoWidgetPreferences::DisplayMcn, KPreferenceOn);
+    
+    m_infoWidget->setMcnDisplay(KPreferenceOn);
+    
+    QVERIFY(verify());
+}
+
+/*!
+  UT_InfoWidget::t_setSatDisplay
+ */
+void UT_InfoWidget::t_setSatDisplay()
+{
+    EXPECT(InfoWidgetPreferences::setPreference)
+        .with(InfoWidgetPreferences::DisplaySatText, KPreferenceOn);
+    
+    m_infoWidget->setSatDisplay(KPreferenceOn);
+    
+    QVERIFY(verify());
+}
+
+/*!
+  UT_InfoWidget::t_paint
+ */
+void UT_InfoWidget::t_paint()
+{
+    QScopedPointer<QPainter> painter(new QPainter());
+    QStyleOptionGraphicsItem *option = NULL;
+    QWidget *widget = NULL;
+    
+    m_infoWidget->paint(painter.data(), option, widget);
+    
+    // layout change ongoing while paint requested
+    m_infoWidget->startChanges();
+    m_infoWidget->paint(painter.data(), option, widget);
+}
+
+/*!
+  UT_InfoWidget::t_mousePressEvent
+ */
+void UT_InfoWidget::t_mousePressEvent()
+{
+    QGraphicsSceneMouseEvent event;
+    m_infoWidget->mousePressEvent(&event);
+}
+
+/*!
+  UT_InfoWidget::t_mouseReleaseEvent
+ */
+void UT_InfoWidget::t_mouseReleaseEvent()
+{
+    QGraphicsSceneMouseEvent event;
+    
+    // widget clicked while showing info display => 
+    // switch to settings display expected
+    EXPECT(InfoWidgetLayoutManager::currentDisplayRole)
+        .returns(InfoWidgetLayoutManager::InfoDisplay);
+    EXPECT(InfoWidgetLayoutManager::layoutSettingsDialog);
+    m_infoWidget->mousePressEvent(&event);
+    m_infoWidget->mouseReleaseEvent(&event);
+    
+    // widget clicked while showing settings display => 
+    // no action expected
+    EXPECT(InfoWidgetLayoutManager::currentDisplayRole)
+        .returns(InfoWidgetLayoutManager::SettingsDialog);
+    EXPECT(InfoWidgetLayoutManager::layoutSettingsDialog).times(0);
+    m_infoWidget->mousePressEvent(&event);
+    m_infoWidget->mouseReleaseEvent(&event);
+    
+    // release event received after dragging widget => 
+    // no action expected
+    EXPECT(InfoWidgetLayoutManager::layoutSettingsDialog).times(0);
+    m_infoWidget->mouseMoveEvent(&event);
+    m_infoWidget->mouseReleaseEvent(&event);
+    
+    QVERIFY(verify());
+}
+
+/*!
+  UT_InfoWidget::t_mouseMoveEvent
+ */
+void UT_InfoWidget::t_mouseMoveEvent()
+{
+    
+}
+
+/*!
+  UT_InfoWidget::t_updateInfoDisplay
+ */
+void UT_InfoWidget::t_updateInfoDisplay()
+{
+    HbMarqueeItem spnMarqueeItem; 
+    HbMarqueeItem mcnMarqueeItem;
+    HbMarqueeItem satMarqueeItem; 
+    QGraphicsWidget* pointerSpnMarqueeItem = qobject_cast<QGraphicsWidget *>(&spnMarqueeItem);
+    QGraphicsWidget* pointerMcnMarqueeItem = qobject_cast<QGraphicsWidget *>(&mcnMarqueeItem);
+    QGraphicsWidget* pointerSatMarqueeItem = qobject_cast<QGraphicsWidget *>(&satMarqueeItem);
+
+    // Precondition: 
+    m_infoWidget->m_initialized = true; 
+    
+    InfoWidgetEngine::ModelData modelData;
+    modelData.setMcnName("testmcn"); 
+    modelData.setServiceProviderName("testspn");  
+    modelData.setSatDisplayText("testsat"); 
+    const InfoWidgetEngine::ModelData& modelDataConstRef(modelData); 
+    
+    // Test 1: text data has been initialized to model (in UT_InfoWidget::UT_InfoWidget())
+    EXPECT(InfoWidgetLayoutManager::currentDisplayRole).returns(InfoWidgetLayoutManager::InfoDisplay);
+    EXPECT(InfoWidgetEngine::modelData).returns(modelDataConstRef);
+
+    EXPECT(InfoWidgetLayoutManager::getWidget)
+        .with(InfoWidgetLayoutManager::RoleSpnMarqueeItem)
+        .returns(pointerSpnMarqueeItem);
+    EXPECT(HbMarqueeItem::setText);
+    EXPECT(HbMarqueeItem::setTextColor);
+    EXPECT(QGraphicsWidget::adjustSize); 
+    EXPECT(InfoWidgetLayoutManager::textFitsToRect)
+        .returns(false);
+
+    EXPECT(InfoWidgetLayoutManager::getWidget)
+        .with(InfoWidgetLayoutManager::RoleMcnMarqueeItem)
+        .returns(pointerSpnMarqueeItem);
+    EXPECT(HbMarqueeItem::setText);
+    EXPECT(HbMarqueeItem::setTextColor);
+    EXPECT(QGraphicsWidget::adjustSize); 
+    EXPECT(InfoWidgetLayoutManager::textFitsToRect)
+        .returns(false);
+
+    EXPECT(InfoWidgetLayoutManager::getWidget)
+        .with(InfoWidgetLayoutManager::RoleSatMarqueeItem)
+        .returns(pointerSatMarqueeItem);
+    
+    EXPECT(HbMarqueeItem::setText);
+    EXPECT(HbMarqueeItem::setTextColor);
+    EXPECT(QGraphicsWidget::adjustSize); 
+    EXPECT(InfoWidgetLayoutManager::textFitsToRect)
+        .returns(false);
+ 
+    m_infoWidget->updateInfoDisplay();
+    QVERIFY(m_infoWidget->m_animatingItems.count() == 3); 
+    
+    QVERIFY(verify());
+    
+    // Test 2: empty data, verify items are not appended to m_animatingItems
+    EXPECT(InfoWidgetLayoutManager::currentDisplayRole).returns(InfoWidgetLayoutManager::InfoDisplay);
+    EXPECT(InfoWidgetEngine::modelData).returns(modelDataConstRef);
+
+    m_modelData.setServiceProviderName("testspn");
+    m_modelData.setMcnName("testmcn");
+    m_modelData.setSatDisplayText("testsat");
+    EXPECT(InfoWidgetLayoutManager::getWidget)
+        .with(InfoWidgetLayoutManager::RoleSpnMarqueeItem)
+        .returns(pointerSpnMarqueeItem);
+    EXPECT(HbMarqueeItem::setText);
+    EXPECT(HbMarqueeItem::setTextColor);
+    EXPECT(QGraphicsWidget::adjustSize); 
+    EXPECT(InfoWidgetLayoutManager::textFitsToRect)
+        .returns(true);
+    
+    EXPECT(InfoWidgetLayoutManager::getWidget)
+        .with(InfoWidgetLayoutManager::RoleMcnMarqueeItem)
+        .returns(pointerSpnMarqueeItem);
+    EXPECT(HbMarqueeItem::setText);
+    EXPECT(HbMarqueeItem::setTextColor);
+    EXPECT(QGraphicsWidget::adjustSize); 
+    EXPECT(InfoWidgetLayoutManager::textFitsToRect)
+        .returns(true);
+
+    EXPECT(InfoWidgetLayoutManager::getWidget)
+        .with(InfoWidgetLayoutManager::RoleSatMarqueeItem)
+        .returns(pointerSatMarqueeItem);
+    EXPECT(HbMarqueeItem::setText);
+    EXPECT(HbMarqueeItem::setTextColor);
+    EXPECT(QGraphicsWidget::adjustSize); 
+    EXPECT(InfoWidgetLayoutManager::textFitsToRect)
+        .returns(true);
+
+    m_infoWidget->updateInfoDisplay();
+    QVERIFY(m_infoWidget->m_animatingItems.count() == 0); 
+    
+    QVERIFY(verify());
+    
+    // Change state: 
+    m_infoWidget->m_initialized = false; 
+    m_infoWidget->updateInfoDisplay();
+    QVERIFY(m_infoWidget->m_animatingItems.count() == 0); 
+    
+    QVERIFY(verify());
+}
+
+/*!
+  UT_InfoWidget::t_readPersistentPreferences
+ */
+void UT_InfoWidget::t_readPersistentPreferences()
+{    
+    EXPECT(InfoWidgetPreferences::setPreference)
+        .with(InfoWidgetPreferences::DisplayHomeZone, QString(""));
+
+    EXPECT(InfoWidgetPreferences::setPreference)
+        .with(InfoWidgetPreferences::DisplayMcn, QString(""));
+    
+    EXPECT(InfoWidgetPreferences::setPreference)
+        .with(InfoWidgetPreferences::DisplayActiveLine, QString(""));
+    
+    EXPECT(InfoWidgetPreferences::setPreference)
+        .with(InfoWidgetPreferences::DisplaySatText, QString(""));
+
+    EXPECT(InfoWidgetPreferences::setPreference)
+        .with(InfoWidgetPreferences::DisplaySpn, QString(""));
+    
+    EXPECT(InfoWidgetPreferences::validate);
+
+    m_infoWidget->readPersistentPreferences();
+    
+    QVERIFY(verify());
+    
+    // one visible item initially
+    EXPECT(InfoWidgetPreferences::validate).returns(true);
+    EXPECT(InfoWidgetPreferences::storePreferences);
+    
+    m_infoWidget->readPersistentPreferences();
+    
+    QVERIFY(verify());
+}
+
+/*!
+  UT_InfoWidget::t_onInitialize
+ */
+void UT_InfoWidget::t_onInitialize()
+{    
+    QGraphicsWidget *contentWidget = NULL; 
+
+    // Test onInitialize sequence where 
+    // meta-object properties have been 
+    // initialized 
+    EXPECT(InfoWidgetPreferences::validate)
+        .returns(true);
+    EXPECT(InfoWidgetPreferences::storePreferences)
+        .returns(true);
+    EXPECT(InfoWidgetLayoutManager::contentWidget)
+        .returns(contentWidget);
+      
+    m_infoWidget->onInitialize();
+    
+    // Test onInitialize sequence where 
+    // meta-object properties are 
+    // uninitialized 
+    EXPECT(InfoWidgetPreferences::validate)
+        .returns(false);
+    EXPECT(InfoWidgetLayoutManager::contentWidget)
+        .returns(contentWidget);
+    m_infoWidget->onInitialize();
+}
+
+/*!
+  UT_InfoWidget::t_onUninitialize
+ */
+void UT_InfoWidget::t_onUninitialize()
+{
+    m_infoWidget->onUninitialize(); 
+}
+
+/*!
+  UT_InfoWidget::t_onShow
+ */
+void UT_InfoWidget::t_onShow()
+{
+    
+    m_infoWidget->m_animationState = InfoWidget::AnimationIdle; 
+    EXPECT(InfoWidgetEngine::resume);
+    m_infoWidget->onShow();
+    
+    m_infoWidget->m_animationState = InfoWidget::AnimationOngoing;
+    EXPECT(InfoWidgetEngine::resume);
+    m_infoWidget->onShow();
+    
+    m_infoWidget->m_animationState = InfoWidget::AnimationStarting;
+    EXPECT(InfoWidgetEngine::resume);
+    m_infoWidget->onShow(); 
+
+}
+
+/*!
+  UT_InfoWidget::t_onHide
+ */
+void UT_InfoWidget::t_onHide()
+{
+    m_infoWidget->onHide(); 
+}
+
+/*!
+  UT_InfoWidget::t_readModel
+ */
+void UT_InfoWidget::t_readModel()
+{
+    EXPECT(InfoWidgetLayoutManager::currentDisplayRole)
+        .returns(InfoWidgetLayoutManager::InfoDisplay);
+    m_infoWidget->readModel();
+    
+    EXPECT(InfoWidgetLayoutManager::currentDisplayRole)
+        .returns(InfoWidgetLayoutManager::SettingsDialog);
+    m_infoWidget->readModel();
+    
+    QVERIFY(verify());
+}
+
+/*!
+  UT_InfoWidget::t_handleModelError
+ */
+void UT_InfoWidget::t_handleModelError()
+{
+    int operation(0);
+    int errorCode(0); 
+    m_infoWidget->handleModelError(operation, errorCode); 
+}
+
+void UT_InfoWidget::t_spnDisplaySettingChanged()
+{
+    // user enables home zone setting
+    EXPECT(InfoWidgetPreferences::setPreference)
+        .with(InfoWidgetPreferences::DisplaySpn, KPreferenceOn);
+    int setting(Qt::Checked);
+    m_infoWidget->spnDisplaySettingChanged(setting);
+    
+    // user disables home zone setting
+    EXPECT(InfoWidgetPreferences::setPreference)
+        .with(InfoWidgetPreferences::DisplaySpn, KPreferenceOff);
+    setting = Qt::Unchecked;
+    m_infoWidget->spnDisplaySettingChanged(setting);
+    
+    QVERIFY(verify());
+}
+
+void UT_InfoWidget::t_mcnDisplaySettingChanged()
+{
+    // user enables MCN setting
+    EXPECT(InfoWidgetPreferences::setPreference)
+        .with(InfoWidgetPreferences::DisplayMcn, KPreferenceOn);
+    int setting(Qt::Checked);
+    m_infoWidget->mcnDisplaySettingChanged(setting);
+    
+    // user disables MCN setting
+    EXPECT(InfoWidgetPreferences::setPreference)
+        .with(InfoWidgetPreferences::DisplayMcn, KPreferenceOff);
+    setting = Qt::Unchecked;
+    m_infoWidget->mcnDisplaySettingChanged(setting);
+    
+    QVERIFY(verify());
+}
+
+void UT_InfoWidget::t_satDisplaySettingChanged()
+{
+    // user enables SAT setting
+    EXPECT(InfoWidgetPreferences::setPreference)
+        .with(InfoWidgetPreferences::DisplaySatText, KPreferenceOn);
+    int setting(Qt::Checked);
+    m_infoWidget->satDisplaySettingChanged(setting);
+    
+    // user disables SAT setting
+    EXPECT(InfoWidgetPreferences::setPreference)
+        .with(InfoWidgetPreferences::DisplaySatText, KPreferenceOff);
+    setting = Qt::Unchecked;
+    m_infoWidget->satDisplaySettingChanged(setting);
+    
+    QVERIFY(verify());
+}
+
+void UT_InfoWidget::t_settingsEditingFinished()
+{
+    EXPECT(InfoWidgetPreferences::validate)
+        .returns(true);
+    EXPECT(InfoWidgetPreferences::storePreferences)
+        .returns(false);
+
+    QGraphicsWidget *contentWidget = NULL; 
+    EXPECT(InfoWidgetLayoutManager::contentWidget)
+        .returns(contentWidget);
+
+    m_infoWidget->settingsEditingFinished(); 
+}
+
+void UT_InfoWidget::t_updateItemsVisibility()
+{
+    // all items visible
+    EXPECT(InfoWidgetPreferences::preference)
+        .with(InfoWidgetPreferences::DisplaySpn)
+        .returns(KPreferenceOn);
+    EXPECT(InfoWidgetPreferences::preference)
+        .with(InfoWidgetPreferences::DisplayMcn)
+        .returns(KPreferenceOn);
+    EXPECT(InfoWidgetPreferences::preference)
+        .with(InfoWidgetPreferences::DisplaySatText)
+        .returns(KPreferenceOn);
+    EXPECT(InfoWidgetLayoutManager::setLayoutRows)
+        .with(3);
+    
+    m_infoWidget->updateItemsVisibility();
+    QVERIFY(verify());
+
+}
+
+void UT_InfoWidget::t_layoutInfoDisplay()
+{
+    QGraphicsWidget *contentWidget = NULL; 
+    EXPECT(InfoWidgetLayoutManager::contentWidget)
+        .returns(contentWidget);
+    
+    m_infoWidget->layoutInfoDisplay();
+    
+    QVERIFY(verify());
+}
+
+void UT_InfoWidget::t_layoutSettingsDialog()
+{
+    m_infoWidget->layoutSettingsDialog();
+    
+    QVERIFY(verify());
+}
+
+void UT_InfoWidget::t_initializeSettingsDialogItems()
+{
+    QGraphicsWidget spnCheckBox;
+    EXPECT(InfoWidgetLayoutManager::getWidget)
+        .with(InfoWidgetLayoutManager::RoleSpnCheckBox)
+        .returns(&spnCheckBox);
+
+    QGraphicsWidget mcnCheckBox;
+    EXPECT(InfoWidgetLayoutManager::getWidget)
+        .with(InfoWidgetLayoutManager::RoleMcnCheckBox)
+        .returns(&mcnCheckBox);
+    
+    QGraphicsWidget satTextCheckBox;
+    EXPECT(InfoWidgetLayoutManager::getWidget)
+        .with(InfoWidgetLayoutManager::RoleSatTextCheckBox)
+        .returns(&satTextCheckBox);
+    
+    m_infoWidget->initializeSettingsDialogItems();
+    
+    QVERIFY(verify());
+}
+
+void UT_InfoWidget::t_startChanges()
+{
+    m_infoWidget->startChanges();
+}
+
+void UT_InfoWidget::t_endChanges()
+{
+    m_infoWidget->endChanges();
+}
+
+/*!
+  UT_InfoWidget::t_changeEvent
+ */
+void UT_InfoWidget::t_changeEvent()
+{
+    /*
+     * Not work from commmand prompt.
+     */
+    HbEvent event(HbEvent::ThemeChanged);
+    EXPECT(HbWidget::changeEvent).with(&event);
+    m_infoWidget->changeEvent(&event);
+    QVERIFY(verify());
+}
+
+/*!
+  UT_InfoWidget::t_sizeHint
+ */
+void UT_InfoWidget::t_sizeHint()
+{   
+    const QSizeF KMinimumSize(33.5, 160);
+    const QSizeF KPreferredSize(134, 160);
+    const QSizeF KDefaultSizeInfoDisplay(200, 100);
+    const QSizeF KDefaultSizeSettingsDisplay(230, 220);
+    QGraphicsWidget *contentWidget = NULL; 
+    
+    // Test: initial size after construction  
+    Qt::SizeHint sizeHint = Qt::PreferredSize;
+    QSizeF constraint = QSizeF();
+    QVERIFY(KDefaultSizeInfoDisplay == m_infoWidget->sizeHint(
+            sizeHint, constraint));
+
+    EXPECT(InfoWidgetLayoutManager::contentWidget)
+        .returns(contentWidget);
+
+    // Test: size after onInitialize is called 
+    // and current display is InfoDisplay 
+    m_infoWidget->onInitialize();
+
+    QVERIFY(verify());
+    
+    contentWidget = new QGraphicsWidget;
+    contentWidget->setMinimumSize(KMinimumSize); 
+    EXPECT(InfoWidgetLayoutManager::contentWidget).
+            returns(contentWidget);
+    EXPECT(InfoWidgetPreferences::visibleItemCount).
+            returns(1);
+    
+    // No strict verification.
+    // Data in docml is in "un" format and strict comparison to pixels won't work  
+    QVERIFY(KDefaultSizeInfoDisplay != m_infoWidget->sizeHint(sizeHint, constraint));
+    
+    QVERIFY(verify());
+
+    delete contentWidget;
+    contentWidget = NULL;
+}
+
+/*!
+  UT_InfoWidget::t_startMarquees
+ */
+void UT_InfoWidget::t_startMarquees()
+{
+    bool started(false);  
+    HbMarqueeItem spnMarqueeItem;
+    HbMarqueeItem mcnMarqueeItem;
+    HbMarqueeItem satMarqueeItem; 
+    
+    // Initialize:
+    m_infoWidget->m_animatingItems.append(&spnMarqueeItem);
+    m_infoWidget->m_animatingItems.append(&mcnMarqueeItem);
+    m_infoWidget->m_animatingItems.append(&satMarqueeItem); 
+    
+    // Test 1: 
+    m_infoWidget->m_animationState = InfoWidget::AnimationIdle; 
+    started = m_infoWidget->startMarquees(InfoWidget::StartNoDelay);
+    QVERIFY(started);
+    QVERIFY(m_infoWidget->m_animationState == InfoWidget::AnimationOngoing);
+    
+    // Test 2:
+    m_infoWidget->m_animationState = InfoWidget::AnimationIdle; 
+    started = m_infoWidget->startMarquees(InfoWidget::StartDelayed);
+    QVERIFY(started);
+    QVERIFY(m_infoWidget->m_animationState == InfoWidget::AnimationStarting); 
+            
+    // Test 3:
+    m_infoWidget->m_animationState = InfoWidget::AnimationStarting; 
+    started = m_infoWidget->startMarquees(InfoWidget::StartDelayed);
+    QVERIFY(!started);
+    QVERIFY(m_infoWidget->m_animationState == InfoWidget::AnimationStarting); 
+
+    // Test 4:
+    m_infoWidget->m_animationState = InfoWidget::AnimationOngoing; 
+    started = m_infoWidget->startMarquees(InfoWidget::StartDelayed);
+    QVERIFY(!started);
+    QVERIFY(m_infoWidget->m_animationState == InfoWidget::AnimationOngoing); 
+
+    QVERIFY(verify());   
+}
+
+/*!
+  UT_InfoWidget::t_stopMarquees
+ */
+void UT_InfoWidget::t_stopMarquees()
+{
+    HbMarqueeItem spnMarqueeItem;
+    HbMarqueeItem mcnMarqueeItem;
+    HbMarqueeItem satMarqueeItem; 
+    
+    // Initialize:
+    m_infoWidget->m_animatingItems.append(&spnMarqueeItem);
+    m_infoWidget->m_animatingItems.append(&mcnMarqueeItem);
+    m_infoWidget->m_animatingItems.append(&satMarqueeItem); 
+ 
+    // Test 1: 
+    EXPECT(HbMarqueeItem::isAnimating).
+            returns(false);
+    EXPECT(HbMarqueeItem::isAnimating).
+            returns(false);
+    EXPECT(HbMarqueeItem::isAnimating).
+            returns(false);
+    m_infoWidget->m_animationState = InfoWidget::AnimationOngoing; 
+    m_infoWidget->stopMarquees();
+    
+    QVERIFY(m_infoWidget->m_animationState == InfoWidget::AnimationIdle); 
+    QVERIFY(m_infoWidget->m_animatingItems.count() == 0); 
+    QVERIFY(!m_infoWidget->m_animatingItem); 
+
+ 
+    // Test 2:
+    // Re-initialize:
+    m_infoWidget->m_animatingItems.append(&spnMarqueeItem);
+    m_infoWidget->m_animatingItems.append(&mcnMarqueeItem);
+    m_infoWidget->m_animatingItems.append(&satMarqueeItem); 
+    
+    EXPECT(HbMarqueeItem::isAnimating).
+            returns(true);
+    EXPECT(HbMarqueeItem::isAnimating).
+            returns(true);
+    EXPECT(HbMarqueeItem::isAnimating).
+            returns(true);
+
+    m_infoWidget->m_animationState = InfoWidget::AnimationOngoing; 
+    m_infoWidget->stopMarquees();
+    
+    QVERIFY(m_infoWidget->m_animationState == InfoWidget::AnimationIdle); 
+    QVERIFY(m_infoWidget->m_animatingItems.count() == 0); 
+    QVERIFY(!m_infoWidget->m_animatingItem); 
+
+    
+    QVERIFY(verify());
+}
+
+/*!
+  UT_InfoWidget::t_marqueeNext
+ */
+void UT_InfoWidget::t_marqueeNext()
+{
+    
+    HbMarqueeItem spnMarqueeItem;
+    spnMarqueeItem.setObjectName("id:spnMarqueeItem");
+    HbMarqueeItem mcnMarqueeItem;
+    spnMarqueeItem.setObjectName("id:mcnMarqueeItem");
+    HbMarqueeItem satMarqueeItem; 
+    spnMarqueeItem.setObjectName("id:satMarqueeItem");
+    
+    // Initialize:
+    m_infoWidget->m_animatingItems.append(&spnMarqueeItem);
+    m_infoWidget->m_animatingItems.append(&mcnMarqueeItem);
+    m_infoWidget->m_animatingItems.append(&satMarqueeItem); 
+    m_infoWidget->m_animationState = InfoWidget::AnimationOngoing;
+ 
+    // Test 1: verify loop functionality
+    m_infoWidget->m_animatingItem = &spnMarqueeItem;
+    EXPECT(HbMarqueeItem::isAnimating).
+            returns(false);
+    m_infoWidget->marqueeNext();
+    QVERIFY(m_infoWidget->m_animatingItem == &mcnMarqueeItem); 
+
+    // Test 2: verify loop functionality
+    EXPECT(HbMarqueeItem::isAnimating).
+            returns(false);
+    m_infoWidget->marqueeNext();
+    QVERIFY(m_infoWidget->m_animatingItem == &satMarqueeItem); 
+
+    // Test 3: verify loop functionality, loop to begin
+    EXPECT(HbMarqueeItem::isAnimating).
+            returns(false);
+    m_infoWidget->marqueeNext();
+    QVERIFY(m_infoWidget->m_animatingItem == &spnMarqueeItem); 
+    
+    QVERIFY(verify());
+}
+
+/*!
+  UT_InfoWidget::t_timerEvent
+ */
+void UT_InfoWidget::t_timerEvent()
+{
+    // Test 1: 
+    QScopedPointer<QTimerEvent> timerEvent(new QTimerEvent(0));
+    m_infoWidget->m_animationState = InfoWidget::AnimationStarting; 
+    HbMarqueeItem animatingItem; 
+    if (!m_infoWidget->m_animatingItem) {
+        m_infoWidget->m_animatingItem = &animatingItem; 
+    }
+    
+    m_infoWidget->timerEvent(timerEvent.data());
+    QVERIFY(m_infoWidget->m_animationState == InfoWidget::AnimationOngoing); 
+
+    // Test 2: 
+    m_infoWidget->m_animationState = InfoWidget::AnimationStarting; 
+    m_infoWidget->m_animatingItem = NULL;  
+    m_infoWidget->timerEvent(timerEvent.data());
+    QVERIFY(m_infoWidget->m_animationState == InfoWidget::AnimationStarting); 
+
+    // Test 3: 
+    m_infoWidget->m_animationState = InfoWidget::AnimationIdle; 
+    QVERIFY(m_infoWidget->m_animationState == InfoWidget::AnimationIdle); 
+    
+    QVERIFY(verify());
+}
+
+
+QTEST_MAIN_S60(UT_InfoWidget)