tst_qbarseries.cpp
1337 lines
| 46.3 KiB
| text/x-c
|
CppLexer
sauimone
|
r1100 | /**************************************************************************** | ||
** | ||||
Titta Heikkala
|
r2688 | ** Copyright (C) 2014 Digia Plc | ||
sauimone
|
r1100 | ** All rights reserved. | ||
Titta Heikkala
|
r2740 | ** For any questions to Digia, please use contact form at http://qt.io | ||
sauimone
|
r1100 | ** | ||
Titta Heikkala
|
r2740 | ** This file is part of the Qt Charts module. | ||
sauimone
|
r1100 | ** | ||
Titta Heikkala
|
r2740 | ** Licensees holding valid commercial license for Qt may use this file in | ||
** accordance with the Qt License Agreement provided with the Software | ||||
** or, alternatively, in accordance with the terms contained in a written | ||||
** agreement between you and Digia. | ||||
sauimone
|
r1100 | ** | ||
** If you have questions regarding the use of this file, please use | ||||
Titta Heikkala
|
r2740 | ** contact form at http://qt.io | ||
sauimone
|
r1100 | ** | ||
****************************************************************************/ | ||||
#include <QtTest/QtTest> | ||||
Titta Heikkala
|
r2714 | #include <QtCharts/QBarSeries> | ||
#include <QtCharts/QBarSet> | ||||
#include <QtCharts/QChartView> | ||||
#include <QtCharts/QChart> | ||||
Jani Honkonen
|
r1466 | #include "tst_definitions.h" | ||
sauimone
|
r1100 | |||
Titta Heikkala
|
r2712 | QT_CHARTS_USE_NAMESPACE | ||
sauimone
|
r1100 | |||
sauimone
|
r1145 | Q_DECLARE_METATYPE(QBarSet*) | ||
sauimone
|
r1802 | Q_DECLARE_METATYPE(QList<QBarSet*>) | ||
Titta Heikkala
|
r2689 | Q_DECLARE_METATYPE(QAbstractBarSeries::LabelsPosition) | ||
sauimone
|
r1145 | |||
sauimone
|
r1100 | class tst_QBarSeries : public QObject | ||
{ | ||||
Q_OBJECT | ||||
public slots: | ||||
void initTestCase(); | ||||
void cleanupTestCase(); | ||||
void init(); | ||||
void cleanup(); | ||||
private slots: | ||||
void qbarseries_data(); | ||||
void qbarseries(); | ||||
void type_data(); | ||||
void type(); | ||||
sauimone
|
r1194 | void append_data(); | ||
void append(); | ||||
void remove_data(); | ||||
void remove(); | ||||
sauimone
|
r1802 | void take_data(); | ||
void take(); | ||||
sauimone
|
r1194 | void appendList_data(); | ||
void appendList(); | ||||
sauimone
|
r1463 | void count_data(); | ||
void count(); | ||||
sauimone
|
r1101 | void barSets_data(); | ||
void barSets(); | ||||
void setLabelsVisible_data(); | ||||
void setLabelsVisible(); | ||||
Titta Heikkala
|
r2689 | void setLabelsFormat(); | ||
void setLabelsPosition(); | ||||
Tero Ahola
|
r2067 | void opacity(); | ||
sauimone
|
r1146 | void mouseclicked_data(); | ||
void mouseclicked(); | ||||
void mousehovered_data(); | ||||
void mousehovered(); | ||||
Marek Rosa
|
r1375 | void clearWithAnimations(); | ||
Jani Honkonen
|
r1768 | void destruction(); | ||
Titta Heikkala
|
r2739 | void mousePressed(); | ||
void mouseReleased(); | ||||
void mouseDoubleClicked(); | ||||
sauimone
|
r1100 | |||
private: | ||||
sauimone
|
r1594 | QBarSeries* m_barseries; | ||
QBarSeries* m_barseries_with_sets; | ||||
sauimone
|
r1101 | |||
QList<QBarSet*> m_testSets; | ||||
sauimone
|
r1100 | }; | ||
void tst_QBarSeries::initTestCase() | ||||
{ | ||||
sauimone
|
r1145 | qRegisterMetaType<QBarSet*>("QBarSet*"); | ||
Michal Klocek
|
r1803 | qRegisterMetaType<QList<QBarSet*> >("QList<QBarSet*>"); | ||
Titta Heikkala
|
r2689 | qRegisterMetaType<QAbstractBarSeries::LabelsPosition>("QAbstractBarSeries::LabelsPosition"); | ||
sauimone
|
r1100 | } | ||
void tst_QBarSeries::cleanupTestCase() | ||||
{ | ||||
Miikka Heikkinen
|
r2733 | QTest::qWait(1); // Allow final deleteLaters to run | ||
sauimone
|
r1100 | } | ||
void tst_QBarSeries::init() | ||||
{ | ||||
sauimone
|
r1594 | m_barseries = new QBarSeries(); | ||
m_barseries_with_sets = new QBarSeries(); | ||||
sauimone
|
r1101 | |||
for (int i=0; i<5; i++) { | ||||
m_testSets.append(new QBarSet("testset")); | ||||
sauimone
|
r1194 | m_barseries_with_sets->append(m_testSets.at(i)); | ||
sauimone
|
r1101 | } | ||
sauimone
|
r1100 | } | ||
void tst_QBarSeries::cleanup() | ||||
{ | ||||
Jani Honkonen
|
r2100 | foreach (QBarSet* s, m_testSets) { | ||
sauimone
|
r1194 | m_barseries_with_sets->remove(s); | ||
sauimone
|
r1101 | } | ||
m_testSets.clear(); | ||||
sauimone
|
r1100 | delete m_barseries; | ||
m_barseries = 0; | ||||
sauimone
|
r1101 | delete m_barseries_with_sets; | ||
m_barseries_with_sets = 0; | ||||
sauimone
|
r1100 | } | ||
void tst_QBarSeries::qbarseries_data() | ||||
{ | ||||
} | ||||
void tst_QBarSeries::qbarseries() | ||||
{ | ||||
sauimone
|
r1594 | QBarSeries *barseries = new QBarSeries(); | ||
sauimone
|
r1100 | QVERIFY(barseries != 0); | ||
Miikka Heikkinen
|
r2733 | delete barseries; | ||
sauimone
|
r1100 | } | ||
void tst_QBarSeries::type_data() | ||||
{ | ||||
} | ||||
void tst_QBarSeries::type() | ||||
{ | ||||
QVERIFY(m_barseries->type() == QAbstractSeries::SeriesTypeBar); | ||||
} | ||||
sauimone
|
r1194 | void tst_QBarSeries::append_data() | ||
sauimone
|
r1100 | { | ||
} | ||||
sauimone
|
r1194 | void tst_QBarSeries::append() | ||
sauimone
|
r1100 | { | ||
sauimone
|
r1463 | QVERIFY(m_barseries->count() == 0); | ||
sauimone
|
r1100 | |||
sauimone
|
r1122 | bool ret = false; | ||
// Try adding barset | ||||
sauimone
|
r1100 | QBarSet *barset = new QBarSet("testset"); | ||
sauimone
|
r1194 | ret = m_barseries->append(barset); | ||
sauimone
|
r1100 | |||
sauimone
|
r1122 | QVERIFY(ret == true); | ||
sauimone
|
r1463 | QVERIFY(m_barseries->count() == 1); | ||
sauimone
|
r1101 | |||
sauimone
|
r1122 | // Try adding another set | ||
sauimone
|
r1101 | QBarSet *barset2 = new QBarSet("testset2"); | ||
sauimone
|
r1194 | ret = m_barseries->append(barset2); | ||
sauimone
|
r1122 | |||
QVERIFY(ret == true); | ||||
sauimone
|
r1463 | QVERIFY(m_barseries->count() == 2); | ||
sauimone
|
r1101 | |||
sauimone
|
r1122 | // Try adding same set again | ||
sauimone
|
r1194 | ret = m_barseries->append(barset2); | ||
sauimone
|
r1122 | QVERIFY(ret == false); | ||
sauimone
|
r1463 | QVERIFY(m_barseries->count() == 2); | ||
sauimone
|
r1122 | |||
// Try adding null set | ||||
sauimone
|
r1194 | ret = m_barseries->append(0); | ||
sauimone
|
r1122 | QVERIFY(ret == false); | ||
sauimone
|
r1463 | QVERIFY(m_barseries->count() == 2); | ||
sauimone
|
r1122 | |||
sauimone
|
r1101 | } | ||
sauimone
|
r1194 | void tst_QBarSeries::remove_data() | ||
sauimone
|
r1101 | { | ||
} | ||||
sauimone
|
r1194 | void tst_QBarSeries::remove() | ||
sauimone
|
r1101 | { | ||
int count = m_testSets.count(); | ||||
sauimone
|
r1463 | QVERIFY(m_barseries_with_sets->count() == count); | ||
sauimone
|
r1101 | |||
sauimone
|
r1122 | // Try to remove null pointer (should not remove, should not crash) | ||
bool ret = false; | ||||
sauimone
|
r1194 | ret = m_barseries_with_sets->remove(0); | ||
sauimone
|
r1122 | QVERIFY(ret == false); | ||
sauimone
|
r1463 | QVERIFY(m_barseries_with_sets->count() == count); | ||
sauimone
|
r1122 | |||
// Try to remove invalid pointer (should not remove, should not crash) | ||||
sauimone
|
r1194 | ret = m_barseries_with_sets->remove((QBarSet*) (m_testSets.at(0) + 1) ); | ||
sauimone
|
r1122 | QVERIFY(ret == false); | ||
sauimone
|
r1463 | QVERIFY(m_barseries_with_sets->count() == count); | ||
sauimone
|
r1122 | |||
sauimone
|
r1101 | // remove some sets | ||
sauimone
|
r1194 | ret = m_barseries_with_sets->remove(m_testSets.at(2)); | ||
sauimone
|
r1122 | QVERIFY(ret == true); | ||
sauimone
|
r1194 | ret = m_barseries_with_sets->remove(m_testSets.at(3)); | ||
sauimone
|
r1122 | QVERIFY(ret == true); | ||
sauimone
|
r1194 | ret = m_barseries_with_sets->remove(m_testSets.at(4)); | ||
sauimone
|
r1122 | QVERIFY(ret == true); | ||
sauimone
|
r1101 | |||
sauimone
|
r1463 | QVERIFY(m_barseries_with_sets->count() == 2); | ||
sauimone
|
r1101 | |||
QList<QBarSet*> verifysets = m_barseries_with_sets->barSets(); | ||||
QVERIFY(verifysets.at(0) == m_testSets.at(0)); | ||||
QVERIFY(verifysets.at(1) == m_testSets.at(1)); | ||||
sauimone
|
r1122 | // Try removing all sets again (should be ok, even if some sets have already been removed) | ||
ret = false; | ||||
sauimone
|
r1101 | for (int i=0; i<count; i++) { | ||
sauimone
|
r1194 | ret |= m_barseries_with_sets->remove(m_testSets.at(i)); | ||
sauimone
|
r1101 | } | ||
sauimone
|
r1122 | QVERIFY(ret == true); | ||
sauimone
|
r1463 | QVERIFY(m_barseries_with_sets->count() == 0); | ||
sauimone
|
r1101 | } | ||
sauimone
|
r1802 | void tst_QBarSeries::take_data() | ||
{ | ||||
} | ||||
void tst_QBarSeries::take() | ||||
{ | ||||
int count = m_testSets.count(); | ||||
QVERIFY(m_barseries_with_sets->count() == count); | ||||
QSignalSpy countSpy(m_barseries_with_sets,SIGNAL(countChanged())); | ||||
Jani Honkonen
|
r2110 | QSignalSpy removedSpy(m_barseries_with_sets,SIGNAL(barsetsRemoved(QList<QBarSet*>))); | ||
sauimone
|
r1802 | |||
for (int i=0; i<m_testSets.count(); i++) { | ||||
QBarSet* set = m_testSets.at(i); | ||||
bool success = m_barseries_with_sets->take(set); | ||||
QCoreApplication::processEvents(QEventLoop::AllEvents, 1000); | ||||
QVERIFY(success); | ||||
TRY_COMPARE(countSpy.count(),1); | ||||
TRY_COMPARE(removedSpy.count(),1); | ||||
QList<QVariant> removedSpyArg = removedSpy.takeFirst(); | ||||
Michal Klocek
|
r1803 | QList<QBarSet*> removedSets = qvariant_cast<QList<QBarSet*> > (removedSpyArg.at(0)); | ||
sauimone
|
r1802 | QCOMPARE(removedSets.at(0), m_testSets.at(i)); | ||
countSpy.takeFirst(); | ||||
} | ||||
} | ||||
sauimone
|
r1194 | void tst_QBarSeries::appendList_data() | ||
sauimone
|
r1101 | { | ||
} | ||||
sauimone
|
r1194 | void tst_QBarSeries::appendList() | ||
sauimone
|
r1101 | { | ||
int count = 5; | ||||
sauimone
|
r1463 | QVERIFY(m_barseries->count() == 0); | ||
sauimone
|
r1101 | |||
QList<QBarSet*> sets; | ||||
for (int i=0; i<count; i++) { | ||||
sets.append(new QBarSet("testset")); | ||||
} | ||||
sauimone
|
r1122 | // Append new sets (should succeed, count should match the count of sets) | ||
bool ret = false; | ||||
sauimone
|
r1194 | ret = m_barseries->append(sets); | ||
sauimone
|
r1122 | QVERIFY(ret == true); | ||
sauimone
|
r1463 | QVERIFY(m_barseries->count() == count); | ||
sauimone
|
r1122 | |||
// Append same sets again (should fail, count should remain same) | ||||
sauimone
|
r1194 | ret = m_barseries->append(sets); | ||
sauimone
|
r1122 | QVERIFY(ret == false); | ||
sauimone
|
r1463 | QVERIFY(m_barseries->count() == count); | ||
sauimone
|
r1122 | |||
// Try append empty list (should succeed, but count should remain same) | ||||
QList<QBarSet*> invalidList; | ||||
sauimone
|
r1194 | ret = m_barseries->append(invalidList); | ||
sauimone
|
r1122 | QVERIFY(ret == true); | ||
sauimone
|
r1463 | QVERIFY(m_barseries->count() == count); | ||
sauimone
|
r1122 | |||
// Try append list with one new and one existing set (should fail, count remains same) | ||||
invalidList.append(new QBarSet("ok set")); | ||||
invalidList.append(sets.at(0)); | ||||
sauimone
|
r1194 | ret = m_barseries->append(invalidList); | ||
sauimone
|
r1122 | QVERIFY(ret == false); | ||
sauimone
|
r1463 | QVERIFY(m_barseries->count() == count); | ||
Miikka Heikkinen
|
r2733 | delete invalidList.at(0); | ||
sauimone
|
r1122 | |||
// Try append list with null pointers (should fail, count remains same) | ||||
QList<QBarSet*> invalidList2; | ||||
invalidList2.append(0); | ||||
invalidList2.append(0); | ||||
invalidList2.append(0); | ||||
sauimone
|
r1194 | ret = m_barseries->append(invalidList2); | ||
sauimone
|
r1122 | QVERIFY(ret == false); | ||
sauimone
|
r1463 | QVERIFY(m_barseries->count() == count); | ||
sauimone
|
r1101 | } | ||
sauimone
|
r1463 | void tst_QBarSeries::count_data() | ||
sauimone
|
r1101 | { | ||
} | ||||
sauimone
|
r1463 | void tst_QBarSeries::count() | ||
sauimone
|
r1101 | { | ||
sauimone
|
r1463 | QVERIFY(m_barseries->count() == 0); | ||
QVERIFY(m_barseries_with_sets->count() == m_testSets.count()); | ||||
sauimone
|
r1101 | } | ||
void tst_QBarSeries::barSets_data() | ||||
{ | ||||
} | ||||
void tst_QBarSeries::barSets() | ||||
{ | ||||
QVERIFY(m_barseries->barSets().count() == 0); | ||||
QList<QBarSet*> sets = m_barseries_with_sets->barSets(); | ||||
QVERIFY(sets.count() == m_testSets.count()); | ||||
for (int i=0; i<m_testSets.count(); i++) { | ||||
QVERIFY(sets.at(i) == m_testSets.at(i)); | ||||
} | ||||
} | ||||
void tst_QBarSeries::setLabelsVisible_data() | ||||
{ | ||||
} | ||||
void tst_QBarSeries::setLabelsVisible() | ||||
{ | ||||
sauimone
|
r1123 | // labels should be invisible by default | ||
sauimone
|
r1246 | QVERIFY(m_barseries->isLabelsVisible() == false); | ||
QVERIFY(m_barseries_with_sets->isLabelsVisible() == false); | ||||
sauimone
|
r1101 | |||
sauimone
|
r1123 | // turn labels to visible | ||
sauimone
|
r1101 | m_barseries_with_sets->setLabelsVisible(true); | ||
sauimone
|
r1246 | // TODO: test the signal | ||
QVERIFY(m_barseries_with_sets->isLabelsVisible() == true); | ||||
sauimone
|
r1101 | |||
sauimone
|
r1123 | // turn labels to invisible | ||
sauimone
|
r1101 | m_barseries_with_sets->setLabelsVisible(false); | ||
sauimone
|
r1246 | // TODO: test the signal | ||
QVERIFY(m_barseries_with_sets->isLabelsVisible() == false); | ||||
sauimone
|
r1123 | |||
// without parameter, should turn labels to visible | ||||
m_barseries_with_sets->setLabelsVisible(); | ||||
sauimone
|
r1246 | // TODO: test the signal | ||
QVERIFY(m_barseries_with_sets->isLabelsVisible() == true); | ||||
sauimone
|
r1100 | } | ||
Titta Heikkala
|
r2689 | void tst_QBarSeries::setLabelsFormat() | ||
{ | ||||
QSignalSpy labelsFormatSpy(m_barseries, SIGNAL(labelsFormatChanged(QString))); | ||||
QCOMPARE(m_barseries->labelsFormat(), QString()); | ||||
QString format("(@value)"); | ||||
m_barseries->setLabelsFormat(format); | ||||
TRY_COMPARE(labelsFormatSpy.count(), 1); | ||||
QList<QVariant> arguments = labelsFormatSpy.takeFirst(); | ||||
QVERIFY(arguments.at(0).toString() == format); | ||||
QCOMPARE(m_barseries->labelsFormat(), format); | ||||
m_barseries->setLabelsFormat(QString()); | ||||
TRY_COMPARE(labelsFormatSpy.count(), 1); | ||||
arguments = labelsFormatSpy.takeFirst(); | ||||
QVERIFY(arguments.at(0).toString() == QString()); | ||||
QCOMPARE(m_barseries->labelsFormat(), QString()); | ||||
} | ||||
void tst_QBarSeries::setLabelsPosition() | ||||
{ | ||||
QSignalSpy labelsPositionSpy(m_barseries, | ||||
SIGNAL(labelsPositionChanged(QAbstractBarSeries::LabelsPosition))); | ||||
QCOMPARE(m_barseries->labelsPosition(), QBarSeries::LabelsCenter); | ||||
m_barseries->setLabelsPosition(QBarSeries::LabelsInsideEnd); | ||||
TRY_COMPARE(labelsPositionSpy.count(), 1); | ||||
QList<QVariant> arguments = labelsPositionSpy.takeFirst(); | ||||
QVERIFY(arguments.at(0).value<QAbstractBarSeries::LabelsPosition>() | ||||
== QBarSeries::LabelsInsideEnd); | ||||
QCOMPARE(m_barseries->labelsPosition(), QBarSeries::LabelsInsideEnd); | ||||
m_barseries->setLabelsPosition(QBarSeries::LabelsInsideBase); | ||||
TRY_COMPARE(labelsPositionSpy.count(), 1); | ||||
arguments = labelsPositionSpy.takeFirst(); | ||||
QVERIFY(arguments.at(0).value<QAbstractBarSeries::LabelsPosition>() | ||||
== QBarSeries::LabelsInsideBase); | ||||
QCOMPARE(m_barseries->labelsPosition(), QBarSeries::LabelsInsideBase); | ||||
m_barseries->setLabelsPosition(QBarSeries::LabelsOutsideEnd); | ||||
TRY_COMPARE(labelsPositionSpy.count(), 1); | ||||
arguments = labelsPositionSpy.takeFirst(); | ||||
QVERIFY(arguments.at(0).value<QAbstractBarSeries::LabelsPosition>() | ||||
== QBarSeries::LabelsOutsideEnd); | ||||
QCOMPARE(m_barseries->labelsPosition(), QBarSeries::LabelsOutsideEnd); | ||||
m_barseries->setLabelsPosition(QBarSeries::LabelsCenter); | ||||
TRY_COMPARE(labelsPositionSpy.count(), 1); | ||||
arguments = labelsPositionSpy.takeFirst(); | ||||
QVERIFY(arguments.at(0).value<QAbstractBarSeries::LabelsPosition>() | ||||
== QBarSeries::LabelsCenter); | ||||
QCOMPARE(m_barseries->labelsPosition(), QBarSeries::LabelsCenter); | ||||
} | ||||
Tero Ahola
|
r2067 | void tst_QBarSeries::opacity() | ||
{ | ||||
QSignalSpy opacitySpy(m_barseries, SIGNAL(opacityChanged())); | ||||
QCOMPARE(m_barseries->opacity(), 1.0); | ||||
m_barseries->setOpacity(0.5); | ||||
QCOMPARE(m_barseries->opacity(), 0.5); | ||||
QCOMPARE(opacitySpy.count(), 1); | ||||
m_barseries->setOpacity(0.0); | ||||
QCOMPARE(m_barseries->opacity(), 0.0); | ||||
QCOMPARE(opacitySpy.count(), 2); | ||||
m_barseries->setOpacity(1.0); | ||||
QCOMPARE(m_barseries->opacity(), 1.0); | ||||
QCOMPARE(opacitySpy.count(), 3); | ||||
} | ||||
sauimone
|
r1146 | void tst_QBarSeries::mouseclicked_data() | ||
sauimone
|
r1145 | { | ||
} | ||||
sauimone
|
r1146 | void tst_QBarSeries::mouseclicked() | ||
sauimone
|
r1145 | { | ||
sauimone
|
r2066 | SKIP_IF_CANNOT_TEST_MOUSE_EVENTS(); | ||
sauimone
|
r1594 | QBarSeries* series = new QBarSeries(); | ||
sauimone
|
r1145 | |||
QBarSet* set1 = new QBarSet(QString("set 1")); | ||||
sauimone
|
r1580 | *set1 << 10 << 10 << 10; | ||
sauimone
|
r1194 | series->append(set1); | ||
sauimone
|
r1145 | |||
QBarSet* set2 = new QBarSet(QString("set 2")); | ||||
sauimone
|
r1580 | *set2 << 10 << 10 << 10; | ||
sauimone
|
r1194 | series->append(set2); | ||
sauimone
|
r2073 | QList<QBarSet*> barSets = series->barSets(); | ||
sauimone
|
r1145 | |||
sauimone
|
r1563 | QSignalSpy seriesSpy(series,SIGNAL(clicked(int,QBarSet*))); | ||
sauimone
|
r1490 | QSignalSpy setSpy1(set1, SIGNAL(clicked(int))); | ||
QSignalSpy setSpy2(set2, SIGNAL(clicked(int))); | ||||
sauimone
|
r1145 | |||
QChartView view(new QChart()); | ||||
view.resize(400,300); | ||||
view.chart()->addSeries(series); | ||||
view.show(); | ||||
QTest::qWaitForWindowShown(&view); | ||||
sauimone
|
r2073 | // Calculate expected layout for bars | ||
QRectF plotArea = view.chart()->plotArea(); | ||||
qreal width = plotArea.width(); | ||||
qreal height = plotArea.height(); | ||||
qreal rangeY = 10; // From 0 to 10 because of maximum value in set is 10 | ||||
qreal rangeX = 3; // 3 values per set | ||||
qreal scaleY = (height / rangeY); | ||||
qreal scaleX = (width / rangeX); | ||||
qreal setCount = series->count(); | ||||
qreal domainMinY = 0; // These come from internal domain used by barseries. | ||||
qreal domainMinX = -0.5; // No access to domain from outside, so use hard coded values. | ||||
qreal rectWidth = (scaleX / setCount) * series->barWidth(); | ||||
QVector<QRectF> layout; | ||||
// 3 = count of values in set | ||||
// Note that rects in this vector will be interleaved (set1 bar0, set2 bar0, set1 bar1, set2 bar1, etc.) | ||||
for (int i = 0; i < 3; i++) { | ||||
qreal yPos = height + scaleY * domainMinY + plotArea.top(); | ||||
for (int set = 0; set < setCount; set++) { | ||||
qreal xPos = (i - domainMinX) * scaleX + plotArea.left(); | ||||
xPos -= series->count()*rectWidth/2; | ||||
xPos += set*rectWidth; | ||||
qreal rectHeight = barSets.at(set)->at(i) * scaleY; | ||||
QRectF rect(xPos, yPos - rectHeight, rectWidth, rectHeight); | ||||
layout.append(rect); | ||||
} | ||||
} | ||||
sauimone
|
r1145 | //==================================================================================== | ||
sauimone
|
r1386 | // barset 1, bar 0 | ||
sauimone
|
r2073 | QTest::mouseClick(view.viewport(), Qt::LeftButton, 0, layout.at(0).center().toPoint()); | ||
sauimone
|
r1145 | QCoreApplication::processEvents(QEventLoop::AllEvents, 1000); | ||
QCOMPARE(seriesSpy.count(), 1); | ||||
sauimone
|
r1490 | QCOMPARE(setSpy1.count(), 1); | ||
QCOMPARE(setSpy2.count(), 0); | ||||
sauimone
|
r1145 | |||
QList<QVariant> seriesSpyArg = seriesSpy.takeFirst(); | ||||
sauimone
|
r1563 | QCOMPARE(qvariant_cast<QBarSet*>(seriesSpyArg.at(1)), set1); | ||
QVERIFY(seriesSpyArg.at(0).type() == QVariant::Int); | ||||
QVERIFY(seriesSpyArg.at(0).toInt() == 0); | ||||
sauimone
|
r1145 | |||
sauimone
|
r1490 | QList<QVariant> setSpyArg = setSpy1.takeFirst(); | ||
QVERIFY(setSpyArg.at(0).type() == QVariant::Int); | ||||
QVERIFY(setSpyArg.at(0).toInt() == 0); | ||||
sauimone
|
r1145 | //==================================================================================== | ||
sauimone
|
r1386 | // barset 1, bar 1 | ||
sauimone
|
r2073 | QTest::mouseClick(view.viewport(), Qt::LeftButton, 0, layout.at(2).center().toPoint()); | ||
sauimone
|
r1145 | QCoreApplication::processEvents(QEventLoop::AllEvents, 1000); | ||
QCOMPARE(seriesSpy.count(), 1); | ||||
sauimone
|
r1490 | QCOMPARE(setSpy1.count(), 1); | ||
QCOMPARE(setSpy2.count(), 0); | ||||
sauimone
|
r1145 | |||
seriesSpyArg = seriesSpy.takeFirst(); | ||||
sauimone
|
r1563 | QCOMPARE(qvariant_cast<QBarSet*>(seriesSpyArg.at(1)), set1); | ||
QVERIFY(seriesSpyArg.at(0).type() == QVariant::Int); | ||||
QVERIFY(seriesSpyArg.at(0).toInt() == 1); | ||||
sauimone
|
r1145 | |||
sauimone
|
r1490 | setSpyArg = setSpy1.takeFirst(); | ||
QVERIFY(setSpyArg.at(0).type() == QVariant::Int); | ||||
QVERIFY(setSpyArg.at(0).toInt() == 1); | ||||
sauimone
|
r1145 | //==================================================================================== | ||
sauimone
|
r1386 | // barset 1, bar 2 | ||
sauimone
|
r2073 | QTest::mouseClick(view.viewport(), Qt::LeftButton, 0, layout.at(4).center().toPoint()); | ||
sauimone
|
r1145 | QCoreApplication::processEvents(QEventLoop::AllEvents, 1000); | ||
QCOMPARE(seriesSpy.count(), 1); | ||||
sauimone
|
r1490 | QCOMPARE(setSpy1.count(), 1); | ||
QCOMPARE(setSpy2.count(), 0); | ||||
sauimone
|
r1145 | |||
seriesSpyArg = seriesSpy.takeFirst(); | ||||
sauimone
|
r1563 | QCOMPARE(qvariant_cast<QBarSet*>(seriesSpyArg.at(1)), set1); | ||
QVERIFY(seriesSpyArg.at(0).type() == QVariant::Int); | ||||
QVERIFY(seriesSpyArg.at(0).toInt() == 2); | ||||
sauimone
|
r1145 | |||
sauimone
|
r1490 | setSpyArg = setSpy1.takeFirst(); | ||
QVERIFY(setSpyArg.at(0).type() == QVariant::Int); | ||||
QVERIFY(setSpyArg.at(0).toInt() == 2); | ||||
sauimone
|
r1145 | //==================================================================================== | ||
sauimone
|
r1386 | // barset 2, bar 0 | ||
sauimone
|
r2073 | QTest::mouseClick(view.viewport(), Qt::LeftButton, 0, layout.at(1).center().toPoint()); | ||
sauimone
|
r1145 | QCoreApplication::processEvents(QEventLoop::AllEvents, 1000); | ||
QCOMPARE(seriesSpy.count(), 1); | ||||
sauimone
|
r1490 | QCOMPARE(setSpy1.count(), 0); | ||
QCOMPARE(setSpy2.count(), 1); | ||||
sauimone
|
r1145 | |||
seriesSpyArg = seriesSpy.takeFirst(); | ||||
sauimone
|
r1563 | QCOMPARE(qvariant_cast<QBarSet*>(seriesSpyArg.at(1)), set2); | ||
QVERIFY(seriesSpyArg.at(0).type() == QVariant::Int); | ||||
QVERIFY(seriesSpyArg.at(0).toInt() == 0); | ||||
sauimone
|
r1145 | |||
sauimone
|
r1490 | setSpyArg = setSpy2.takeFirst(); | ||
QVERIFY(setSpyArg.at(0).type() == QVariant::Int); | ||||
QVERIFY(setSpyArg.at(0).toInt() == 0); | ||||
sauimone
|
r1145 | //==================================================================================== | ||
sauimone
|
r1386 | // barset 2, bar 1 | ||
sauimone
|
r2073 | QTest::mouseClick(view.viewport(), Qt::LeftButton, 0, layout.at(3).center().toPoint()); | ||
sauimone
|
r1145 | QCoreApplication::processEvents(QEventLoop::AllEvents, 1000); | ||
QCOMPARE(seriesSpy.count(), 1); | ||||
sauimone
|
r1490 | QCOMPARE(setSpy1.count(), 0); | ||
QCOMPARE(setSpy2.count(), 1); | ||||
sauimone
|
r1145 | |||
seriesSpyArg = seriesSpy.takeFirst(); | ||||
sauimone
|
r1563 | QCOMPARE(qvariant_cast<QBarSet*>(seriesSpyArg.at(1)), set2); | ||
QVERIFY(seriesSpyArg.at(0).type() == QVariant::Int); | ||||
QVERIFY(seriesSpyArg.at(0).toInt() == 1); | ||||
sauimone
|
r1145 | |||
sauimone
|
r1490 | setSpyArg = setSpy2.takeFirst(); | ||
QVERIFY(setSpyArg.at(0).type() == QVariant::Int); | ||||
QVERIFY(setSpyArg.at(0).toInt() == 1); | ||||
sauimone
|
r1145 | //==================================================================================== | ||
sauimone
|
r1386 | // barset 2, bar 2 | ||
sauimone
|
r2073 | QTest::mouseClick(view.viewport(), Qt::LeftButton, 0, layout.at(5).center().toPoint()); | ||
sauimone
|
r1145 | QCoreApplication::processEvents(QEventLoop::AllEvents, 1000); | ||
QCOMPARE(seriesSpy.count(), 1); | ||||
sauimone
|
r1490 | QCOMPARE(setSpy1.count(), 0); | ||
QCOMPARE(setSpy2.count(), 1); | ||||
sauimone
|
r1145 | |||
seriesSpyArg = seriesSpy.takeFirst(); | ||||
sauimone
|
r1563 | QCOMPARE(qvariant_cast<QBarSet*>(seriesSpyArg.at(1)), set2); | ||
QVERIFY(seriesSpyArg.at(0).type() == QVariant::Int); | ||||
QVERIFY(seriesSpyArg.at(0).toInt() == 2); | ||||
sauimone
|
r1490 | |||
setSpyArg = setSpy2.takeFirst(); | ||||
QVERIFY(setSpyArg.at(0).type() == QVariant::Int); | ||||
QVERIFY(setSpyArg.at(0).toInt() == 2); | ||||
sauimone
|
r1145 | } | ||
sauimone
|
r1146 | void tst_QBarSeries::mousehovered_data() | ||
{ | ||||
} | ||||
void tst_QBarSeries::mousehovered() | ||||
{ | ||||
sauimone
|
r2066 | SKIP_IF_CANNOT_TEST_MOUSE_EVENTS(); | ||
sauimone
|
r1594 | QBarSeries* series = new QBarSeries(); | ||
sauimone
|
r1146 | |||
QBarSet* set1 = new QBarSet(QString("set 1")); | ||||
sauimone
|
r1580 | *set1 << 10 << 10 << 10; | ||
sauimone
|
r1194 | series->append(set1); | ||
sauimone
|
r1146 | |||
QBarSet* set2 = new QBarSet(QString("set 2")); | ||||
sauimone
|
r1580 | *set2 << 10 << 10 << 10; | ||
sauimone
|
r1194 | series->append(set2); | ||
sauimone
|
r2073 | QList<QBarSet*> barSets = series->barSets(); | ||
sauimone
|
r1146 | |||
Titta Heikkala
|
r2600 | QSignalSpy seriesIndexSpy(series, SIGNAL(hovered(bool, int, QBarSet*))); | ||
QSignalSpy setIndexSpy1(set1, SIGNAL(hovered(bool, int))); | ||||
QSignalSpy setIndexSpy2(set2, SIGNAL(hovered(bool, int))); | ||||
sauimone
|
r1146 | |||
QChartView view(new QChart()); | ||||
view.resize(400,300); | ||||
view.chart()->addSeries(series); | ||||
view.show(); | ||||
QTest::qWaitForWindowShown(&view); | ||||
sauimone
|
r1287 | //this is hack since view does not get events otherwise | ||
view.setMouseTracking(true); | ||||
sauimone
|
r2073 | // Calculate expected layout for bars | ||
QRectF plotArea = view.chart()->plotArea(); | ||||
qreal width = plotArea.width(); | ||||
qreal height = plotArea.height(); | ||||
qreal rangeY = 10; // From 0 to 10 because of maximum value in set is 10 | ||||
qreal rangeX = 3; // 3 values per set | ||||
qreal scaleY = (height / rangeY); | ||||
qreal scaleX = (width / rangeX); | ||||
qreal setCount = series->count(); | ||||
qreal domainMinY = 0; // These come from internal domain used by barseries. | ||||
qreal domainMinX = -0.5; // No access to domain from outside, so use hard coded values. | ||||
qreal rectWidth = (scaleX / setCount) * series->barWidth(); | ||||
QVector<QRectF> layout; | ||||
// 3 = count of values in set | ||||
// Note that rects in this vector will be interleaved (set1 bar0, set2 bar0, set1 bar1, set2 bar1, etc.) | ||||
for (int i = 0; i < 3; i++) { | ||||
qreal yPos = height + scaleY * domainMinY + plotArea.top(); | ||||
for (int set = 0; set < setCount; set++) { | ||||
qreal xPos = (i - domainMinX) * scaleX + plotArea.left(); | ||||
xPos -= series->count()*rectWidth/2; | ||||
xPos += set*rectWidth; | ||||
qreal rectHeight = barSets.at(set)->at(i) * scaleY; | ||||
QRectF rect(xPos, yPos - rectHeight, rectWidth, rectHeight); | ||||
layout.append(rect); | ||||
} | ||||
} | ||||
sauimone
|
r1146 | //======================================================================= | ||
// move mouse to left border | ||||
sauimone
|
r2073 | QTest::mouseMove(view.viewport(), QPoint(0, layout.at(0).center().y())); | ||
Jani Honkonen
|
r1466 | QCoreApplication::processEvents(QEventLoop::AllEvents, 10000); | ||
Titta Heikkala
|
r2600 | TRY_COMPARE(seriesIndexSpy.count(), 0); | ||
TRY_COMPARE(setIndexSpy1.count(), 0); | ||||
TRY_COMPARE(setIndexSpy2.count(), 0); | ||||
sauimone
|
r1146 | |||
//======================================================================= | ||||
// move mouse on top of set1 | ||||
sauimone
|
r2073 | QTest::mouseMove(view.viewport(), layout.at(0).center().toPoint()); | ||
Titta Heikkala
|
r2600 | TRY_COMPARE(seriesIndexSpy.count(), 1); | ||
TRY_COMPARE(setIndexSpy1.count(), 1); | ||||
TRY_COMPARE(setIndexSpy2.count(), 0); | ||||
sauimone
|
r1146 | |||
Titta Heikkala
|
r2600 | QList<QVariant> seriesIndexSpyArg = seriesIndexSpy.takeFirst(); | ||
QCOMPARE(qvariant_cast<QBarSet*>(seriesIndexSpyArg.at(2)), set1); | ||||
QVERIFY(seriesIndexSpyArg.at(0).type() == QVariant::Bool); | ||||
QVERIFY(seriesIndexSpyArg.at(0).toBool() == true); | ||||
QList<QVariant> setIndexSpyArg = setIndexSpy1.takeFirst(); | ||||
QVERIFY(setIndexSpyArg.at(0).type() == QVariant::Bool); | ||||
QVERIFY(setIndexSpyArg.at(0).toBool() == true); | ||||
sauimone
|
r1146 | //======================================================================= | ||
// move mouse from top of set1 to top of set2 | ||||
sauimone
|
r2073 | QTest::mouseMove(view.viewport(), layout.at(1).center().toPoint()); | ||
Titta Heikkala
|
r2600 | TRY_COMPARE(seriesIndexSpy.count(), 2); | ||
TRY_COMPARE(setIndexSpy1.count(), 1); | ||||
TRY_COMPARE(setIndexSpy2.count(), 1); | ||||
sauimone
|
r1146 | |||
// should leave set1 | ||||
Titta Heikkala
|
r2600 | seriesIndexSpyArg = seriesIndexSpy.takeFirst(); | ||
QCOMPARE(qvariant_cast<QBarSet*>(seriesIndexSpyArg.at(2)), set1); | ||||
QVERIFY(seriesIndexSpyArg.at(0).type() == QVariant::Bool); | ||||
QVERIFY(seriesIndexSpyArg.at(0).toBool() == false); | ||||
setIndexSpyArg = setIndexSpy1.takeFirst(); | ||||
QVERIFY(setIndexSpyArg.at(0).type() == QVariant::Bool); | ||||
QVERIFY(setIndexSpyArg.at(0).toBool() == false); | ||||
sauimone
|
r1146 | // should enter set2 | ||
Titta Heikkala
|
r2600 | seriesIndexSpyArg = seriesIndexSpy.takeFirst(); | ||
QCOMPARE(qvariant_cast<QBarSet*>(seriesIndexSpyArg.at(2)), set2); | ||||
QVERIFY(seriesIndexSpyArg.at(0).type() == QVariant::Bool); | ||||
QVERIFY(seriesIndexSpyArg.at(0).toBool() == true); | ||||
setIndexSpyArg = setIndexSpy2.takeFirst(); | ||||
QVERIFY(setIndexSpyArg.at(0).type() == QVariant::Bool); | ||||
QVERIFY(setIndexSpyArg.at(0).toBool() == true); | ||||
sauimone
|
r1146 | //======================================================================= | ||
// move mouse from top of set2 to background | ||||
sauimone
|
r2073 | QTest::mouseMove(view.viewport(), QPoint(layout.at(1).center().x(), 0)); | ||
Titta Heikkala
|
r2600 | TRY_COMPARE(seriesIndexSpy.count(), 1); | ||
TRY_COMPARE(setIndexSpy1.count(), 0); | ||||
TRY_COMPARE(setIndexSpy2.count(), 1); | ||||
sauimone
|
r1146 | |||
sauimone
|
r1287 | // should leave set2 | ||
Titta Heikkala
|
r2600 | seriesIndexSpyArg = seriesIndexSpy.takeFirst(); | ||
QCOMPARE(qvariant_cast<QBarSet*>(seriesIndexSpyArg.at(2)), set2); | ||||
QVERIFY(seriesIndexSpyArg.at(0).type() == QVariant::Bool); | ||||
QVERIFY(seriesIndexSpyArg.at(0).toBool() == false); | ||||
setIndexSpyArg = setIndexSpy2.takeFirst(); | ||||
QVERIFY(setIndexSpyArg.at(0).type() == QVariant::Bool); | ||||
QVERIFY(setIndexSpyArg.at(0).toBool() == false); | ||||
//======================================================================= | ||||
// move mouse on top of set1, bar0 to check the index (hover into set1) | ||||
QTest::mouseMove(view.viewport(), layout.at(0).center().toPoint()); | ||||
TRY_COMPARE(seriesIndexSpy.count(), 1); | ||||
TRY_COMPARE(setIndexSpy1.count(), 1); | ||||
TRY_COMPARE(setIndexSpy2.count(), 0); | ||||
//should enter set1, bar0 | ||||
seriesIndexSpyArg = seriesIndexSpy.takeFirst(); | ||||
QCOMPARE(qvariant_cast<QBarSet*>(seriesIndexSpyArg.at(2)), set1); | ||||
QVERIFY(seriesIndexSpyArg.at(0).type() == QVariant::Bool); | ||||
QVERIFY(seriesIndexSpyArg.at(0).toBool() == true); | ||||
QVERIFY(seriesIndexSpyArg.at(1).type() == QVariant::Int); | ||||
QVERIFY(seriesIndexSpyArg.at(1).toInt() == 0); | ||||
setIndexSpyArg = setIndexSpy1.takeFirst(); | ||||
QVERIFY(setIndexSpyArg.at(0).type() == QVariant::Bool); | ||||
QVERIFY(setIndexSpyArg.at(0).toBool() == true); | ||||
QVERIFY(setIndexSpyArg.at(1).type() == QVariant::Int); | ||||
QVERIFY(setIndexSpyArg.at(1).toInt() == 0); | ||||
//======================================================================= | ||||
// move mouse on top of set2, bar0 to check the index (hover out set1, | ||||
// hover in set1) | ||||
QTest::mouseMove(view.viewport(), layout.at(1).center().toPoint()); | ||||
TRY_COMPARE(seriesIndexSpy.count(), 2); | ||||
TRY_COMPARE(setIndexSpy1.count(), 1); | ||||
TRY_COMPARE(setIndexSpy2.count(), 1); | ||||
// should leave set1, bar0 | ||||
seriesIndexSpyArg = seriesIndexSpy.takeFirst(); | ||||
QCOMPARE(qvariant_cast<QBarSet*>(seriesIndexSpyArg.at(2)), set1); | ||||
QVERIFY(seriesIndexSpyArg.at(0).type() == QVariant::Bool); | ||||
QVERIFY(seriesIndexSpyArg.at(0).toBool() == false); | ||||
QVERIFY(seriesIndexSpyArg.at(1).type() == QVariant::Int); | ||||
QVERIFY(seriesIndexSpyArg.at(1).toInt() == 0); | ||||
setIndexSpyArg = setIndexSpy1.takeFirst(); | ||||
QVERIFY(setIndexSpyArg.at(0).type() == QVariant::Bool); | ||||
QVERIFY(setIndexSpyArg.at(0).toBool() == false); | ||||
QVERIFY(setIndexSpyArg.at(1).type() == QVariant::Int); | ||||
QVERIFY(setIndexSpyArg.at(1).toInt() == 0); | ||||
// should enter set2, bar0 | ||||
seriesIndexSpyArg = seriesIndexSpy.takeFirst(); | ||||
QCOMPARE(qvariant_cast<QBarSet*>(seriesIndexSpyArg.at(2)), set2); | ||||
QVERIFY(seriesIndexSpyArg.at(0).type() == QVariant::Bool); | ||||
QVERIFY(seriesIndexSpyArg.at(0).toBool() == true); | ||||
QVERIFY(seriesIndexSpyArg.at(1).type() == QVariant::Int); | ||||
QVERIFY(seriesIndexSpyArg.at(1).toInt() == 0); | ||||
setIndexSpyArg = setIndexSpy2.takeFirst(); | ||||
QVERIFY(setIndexSpyArg.at(0).type() == QVariant::Bool); | ||||
QVERIFY(setIndexSpyArg.at(0).toBool() == true); | ||||
QVERIFY(setIndexSpyArg.at(1).type() == QVariant::Int); | ||||
QVERIFY(setIndexSpyArg.at(1).toInt() == 0); | ||||
//======================================================================= | ||||
// move mouse on top of set1, bar1 to check the index (hover out set 2, | ||||
// hover in set1) | ||||
QTest::mouseMove(view.viewport(), layout.at(2).center().toPoint()); | ||||
TRY_COMPARE(seriesIndexSpy.count(), 2); | ||||
TRY_COMPARE(setIndexSpy1.count(), 1); | ||||
TRY_COMPARE(setIndexSpy2.count(), 1); | ||||
// should leave set2, bar0 | ||||
seriesIndexSpyArg = seriesIndexSpy.takeFirst(); | ||||
QCOMPARE(qvariant_cast<QBarSet*>(seriesIndexSpyArg.at(2)), set2); | ||||
QVERIFY(seriesIndexSpyArg.at(0).type() == QVariant::Bool); | ||||
QVERIFY(seriesIndexSpyArg.at(0).toBool() == false); | ||||
QVERIFY(seriesIndexSpyArg.at(1).type() == QVariant::Int); | ||||
QVERIFY(seriesIndexSpyArg.at(1).toInt() == 0); | ||||
setIndexSpyArg = setIndexSpy2.takeFirst(); | ||||
QVERIFY(setIndexSpyArg.at(0).type() == QVariant::Bool); | ||||
QVERIFY(setIndexSpyArg.at(0).toBool() == false); | ||||
QVERIFY(setIndexSpyArg.at(1).type() == QVariant::Int); | ||||
QVERIFY(setIndexSpyArg.at(1).toInt() == 0); | ||||
// should enter set1, bar1 | ||||
seriesIndexSpyArg = seriesIndexSpy.takeFirst(); | ||||
QCOMPARE(qvariant_cast<QBarSet*>(seriesIndexSpyArg.at(2)), set1); | ||||
QVERIFY(seriesIndexSpyArg.at(0).type() == QVariant::Bool); | ||||
QVERIFY(seriesIndexSpyArg.at(0).toBool() == true); | ||||
QVERIFY(seriesIndexSpyArg.at(1).type() == QVariant::Int); | ||||
QVERIFY(seriesIndexSpyArg.at(1).toInt() == 1); | ||||
setIndexSpyArg = setIndexSpy1.takeFirst(); | ||||
QVERIFY(setIndexSpyArg.at(0).type() == QVariant::Bool); | ||||
QVERIFY(setIndexSpyArg.at(0).toBool() == true); | ||||
QVERIFY(setIndexSpyArg.at(1).type() == QVariant::Int); | ||||
QVERIFY(setIndexSpyArg.at(1).toInt() == 1); | ||||
//======================================================================= | ||||
// move mouse on top of view between set1 and set2 to check the index | ||||
// (hover out set1) | ||||
QTest::mouseMove(view.viewport(), QPoint((layout.at(2).right() + layout.at(3).left()) / 2, 0)); | ||||
TRY_COMPARE(seriesIndexSpy.count(), 1); | ||||
TRY_COMPARE(setIndexSpy1.count(), 1); | ||||
TRY_COMPARE(setIndexSpy2.count(), 0); | ||||
// should leave set1, bar1 | ||||
seriesIndexSpyArg = seriesIndexSpy.takeFirst(); | ||||
QCOMPARE(qvariant_cast<QBarSet*>(seriesIndexSpyArg.at(2)), set1); | ||||
QVERIFY(seriesIndexSpyArg.at(0).type() == QVariant::Bool); | ||||
QVERIFY(seriesIndexSpyArg.at(0).toBool() == false); | ||||
QVERIFY(seriesIndexSpyArg.at(1).type() == QVariant::Int); | ||||
QVERIFY(seriesIndexSpyArg.at(1).toInt() == 1); | ||||
setIndexSpyArg = setIndexSpy1.takeFirst(); | ||||
QVERIFY(setIndexSpyArg.at(0).type() == QVariant::Bool); | ||||
QVERIFY(setIndexSpyArg.at(0).toBool() == false); | ||||
QVERIFY(setIndexSpyArg.at(1).type() == QVariant::Int); | ||||
QVERIFY(setIndexSpyArg.at(1).toInt() == 1); | ||||
//======================================================================= | ||||
// move mouse on top of set2, bar1 to check the index (hover in set2) | ||||
QTest::mouseMove(view.viewport(), layout.at(3).center().toPoint()); | ||||
TRY_COMPARE(seriesIndexSpy.count(), 1); | ||||
TRY_COMPARE(setIndexSpy1.count(), 0); | ||||
TRY_COMPARE(setIndexSpy2.count(), 1); | ||||
// should enter set2, bar1 | ||||
seriesIndexSpyArg = seriesIndexSpy.takeFirst(); | ||||
QCOMPARE(qvariant_cast<QBarSet*>(seriesIndexSpyArg.at(2)), set2); | ||||
QVERIFY(seriesIndexSpyArg.at(0).type() == QVariant::Bool); | ||||
QVERIFY(seriesIndexSpyArg.at(0).toBool() == true); | ||||
QVERIFY(seriesIndexSpyArg.at(1).type() == QVariant::Int); | ||||
QVERIFY(seriesIndexSpyArg.at(1).toInt() == 1); | ||||
setIndexSpyArg = setIndexSpy2.takeFirst(); | ||||
QVERIFY(setIndexSpyArg.at(0).type() == QVariant::Bool); | ||||
QVERIFY(setIndexSpyArg.at(0).toBool() == true); | ||||
QVERIFY(setIndexSpyArg.at(1).type() == QVariant::Int); | ||||
QVERIFY(setIndexSpyArg.at(1).toInt() == 1); | ||||
//======================================================================= | ||||
// move mouse on top of the view between bar1 and bar2 to check the index | ||||
//(hover out set2) | ||||
QTest::mouseMove(view.viewport(), QPoint((layout.at(3).right() + layout.at(3).left()) / 2, 0)); | ||||
TRY_COMPARE(seriesIndexSpy.count(), 1); | ||||
TRY_COMPARE(setIndexSpy1.count(), 0); | ||||
TRY_COMPARE(setIndexSpy2.count(), 1); | ||||
// should leave set2, bar1 | ||||
seriesIndexSpyArg = seriesIndexSpy.takeFirst(); | ||||
QCOMPARE(qvariant_cast<QBarSet*>(seriesIndexSpyArg.at(2)), set2); | ||||
QVERIFY(seriesIndexSpyArg.at(0).type() == QVariant::Bool); | ||||
QVERIFY(seriesIndexSpyArg.at(0).toBool() == false); | ||||
QVERIFY(seriesIndexSpyArg.at(1).type() == QVariant::Int); | ||||
QVERIFY(seriesIndexSpyArg.at(1).toInt() == 1); | ||||
setIndexSpyArg = setIndexSpy2.takeFirst(); | ||||
QVERIFY(setIndexSpyArg.at(0).type() == QVariant::Bool); | ||||
QVERIFY(setIndexSpyArg.at(0).toBool() == false); | ||||
QVERIFY(setIndexSpyArg.at(1).type() == QVariant::Int); | ||||
QVERIFY(setIndexSpyArg.at(1).toInt() == 1); | ||||
sauimone
|
r1146 | } | ||
Marek Rosa
|
r1375 | void tst_QBarSeries::clearWithAnimations() | ||
{ | ||||
sauimone
|
r1594 | QBarSeries* series = new QBarSeries(); | ||
Marek Rosa
|
r1375 | |||
QBarSet* set1 = new QBarSet(QString("set 1")); | ||||
sauimone
|
r1580 | *set1 << 10 << 10 << 10; | ||
Marek Rosa
|
r1375 | series->append(set1); | ||
QBarSet* set2 = new QBarSet(QString("set 2")); | ||||
sauimone
|
r1580 | *set2 << 10 << 10 << 10; | ||
Marek Rosa
|
r1375 | series->append(set2); | ||
QChartView view(new QChart()); | ||||
view.resize(400,300); | ||||
view.chart()->setAnimationOptions(QChart::SeriesAnimations); | ||||
view.chart()->addSeries(series); | ||||
view.show(); | ||||
series->clear(); | ||||
} | ||||
Jani Honkonen
|
r1768 | void tst_QBarSeries::destruction() | ||
{ | ||||
// add a barset | ||||
QBarSeries *series = new QBarSeries(); | ||||
QBarSet *set = new QBarSet("testset"); | ||||
QSignalSpy spy1(set, SIGNAL(destroyed())); | ||||
series->append(set); | ||||
// delete the series | ||||
delete series; | ||||
// check that series deletes the set | ||||
QCOMPARE(spy1.count(), 1); | ||||
} | ||||
Titta Heikkala
|
r2739 | void tst_QBarSeries::mousePressed() | ||
{ | ||||
SKIP_IF_CANNOT_TEST_MOUSE_EVENTS(); | ||||
QBarSeries* series = new QBarSeries(); | ||||
QBarSet* set1 = new QBarSet(QString("set 1")); | ||||
*set1 << 10 << 10 << 10; | ||||
series->append(set1); | ||||
QBarSet* set2 = new QBarSet(QString("set 2")); | ||||
*set2 << 10 << 10 << 10; | ||||
series->append(set2); | ||||
QList<QBarSet*> barSets = series->barSets(); | ||||
QSignalSpy seriesSpy(series,SIGNAL(pressed(int,QBarSet*))); | ||||
QSignalSpy setSpy1(set1, SIGNAL(pressed(int))); | ||||
QSignalSpy setSpy2(set2, SIGNAL(pressed(int))); | ||||
QChartView view(new QChart()); | ||||
view.resize(400,300); | ||||
view.chart()->addSeries(series); | ||||
view.show(); | ||||
QTest::qWaitForWindowShown(&view); | ||||
// Calculate expected layout for bars | ||||
QRectF plotArea = view.chart()->plotArea(); | ||||
qreal width = plotArea.width(); | ||||
qreal height = plotArea.height(); | ||||
qreal rangeY = 10; // From 0 to 10 because of maximum value in set is 10 | ||||
qreal rangeX = 3; // 3 values per set | ||||
qreal scaleY = (height / rangeY); | ||||
qreal scaleX = (width / rangeX); | ||||
qreal setCount = series->count(); | ||||
qreal domainMinY = 0; // These come from internal domain used by barseries. | ||||
qreal domainMinX = -0.5; // No access to domain from outside, so use hard coded values. | ||||
qreal rectWidth = (scaleX / setCount) * series->barWidth(); | ||||
QVector<QRectF> layout; | ||||
// 3 = count of values in set | ||||
// Note that rects in this vector will be interleaved (set1 bar0, set2 bar0, set1 bar1, set2 bar1, etc.) | ||||
for (int i = 0; i < 3; i++) { | ||||
qreal yPos = height + scaleY * domainMinY + plotArea.top(); | ||||
for (int set = 0; set < setCount; set++) { | ||||
qreal xPos = (i - domainMinX) * scaleX + plotArea.left(); | ||||
xPos -= series->count()*rectWidth/2; | ||||
xPos += set*rectWidth; | ||||
qreal rectHeight = barSets.at(set)->at(i) * scaleY; | ||||
QRectF rect(xPos, yPos - rectHeight, rectWidth, rectHeight); | ||||
layout.append(rect); | ||||
} | ||||
} | ||||
//==================================================================================== | ||||
// barset 1, bar 0 | ||||
QTest::mouseClick(view.viewport(), Qt::LeftButton, 0, layout.at(0).center().toPoint()); | ||||
QCoreApplication::processEvents(QEventLoop::AllEvents, 1000); | ||||
QCOMPARE(seriesSpy.count(), 1); | ||||
QCOMPARE(setSpy1.count(), 1); | ||||
QCOMPARE(setSpy2.count(), 0); | ||||
QList<QVariant> seriesSpyArg = seriesSpy.takeFirst(); | ||||
QCOMPARE(qvariant_cast<QBarSet*>(seriesSpyArg.at(1)), set1); | ||||
QVERIFY(seriesSpyArg.at(0).type() == QVariant::Int); | ||||
QVERIFY(seriesSpyArg.at(0).toInt() == 0); | ||||
QList<QVariant> setSpyArg = setSpy1.takeFirst(); | ||||
QVERIFY(setSpyArg.at(0).type() == QVariant::Int); | ||||
QVERIFY(setSpyArg.at(0).toInt() == 0); | ||||
//==================================================================================== | ||||
// barset 1, bar 1 | ||||
QTest::mouseClick(view.viewport(), Qt::LeftButton, 0, layout.at(2).center().toPoint()); | ||||
QCoreApplication::processEvents(QEventLoop::AllEvents, 1000); | ||||
QCOMPARE(seriesSpy.count(), 1); | ||||
QCOMPARE(setSpy1.count(), 1); | ||||
QCOMPARE(setSpy2.count(), 0); | ||||
seriesSpyArg = seriesSpy.takeFirst(); | ||||
QCOMPARE(qvariant_cast<QBarSet*>(seriesSpyArg.at(1)), set1); | ||||
QVERIFY(seriesSpyArg.at(0).type() == QVariant::Int); | ||||
QVERIFY(seriesSpyArg.at(0).toInt() == 1); | ||||
setSpyArg = setSpy1.takeFirst(); | ||||
QVERIFY(setSpyArg.at(0).type() == QVariant::Int); | ||||
QVERIFY(setSpyArg.at(0).toInt() == 1); | ||||
//==================================================================================== | ||||
// barset 1, bar 2 | ||||
QTest::mouseClick(view.viewport(), Qt::LeftButton, 0, layout.at(4).center().toPoint()); | ||||
QCoreApplication::processEvents(QEventLoop::AllEvents, 1000); | ||||
QCOMPARE(seriesSpy.count(), 1); | ||||
QCOMPARE(setSpy1.count(), 1); | ||||
QCOMPARE(setSpy2.count(), 0); | ||||
seriesSpyArg = seriesSpy.takeFirst(); | ||||
QCOMPARE(qvariant_cast<QBarSet*>(seriesSpyArg.at(1)), set1); | ||||
QVERIFY(seriesSpyArg.at(0).type() == QVariant::Int); | ||||
QVERIFY(seriesSpyArg.at(0).toInt() == 2); | ||||
setSpyArg = setSpy1.takeFirst(); | ||||
QVERIFY(setSpyArg.at(0).type() == QVariant::Int); | ||||
QVERIFY(setSpyArg.at(0).toInt() == 2); | ||||
//==================================================================================== | ||||
// barset 2, bar 0 | ||||
QTest::mouseClick(view.viewport(), Qt::LeftButton, 0, layout.at(1).center().toPoint()); | ||||
QCoreApplication::processEvents(QEventLoop::AllEvents, 1000); | ||||
QCOMPARE(seriesSpy.count(), 1); | ||||
QCOMPARE(setSpy1.count(), 0); | ||||
QCOMPARE(setSpy2.count(), 1); | ||||
seriesSpyArg = seriesSpy.takeFirst(); | ||||
QCOMPARE(qvariant_cast<QBarSet*>(seriesSpyArg.at(1)), set2); | ||||
QVERIFY(seriesSpyArg.at(0).type() == QVariant::Int); | ||||
QVERIFY(seriesSpyArg.at(0).toInt() == 0); | ||||
setSpyArg = setSpy2.takeFirst(); | ||||
QVERIFY(setSpyArg.at(0).type() == QVariant::Int); | ||||
QVERIFY(setSpyArg.at(0).toInt() == 0); | ||||
//==================================================================================== | ||||
// barset 2, bar 1 | ||||
QTest::mouseClick(view.viewport(), Qt::LeftButton, 0, layout.at(3).center().toPoint()); | ||||
QCoreApplication::processEvents(QEventLoop::AllEvents, 1000); | ||||
QCOMPARE(seriesSpy.count(), 1); | ||||
QCOMPARE(setSpy1.count(), 0); | ||||
QCOMPARE(setSpy2.count(), 1); | ||||
seriesSpyArg = seriesSpy.takeFirst(); | ||||
QCOMPARE(qvariant_cast<QBarSet*>(seriesSpyArg.at(1)), set2); | ||||
QVERIFY(seriesSpyArg.at(0).type() == QVariant::Int); | ||||
QVERIFY(seriesSpyArg.at(0).toInt() == 1); | ||||
setSpyArg = setSpy2.takeFirst(); | ||||
QVERIFY(setSpyArg.at(0).type() == QVariant::Int); | ||||
QVERIFY(setSpyArg.at(0).toInt() == 1); | ||||
//==================================================================================== | ||||
// barset 2, bar 2 | ||||
QTest::mouseClick(view.viewport(), Qt::LeftButton, 0, layout.at(5).center().toPoint()); | ||||
QCoreApplication::processEvents(QEventLoop::AllEvents, 1000); | ||||
QCOMPARE(seriesSpy.count(), 1); | ||||
QCOMPARE(setSpy1.count(), 0); | ||||
QCOMPARE(setSpy2.count(), 1); | ||||
seriesSpyArg = seriesSpy.takeFirst(); | ||||
QCOMPARE(qvariant_cast<QBarSet*>(seriesSpyArg.at(1)), set2); | ||||
QVERIFY(seriesSpyArg.at(0).type() == QVariant::Int); | ||||
QVERIFY(seriesSpyArg.at(0).toInt() == 2); | ||||
setSpyArg = setSpy2.takeFirst(); | ||||
QVERIFY(setSpyArg.at(0).type() == QVariant::Int); | ||||
QVERIFY(setSpyArg.at(0).toInt() == 2); | ||||
} | ||||
void tst_QBarSeries::mouseReleased() | ||||
{ | ||||
SKIP_IF_CANNOT_TEST_MOUSE_EVENTS(); | ||||
QBarSeries* series = new QBarSeries(); | ||||
QBarSet* set1 = new QBarSet(QString("set 1")); | ||||
*set1 << 10 << 10 << 10; | ||||
series->append(set1); | ||||
QBarSet* set2 = new QBarSet(QString("set 2")); | ||||
*set2 << 10 << 10 << 10; | ||||
series->append(set2); | ||||
QList<QBarSet*> barSets = series->barSets(); | ||||
QSignalSpy seriesSpy(series,SIGNAL(released(int,QBarSet*))); | ||||
QSignalSpy setSpy1(set1, SIGNAL(released(int))); | ||||
QSignalSpy setSpy2(set2, SIGNAL(released(int))); | ||||
QChartView view(new QChart()); | ||||
view.resize(400,300); | ||||
view.chart()->addSeries(series); | ||||
view.show(); | ||||
QTest::qWaitForWindowShown(&view); | ||||
// Calculate expected layout for bars | ||||
QRectF plotArea = view.chart()->plotArea(); | ||||
qreal width = plotArea.width(); | ||||
qreal height = plotArea.height(); | ||||
qreal rangeY = 10; // From 0 to 10 because of maximum value in set is 10 | ||||
qreal rangeX = 3; // 3 values per set | ||||
qreal scaleY = (height / rangeY); | ||||
qreal scaleX = (width / rangeX); | ||||
qreal setCount = series->count(); | ||||
qreal domainMinY = 0; // These come from internal domain used by barseries. | ||||
qreal domainMinX = -0.5; // No access to domain from outside, so use hard coded values. | ||||
qreal rectWidth = (scaleX / setCount) * series->barWidth(); | ||||
QVector<QRectF> layout; | ||||
// 3 = count of values in set | ||||
// Note that rects in this vector will be interleaved (set1 bar0, set2 bar0, set1 bar1, set2 bar1, etc.) | ||||
for (int i = 0; i < 3; i++) { | ||||
qreal yPos = height + scaleY * domainMinY + plotArea.top(); | ||||
for (int set = 0; set < setCount; set++) { | ||||
qreal xPos = (i - domainMinX) * scaleX + plotArea.left(); | ||||
xPos -= series->count()*rectWidth/2; | ||||
xPos += set*rectWidth; | ||||
qreal rectHeight = barSets.at(set)->at(i) * scaleY; | ||||
QRectF rect(xPos, yPos - rectHeight, rectWidth, rectHeight); | ||||
layout.append(rect); | ||||
} | ||||
} | ||||
//==================================================================================== | ||||
// barset 1, bar 0 | ||||
QTest::mouseClick(view.viewport(), Qt::LeftButton, 0, layout.at(0).center().toPoint()); | ||||
QCoreApplication::processEvents(QEventLoop::AllEvents, 1000); | ||||
QCOMPARE(seriesSpy.count(), 1); | ||||
QCOMPARE(setSpy1.count(), 1); | ||||
QCOMPARE(setSpy2.count(), 0); | ||||
QList<QVariant> seriesSpyArg = seriesSpy.takeFirst(); | ||||
QCOMPARE(qvariant_cast<QBarSet*>(seriesSpyArg.at(1)), set1); | ||||
QVERIFY(seriesSpyArg.at(0).type() == QVariant::Int); | ||||
QVERIFY(seriesSpyArg.at(0).toInt() == 0); | ||||
QList<QVariant> setSpyArg = setSpy1.takeFirst(); | ||||
QVERIFY(setSpyArg.at(0).type() == QVariant::Int); | ||||
QVERIFY(setSpyArg.at(0).toInt() == 0); | ||||
//==================================================================================== | ||||
// barset 1, bar 1 | ||||
QTest::mouseClick(view.viewport(), Qt::LeftButton, 0, layout.at(2).center().toPoint()); | ||||
QCoreApplication::processEvents(QEventLoop::AllEvents, 1000); | ||||
QCOMPARE(seriesSpy.count(), 1); | ||||
QCOMPARE(setSpy1.count(), 1); | ||||
QCOMPARE(setSpy2.count(), 0); | ||||
seriesSpyArg = seriesSpy.takeFirst(); | ||||
QCOMPARE(qvariant_cast<QBarSet*>(seriesSpyArg.at(1)), set1); | ||||
QVERIFY(seriesSpyArg.at(0).type() == QVariant::Int); | ||||
QVERIFY(seriesSpyArg.at(0).toInt() == 1); | ||||
setSpyArg = setSpy1.takeFirst(); | ||||
QVERIFY(setSpyArg.at(0).type() == QVariant::Int); | ||||
QVERIFY(setSpyArg.at(0).toInt() == 1); | ||||
//==================================================================================== | ||||
// barset 1, bar 2 | ||||
QTest::mouseClick(view.viewport(), Qt::LeftButton, 0, layout.at(4).center().toPoint()); | ||||
QCoreApplication::processEvents(QEventLoop::AllEvents, 1000); | ||||
QCOMPARE(seriesSpy.count(), 1); | ||||
QCOMPARE(setSpy1.count(), 1); | ||||
QCOMPARE(setSpy2.count(), 0); | ||||
seriesSpyArg = seriesSpy.takeFirst(); | ||||
QCOMPARE(qvariant_cast<QBarSet*>(seriesSpyArg.at(1)), set1); | ||||
QVERIFY(seriesSpyArg.at(0).type() == QVariant::Int); | ||||
QVERIFY(seriesSpyArg.at(0).toInt() == 2); | ||||
setSpyArg = setSpy1.takeFirst(); | ||||
QVERIFY(setSpyArg.at(0).type() == QVariant::Int); | ||||
QVERIFY(setSpyArg.at(0).toInt() == 2); | ||||
//==================================================================================== | ||||
// barset 2, bar 0 | ||||
QTest::mouseClick(view.viewport(), Qt::LeftButton, 0, layout.at(1).center().toPoint()); | ||||
QCoreApplication::processEvents(QEventLoop::AllEvents, 1000); | ||||
QCOMPARE(seriesSpy.count(), 1); | ||||
QCOMPARE(setSpy1.count(), 0); | ||||
QCOMPARE(setSpy2.count(), 1); | ||||
seriesSpyArg = seriesSpy.takeFirst(); | ||||
QCOMPARE(qvariant_cast<QBarSet*>(seriesSpyArg.at(1)), set2); | ||||
QVERIFY(seriesSpyArg.at(0).type() == QVariant::Int); | ||||
QVERIFY(seriesSpyArg.at(0).toInt() == 0); | ||||
setSpyArg = setSpy2.takeFirst(); | ||||
QVERIFY(setSpyArg.at(0).type() == QVariant::Int); | ||||
QVERIFY(setSpyArg.at(0).toInt() == 0); | ||||
//==================================================================================== | ||||
// barset 2, bar 1 | ||||
QTest::mouseClick(view.viewport(), Qt::LeftButton, 0, layout.at(3).center().toPoint()); | ||||
QCoreApplication::processEvents(QEventLoop::AllEvents, 1000); | ||||
QCOMPARE(seriesSpy.count(), 1); | ||||
QCOMPARE(setSpy1.count(), 0); | ||||
QCOMPARE(setSpy2.count(), 1); | ||||
seriesSpyArg = seriesSpy.takeFirst(); | ||||
QCOMPARE(qvariant_cast<QBarSet*>(seriesSpyArg.at(1)), set2); | ||||
QVERIFY(seriesSpyArg.at(0).type() == QVariant::Int); | ||||
QVERIFY(seriesSpyArg.at(0).toInt() == 1); | ||||
setSpyArg = setSpy2.takeFirst(); | ||||
QVERIFY(setSpyArg.at(0).type() == QVariant::Int); | ||||
QVERIFY(setSpyArg.at(0).toInt() == 1); | ||||
//==================================================================================== | ||||
// barset 2, bar 2 | ||||
QTest::mouseClick(view.viewport(), Qt::LeftButton, 0, layout.at(5).center().toPoint()); | ||||
QCoreApplication::processEvents(QEventLoop::AllEvents, 1000); | ||||
QCOMPARE(seriesSpy.count(), 1); | ||||
QCOMPARE(setSpy1.count(), 0); | ||||
QCOMPARE(setSpy2.count(), 1); | ||||
seriesSpyArg = seriesSpy.takeFirst(); | ||||
QCOMPARE(qvariant_cast<QBarSet*>(seriesSpyArg.at(1)), set2); | ||||
QVERIFY(seriesSpyArg.at(0).type() == QVariant::Int); | ||||
QVERIFY(seriesSpyArg.at(0).toInt() == 2); | ||||
setSpyArg = setSpy2.takeFirst(); | ||||
QVERIFY(setSpyArg.at(0).type() == QVariant::Int); | ||||
QVERIFY(setSpyArg.at(0).toInt() == 2); | ||||
} | ||||
void tst_QBarSeries::mouseDoubleClicked() | ||||
{ | ||||
SKIP_IF_CANNOT_TEST_MOUSE_EVENTS(); | ||||
QBarSeries* series = new QBarSeries(); | ||||
QBarSet* set1 = new QBarSet(QString("set 1")); | ||||
*set1 << 10 << 10 << 10; | ||||
series->append(set1); | ||||
QBarSet* set2 = new QBarSet(QString("set 2")); | ||||
*set2 << 10 << 10 << 10; | ||||
series->append(set2); | ||||
QList<QBarSet*> barSets = series->barSets(); | ||||
QSignalSpy seriesSpy(series,SIGNAL(doubleClicked(int,QBarSet*))); | ||||
QSignalSpy setSpy1(set1, SIGNAL(doubleClicked(int))); | ||||
QSignalSpy setSpy2(set2, SIGNAL(doubleClicked(int))); | ||||
QChartView view(new QChart()); | ||||
view.resize(400,300); | ||||
view.chart()->addSeries(series); | ||||
view.show(); | ||||
QTest::qWaitForWindowShown(&view); | ||||
// Calculate expected layout for bars | ||||
QRectF plotArea = view.chart()->plotArea(); | ||||
qreal width = plotArea.width(); | ||||
qreal height = plotArea.height(); | ||||
qreal rangeY = 10; // From 0 to 10 because of maximum value in set is 10 | ||||
qreal rangeX = 3; // 3 values per set | ||||
qreal scaleY = (height / rangeY); | ||||
qreal scaleX = (width / rangeX); | ||||
qreal setCount = series->count(); | ||||
qreal domainMinY = 0; // These come from internal domain used by barseries. | ||||
qreal domainMinX = -0.5; // No access to domain from outside, so use hard coded values. | ||||
qreal rectWidth = (scaleX / setCount) * series->barWidth(); | ||||
QVector<QRectF> layout; | ||||
// 3 = count of values in set | ||||
// Note that rects in this vector will be interleaved (set1 bar0, set2 bar0, set1 bar1, set2 bar1, etc.) | ||||
for (int i = 0; i < 3; i++) { | ||||
qreal yPos = height + scaleY * domainMinY + plotArea.top(); | ||||
for (int set = 0; set < setCount; set++) { | ||||
qreal xPos = (i - domainMinX) * scaleX + plotArea.left(); | ||||
xPos -= series->count()*rectWidth/2; | ||||
xPos += set*rectWidth; | ||||
qreal rectHeight = barSets.at(set)->at(i) * scaleY; | ||||
QRectF rect(xPos, yPos - rectHeight, rectWidth, rectHeight); | ||||
layout.append(rect); | ||||
} | ||||
} | ||||
// barset 1, bar 0 | ||||
QTest::mouseDClick(view.viewport(), Qt::LeftButton, 0, layout.at(0).center().toPoint()); | ||||
QCoreApplication::processEvents(QEventLoop::AllEvents, 1000); | ||||
QCOMPARE(seriesSpy.count(), 1); | ||||
QCOMPARE(setSpy1.count(), 1); | ||||
QCOMPARE(setSpy2.count(), 0); | ||||
QList<QVariant> seriesSpyArg = seriesSpy.takeFirst(); | ||||
QCOMPARE(qvariant_cast<QBarSet*>(seriesSpyArg.at(1)), set1); | ||||
QVERIFY(seriesSpyArg.at(0).type() == QVariant::Int); | ||||
QVERIFY(seriesSpyArg.at(0).toInt() == 0); | ||||
QList<QVariant> setSpyArg = setSpy1.takeFirst(); | ||||
QVERIFY(setSpyArg.at(0).type() == QVariant::Int); | ||||
QVERIFY(setSpyArg.at(0).toInt() == 0); | ||||
} | ||||
sauimone
|
r1100 | QTEST_MAIN(tst_QBarSeries) | ||
#include "tst_qbarseries.moc" | ||||