calendarui/views/dayview/tsrc/unittests/unittest_calendaystatusstrip/unittest_calendaystatusstrip.cpp
changeset 45 b6db4fd4947b
child 55 2c54b51f39c4
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/calendarui/views/dayview/tsrc/unittests/unittest_calendaystatusstrip/unittest_calendaystatusstrip.cpp	Mon Jun 28 15:22:02 2010 +0530
@@ -0,0 +1,368 @@
+/*
+ * Copyright (c) 2010 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: Test class for CalenDayContentWidget
+ *
+ */
+
+#include <QtTest/QtTest>
+#include <QGraphicsItem>
+
+#include "calendaystatusstriptest.h"
+
+#include <QPainter>
+#include <QImage>
+#include <QPair>
+
+const qreal WIDGET_WIDTH = 50;
+const qreal WIDGET_HEIGHT = 150;
+
+class TestCalenStatusStrip : public QObject
+{
+Q_OBJECT
+
+public:
+    TestCalenStatusStrip();
+    virtual ~TestCalenStatusStrip();
+
+private slots:
+    void initTestCase();
+    void cleanupTestCase();
+    void init();
+    void cleanup();
+
+    void testConstructors();
+    void testSetGetColor();
+    void testSetGetRange();
+    void testSetGetDrawingStyle_data();
+    void testSetGetDrawingStyle();
+    void testStartEndTime();
+    void testCreatingDiagonalLine();
+    void testCalculateStartEndTimePosition_data();
+    void testCalculateStartEndTimePosition();
+    void testCalculateMinuteHegiht();
+    void testPaint();
+
+private:
+    CalenDayStatusStripTest *mStatusStrip;
+};
+
+
+
+
+/*!
+ Constructor
+ */
+TestCalenStatusStrip::TestCalenStatusStrip() :
+   mStatusStrip(NULL)
+{
+
+}
+
+/*!
+ Destructor
+ */
+TestCalenStatusStrip::~TestCalenStatusStrip()
+{
+
+}
+
+/*!
+ Called before testcase
+ */
+void TestCalenStatusStrip::initTestCase()
+{
+}
+
+/*!
+ Called after testcase
+ */
+void TestCalenStatusStrip::cleanupTestCase()
+{
+
+}
+
+/*!
+ Called before every function
+ */
+void TestCalenStatusStrip::init()
+{
+    mStatusStrip = new CalenDayStatusStripTest();
+}
+
+/*!
+ Called after everyfunction
+ */
+void TestCalenStatusStrip::cleanup()
+{
+    if (mStatusStrip) {
+        delete mStatusStrip;
+        mStatusStrip = NULL;
+    }
+}
+
+/*!
+ Test function for constructors
+ 1. Test if content widget is not initialized
+ 2. Test if content widget is correcty created
+ */
+void TestCalenStatusStrip::testConstructors()
+{
+    //1)
+    CalenDayStatusStrip *testStatusStrip = 0;
+    QVERIFY(!testStatusStrip);
+    
+    //2)
+    testStatusStrip = new CalenDayStatusStrip();
+    QVERIFY(testStatusStrip);
+    delete testStatusStrip;
+}
+
+/*!
+   Test function for geting and setting color
+   1. Test setting red color
+   2. Test change color to blue
+ */
+void TestCalenStatusStrip::testSetGetColor()
+{
+    //1)
+    mStatusStrip->setColor(QColor(Qt::red));
+    QColor testColor = mStatusStrip->color();
+    QCOMPARE(QColor(Qt::red),testColor);
+    
+    //2)
+    mStatusStrip->setColor(QColor(Qt::blue));
+    testColor = mStatusStrip->color();
+    QCOMPARE(QColor(Qt::blue),testColor);
+}
+
+/*!
+   Test function for geting and setting range
+   1. Test setting 5px range
+   2. Test change range to 1px
+ */
+void TestCalenStatusStrip::testSetGetRange()
+{
+    //1)
+    mStatusStrip->setRange(5);
+    QCOMPARE((qreal)5,mStatusStrip->range());
+    
+    //2)
+    mStatusStrip->setRange(1);
+    QCOMPARE((qreal)1,mStatusStrip->range());
+}
+
+/*!
+   Preapre data for \sa testSetGetDrawingStyle
+   Add new enum \sa CalenDayStatusStrip::DrawingStyle
+   1)OnlyFrame
+   2)StripWithLines
+   3)Filled
+ */
+void TestCalenStatusStrip::testSetGetDrawingStyle_data()
+{
+    QTest::addColumn<CalenDayStatusStrip::DrawingStyle>("testedValue");    
+    QTest::addColumn<CalenDayStatusStrip::DrawingStyle>("testValue");
+    
+    QTest::newRow("OnlyFrame") << CalenDayStatusStrip::OnlyFrame 
+                               << CalenDayStatusStrip::OnlyFrame;
+    QTest::newRow("StripWithLines") << CalenDayStatusStrip::StripWithLines 
+                                    << CalenDayStatusStrip::StripWithLines; 
+    QTest::newRow("Filled") << CalenDayStatusStrip::Filled 
+                            << CalenDayStatusStrip::Filled;   
+}
+
+/*!
+   Test settting and getting drawing style on preapred data
+   
+   \sa testSetGetDrawingStyle_data
+ */
+void TestCalenStatusStrip::testSetGetDrawingStyle()
+{ 
+    //get data to test
+    QFETCH(CalenDayStatusStrip::DrawingStyle, testedValue); 
+    QFETCH(CalenDayStatusStrip::DrawingStyle, testValue); 
+    
+    //set data
+    mStatusStrip->setDrawingStyle(testedValue);
+    
+    //check data
+    QCOMPARE(mStatusStrip->drawingStyle(),testValue);
+}
+
+/*!
+   Test setting and getting start and end time of event
+   1)Set end and start of event
+   2)Change values
+ */
+void TestCalenStatusStrip::testStartEndTime()
+{
+    QPair<QTime, QTime> startEndTime;
+    startEndTime.first = QTime(12,12,12);
+    startEndTime.second = QTime(15,15,15);
+    
+    mStatusStrip->setStartEndTime(startEndTime.first,startEndTime.second);
+    
+    QCOMPARE(mStatusStrip->startEndTime().first,startEndTime.first);
+    QCOMPARE(mStatusStrip->startEndTime().second,startEndTime.second);
+    
+    startEndTime.first = QTime(1,1,1);
+    startEndTime.second = QTime(5,5,5);
+    
+    mStatusStrip->setStartEndTime(startEndTime.first,startEndTime.second);
+    
+    QCOMPARE(mStatusStrip->startEndTime().first,startEndTime.first);
+    QCOMPARE(mStatusStrip->startEndTime().second,startEndTime.second);
+}
+
+/*!
+   Test creating polygon to draw diagonal line on widget
+ */
+void TestCalenStatusStrip::testCreatingDiagonalLine()
+{
+    qreal dx = 10;
+    qreal dy = 1;
+    QPointF point(0,60);
+    QVector<QPointF> points;
+    
+    points << QPointF(0,60);
+    points << QPointF(0,59);
+    points << QPointF(10,58);
+    points << QPointF(10,59);
+    
+    QPolygonF testValue(points);
+    QPolygonF testedValue = mStatusStrip->diagonalLine(point,dx,dy);
+    
+    QCOMPARE(testedValue,testValue);
+}
+
+/*!
+   Prepare data for \sa testCalculateStartEndTimePosition
+   Add new start and end time of event.
+   1)Full time start and end
+   2)Exactly 30min time start and end
+   3)More than 30min time start and end
+   4)time start > 30m and end > 23h30m
+ */
+void TestCalenStatusStrip::testCalculateStartEndTimePosition_data()
+{
+    QTest::addColumn<QTime>("testedStartValue");
+    QTest::addColumn<QTime>("testedEndValue");
+    QTest::addColumn<QTime>("testStartValue");
+    QTest::addColumn<QTime>("testEndValue");
+    
+    QTest::newRow("Full time start and end") <<  QTime(10,00,00)
+                                             <<  QTime(11,00,00)
+                                             <<  QTime(10,00,00)
+                                             <<  QTime(11,00,00);
+    QTest::newRow("Exactly 30min time start and end") <<  QTime(10,30,00)
+                                             <<  QTime(11,30,00)
+                                             <<  QTime(10,30,00)
+                                             <<  QTime(11,30,00);
+    QTest::newRow("More than 30min time start and end") <<  QTime(10,40,00)
+                                             <<  QTime(12,35,00)
+                                             <<  QTime(10,30,00)
+                                             <<  QTime(13,00,00);
+    QTest::newRow("time start > 30m and end > 23h30m") <<  QTime(20,35,00)
+                                             <<  QTime(23,35,00)
+                                             <<  QTime(20,30,00)
+                                             <<  QTime(23,59,00);
+}
+
+/*!
+   Test calculating start and end time drawing of event bubble on prepared data
+   \sa testCalculateStartEndTimePosition_data
+ */
+void TestCalenStatusStrip::testCalculateStartEndTimePosition()
+{
+    //get prepared data
+    QFETCH(QTime, testedStartValue); 
+    QFETCH(QTime, testedEndValue); 
+    QFETCH(QTime, testStartValue); 
+    QFETCH(QTime, testEndValue); 
+    
+    //run function
+    QPair<QTime,QTime> testStartEndValue 
+                     = mStatusStrip->calculateStartEndPostion(testedStartValue,
+                                                               testedEndValue);
+    //check data
+    QCOMPARE(testStartEndValue.first,testStartValue);
+    QCOMPARE(testStartEndValue.second,testEndValue);
+}
+
+/*!
+   Test calculating minute height based on widget height and given time.
+   1)Calculate on given time
+   2)Change time of event
+ */
+void TestCalenStatusStrip::testCalculateMinuteHegiht()
+{   
+    qreal testedValue;
+    qreal testValue;
+    mStatusStrip->resize(WIDGET_WIDTH,WIDGET_HEIGHT);
+    
+    //1)
+    testedValue = mStatusStrip->calculateMinuteHeight(QTime(10,00,0),
+                                                      QTime(11,00,0));
+    testValue = WIDGET_HEIGHT / (qreal)60;
+    QCOMPARE(testedValue,testValue);
+    
+    //2)
+    testedValue = mStatusStrip->calculateMinuteHeight(QTime(10,00,0),
+                                                      QTime(11,30,0));
+    testValue = WIDGET_HEIGHT / (qreal)90;
+    QCOMPARE(testedValue,testValue);
+}
+
+
+/*!
+   Test drawing widget.
+   
+   If there is no SAVE_IMAGES macro defined it will only run this function.
+   If there is macro defined and c:\unittest folder created then image will be
+   created so user can see if it draw in good way.
+ */
+void TestCalenStatusStrip::testPaint()
+{      
+    //preapre data needed to draw on widget
+    mStatusStrip->setColor(QColor(Qt::red));
+    QPair<QTime, QTime> startEndTime;
+    startEndTime.first = QTime(10,20,0);
+    startEndTime.second = QTime(15,10,00);
+    
+    //set event time
+    mStatusStrip->setStartEndTime(startEndTime.first,startEndTime.second);
+    
+    //resize widget to be bigger than (0,0)
+    mStatusStrip->resize(WIDGET_WIDTH,WIDGET_HEIGHT);
+    QSize size = mStatusStrip->size().toSize();
+    
+    //create image that will simulate widget where painting should be done
+    QImage img(size,QImage::Format_RGB32);
+    //create painter which will be used to paint
+    QPainter painter(&img);
+    //fill image with white color to have better filings with look of "paper"
+    painter.fillRect(0,0,size.width(),size.height(),QColor(Qt::white));
+    //run paint
+    mStatusStrip->paint(&painter,0);
+    
+#ifdef SAVE_IMAGES
+    //save drawed image
+    img.save("c:/unittest/TestCalenStatusStrip_testPaint.jpg");
+    
+#endif
+
+}
+
+QTEST_MAIN(TestCalenStatusStrip);
+#include "unittest_calendaystatusstrip.moc"