calendarui/views/dayview/tsrc/unittests/unittest_calendaycontentwidget/unittest_calendaycontentwidget.cpp
changeset 75 7ac58b2aae6f
parent 45 b6db4fd4947b
--- a/calendarui/views/dayview/tsrc/unittests/unittest_calendaycontentwidget/unittest_calendaycontentwidget.cpp	Mon Sep 06 15:58:44 2010 +0530
+++ b/calendarui/views/dayview/tsrc/unittests/unittest_calendaycontentwidget/unittest_calendaycontentwidget.cpp	Mon Sep 20 12:44:39 2010 +0530
@@ -17,8 +17,9 @@
 #include <QGraphicsItem>
 #include <QtTest/QtTest>
 
+#define private public
 
-#include "calendaymodelmanager.h"
+#include "calendayitemview.h"
 #include "calendaycontentwidget.h"
 
 class TestCalenContentWidget : public QObject
@@ -36,9 +37,13 @@
     void cleanup();
 
     void testConstructors();
+    void testAdd();
+    void testTake();
+    void testRemove();
+    void testRelayoutWidgets();
+    void testWidgetScrolled(); 
 
 private:
-    CalenDayModelManager *mModelMgr;
     CalenDayContentWidget *mContentWidget;
 };
 
@@ -46,7 +51,7 @@
  Constructor
  */
 TestCalenContentWidget::TestCalenContentWidget() :
-    mModelMgr(NULL), mContentWidget(NULL)
+    mContentWidget(NULL)
 {
 
 }
@@ -64,7 +69,6 @@
  */
 void TestCalenContentWidget::initTestCase()
 {
-    mModelMgr = new CalenDayModelManager();
 }
 
 /*!
@@ -72,9 +76,6 @@
  */
 void TestCalenContentWidget::cleanupTestCase()
 {
-    if (mModelMgr) {
-        delete mModelMgr;
-    }
 }
 
 /*!
@@ -82,7 +83,7 @@
  */
 void TestCalenContentWidget::init()
 {
-
+    mContentWidget = new CalenDayContentWidget();
 }
 
 /*!
@@ -102,9 +103,217 @@
  */
 void TestCalenContentWidget::testConstructors()
 {
-    QVERIFY(!mContentWidget);
-    mContentWidget = new CalenDayContentWidget(*mModelMgr);
-    QVERIFY(mContentWidget);
+    CalenDayContentWidget *contentWidget = NULL;
+    
+    QVERIFY(!contentWidget);
+    contentWidget = new CalenDayContentWidget();
+    QVERIFY(contentWidget);
+    
+    delete contentWidget;
+}
+
+/*!
+ Test add() function
+ 1. Test no error when trying to add NULL pointer
+ 2. Test if widget is added correctly and layout is created
+ 3. Test if widget is added correctly at end of list
+ 4. Test if widget is added correctly as first item
+ 5. Test if widget is added correctly when no position is specified
+ */
+void TestCalenContentWidget::testAdd()
+{
+    QCOMPARE(mContentWidget->mWidgets.count(), 0);
+    QVERIFY(!mContentWidget->mLayout);
+    
+    //1)
+    mContentWidget->add(NULL);
+    QCOMPARE(mContentWidget->mWidgets.count(), 0);
+    QVERIFY(!mContentWidget->mLayout);
+    
+    //2)
+    HbWidget *second = new HbWidget();
+    mContentWidget->add(second);
+    QVERIFY(mContentWidget->mLayout);
+    QCOMPARE(mContentWidget->mWidgets.count(), 1);
+    
+    //3)
+    HbWidget *last = new HbWidget();
+    mContentWidget->add(last, CalenDayContentWidget::ECalenLastWidget);
+    QCOMPARE(mContentWidget->mWidgets.count(), 2);
+    QCOMPARE(mContentWidget->mWidgets.at(1), last);
+    
+    //4)
+    HbWidget *first = new HbWidget();
+    mContentWidget->add(first, CalenDayContentWidget::ECalenFirstWidget);
+    QCOMPARE(mContentWidget->mWidgets.count(), 3);
+    QCOMPARE(mContentWidget->mWidgets.at(0), first);
+    
+    //5)
+    HbWidget *other = new HbWidget();
+    mContentWidget->add(other, CalenDayContentWidget::CalenWidgetPosition(-1));
+    QCOMPARE(mContentWidget->mWidgets.count(), 4);
+    QCOMPARE(mContentWidget->mWidgets.last(), other);
+}
+
+/*!
+ Test take() function
+ 1. Test NULL pointer if there are no widgets to be taken
+ 2. Test if first widget is taken correctly
+ 3. Test if last widget is taken correctly
+ 4. Test default behavior if wrong position is specified
+ */
+void TestCalenContentWidget::testTake()
+{
+    QCOMPARE(mContentWidget->mWidgets.count(), 0);
+    
+    //1)
+    QVERIFY(!mContentWidget->take(CalenDayContentWidget::ECalenFirstWidget));
+    
+    // Prepare data
+    HbWidget *first = new HbWidget();
+    HbWidget *second = new HbWidget();
+    HbWidget *last = new HbWidget();
+    mContentWidget->add(first);
+    mContentWidget->add(second);
+    mContentWidget->add(last);
+    QCOMPARE(mContentWidget->mWidgets.count(), 3);
+        
+    //2)
+    HbWidget *widget = mContentWidget->take(CalenDayContentWidget::ECalenFirstWidget);
+    QCOMPARE(mContentWidget->mWidgets.count(), 2);
+    QCOMPARE(widget, first);
+    
+    delete widget;
+    widget = NULL;
+    
+    //3)
+    widget = mContentWidget->take(CalenDayContentWidget::ECalenLastWidget);
+    QCOMPARE(mContentWidget->mWidgets.count(), 1);
+    QCOMPARE(widget, last);
+        
+    delete widget;
+    widget = NULL;
+    
+    //4)
+    widget = mContentWidget->take(CalenDayContentWidget::CalenWidgetPosition(-1));
+    QCOMPARE(mContentWidget->mWidgets.count(), 1);
+    QVERIFY(!widget);
+}
+
+/*!
+ Test remove() function
+ 1. Test if there is no error if remove is called on empty content
+ 2. Test if first widget is removed correctly
+ 3. Test if last widget is removed correctly
+ */
+void TestCalenContentWidget::testRemove()
+{
+    QCOMPARE(mContentWidget->mWidgets.count(), 0);
+        
+    //1)
+    mContentWidget->remove(CalenDayContentWidget::ECalenFirstWidget);
+    QCOMPARE(mContentWidget->mWidgets.count(), 0);
+    
+    // Prepare data
+    HbWidget *first = new HbWidget();
+    HbWidget *second = new HbWidget();
+    HbWidget *last = new HbWidget();
+    mContentWidget->add(first);
+    mContentWidget->add(second);
+    mContentWidget->add(last);
+    QCOMPARE(mContentWidget->mWidgets.count(), 3);
+        
+    //2)
+    mContentWidget->remove(CalenDayContentWidget::ECalenFirstWidget);
+    QCOMPARE(mContentWidget->mWidgets.count(), 2);
+    QCOMPARE(mContentWidget->mWidgets.first(), second);
+    
+    //3)
+    mContentWidget->remove(CalenDayContentWidget::ECalenLastWidget);
+    QCOMPARE(mContentWidget->mWidgets.count(), 1);
+    QCOMPARE(mContentWidget->mWidgets.last(), second);
+}
+
+/*!
+ Test relayoutWidgets() slot
+ 1. Test if relayout widgets on empty content
+ 2. Test ECalenScrollToNext case
+ 3. Test ECalenScrollToPrev case
+ 4. Test ECalenScrollNoDayChange case
+ 5. Test wrong case
+ */
+void TestCalenContentWidget::testRelayoutWidgets()
+{
+    QCOMPARE(mContentWidget->mWidgets.count(), 0);
+    
+    //1)
+    mContentWidget->relayoutWidgets(ECalenScrollNoDayChange);
+    QCOMPARE(mContentWidget->mWidgets.count(), 0);
+    
+    // Prepare data
+    HbWidget *first = new HbWidget();
+    HbWidget *second = new HbWidget();
+    HbWidget *last = new HbWidget();
+    mContentWidget->add(first);
+    mContentWidget->add(second);
+    mContentWidget->add(last);
+    QCOMPARE(mContentWidget->mWidgets.count(), 3);
+    
+    //2)
+    mContentWidget->relayoutWidgets(ECalenScrollToNext);
+    QCOMPARE(mContentWidget->mWidgets.first(), second);
+    
+    //3)
+    mContentWidget->relayoutWidgets(ECalenScrollToPrev);
+    QCOMPARE(mContentWidget->mWidgets.first(), first);
+    
+    //4)
+    mContentWidget->relayoutWidgets(ECalenScrollNoDayChange);
+    QCOMPARE(mContentWidget->mWidgets.first(), first);
+    
+    //5)
+    mContentWidget->relayoutWidgets(CalenScrollDirection(-1));
+    QCOMPARE(mContentWidget->mWidgets.first(), first);
+}
+
+/*!
+ Test testWidgetScrolled() slot
+ 1. Test widgetScrolled with empty content
+ 2. Test widgetScrolled with 3 views
+ */
+void TestCalenContentWidget::testWidgetScrolled() 
+{
+    QCOMPARE(mContentWidget->mWidgets.count(), 0);
+    QPointF newPos(10, 20);
+    
+    //1)
+    mContentWidget->widgetScrolled(newPos);
+    QCOMPARE(mContentWidget->mWidgets.count(), 0);
+    
+#ifndef __WINSCW__
+    // Prepare data
+    MCalenServices services;
+    HbModelIterator iterator(0);
+    CalenDayItemView *first = new CalenDayItemView(services, &iterator);
+    CalenDayItemView *second = new CalenDayItemView(services, &iterator);
+    CalenDayItemView *last = new CalenDayItemView(services, &iterator);
+    mContentWidget->add(first);
+    mContentWidget->add(second);
+    mContentWidget->add(last);
+    QCOMPARE(mContentWidget->mWidgets.count(), 3);
+    QCOMPARE(first->mCurrentPos, QPointF(0,0));
+    QCOMPARE(second->mCurrentPos, QPointF(0,0));
+    QCOMPARE(last->mCurrentPos, QPointF(0,0));
+    
+    //2
+    mContentWidget->widgetScrolled(newPos);
+    CalenDayItemView *view = static_cast<CalenDayItemView *> (mContentWidget->mWidgets.at(0));
+    QCOMPARE(view->mCurrentPos, newPos);
+    view = static_cast<CalenDayItemView *> (mContentWidget->mWidgets.at(1));
+    QCOMPARE(view->mCurrentPos, newPos);
+    view = static_cast<CalenDayItemView *> (mContentWidget->mWidgets.at(2));
+    QCOMPARE(view->mCurrentPos, newPos);
+#endif // __WINSCW__
 }
 
 QTEST_MAIN(TestCalenContentWidget);