##// END OF EJS Templates
Remove opengl dependency from oscilloscope demos....
Remove opengl dependency from oscilloscope demos. These demos do not actually use opengl for anything, so no need for the dependency. This dependency also breaks the demos in android. Change-Id: I4da2a83f11fddd416034821d233f0543ee0900ed Reviewed-by: Mika Salmela <mika.salmela@digia.com>

File last commit:

r2433:4d17a12f375e
r2525:5407eb4cd85a
Show More
tst_qpieslice.cpp
340 lines | 10.6 KiB | text/x-c | CppLexer
Jani Honkonen
Add basic auto tests for pie
r1105 /****************************************************************************
**
Miikka Heikkinen
More copyright year changes
r2433 ** Copyright (C) 2013 Digia Plc
Jani Honkonen
Add basic auto tests for pie
r1105 ** 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>
Tero Ahola
Auto tests involving signal spys to wait before comparisons
r1109 #include <tst_definitions.h>
Jani Honkonen
Adding more tests for pie...
r1119 #include <qchartview.h>
#include <qchart.h>
#include <qpieslice.h>
#include <qpieseries.h>
Jani Honkonen
Add basic auto tests for pie
r1105
QTCOMMERCIALCHART_USE_NAMESPACE
class tst_qpieslice : public QObject
{
Q_OBJECT
public slots:
void initTestCase();
void cleanupTestCase();
void init();
void cleanup();
private slots:
void construction();
void changedSignals();
Jani Honkonen
Adding more tests for pie...
r1119 void customize();
Jani Honkonen
refactor pie mouse click/hover tests
r2065 void clickedSignal();
void hoverSignal();
Jani Honkonen
Add basic auto tests for pie
r1105
private:
Jani Honkonen
refactor pie mouse click/hover tests
r2065 QList<QPoint> slicePoints(QRectF rect);
Jani Honkonen
Add basic auto tests for pie
r1105
private:
};
void tst_qpieslice::initTestCase()
{
}
void tst_qpieslice::cleanupTestCase()
{
}
void tst_qpieslice::init()
{
}
void tst_qpieslice::cleanup()
{
}
void tst_qpieslice::construction()
{
// no params
QPieSlice slice1;
Jani Honkonen
Remove qFuzzyXXX functions from pie tests...
r1125 QCOMPARE(slice1.value(), 0.0);
Jani Honkonen
Add basic auto tests for pie
r1105 QVERIFY(slice1.label().isEmpty());
QVERIFY(!slice1.isLabelVisible());
QVERIFY(!slice1.isExploded());
QCOMPARE(slice1.pen(), QPen());
QCOMPARE(slice1.brush(), QBrush());
Tero Ahola
Use labelBrush instead of labelPen for text labels
r1307 QCOMPARE(slice1.labelBrush(), QBrush());
Jani Honkonen
Add basic auto tests for pie
r1105 QCOMPARE(slice1.labelFont(), QFont());
Jani Honkonen
Remove qFuzzyXXX functions from pie tests...
r1125 QCOMPARE(slice1.labelArmLengthFactor(), 0.15); // default value
QCOMPARE(slice1.explodeDistanceFactor(), 0.15); // default value
QCOMPARE(slice1.percentage(), 0.0);
QCOMPARE(slice1.startAngle(), 0.0);
Jani Honkonen
pie: added everything as a property in QPieSlice...
r1274 QCOMPARE(slice1.angleSpan(), 0.0);
Jani Honkonen
Add basic auto tests for pie
r1105
// value and label params
Jani Honkonen
pie: change the order of parameters when creating slices to be more intuitive
r1206 QPieSlice slice2("foobar", 1.0);
Jani Honkonen
Remove qFuzzyXXX functions from pie tests...
r1125 QCOMPARE(slice2.value(), 1.0);
Jani Honkonen
Add basic auto tests for pie
r1105 QCOMPARE(slice2.label(), QString("foobar"));
QVERIFY(!slice2.isLabelVisible());
QVERIFY(!slice2.isExploded());
QCOMPARE(slice2.pen(), QPen());
QCOMPARE(slice2.brush(), QBrush());
Tero Ahola
Use labelBrush instead of labelPen for text labels
r1307 QCOMPARE(slice2.labelBrush(), QBrush());
Jani Honkonen
Add basic auto tests for pie
r1105 QCOMPARE(slice2.labelFont(), QFont());
Jani Honkonen
Remove qFuzzyXXX functions from pie tests...
r1125 QCOMPARE(slice2.labelArmLengthFactor(), 0.15); // default value
QCOMPARE(slice2.explodeDistanceFactor(), 0.15); // default value
QCOMPARE(slice2.percentage(), 0.0);
QCOMPARE(slice2.startAngle(), 0.0);
Jani Honkonen
pie: added everything as a property in QPieSlice...
r1274 QCOMPARE(slice2.angleSpan(), 0.0);
Jani Honkonen
Add basic auto tests for pie
r1105 }
void tst_qpieslice::changedSignals()
{
QPieSlice slice;
Jani Honkonen
pie: remove changed() signal and replace it with more refined signals...
r1224
QSignalSpy valueSpy(&slice, SIGNAL(valueChanged()));
QSignalSpy labelSpy(&slice, SIGNAL(labelChanged()));
Jani Honkonen
pie: added everything as a property in QPieSlice...
r1274 QSignalSpy penSpy(&slice, SIGNAL(penChanged()));
QSignalSpy brushSpy(&slice, SIGNAL(brushChanged()));
Tero Ahola
Use labelBrush instead of labelPen for text labels
r1307 QSignalSpy labelBrushSpy(&slice, SIGNAL(labelBrushChanged()));
Jani Honkonen
pie: added everything as a property in QPieSlice...
r1274 QSignalSpy labelFontSpy(&slice, SIGNAL(labelFontChanged()));
Tero Ahola
Auto tests for new QPieSlice signals
r1334 QSignalSpy colorSpy(&slice, SIGNAL(colorChanged()));
QSignalSpy borderColorSpy(&slice, SIGNAL(borderColorChanged()));
QSignalSpy borderWidthSpy(&slice, SIGNAL(borderWidthChanged()));
QSignalSpy labelColorSpy(&slice, SIGNAL(labelColorChanged()));
Jani Honkonen
pie: added everything as a property in QPieSlice...
r1274
// percentageChanged(), startAngleChanged() and angleSpanChanged() signals tested at tst_qpieseries::calculatedValues()
Jani Honkonen
pie: remove changed() signal and replace it with more refined signals...
r1224
// set everything twice to see we do not get unnecessary signals
Jani Honkonen
pie: make it impossible to add negative slice values
r1280 slice.setValue(1.0);
slice.setValue(-1.0);
QCOMPARE(slice.value(), 1.0);
Jani Honkonen
Add basic auto tests for pie
r1105 slice.setLabel("foobar");
slice.setLabel("foobar");
slice.setLabelVisible();
slice.setLabelVisible();
slice.setExploded();
slice.setExploded();
slice.setPen(QPen(Qt::red));
Tero Ahola
Auto tests for new QPieSlice signals
r1334 slice.setPen(QPen(QBrush(Qt::red), 3));
Jani Honkonen
Add basic auto tests for pie
r1105 slice.setBrush(QBrush(Qt::red));
slice.setBrush(QBrush(Qt::red));
Tero Ahola
Use labelBrush instead of labelPen for text labels
r1307 slice.setLabelBrush(QBrush(Qt::green));
slice.setLabelBrush(QBrush(Qt::green));
Jani Honkonen
Add basic auto tests for pie
r1105 slice.setLabelFont(QFont("Tahoma"));
slice.setLabelFont(QFont("Tahoma"));
Jani Honkonen
QPieSlice::LabelInside -> LabelInsideHorizontal
r1759 slice.setLabelPosition(QPieSlice::LabelInsideHorizontal);
slice.setLabelPosition(QPieSlice::LabelInsideHorizontal);
Jani Honkonen
Add basic auto tests for pie
r1105 slice.setLabelArmLengthFactor(0.1);
slice.setLabelArmLengthFactor(0.1);
slice.setExplodeDistanceFactor(0.1);
slice.setExplodeDistanceFactor(0.1);
Jani Honkonen
pie: remove changed() signal and replace it with more refined signals...
r1224
TRY_COMPARE(valueSpy.count(), 1);
TRY_COMPARE(labelSpy.count(), 1);
Tero Ahola
Auto tests for new QPieSlice signals
r1334 TRY_COMPARE(penSpy.count(), 2);
Jani Honkonen
pie: added everything as a property in QPieSlice...
r1274 TRY_COMPARE(brushSpy.count(), 1);
Tero Ahola
Use labelBrush instead of labelPen for text labels
r1307 TRY_COMPARE(labelBrushSpy.count(), 1);
Jani Honkonen
pie: added everything as a property in QPieSlice...
r1274 TRY_COMPARE(labelFontSpy.count(), 1);
Tero Ahola
Auto tests for new QPieSlice signals
r1334 TRY_COMPARE(colorSpy.count(), 1);
TRY_COMPARE(borderColorSpy.count(), 1);
TRY_COMPARE(borderWidthSpy.count(), 1);
TRY_COMPARE(labelColorSpy.count(), 1);
Jani Honkonen
Add basic auto tests for pie
r1105 }
Jani Honkonen
Adding more tests for pie...
r1119 void tst_qpieslice::customize()
{
// create a pie series
QPieSeries *series = new QPieSeries();
Jani Honkonen
pie: change the order of parameters when creating slices to be more intuitive
r1206 QPieSlice *s1 = series->append("slice 1", 1);
QPieSlice *s2 = series->append("slice 2", 2);
series->append("slice 3", 3);
Jani Honkonen
Adding more tests for pie...
r1119
// customize a slice
QPen p1(Qt::red);
s1->setPen(p1);
QBrush b1(Qt::red);
s1->setBrush(b1);
Tero Ahola
Use labelBrush instead of labelPen for text labels
r1307 s1->setLabelBrush(b1);
Jani Honkonen
Adding more tests for pie...
r1119 QFont f1("Consolas");
s1->setLabelFont(f1);
// add series to the chart
QChartView view(new QChart());
view.resize(200, 200);
view.chart()->addSeries(series);
view.show();
QTest::qWaitForWindowShown(&view);
//QTest::qWait(1000);
// check that customizations persist
QCOMPARE(s1->pen(), p1);
QCOMPARE(s1->brush(), b1);
Tero Ahola
Use labelBrush instead of labelPen for text labels
r1307 QCOMPARE(s1->labelBrush(), b1);
Jani Honkonen
Adding more tests for pie...
r1119 QCOMPARE(s1->labelFont(), f1);
// remove a slice
series->remove(s2);
QCOMPARE(s1->pen(), p1);
QCOMPARE(s1->brush(), b1);
Tero Ahola
Use labelBrush instead of labelPen for text labels
r1307 QCOMPARE(s1->labelBrush(), b1);
Jani Honkonen
Adding more tests for pie...
r1119 QCOMPARE(s1->labelFont(), f1);
// add a slice
Jani Honkonen
pie: change the order of parameters when creating slices to be more intuitive
r1206 series->append("slice 4", 4);
Jani Honkonen
Adding more tests for pie...
r1119 QCOMPARE(s1->pen(), p1);
QCOMPARE(s1->brush(), b1);
Tero Ahola
Use labelBrush instead of labelPen for text labels
r1307 QCOMPARE(s1->labelBrush(), b1);
Jani Honkonen
Adding more tests for pie...
r1119 QCOMPARE(s1->labelFont(), f1);
// insert a slice
Jani Honkonen
pie: change the order of parameters when creating slices to be more intuitive
r1206 series->insert(0, new QPieSlice("slice 5", 5));
Jani Honkonen
Adding more tests for pie...
r1119 QCOMPARE(s1->pen(), p1);
QCOMPARE(s1->brush(), b1);
Tero Ahola
Use labelBrush instead of labelPen for text labels
r1307 QCOMPARE(s1->labelBrush(), b1);
Jani Honkonen
Adding more tests for pie...
r1119 QCOMPARE(s1->labelFont(), f1);
// change theme
// theme will overwrite customizations
view.chart()->setTheme(QChart::ChartThemeHighContrast);
QVERIFY(s1->pen() != p1);
QVERIFY(s1->brush() != b1);
Tero Ahola
Use labelBrush instead of labelPen for text labels
r1307 QVERIFY(s1->labelBrush() != b1);
Jani Honkonen
Adding more tests for pie...
r1119 QVERIFY(s1->labelFont() != f1);
}
Jani Honkonen
refactor pie mouse click/hover tests
r2065 void tst_qpieslice::clickedSignal()
Jani Honkonen
Adding more tests for pie...
r1119 {
Jani Honkonen
refactor pie mouse click/hover tests
r2065 // NOTE:
// This test is the same as tst_qpieseries::clickedSignal()
// Just for different signals.
SKIP_IF_CANNOT_TEST_MOUSE_EVENTS();
Jani Honkonen
Adding more tests for pie...
r1119 // create a pie series
QPieSeries *series = new QPieSeries();
Jani Honkonen
pie: change the order of parameters when creating slices to be more intuitive
r1206 QPieSlice *s1 = series->append("slice 1", 1);
Jani Honkonen
refactor pie mouse click/hover tests
r2065 QPieSlice *s2 = series->append("slice 2", 1);
QPieSlice *s3 = series->append("slice 3", 1);
QPieSlice *s4 = series->append("slice 4", 1);
Jani Honkonen
Adding more tests for pie...
r1119 QSignalSpy clickSpy1(s1, SIGNAL(clicked()));
QSignalSpy clickSpy2(s2, SIGNAL(clicked()));
QSignalSpy clickSpy3(s3, SIGNAL(clicked()));
Jani Honkonen
refactor pie mouse click/hover tests
r2065 QSignalSpy clickSpy4(s4, SIGNAL(clicked()));
Jani Honkonen
Adding more tests for pie...
r1119
// add series to the chart
Jani Honkonen
refactor pie mouse click/hover tests
r2065 QChartView view;
Jani Honkonen
Fix pie autotests...
r1192 view.chart()->legend()->setVisible(false);
Jani Honkonen
Adding more tests for pie...
r1119 view.chart()->addSeries(series);
view.show();
QTest::qWaitForWindowShown(&view);
// simulate clicks
Jani Honkonen
refactor pie mouse click/hover tests
r2065 series->setPieSize(1.0);
QRectF pieRect = view.chart()->plotArea();
QList<QPoint> points = slicePoints(pieRect);
QTest::mouseClick(view.viewport(), Qt::LeftButton, 0, points.at(0));
QTest::mouseClick(view.viewport(), Qt::LeftButton, 0, points.at(1));
QTest::mouseClick(view.viewport(), Qt::LeftButton, 0, points.at(2));
QTest::mouseClick(view.viewport(), Qt::LeftButton, 0, points.at(3));
Jani Honkonen
Adding more tests for pie...
r1119 QCOMPARE(clickSpy1.count(), 1);
QCOMPARE(clickSpy2.count(), 1);
QCOMPARE(clickSpy3.count(), 1);
Jani Honkonen
refactor pie mouse click/hover tests
r2065 QCOMPARE(clickSpy4.count(), 1);
Jani Honkonen
Adding more tests for pie...
r1119 }
Jani Honkonen
refactor pie mouse click/hover tests
r2065 void tst_qpieslice::hoverSignal()
Jani Honkonen
Adding more tests for pie...
r1119 {
Jani Honkonen
refactor pie mouse click/hover tests
r2065 // NOTE:
// This test is the same as tst_qpieseries::hoverSignal()
// Just for different signals.
SKIP_IF_CANNOT_TEST_MOUSE_EVENTS();
// add some slices
Jani Honkonen
Adding more tests for pie...
r1119 QPieSeries *series = new QPieSeries();
Jani Honkonen
pie: change the order of parameters when creating slices to be more intuitive
r1206 QPieSlice *s1 = series->append("slice 1", 1);
Jani Honkonen
refactor pie mouse click/hover tests
r2065 QPieSlice *s2 = series->append("slice 2", 1);
QPieSlice *s3 = series->append("slice 3", 1);
QPieSlice *s4 = series->append("slice 4", 1);
Jani Honkonen
Adding more tests for pie...
r1119
// add series to the chart
Jani Honkonen
refactor pie mouse click/hover tests
r2065 QChartView view;
Jani Honkonen
Fix pie autotests...
r1192 view.chart()->legend()->setVisible(false);
Jani Honkonen
Adding more tests for pie...
r1119 view.chart()->addSeries(series);
view.show();
QTest::qWaitForWindowShown(&view);
Jani Honkonen
yet another feeble attempt to make bamboo tests pass
r2078 // try to ensure focus
QApplication::setActiveWindow(&view);
view.setFocus();
QApplication::processEvents();
QVERIFY(view.isActiveWindow());
QVERIFY(view.hasFocus());
Jani Honkonen
refactor pie mouse click/hover tests
r2065 // move inside the slices
series->setPieSize(1.0);
QRectF pieRect = view.chart()->plotArea();
QList<QPoint> points = slicePoints(pieRect);
Jani Honkonen
I'm getting annoyed with these mouse hover tests
r2076 QTest::mouseMove(view.viewport(), pieRect.topRight().toPoint(), 100);
Jani Honkonen
refactor pie mouse click/hover tests
r2065 QSignalSpy hoverSpy1(s1, SIGNAL(hovered(bool)));
QSignalSpy hoverSpy2(s2, SIGNAL(hovered(bool)));
QSignalSpy hoverSpy3(s3, SIGNAL(hovered(bool)));
QSignalSpy hoverSpy4(s4, SIGNAL(hovered(bool)));
Jani Honkonen
Try fixing pie hover tests yet again
r2075 QTest::mouseMove(view.viewport(), points.at(0), 100);
QTest::mouseMove(view.viewport(), points.at(1), 100);
QTest::mouseMove(view.viewport(), points.at(2), 100);
QTest::mouseMove(view.viewport(), points.at(3), 100);
QTest::mouseMove(view.viewport(), pieRect.topLeft().toPoint(), 100);
Heikkinen Miikka
Fix hoverSignal tests in linux...
r2422 // Final hoverevent can take few milliseconds to appear in some environments, so wait a bit
QTest::qWait(100);
Jani Honkonen
refactor pie mouse click/hover tests
r2065
// check
QCOMPARE(hoverSpy1.count(), 2);
QCOMPARE(qvariant_cast<bool>(hoverSpy1.at(0).at(0)), true);
QCOMPARE(qvariant_cast<bool>(hoverSpy1.at(1).at(0)), false);
QCOMPARE(hoverSpy2.count(), 2);
QCOMPARE(qvariant_cast<bool>(hoverSpy2.at(0).at(0)), true);
QCOMPARE(qvariant_cast<bool>(hoverSpy2.at(1).at(0)), false);
QCOMPARE(hoverSpy3.count(), 2);
QCOMPARE(qvariant_cast<bool>(hoverSpy3.at(0).at(0)), true);
QCOMPARE(qvariant_cast<bool>(hoverSpy3.at(1).at(0)), false);
QCOMPARE(hoverSpy4.count(), 2);
QCOMPARE(qvariant_cast<bool>(hoverSpy4.at(0).at(0)), true);
QCOMPARE(qvariant_cast<bool>(hoverSpy4.at(1).at(0)), false);
}
QList<QPoint> tst_qpieslice::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
Adding more tests for pie...
r1119 }
Jani Honkonen
Add basic auto tests for pie
r1105 QTEST_MAIN(tst_qpieslice)
#include "tst_qpieslice.moc"