From f78be8da2422a758e0f50d3ca0cced53f44d0f12 Mon Sep 17 00:00:00 2001 From: Titta Heikkala Date: Wed, 12 Nov 2014 10:23:01 +0200 Subject: Add pressed, released and doubleClicked signals Added pressed, released and doubleClicked signals for all series. The signals are also added to QPieSlice and QBoxPlotSet. Change-Id: If94948be439a3b53ed48c02d0092091e836222a4 Task-number: QTRD-2384 Reviewed-by: Miikka Heikkinen --- tests/auto/qscatterseries/tst_qscatterseries.cpp | 96 ++++++++++++++++++++++++ 1 file changed, 96 insertions(+) (limited to 'tests/auto/qscatterseries/tst_qscatterseries.cpp') diff --git a/tests/auto/qscatterseries/tst_qscatterseries.cpp b/tests/auto/qscatterseries/tst_qscatterseries.cpp index c68d9999..3872c7bf 100644 --- a/tests/auto/qscatterseries/tst_qscatterseries.cpp +++ b/tests/auto/qscatterseries/tst_qscatterseries.cpp @@ -36,6 +36,9 @@ private slots: void qscatterseries_data(); void qscatterseries(); void scatterChangedSignals(); + void pressedSignal(); + void releasedSignal(); + void doubleClickedSignal(); protected: void pointsVisible_data(); @@ -126,6 +129,99 @@ void tst_QScatterSeries::scatterChangedSignals() TRY_COMPARE(colorSpy.count(), 2); } +void tst_QScatterSeries::pressedSignal() +{ + SKIP_IF_CANNOT_TEST_MOUSE_EVENTS(); + + QPointF scatterPoint(4, 12); + QScatterSeries *scatterSeries = new QScatterSeries(); + scatterSeries->append(QPointF(2, 1)); + scatterSeries->append(scatterPoint); + scatterSeries->append(QPointF(6, 12)); + + QChartView view; + view.chart()->legend()->setVisible(false); + view.chart()->addSeries(scatterSeries); + view.show(); + QTest::qWaitForWindowShown(&view); + + QSignalSpy seriesSpy(scatterSeries, SIGNAL(pressed(QPointF))); + + QPointF checkPoint = view.chart()->mapToPosition(scatterPoint); + QTest::mouseClick(view.viewport(), Qt::LeftButton, 0, checkPoint.toPoint()); + QCoreApplication::processEvents(QEventLoop::AllEvents, 1000); + + QCOMPARE(seriesSpy.count(), 1); + QList seriesSpyArg = seriesSpy.takeFirst(); + // checkPoint is QPointF and for the mouseClick it it's changed to QPoint + // this causes small distinction in decimals so we round it before comparing + QPointF signalPoint = qvariant_cast(seriesSpyArg.at(0)); + QCOMPARE(qRound(signalPoint.x()), qRound(scatterPoint.x())); + QCOMPARE(qRound(signalPoint.y()), qRound(scatterPoint.y())); +} + +void tst_QScatterSeries::releasedSignal() +{ + SKIP_IF_CANNOT_TEST_MOUSE_EVENTS(); + + QPointF scatterPoint(4, 12); + QScatterSeries *scatterSeries = new QScatterSeries(); + scatterSeries->append(QPointF(2, 1)); + scatterSeries->append(scatterPoint); + scatterSeries->append(QPointF(6, 12)); + + QChartView view; + view.chart()->legend()->setVisible(false); + view.chart()->addSeries(scatterSeries); + view.show(); + QTest::qWaitForWindowShown(&view); + + QSignalSpy seriesSpy(scatterSeries, SIGNAL(released(QPointF))); + + QPointF checkPoint = view.chart()->mapToPosition(scatterPoint); + QTest::mouseClick(view.viewport(), Qt::LeftButton, 0, checkPoint.toPoint()); + QCoreApplication::processEvents(QEventLoop::AllEvents, 1000); + + QCOMPARE(seriesSpy.count(), 1); + QList seriesSpyArg = seriesSpy.takeFirst(); + // checkPoint is QPointF and for the mouseClick it it's changed to QPoint + // this causes small distinction in decimals so we round it before comparing + QPointF signalPoint = qvariant_cast(seriesSpyArg.at(0)); + QCOMPARE(qRound(signalPoint.x()), qRound(scatterPoint.x())); + QCOMPARE(qRound(signalPoint.y()), qRound(scatterPoint.y())); +} + +void tst_QScatterSeries::doubleClickedSignal() +{ + SKIP_IF_CANNOT_TEST_MOUSE_EVENTS(); + + QPointF scatterPoint(4, 12); + QScatterSeries *scatterSeries = new QScatterSeries(); + scatterSeries->append(QPointF(2, 1)); + scatterSeries->append(scatterPoint); + scatterSeries->append(QPointF(6, 12)); + + QChartView view; + view.chart()->legend()->setVisible(false); + view.chart()->addSeries(scatterSeries); + view.show(); + QTest::qWaitForWindowShown(&view); + + QSignalSpy seriesSpy(scatterSeries, SIGNAL(doubleClicked(QPointF))); + + QPointF checkPoint = view.chart()->mapToPosition(scatterPoint); + QTest::mouseDClick(view.viewport(), Qt::LeftButton, 0, checkPoint.toPoint()); + QCoreApplication::processEvents(QEventLoop::AllEvents, 1000); + + QCOMPARE(seriesSpy.count(), 1); + QList seriesSpyArg = seriesSpy.takeFirst(); + // checkPoint is QPointF and for the mouseClick it it's changed to QPoint + // this causes small distinction in decimals so we round it before comparing + QPointF signalPoint = qvariant_cast(seriesSpyArg.at(0)); + QCOMPARE(qRound(signalPoint.x()), qRound(scatterPoint.x())); + QCOMPARE(qRound(signalPoint.y()), qRound(scatterPoint.y())); +} + QTEST_MAIN(tst_QScatterSeries) #include "tst_qscatterseries.moc" -- cgit v1.2.3