##// END OF EJS Templates
Adds more logic and documentation to qbarcategoryaxis for append, insert, replace, clear
Adds more logic and documentation to qbarcategoryaxis for append, insert, replace, clear

File last commit:

r2078:17fb919aec3a
r2121:95b5b5ea3834
Show More
tst_qpieseries.cpp
656 lines | 20.4 KiB | text/x-c | CppLexer
Jani Honkonen
Add basic auto tests for pie
r1105 /****************************************************************************
**
** Copyright (C) 2012 Digia Plc
** All rights reserved.
** For any questions to Digia, please use contact form at http://qt.digia.com
**
** This file is part of the Qt Commercial Charts Add-on.
**
** $QT_BEGIN_LICENSE$
** Licensees holding valid Qt Commercial licenses may use this file in
** accordance with the Qt Commercial License Agreement provided with the
** Software or, alternatively, in accordance with the terms contained in
** a written agreement between you and Digia.
**
** If you have questions regarding the use of this file, please use
** contact form at http://qt.digia.com
** $QT_END_LICENSE$
**
****************************************************************************/
#include <QtTest/QtTest>
Jani Honkonen
Adding more tests for pie...
r1119 #include <qchartview.h>
#include <qchart.h>
Jani Honkonen
Add basic auto tests for pie
r1105 #include <qpieseries.h>
#include <qpieslice.h>
Marek Rosa
Added two model related tests to pieseries
r1180 #include <qpiemodelmapper.h>
#include <QStandardItemModel>
Tero Ahola
Auto tests involving signal spys to wait before comparisons
r1109 #include <tst_definitions.h>
Jani Honkonen
Add basic auto tests for pie
r1105
QTCOMMERCIALCHART_USE_NAMESPACE
Jani Honkonen
Adding more tests for pie...
r1119 Q_DECLARE_METATYPE(QPieSlice*)
Jani Honkonen
tst_qpieseries: check added/removed signals
r1291 Q_DECLARE_METATYPE(QList<QPieSlice*>)
Jani Honkonen
Adding more tests for pie...
r1119
Jani Honkonen
Add basic auto tests for pie
r1105 class tst_qpieseries : public QObject
{
Q_OBJECT
public slots:
void initTestCase();
void cleanupTestCase();
void init();
void cleanup();
private slots:
Jani Honkonen
pie: add everything as a property in series...
r1255 void properties();
Jani Honkonen
Add basic auto tests for pie
r1105 void append();
Jani Honkonen
tst_qpieseries: added XXXanimated tests...
r1301 void appendAnimated();
Jani Honkonen
Add basic auto tests for pie
r1105 void insert();
Jani Honkonen
tst_qpieseries: added XXXanimated tests...
r1301 void insertAnimated();
Jani Honkonen
Add basic auto tests for pie
r1105 void remove();
Jani Honkonen
tst_qpieseries: added XXXanimated tests...
r1301 void removeAnimated();
Jani Honkonen
Implemented QPieSeries::take()
r1798 void take();
void takeAnimated();
Jani Honkonen
Adding more tests for pie...
r1119 void calculatedValues();
void clickedSignal();
void hoverSignal();
Jani Honkonen
Add QPieSlice::series() and tests
r1323 void sliceSeries();
Jani Honkonen
Adding series destruction tests for bar & pie...
r1768 void destruction();
Jani Honkonen
Add basic auto tests for pie
r1105
private:
Jani Honkonen
Adding more tests for pie...
r1119 void verifyCalculatedData(const QPieSeries &series, bool *ok);
Jani Honkonen
refactor pie mouse click/hover tests
r2065 QList<QPoint> slicePoints(QRectF rect);
Jani Honkonen
Add basic auto tests for pie
r1105
private:
Jani Honkonen
tst_qpieseries: added XXXanimated tests...
r1301 QChartView *m_view;
QPieSeries *m_series;
Jani Honkonen
Add basic auto tests for pie
r1105 };
void tst_qpieseries::initTestCase()
{
Jani Honkonen
Adding more tests for pie...
r1119 qRegisterMetaType<QPieSlice*>("QPieSlice*");
Jani Honkonen
tst_qpieseries: check added/removed signals
r1291 qRegisterMetaType<QList<QPieSlice*> >("QList<QPieSlice*>");
Jani Honkonen
Add basic auto tests for pie
r1105 }
void tst_qpieseries::cleanupTestCase()
{
}
void tst_qpieseries::init()
{
Jani Honkonen
tst_qpieseries: added XXXanimated tests...
r1301 m_view = new QChartView();
m_series = new QPieSeries(m_view);
Jani Honkonen
tst_qpieseries: the xxxAnimated tests did not test anything (oops)
r1797 m_view->show();
QTest::qWaitForWindowShown(m_view);
Jani Honkonen
Add basic auto tests for pie
r1105 }
void tst_qpieseries::cleanup()
{
Jani Honkonen
tst_qpieseries: added XXXanimated tests...
r1301 delete m_view;
m_view = 0;
m_series = 0;
Jani Honkonen
Add basic auto tests for pie
r1105 }
Jani Honkonen
pie: add everything as a property in series...
r1255 void tst_qpieseries::properties()
Jani Honkonen
Add basic auto tests for pie
r1105 {
Jani Honkonen
tst_qpieseries: added XXXanimated tests...
r1301 QSignalSpy countSpy(m_series, SIGNAL(countChanged()));
QSignalSpy sumSpy(m_series, SIGNAL(sumChanged()));
Tero Ahola
Added opacity property to QAbstractSeries
r2067 QSignalSpy opacitySpy(m_series, SIGNAL(opacityChanged()));
Jani Honkonen
tst_qpieseries: added XXXanimated tests...
r1301
QVERIFY(m_series->type() == QAbstractSeries::SeriesTypePie);
QVERIFY(m_series->count() == 0);
QVERIFY(m_series->isEmpty());
QCOMPARE(m_series->sum(), 0.0);
QCOMPARE(m_series->horizontalPosition(), 0.5);
QCOMPARE(m_series->verticalPosition(), 0.5);
QCOMPARE(m_series->pieSize(), 0.7);
QCOMPARE(m_series->pieStartAngle(), 0.0);
QCOMPARE(m_series->pieEndAngle(), 360.0);
Tero Ahola
Added opacity property to QAbstractSeries
r2067 QCOMPARE(m_series->opacity(), 1.0);
Jani Honkonen
tst_qpieseries: added XXXanimated tests...
r1301
m_series->append("s1", 1);
m_series->append("s2", 1);
m_series->append("s3", 1);
m_series->insert(1, new QPieSlice("s4", 1));
m_series->remove(m_series->slices().first());
QCOMPARE(m_series->count(), 3);
QCOMPARE(m_series->sum(), 3.0);
m_series->clear();
QCOMPARE(m_series->count(), 0);
QCOMPARE(m_series->sum(), 0.0);
Jani Honkonen
pie: add everything as a property in series...
r1255 QCOMPARE(countSpy.count(), 6);
QCOMPARE(sumSpy.count(), 6);
Jani Honkonen
tst_qpieseries: added XXXanimated tests...
r1301 m_series->setPieSize(-1.0);
QCOMPARE(m_series->pieSize(), 0.0);
m_series->setPieSize(0.0);
m_series->setPieSize(0.9);
m_series->setPieSize(2.0);
QCOMPARE(m_series->pieSize(), 1.0);
Jani Honkonen
pie: add everything as a property in series...
r1255
Marek Rosa
Added donut related tests to PieSeries tests
r1742 m_series->setPieSize(0.7);
QCOMPARE(m_series->pieSize(), 0.7);
Marek Rosa
Donut support simplified. Examples updated
r1838 m_series->setHoleSize(-1.0);
QCOMPARE(m_series->holeSize(), 0.0);
m_series->setHoleSize(0.5);
QCOMPARE(m_series->holeSize(), 0.5);
Marek Rosa
Added donut related tests to PieSeries tests
r1742
Marek Rosa
Donut support simplified. Examples updated
r1838 m_series->setHoleSize(0.8);
QCOMPARE(m_series->holeSize(), 0.8);
Marek Rosa
Added donut related tests to PieSeries tests
r1742 QCOMPARE(m_series->pieSize(), 0.8);
m_series->setPieSize(0.4);
QCOMPARE(m_series->pieSize(), 0.4);
Marek Rosa
Donut support simplified. Examples updated
r1838 QCOMPARE(m_series->holeSize(), 0.4);
Marek Rosa
Added donut related tests to PieSeries tests
r1742
Jani Honkonen
tst_qpieseries: added XXXanimated tests...
r1301 m_series->setPieStartAngle(0);
m_series->setPieStartAngle(-180);
m_series->setPieStartAngle(180);
Tero Ahola
Removed a few signals from QPieSeries API
r1482 QCOMPARE(m_series->pieStartAngle(), 180.0);
Jani Honkonen
pie: add everything as a property in series...
r1255
Jani Honkonen
tst_qpieseries: added XXXanimated tests...
r1301 m_series->setPieEndAngle(360);
m_series->setPieEndAngle(-180);
m_series->setPieEndAngle(180);
Tero Ahola
Removed a few signals from QPieSeries API
r1482 QCOMPARE(m_series->pieEndAngle(), 180.0);
Jani Honkonen
pie: add everything as a property in series...
r1255
Jani Honkonen
tst_qpieseries: added XXXanimated tests...
r1301 m_series->setHorizontalPosition(0.5);
m_series->setHorizontalPosition(-1.0);
QCOMPARE(m_series->horizontalPosition(), 0.0);
m_series->setHorizontalPosition(1.0);
m_series->setHorizontalPosition(2.0);
QCOMPARE(m_series->horizontalPosition(), 1.0);
Jani Honkonen
pie: add everything as a property in series...
r1255
Jani Honkonen
tst_qpieseries: added XXXanimated tests...
r1301 m_series->setVerticalPosition(0.5);
m_series->setVerticalPosition(-1.0);
QCOMPARE(m_series->verticalPosition(), 0.0);
m_series->setVerticalPosition(1.0);
m_series->setVerticalPosition(2.0);
QCOMPARE(m_series->verticalPosition(), 1.0);
Tero Ahola
Added opacity property to QAbstractSeries
r2067
m_series->setOpacity(0.5);
QCOMPARE(m_series->opacity(), 0.5);
QCOMPARE(opacitySpy.count(), 1);
m_series->setOpacity(0.0);
QCOMPARE(m_series->opacity(), 0.0);
QCOMPARE(opacitySpy.count(), 2);
m_series->setOpacity(1.0);
QCOMPARE(m_series->opacity(), 1.0);
QCOMPARE(opacitySpy.count(), 3);
Jani Honkonen
Add basic auto tests for pie
r1105 }
void tst_qpieseries::append()
{
Jani Honkonen
tst_qpieseries: added XXXanimated tests...
r1301 m_view->chart()->addSeries(m_series);
QSignalSpy addedSpy(m_series, SIGNAL(added(QList<QPieSlice*>)));
Jani Honkonen
Add basic auto tests for pie
r1105
// append pointer
QPieSlice *slice1 = 0;
Jani Honkonen
tst_qpieseries: added XXXanimated tests...
r1301 QVERIFY(!m_series->append(slice1));
Jani Honkonen
pie: change the order of parameters when creating slices to be more intuitive
r1206 slice1 = new QPieSlice("slice 1", 1);
Jani Honkonen
tst_qpieseries: added XXXanimated tests...
r1301 QVERIFY(m_series->append(slice1));
QVERIFY(!m_series->append(slice1));
QCOMPARE(m_series->count(), 1);
Jani Honkonen
tst_qpieseries: check added/removed signals
r1291 QCOMPARE(addedSpy.count(), 1);
QList<QPieSlice*> added = qvariant_cast<QList<QPieSlice*> >(addedSpy.at(0).at(0));
QCOMPARE(added.count(), 1);
QCOMPARE(added.first(), slice1);
Jani Honkonen
Add basic auto tests for pie
r1105
Jani Honkonen
pie: prevent adding same slice to two series
r1324 // try to append same slice to another series
QPieSeries series2;
QVERIFY(!series2.append(slice1));
Jani Honkonen
Add basic auto tests for pie
r1105 // append pointer list
QList<QPieSlice *> list;
Jani Honkonen
tst_qpieseries: added XXXanimated tests...
r1301 QVERIFY(!m_series->append(list));
Jani Honkonen
Add basic auto tests for pie
r1105 list << (QPieSlice *) 0;
Jani Honkonen
tst_qpieseries: added XXXanimated tests...
r1301 QVERIFY(!m_series->append(list));
Jani Honkonen
Add basic auto tests for pie
r1105 list.clear();
Jani Honkonen
pie: change the order of parameters when creating slices to be more intuitive
r1206 list << new QPieSlice("slice 2", 2);
list << new QPieSlice("slice 3", 3);
Jani Honkonen
tst_qpieseries: added XXXanimated tests...
r1301 QVERIFY(m_series->append(list));
QVERIFY(!m_series->append(list));
QCOMPARE(m_series->count(), 3);
Jani Honkonen
tst_qpieseries: check added/removed signals
r1291 QCOMPARE(addedSpy.count(), 2);
added = qvariant_cast<QList<QPieSlice*> >(addedSpy.at(1).at(0));
QCOMPARE(added.count(), 2);
QCOMPARE(added, list);
Jani Honkonen
Add basic auto tests for pie
r1105
// append operator
Jani Honkonen
tst_qpieseries: check added/removed signals
r1291 QPieSlice *slice4 = new QPieSlice("slice 4", 4);
Jani Honkonen
tst_qpieseries: added XXXanimated tests...
r1301 *m_series << slice4;
*m_series << slice1; // fails because already added
QCOMPARE(m_series->count(), 4);
Jani Honkonen
tst_qpieseries: check added/removed signals
r1291 QCOMPARE(addedSpy.count(), 3);
added = qvariant_cast<QList<QPieSlice*> >(addedSpy.at(2).at(0));
QCOMPARE(added.count(), 1);
QCOMPARE(added.first(), slice4);
Jani Honkonen
Add basic auto tests for pie
r1105
// append with params
Jani Honkonen
tst_qpieseries: added XXXanimated tests...
r1301 QPieSlice *slice5 = m_series->append("slice 5", 5);
Jani Honkonen
Add basic auto tests for pie
r1105 QVERIFY(slice5 != 0);
Jani Honkonen
Remove qFuzzyXXX functions from pie tests...
r1125 QCOMPARE(slice5->value(), 5.0);
Jani Honkonen
Add basic auto tests for pie
r1105 QCOMPARE(slice5->label(), QString("slice 5"));
Jani Honkonen
tst_qpieseries: added XXXanimated tests...
r1301 QCOMPARE(m_series->count(), 5);
Jani Honkonen
tst_qpieseries: check added/removed signals
r1291 QCOMPARE(addedSpy.count(), 4);
added = qvariant_cast<QList<QPieSlice*> >(addedSpy.at(3).at(0));
QCOMPARE(added.count(), 1);
QCOMPARE(added.first(), slice5);
Jani Honkonen
Add basic auto tests for pie
r1105
// check slices
Jani Honkonen
tst_qpieseries: added XXXanimated tests...
r1301 QVERIFY(!m_series->isEmpty());
for (int i=0; i<m_series->count(); i++) {
QCOMPARE(m_series->slices().at(i)->value(), (qreal) i+1);
QCOMPARE(m_series->slices().at(i)->label(), QString("slice ") + QString::number(i+1));
Jani Honkonen
Add basic auto tests for pie
r1105 }
}
Jani Honkonen
tst_qpieseries: added XXXanimated tests...
r1301 void tst_qpieseries::appendAnimated()
{
m_view->chart()->setAnimationOptions(QChart::AllAnimations);
Jani Honkonen
tst_qpieseries: the xxxAnimated tests did not test anything (oops)
r1797 append();
Jani Honkonen
tst_qpieseries: added XXXanimated tests...
r1301 }
Jani Honkonen
Add basic auto tests for pie
r1105 void tst_qpieseries::insert()
{
Jani Honkonen
tst_qpieseries: added XXXanimated tests...
r1301 m_view->chart()->addSeries(m_series);
QSignalSpy addedSpy(m_series, SIGNAL(added(QList<QPieSlice*>)));
Jani Honkonen
Add basic auto tests for pie
r1105
// insert one slice
QPieSlice *slice1 = 0;
Jani Honkonen
tst_qpieseries: added XXXanimated tests...
r1301 QVERIFY(!m_series->insert(0, slice1));
Jani Honkonen
pie: change the order of parameters when creating slices to be more intuitive
r1206 slice1 = new QPieSlice("slice 1", 1);
Jani Honkonen
tst_qpieseries: added XXXanimated tests...
r1301 QVERIFY(!m_series->insert(-1, slice1));
QVERIFY(!m_series->insert(5, slice1));
QVERIFY(m_series->insert(0, slice1));
QVERIFY(!m_series->insert(0, slice1));
QCOMPARE(m_series->count(), 1);
Jani Honkonen
tst_qpieseries: check added/removed signals
r1291 QCOMPARE(addedSpy.count(), 1);
QList<QPieSlice*> added = qvariant_cast<QList<QPieSlice*> >(addedSpy.at(0).at(0));
QCOMPARE(added.count(), 1);
QCOMPARE(added.first(), slice1);
Jani Honkonen
Add basic auto tests for pie
r1105
Jani Honkonen
pie: prevent adding same slice to two series
r1324 // try to insert same slice to another series
QPieSeries series2;
QVERIFY(!series2.insert(0, slice1));
Jani Honkonen
Add basic auto tests for pie
r1105 // add some more slices
Jani Honkonen
tst_qpieseries: added XXXanimated tests...
r1301 QPieSlice *slice2 = m_series->append("slice 2", 2);
QPieSlice *slice4 = m_series->append("slice 4", 4);
QCOMPARE(m_series->count(), 3);
Jani Honkonen
tst_qpieseries: check added/removed signals
r1291 QCOMPARE(addedSpy.count(), 3);
added = qvariant_cast<QList<QPieSlice*> >(addedSpy.at(1).at(0));
QCOMPARE(added.count(), 1);
QCOMPARE(added.first(), slice2);
added = qvariant_cast<QList<QPieSlice*> >(addedSpy.at(2).at(0));
QCOMPARE(added.count(), 1);
QCOMPARE(added.first(), slice4);
Jani Honkonen
Add basic auto tests for pie
r1105
// insert between slices
Jani Honkonen
tst_qpieseries: check added/removed signals
r1291 QPieSlice *slice3 = new QPieSlice("slice 3", 3);
Jani Honkonen
tst_qpieseries: added XXXanimated tests...
r1301 m_series->insert(2, slice3);
QCOMPARE(m_series->count(), 4);
Jani Honkonen
tst_qpieseries: check added/removed signals
r1291 QCOMPARE(addedSpy.count(), 4);
added = qvariant_cast<QList<QPieSlice*> >(addedSpy.at(3).at(0));
QCOMPARE(added.count(), 1);
QCOMPARE(added.first(), slice3);
Jani Honkonen
Add basic auto tests for pie
r1105
// check slices
Jani Honkonen
tst_qpieseries: added XXXanimated tests...
r1301 for (int i=0; i<m_series->count(); i++) {
QCOMPARE(m_series->slices().at(i)->value(), (qreal) i+1);
QCOMPARE(m_series->slices().at(i)->label(), QString("slice ") + QString::number(i+1));
Jani Honkonen
Adding series destruction tests for bar & pie...
r1768 QVERIFY(m_series->slices().at(i)->parent() == m_series);
Jani Honkonen
Add basic auto tests for pie
r1105 }
}
Jani Honkonen
tst_qpieseries: added XXXanimated tests...
r1301 void tst_qpieseries::insertAnimated()
{
m_view->chart()->setAnimationOptions(QChart::AllAnimations);
Jani Honkonen
tst_qpieseries: the xxxAnimated tests did not test anything (oops)
r1797 insert();
Jani Honkonen
tst_qpieseries: added XXXanimated tests...
r1301 }
Jani Honkonen
Add basic auto tests for pie
r1105 void tst_qpieseries::remove()
{
Jani Honkonen
tst_qpieseries: added XXXanimated tests...
r1301 m_view->chart()->addSeries(m_series);
QSignalSpy removedSpy(m_series, SIGNAL(removed(QList<QPieSlice*>)));
Jani Honkonen
Add basic auto tests for pie
r1105
// add some slices
Jani Honkonen
tst_qpieseries: added XXXanimated tests...
r1301 QPieSlice *slice1 = m_series->append("slice 1", 1);
QPieSlice *slice2 = m_series->append("slice 2", 2);
QPieSlice *slice3 = m_series->append("slice 3", 3);
Jani Honkonen
Add basic auto tests for pie
r1105 QSignalSpy spy1(slice1, SIGNAL(destroyed()));
QSignalSpy spy2(slice2, SIGNAL(destroyed()));
QSignalSpy spy3(slice3, SIGNAL(destroyed()));
Jani Honkonen
tst_qpieseries: added XXXanimated tests...
r1301 QCOMPARE(m_series->count(), 3);
Jani Honkonen
Add basic auto tests for pie
r1105
// null pointer remove
Jani Honkonen
tst_qpieseries: added XXXanimated tests...
r1301 QVERIFY(!m_series->remove(0));
Jani Honkonen
Add basic auto tests for pie
r1105
// remove first
Jani Honkonen
tst_qpieseries: added XXXanimated tests...
r1301 QVERIFY(m_series->remove(slice1));
QVERIFY(!m_series->remove(slice1));
QCOMPARE(m_series->count(), 2);
QCOMPARE(m_series->slices().at(0)->label(), slice2->label());
Jani Honkonen
tst_qpieseries: check added/removed signals
r1291 QCOMPARE(removedSpy.count(), 1);
QList<QPieSlice*> removed = qvariant_cast<QList<QPieSlice*> >(removedSpy.at(0).at(0));
QCOMPARE(removed.count(), 1);
QCOMPARE(removed.first(), slice1);
Jani Honkonen
Add basic auto tests for pie
r1105
// remove all
Jani Honkonen
tst_qpieseries: added XXXanimated tests...
r1301 m_series->clear();
QVERIFY(m_series->isEmpty());
QVERIFY(m_series->slices().isEmpty());
QCOMPARE(m_series->count(), 0);
Jani Honkonen
tst_qpieseries: check added/removed signals
r1291 QCOMPARE(removedSpy.count(), 2);
removed = qvariant_cast<QList<QPieSlice*> >(removedSpy.at(1).at(0));
QCOMPARE(removed.count(), 2);
QCOMPARE(removed.first(), slice2);
QCOMPARE(removed.last(), slice3);
Jani Honkonen
Add basic auto tests for pie
r1105
// check that slices were actually destroyed
Tero Ahola
Auto tests involving signal spys to wait before comparisons
r1109 TRY_COMPARE(spy1.count(), 1);
TRY_COMPARE(spy2.count(), 1);
TRY_COMPARE(spy3.count(), 1);
Jani Honkonen
Add basic auto tests for pie
r1105 }
Jani Honkonen
tst_qpieseries: added XXXanimated tests...
r1301 void tst_qpieseries::removeAnimated()
{
m_view->chart()->setAnimationOptions(QChart::AllAnimations);
Jani Honkonen
tst_qpieseries: the xxxAnimated tests did not test anything (oops)
r1797 remove();
Jani Honkonen
tst_qpieseries: added XXXanimated tests...
r1301 }
Jani Honkonen
Implemented QPieSeries::take()
r1798 void tst_qpieseries::take()
{
m_view->chart()->addSeries(m_series);
QSignalSpy removedSpy(m_series, SIGNAL(removed(QList<QPieSlice*>)));
// add some slices
QPieSlice *slice1 = m_series->append("slice 1", 1);
QPieSlice *slice2 = m_series->append("slice 2", 2);
m_series->append("slice 3", 3);
QSignalSpy spy1(slice1, SIGNAL(destroyed()));
QCOMPARE(m_series->count(), 3);
// null pointer remove
QVERIFY(!m_series->take(0));
// take first
QVERIFY(m_series->take(slice1));
TRY_COMPARE(spy1.count(), 0);
QVERIFY(slice1->parent() == m_series); // series is still the parent object
QVERIFY(!m_series->take(slice1));
QCOMPARE(m_series->count(), 2);
QCOMPARE(m_series->slices().at(0)->label(), slice2->label());
QCOMPARE(removedSpy.count(), 1);
QList<QPieSlice*> removed = qvariant_cast<QList<QPieSlice*> >(removedSpy.at(0).at(0));
QCOMPARE(removed.count(), 1);
QCOMPARE(removed.first(), slice1);
}
void tst_qpieseries::takeAnimated()
{
m_view->chart()->setAnimationOptions(QChart::AllAnimations);
take();
}
Jani Honkonen
Add basic auto tests for pie
r1105 void tst_qpieseries::calculatedValues()
{
Jani Honkonen
tst_qpieseries: added XXXanimated tests...
r1301 m_view->chart()->addSeries(m_series);
Jani Honkonen
Adding more tests for pie...
r1119
Jani Honkonen
pie: remove changed() signal and replace it with more refined signals...
r1224 QPieSlice *slice1 = new QPieSlice("slice 1", 1);
Jani Honkonen
pie: added everything as a property in QPieSlice...
r1274 QSignalSpy percentageSpy(slice1, SIGNAL(percentageChanged()));
QSignalSpy startAngleSpy(slice1, SIGNAL(startAngleChanged()));
QSignalSpy angleSpanSpy(slice1, SIGNAL(angleSpanChanged()));
Jani Honkonen
pie: remove changed() signal and replace it with more refined signals...
r1224
Jani Honkonen
Adding more tests for pie...
r1119 // add a slice
Jani Honkonen
tst_qpieseries: added XXXanimated tests...
r1301 m_series->append(slice1);
bool ok;
verifyCalculatedData(*m_series, &ok);
Jani Honkonen
Adding more tests for pie...
r1119 if (!ok)
return;
Jani Honkonen
pie: added everything as a property in QPieSlice...
r1274 QCOMPARE(percentageSpy.count(), 1);
QCOMPARE(startAngleSpy.count(), 0);
QCOMPARE(angleSpanSpy.count(), 1);
Jani Honkonen
Add basic auto tests for pie
r1105
Jani Honkonen
Adding more tests for pie...
r1119 // add some more slices
QList<QPieSlice *> list;
Jani Honkonen
pie: change the order of parameters when creating slices to be more intuitive
r1206 list << new QPieSlice("slice 2", 2);
list << new QPieSlice("slice 3", 3);
Jani Honkonen
tst_qpieseries: added XXXanimated tests...
r1301 m_series->append(list);
verifyCalculatedData(*m_series, &ok);
Jani Honkonen
Adding more tests for pie...
r1119 if (!ok)
return;
Jani Honkonen
pie: added everything as a property in QPieSlice...
r1274 QCOMPARE(percentageSpy.count(), 2);
QCOMPARE(startAngleSpy.count(), 0);
QCOMPARE(angleSpanSpy.count(), 2);
Jani Honkonen
Adding more tests for pie...
r1119
// remove a slice
Jani Honkonen
tst_qpieseries: added XXXanimated tests...
r1301 m_series->remove(list.first()); // remove slice 2
verifyCalculatedData(*m_series, &ok);
Jani Honkonen
Adding more tests for pie...
r1119 if (!ok)
return;
Jani Honkonen
pie: added everything as a property in QPieSlice...
r1274 QCOMPARE(percentageSpy.count(), 3);
QCOMPARE(startAngleSpy.count(), 0);
QCOMPARE(angleSpanSpy.count(), 3);
Jani Honkonen
Adding more tests for pie...
r1119
// insert a slice
Jani Honkonen
tst_qpieseries: added XXXanimated tests...
r1301 m_series->insert(0, new QPieSlice("Slice 4", 4));
verifyCalculatedData(*m_series, &ok);
Jani Honkonen
Adding more tests for pie...
r1119 if (!ok)
return;
Jani Honkonen
pie: added everything as a property in QPieSlice...
r1274 QCOMPARE(percentageSpy.count(), 4);
QCOMPARE(startAngleSpy.count(), 1);
QCOMPARE(angleSpanSpy.count(), 4);
Jani Honkonen
Adding more tests for pie...
r1119
Jani Honkonen
Bugfix: remove restrictions from pie start & end angles...
r1207 // modify pie angles
Jani Honkonen
tst_qpieseries: added XXXanimated tests...
r1301 m_series->setPieStartAngle(-90);
m_series->setPieEndAngle(90);
verifyCalculatedData(*m_series, &ok);
Jani Honkonen
Bugfix: remove restrictions from pie start & end angles...
r1207 if (!ok)
return;
Jani Honkonen
pie: added everything as a property in QPieSlice...
r1274 QCOMPARE(percentageSpy.count(), 4);
QCOMPARE(startAngleSpy.count(), 3);
QCOMPARE(angleSpanSpy.count(), 6);
Jani Honkonen
Bugfix: remove restrictions from pie start & end angles...
r1207
Jani Honkonen
Adding more tests for pie...
r1119 // clear all
Jani Honkonen
tst_qpieseries: added XXXanimated tests...
r1301 m_series->clear();
verifyCalculatedData(*m_series, &ok);
if (!ok)
return;
Jani Honkonen
pie: added everything as a property in QPieSlice...
r1274 QCOMPARE(percentageSpy.count(), 4);
QCOMPARE(startAngleSpy.count(), 3);
QCOMPARE(angleSpanSpy.count(), 6);
Jani Honkonen
Add basic auto tests for pie
r1105 }
Jani Honkonen
Adding more tests for pie...
r1119 void tst_qpieseries::verifyCalculatedData(const QPieSeries &series, bool *ok)
Jani Honkonen
Add basic auto tests for pie
r1105 {
Jani Honkonen
Adding more tests for pie...
r1119 *ok = false;
qreal sum = 0;
foreach (const QPieSlice *slice, series.slices())
sum += slice->value();
QCOMPARE(series.sum(), sum);
qreal startAngle = series.pieStartAngle();
qreal pieAngleSpan = series.pieEndAngle() - series.pieStartAngle();
foreach (const QPieSlice *slice, series.slices()) {
qreal ratio = slice->value() / sum;
qreal sliceSpan = pieAngleSpan * ratio;
QCOMPARE(slice->startAngle(), startAngle);
Jani Honkonen
pie: added everything as a property in QPieSlice...
r1274 QCOMPARE(slice->angleSpan(), sliceSpan);
Jani Honkonen
Adding more tests for pie...
r1119 QCOMPARE(slice->percentage(), ratio);
startAngle += sliceSpan;
}
if (!series.isEmpty())
Jani Honkonen
pie: added everything as a property in QPieSlice...
r1274 QCOMPARE(series.slices().last()->startAngle() + series.slices().last()->angleSpan(), series.pieEndAngle());
Jani Honkonen
Add basic auto tests for pie
r1105
Jani Honkonen
Adding more tests for pie...
r1119 *ok = true;
Jani Honkonen
Add basic auto tests for pie
r1105 }
void tst_qpieseries::clickedSignal()
{
Jani Honkonen
refactor pie mouse click/hover tests
r2065 // NOTE:
// This test is the same as tst_qpieslice::clickedSignal()
// Just for different signals.
Jani Honkonen
Try to make bamboo skip tests that it cannot run
r2062 SKIP_IF_CANNOT_TEST_MOUSE_EVENTS();
Jani Honkonen
tst_qpieseries: added XXXanimated tests...
r1301 // add some slices
QPieSlice *s1 = m_series->append("slice 1", 1);
QPieSlice *s2 = m_series->append("slice 2", 1);
QPieSlice *s3 = m_series->append("slice 3", 1);
QPieSlice *s4 = m_series->append("slice 4", 1);
QSignalSpy clickSpy(m_series, SIGNAL(clicked(QPieSlice*)));
Jani Honkonen
Adding more tests for pie...
r1119
// add series to the chart
Jani Honkonen
tst_qpieseries: added XXXanimated tests...
r1301 m_view->chart()->legend()->setVisible(false);
m_view->chart()->addSeries(m_series);
m_view->show();
QTest::qWaitForWindowShown(m_view);
Jani Honkonen
Adding more tests for pie...
r1119
Jani Honkonen
refactor pie mouse click/hover tests
r2065 // test maximum size
Jani Honkonen
tst_qpieseries: added XXXanimated tests...
r1301 m_series->setPieSize(1.0);
Jani Honkonen
refactor pie mouse click/hover tests
r2065 QRectF pieRect = m_view->chart()->plotArea();
QList<QPoint> points = slicePoints(pieRect);
QTest::mouseClick(m_view->viewport(), Qt::LeftButton, 0, points.at(0));
QTest::mouseClick(m_view->viewport(), Qt::LeftButton, 0, points.at(1));
QTest::mouseClick(m_view->viewport(), Qt::LeftButton, 0, points.at(2));
QTest::mouseClick(m_view->viewport(), Qt::LeftButton, 0, points.at(3));
TRY_COMPARE(clickSpy.count(), 4);
QCOMPARE(qvariant_cast<QPieSlice*>(clickSpy.at(0).at(0)), s1);
QCOMPARE(qvariant_cast<QPieSlice*>(clickSpy.at(1).at(0)), s2);
Jani Honkonen
tst_qpieseries::clickedSignal: adding more stuff to test pie layouting at the same time
r1245 QCOMPARE(qvariant_cast<QPieSlice*>(clickSpy.at(2).at(0)), s3);
Jani Honkonen
refactor pie mouse click/hover tests
r2065 QCOMPARE(qvariant_cast<QPieSlice*>(clickSpy.at(3).at(0)), s4);
Jani Honkonen
tst_qpieseries::clickedSignal: adding more stuff to test pie layouting at the same time
r1245 clickSpy.clear();
Jani Honkonen
refactor pie mouse click/hover tests
r2065 // test half size
Jani Honkonen
tst_qpieseries: added XXXanimated tests...
r1301 m_series->setPieSize(0.5);
m_series->setVerticalPosition(0.25);
m_series->setHorizontalPosition(0.25);
Jani Honkonen
refactor pie mouse click/hover tests
r2065 pieRect = QRectF(m_view->chart()->plotArea().topLeft(), m_view->chart()->plotArea().center());
points = slicePoints(pieRect);
QTest::mouseClick(m_view->viewport(), Qt::LeftButton, 0, points.at(0));
QTest::mouseClick(m_view->viewport(), Qt::LeftButton, 0, points.at(1));
QTest::mouseClick(m_view->viewport(), Qt::LeftButton, 0, points.at(2));
QTest::mouseClick(m_view->viewport(), Qt::LeftButton, 0, points.at(3));
TRY_COMPARE(clickSpy.count(), 4);
QCOMPARE(qvariant_cast<QPieSlice*>(clickSpy.at(0).at(0)), s1);
QCOMPARE(qvariant_cast<QPieSlice*>(clickSpy.at(1).at(0)), s2);
QCOMPARE(qvariant_cast<QPieSlice*>(clickSpy.at(2).at(0)), s3);
QCOMPARE(qvariant_cast<QPieSlice*>(clickSpy.at(3).at(0)), s4);
Jani Honkonen
Add basic auto tests for pie
r1105 }
void tst_qpieseries::hoverSignal()
{
Jani Honkonen
refactor pie mouse click/hover tests
r2065 // NOTE:
// This test is the same as tst_qpieslice::hoverSignal()
// Just for different signals.
Jani Honkonen
Try to make bamboo skip tests that it cannot run
r2062 SKIP_IF_CANNOT_TEST_MOUSE_EVENTS();
Jani Honkonen
tst_qpieseries: added XXXanimated tests...
r1301 // add some slices
Jani Honkonen
get rid of some warnings in pie tests
r2072 m_series->append("slice 1", 1);
m_series->append("slice 2", 1);
m_series->append("slice 3", 1);
m_series->append("slice 4", 1);
Jani Honkonen
Adding more tests for pie...
r1119
// add series to the chart
Jani Honkonen
tst_qpieseries: added XXXanimated tests...
r1301 m_view->chart()->legend()->setVisible(false);
m_view->chart()->addSeries(m_series);
m_view->show();
QTest::qWaitForWindowShown(m_view);
Jani Honkonen
Adding more tests for pie...
r1119
Jani Honkonen
yet another feeble attempt to make bamboo tests pass
r2078 // try to ensure focus
QApplication::setActiveWindow(m_view);
m_view->setFocus();
QApplication::processEvents();
QVERIFY(m_view->isActiveWindow());
QVERIFY(m_view->hasFocus());
Jani Honkonen
refactor pie mouse click/hover tests
r2065 // move inside the slices
m_series->setPieSize(1.0);
QRectF pieRect = m_view->chart()->plotArea();
QList<QPoint> points = slicePoints(pieRect);
Jani Honkonen
I'm getting annoyed with these mouse hover tests
r2076 QTest::mouseMove(m_view->viewport(), pieRect.topRight().toPoint(), 100);
Jani Honkonen
tst_qpieseries: added XXXanimated tests...
r1301 QSignalSpy hoverSpy(m_series, SIGNAL(hovered(QPieSlice*,bool)));
Jani Honkonen
Try fixing pie hover tests yet again
r2075 QTest::mouseMove(m_view->viewport(), points.at(0), 100);
QTest::mouseMove(m_view->viewport(), points.at(1), 100);
QTest::mouseMove(m_view->viewport(), points.at(2), 100);
QTest::mouseMove(m_view->viewport(), points.at(3), 100);
QTest::mouseMove(m_view->viewport(), pieRect.topLeft().toPoint(), 100);
Jani Honkonen
Fix pie hover tests in ubuntu
r2074 QApplication::processEvents();
Jani Honkonen
refactor pie mouse click/hover tests
r2065
// check
QCOMPARE(hoverSpy.count(), 8);
int i = 0;
foreach (QPieSlice *s, m_series->slices()) {
QCOMPARE(qvariant_cast<QPieSlice*>(hoverSpy.at(i).at(0)), s);
QCOMPARE(qvariant_cast<bool>(hoverSpy.at(i).at(1)), true);
i++;
QCOMPARE(qvariant_cast<QPieSlice*>(hoverSpy.at(i).at(0)), s);
QCOMPARE(qvariant_cast<bool>(hoverSpy.at(i).at(1)), false);
i++;
}
Jani Honkonen
Add basic auto tests for pie
r1105 }
Jani Honkonen
Add QPieSlice::series() and tests
r1323 void tst_qpieseries::sliceSeries()
{
QPieSlice *slice = new QPieSlice();
QVERIFY(!slice->series());
delete slice;
slice = new QPieSlice(m_series);
QVERIFY(!slice->series());
m_series->append(slice);
QCOMPARE(slice->series(), m_series);
slice = new QPieSlice();
m_series->insert(0, slice);
QCOMPARE(slice->series(), m_series);
Jani Honkonen
Implemented QPieSeries::take()
r1798
m_series->take(slice);
QCOMPARE(slice->series(), (QPieSeries*) 0);
Jani Honkonen
Add QPieSlice::series() and tests
r1323 }
Jani Honkonen
Adding series destruction tests for bar & pie...
r1768 void tst_qpieseries::destruction()
{
// add some slices
QPieSlice *slice1 = m_series->append("slice 1", 1);
QPieSlice *slice2 = m_series->append("slice 2", 2);
QPieSlice *slice3 = m_series->append("slice 3", 3);
QSignalSpy spy1(slice1, SIGNAL(destroyed()));
QSignalSpy spy2(slice2, SIGNAL(destroyed()));
QSignalSpy spy3(slice3, SIGNAL(destroyed()));
// destroy series
delete m_series;
m_series = 0;
// check that series has destroyed its slices
QCOMPARE(spy1.count(), 1);
QCOMPARE(spy2.count(), 1);
QCOMPARE(spy3.count(), 1);
}
Jani Honkonen
refactor pie mouse click/hover tests
r2065 QList<QPoint> tst_qpieseries::slicePoints(QRectF rect)
{
qreal x1 = rect.topLeft().x() + (rect.width() / 4);
qreal x2 = rect.topLeft().x() + (rect.width() / 4) * 3;
qreal y1 = rect.topLeft().y() + (rect.height() / 4);
qreal y2 = rect.topLeft().y() + (rect.height() / 4) * 3;
QList<QPoint> points;
points << QPoint(x2, y1);
points << QPoint(x2, y2);
points << QPoint(x1, y2);
points << QPoint(x1, y1);
return points;
}
Jani Honkonen
Add basic auto tests for pie
r1105 QTEST_MAIN(tst_qpieseries)
#include "tst_qpieseries.moc"