summaryrefslogtreecommitdiffstats
path: root/tests
diff options
context:
space:
mode:
authorMiikka Heikkinen <miikka.heikkinen@qt.io>2016-12-08 14:55:31 +0200
committerMiikka Heikkinen <miikka.heikkinen@qt.io>2016-12-09 12:00:22 +0000
commit34285c480f3ed811a4a58cf8ff0148c7f9698262 (patch)
tree8014504e8a37f7218894809d00714ca17aff855c /tests
parent0f2552ffd5edc2998306362719d50c4cd6d474e9 (diff)
Fix domain ranges when attaching new axis that changes domain type
If domain type changes when attaching an axis, the domain range in the orientation other than the attached axis would be reset to default range determined from series data. Task-number: QTBUG-57351 Change-Id: I7e810e468478c93b002718c00adf8a6721a368f8 Reviewed-by: Mika Salmela <mika.salmela@qt.io> Reviewed-by: Miikka Heikkinen <miikka.heikkinen@qt.io>
Diffstat (limited to 'tests')
-rw-r--r--tests/auto/chartdataset/tst_chartdataset.cpp94
1 files changed, 81 insertions, 13 deletions
diff --git a/tests/auto/chartdataset/tst_chartdataset.cpp b/tests/auto/chartdataset/tst_chartdataset.cpp
index fc1ac1d3..b3f40198 100644
--- a/tests/auto/chartdataset/tst_chartdataset.cpp
+++ b/tests/auto/chartdataset/tst_chartdataset.cpp
@@ -28,21 +28,22 @@
****************************************************************************/
#include <QtTest/QtTest>
-#include <QtCharts/QAbstractAxis>
-#include <QtCharts/QValueAxis>
-#include <QtCharts/QBarCategoryAxis>
-#include <QtCharts/QCategoryAxis>
+#include <QtCharts/qabstractaxis.h>
+#include <QtCharts/qvalueaxis.h>
+#include <QtCharts/qlogvalueaxis.h>
+#include <QtCharts/qbarcategoryaxis.h>
+#include <QtCharts/qcategoryaxis.h>
#ifndef QT_QREAL_IS_FLOAT
-#include <QtCharts/QDateTimeAxis>
+#include <QtCharts/qdatetimeaxis.h>
#endif
-#include <QtCharts/QLineSeries>
-#include <QtCharts/QAreaSeries>
-#include <QtCharts/QScatterSeries>
-#include <QtCharts/QSplineSeries>
-#include <QtCharts/QPieSeries>
-#include <QtCharts/QBarSeries>
-#include <QtCharts/QPercentBarSeries>
-#include <QtCharts/QStackedBarSeries>
+#include <QtCharts/qlineseries.h>
+#include <QtCharts/qareaseries.h>
+#include <QtCharts/qscatterseries.h>
+#include <QtCharts/qsplineseries.h>
+#include <QtCharts/qpieseries.h>
+#include <QtCharts/qbarseries.h>
+#include <QtCharts/qpercentbarseries.h>
+#include <QtCharts/qstackedbarseries.h>
#include <private/chartdataset_p.h>
#include <private/abstractdomain_p.h>
#include <tst_definitions.h>
@@ -85,8 +86,11 @@ private Q_SLOTS:
void attachAxis();
void detachAxis_data();
void detachAxis();
+ void domainChangePreservesRanges();
private:
+ void compareDomain(QAbstractSeries *series, qreal minX, qreal maxX,
+ qreal minY, qreal maxY) const;
ChartDataSet* m_dataset;
};
@@ -206,6 +210,7 @@ void tst_ChartDataSet::addAxis_data()
{
QTest::addColumn<QAbstractAxis*>("axis");
QAbstractAxis* value = new QValueAxis(this);
+ QAbstractAxis* logvalue = new QLogValueAxis(this);
QAbstractAxis* category = new QCategoryAxis(this);
QAbstractAxis* barcategory = new QBarCategoryAxis(this);
#ifndef QT_QREAL_IS_FLOAT
@@ -213,6 +218,7 @@ void tst_ChartDataSet::addAxis_data()
#endif
QTest::newRow("value") << value;
+ QTest::newRow("logvalue") << logvalue;
QTest::newRow("category") << category;
QTest::newRow("barcategory") << barcategory;
#ifndef QT_QREAL_IS_FLOAT
@@ -381,5 +387,67 @@ void tst_ChartDataSet::detachAxis()
QCOMPARE(m_dataset->detachAxis(detachSeries,detachAxis),success);
}
+void tst_ChartDataSet::domainChangePreservesRanges()
+{
+ // This test checks that domain ranges stay correct after an axis attachment causes domain
+ // to be recreated.
+ QVERIFY(m_dataset->series().isEmpty());
+ QVERIFY(m_dataset->axes().isEmpty());
+
+ QLineSeries* line = new QLineSeries(this);
+ QValueAxis* value1 = new QValueAxis(this);
+ QValueAxis* value2 = new QValueAxis(this);
+ QLogValueAxis* logValue1 = new QLogValueAxis(this);
+ QLogValueAxis* logValue2 = new QLogValueAxis(this);
+ (*line) << QPointF(1.0, 2.0) << QPointF(10.0, 20.0);
+
+ value1->setRange(2.0, 6.0);
+ value2->setRange(3.0, 7.0);
+ logValue1->setRange(4.0, 8.0);
+ logValue2->setRange(5.0, 9.0);
+
+ m_dataset->addSeries(line);
+ compareDomain(line, 1.0, 10.0, 2.0, 20.0);
+ m_dataset->addAxis(value1, Qt::AlignBottom);
+ m_dataset->addAxis(value2, Qt::AlignLeft);
+ m_dataset->addAxis(logValue1, Qt::AlignBottom);
+ m_dataset->addAxis(logValue2, Qt::AlignLeft);
+ compareDomain(line, 1.0, 10.0, 2.0, 20.0);
+
+ // Start with two value axes
+ m_dataset->attachAxis(line, value1);
+ compareDomain(line, 2.0, 6.0, 2.0, 20.0);
+ m_dataset->attachAxis(line, value2);
+ compareDomain(line, 2.0, 6.0, 3.0, 7.0);
+
+ // Detach y value and attach y logvalue
+ m_dataset->detachAxis(line, value2);
+ compareDomain(line, 2.0, 6.0, 3.0, 7.0); // Detach doesn't change domain ranges
+ m_dataset->attachAxis(line, logValue2);
+ compareDomain(line, 2.0, 6.0, 5.0, 9.0);
+
+ // Detach x value and attach x logvalue
+ m_dataset->detachAxis(line, value1);
+ compareDomain(line, 2.0, 6.0, 5.0, 9.0); // Detach doesn't change domain ranges
+ m_dataset->attachAxis(line, logValue1);
+ compareDomain(line, 4.0, 8.0, 5.0, 9.0);
+
+ // Detach y logvalue and attach y value
+ m_dataset->detachAxis(line, logValue2);
+ compareDomain(line, 4.0, 8.0, 5.0, 9.0); // Detach doesn't change domain ranges
+ m_dataset->attachAxis(line, value2);
+ compareDomain(line, 4.0, 8.0, 3.0, 7.0);
+}
+
+void tst_ChartDataSet::compareDomain(QAbstractSeries *series, qreal minX, qreal maxX,
+ qreal minY, qreal maxY) const
+{
+ AbstractDomain *domain = m_dataset->domainForSeries(series);
+ QCOMPARE(domain->minX(), minX);
+ QCOMPARE(domain->maxX(), maxX);
+ QCOMPARE(domain->minY(), minY);
+ QCOMPARE(domain->maxY(), maxY);
+}
+
QTEST_MAIN(tst_ChartDataSet)
#include "tst_chartdataset.moc"