diff -r 5de72ea7a065 -r 579cc610882e calendarui/views/dayview/tsrc/unittests/unittest_calendaystatusstrip/unittest_calendaystatusstrip.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/calendarui/views/dayview/tsrc/unittests/unittest_calendaystatusstrip/unittest_calendaystatusstrip.cpp Tue Jul 06 14:14:56 2010 +0300 @@ -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 +#include + +#include "calendaystatusstriptest.h" + +#include +#include +#include + +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("testedValue"); + QTest::addColumn("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 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 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("testedStartValue"); + QTest::addColumn("testedEndValue"); + QTest::addColumn("testStartValue"); + QTest::addColumn("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 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 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"