summaryrefslogtreecommitdiffstats
path: root/tests/auto/qchart/tst_qchart.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'tests/auto/qchart/tst_qchart.cpp')
-rw-r--r--tests/auto/qchart/tst_qchart.cpp112
1 files changed, 112 insertions, 0 deletions
diff --git a/tests/auto/qchart/tst_qchart.cpp b/tests/auto/qchart/tst_qchart.cpp
index 3e835792..7347f16b 100644
--- a/tests/auto/qchart/tst_qchart.cpp
+++ b/tests/auto/qchart/tst_qchart.cpp
@@ -40,6 +40,7 @@
#include <QtCharts/QStackedBarSeries>
#include <QtCharts/QValueAxis>
#include <QtCharts/QBarCategoryAxis>
+#include <QtCharts/QDateTimeAxis>
#include "tst_definitions.h"
QT_CHARTS_USE_NAMESPACE
@@ -122,6 +123,8 @@ private slots:
void createDefaultAxesForLineSeries();
void axisPolarOrientation();
void backgroundRoundness();
+ void zoomInAndOut_data();
+ void zoomInAndOut();
private:
void createTestData();
@@ -1088,6 +1091,115 @@ void tst_QChart::backgroundRoundness()
QVERIFY(m_chart->backgroundRoundness() == 100.0);
}
+void tst_QChart::zoomInAndOut_data()
+{
+ const qreal hourInMSecs = 60.0 * 60.0 * 1000.0;
+
+ QTest::addColumn<QString>("axisXType");
+ QTest::addColumn<QString>("axisYType");
+ QTest::addColumn<qreal>("minX");
+ QTest::addColumn<qreal>("maxX");
+ QTest::addColumn<qreal>("minY");
+ QTest::addColumn<qreal>("maxY");
+
+ QTest::newRow("value-value-normal") << "QValueAxis" << "QValueAxis" << 0.0 << 100.0 << 0.0 << 100.0;
+ QTest::newRow("value-value-small") << "QValueAxis" << "QValueAxis" << -1e-12 << 1e-13 << -1e-12 << 1e-13;
+ QTest::newRow("value-value-mixed") << "QValueAxis" << "QValueAxis" << 0.0 << 100.0 << -1e-12 << 1e-13;
+
+ QTest::newRow("datetime-datetime-normal") << "QDateTimeAxis" << "QDateTimeAxis"
+ << 0.0 << hourInMSecs << 0.0 << hourInMSecs;
+ QTest::newRow("datetime-datetime-small") << "QDateTimeAxis" << "QDateTimeAxis"
+ << 0.0 << 60.0 << 0.0 << 60.0;
+ QTest::newRow("datetime-datetime-mixed") << "QDateTimeAxis" << "QDateTimeAxis"
+ << 0.0 << hourInMSecs << 0.0 << 60.0;
+}
+
+#define CHECK_AXIS_RANGES_MATCH \
+ if (valueAxisX) { \
+ QVERIFY(valueAxisX->min() == minX); \
+ QVERIFY(valueAxisX->max() == maxX); \
+ } else if (dateTimeAxisX) { \
+ QVERIFY(dateTimeAxisX->min().toMSecsSinceEpoch() == minX); \
+ QVERIFY(dateTimeAxisX->max().toMSecsSinceEpoch() == maxX); \
+ } \
+ if (valueAxisY) { \
+ QVERIFY(valueAxisY->min() == minY); \
+ QVERIFY(valueAxisY->max() == maxY); \
+ } else if (dateTimeAxisY) { \
+ QVERIFY(dateTimeAxisY->min().toMSecsSinceEpoch() == minY); \
+ QVERIFY(dateTimeAxisY->max().toMSecsSinceEpoch() == maxY); \
+ }
+
+void tst_QChart::zoomInAndOut()
+{
+ QFETCH(QString, axisXType);
+ QFETCH(QString, axisYType);
+ QFETCH(qreal, minX);
+ QFETCH(qreal, maxX);
+ QFETCH(qreal, minY);
+ QFETCH(qreal, maxY);
+
+ createTestData();
+ QAbstractAxis *axisX = 0;
+ QAbstractAxis *axisY = 0;
+ QValueAxis *valueAxisX = 0;
+ QValueAxis *valueAxisY = 0;
+ QDateTimeAxis *dateTimeAxisX = 0;
+ QDateTimeAxis *dateTimeAxisY = 0;
+
+ if (axisXType == "QValueAxis") {
+ axisX = valueAxisX = new QValueAxis(m_chart);
+ valueAxisX->setRange(minX, maxX);
+ } else if (axisXType == "QDateTimeAxis") {
+ axisX = dateTimeAxisX = new QDateTimeAxis(m_chart);
+ dateTimeAxisX->setRange(QDateTime::fromMSecsSinceEpoch(minX), QDateTime::fromMSecsSinceEpoch(maxX));
+ }
+ if (axisXType == "QValueAxis") {
+ axisY = valueAxisY = new QValueAxis(m_chart);
+ valueAxisY->setRange(minY, maxY);
+ } else if (axisXType == "QDateTimeAxis") {
+ axisY = dateTimeAxisY = new QDateTimeAxis(m_chart);
+ dateTimeAxisY->setRange(QDateTime::fromMSecsSinceEpoch(minY), QDateTime::fromMSecsSinceEpoch(maxY));
+ }
+
+ m_chart->setAxisX(axisX, m_chart->series().first());
+ m_chart->setAxisY(axisY, m_chart->series().first());
+ CHECK_AXIS_RANGES_MATCH
+
+ m_chart->zoomIn();
+ if (valueAxisX) {
+ QVERIFY(valueAxisX->min() != minX);
+ QVERIFY(valueAxisX->max() != maxX);
+ } else if (dateTimeAxisX) {
+ QVERIFY(dateTimeAxisX->min().toMSecsSinceEpoch() != minX);
+ QVERIFY(dateTimeAxisX->max().toMSecsSinceEpoch() != maxX);
+ }
+ if (valueAxisY) {
+ QVERIFY(valueAxisY->min() != minY);
+ QVERIFY(valueAxisY->max() != maxY);
+ } else if (dateTimeAxisY) {
+ QVERIFY(dateTimeAxisY->min().toMSecsSinceEpoch() != minY);
+ QVERIFY(dateTimeAxisY->max().toMSecsSinceEpoch() != maxY);
+ }
+
+ m_chart->zoomReset();
+ CHECK_AXIS_RANGES_MATCH
+
+ m_chart->zoomIn();
+ m_chart->zoomIn();
+ m_chart->zoomReset();
+ CHECK_AXIS_RANGES_MATCH
+
+ m_chart->zoomOut();
+ m_chart->zoomReset();
+ CHECK_AXIS_RANGES_MATCH
+
+ m_chart->zoomOut();
+ m_chart->zoomOut();
+ m_chart->zoomReset();
+ CHECK_AXIS_RANGES_MATCH
+}
+
QTEST_MAIN(tst_QChart)
#include "tst_qchart.moc"