blob: 13b6fbdf1add1e332f26a997e4de18bfca9c6ffa [file] [log] [blame]
/****************************************************************************
**
** Copyright (C) 2016 The Qt Company Ltd.
** Contact: https://www.qt.io/licensing/
**
** This file is part of the Qt Charts module of the Qt Toolkit.
**
** $QT_BEGIN_LICENSE:GPL$
** Commercial License Usage
** Licensees holding valid commercial Qt licenses may use this file in
** accordance with the commercial license agreement provided with the
** Software or, alternatively, in accordance with the terms contained in
** a written agreement between you and The Qt Company. For licensing terms
** and conditions see https://www.qt.io/terms-conditions. For further
** information use the contact form at https://www.qt.io/contact-us.
**
** GNU General Public License Usage
** Alternatively, this file may be used under the terms of the GNU
** General Public License version 3 or (at your option) any later version
** approved by the KDE Free Qt Foundation. The licenses are as published by
** the Free Software Foundation and appearing in the file LICENSE.GPL3
** included in the packaging of this file. Please review the following
** information to ensure the GNU General Public License requirements will
** be met: https://www.gnu.org/licenses/gpl-3.0.html.
**
** $QT_END_LICENSE$
**
****************************************************************************/
#include "../qabstractaxis/tst_qabstractaxis.h"
#include <QtCharts/QDateTimeAxis>
#include <QtCharts/QLineSeries>
class tst_QDateTimeAxis : public QObject//: public tst_QAbstractAxis
{
Q_OBJECT
public slots:
void initTestCase();
void cleanupTestCase();
void init();
void cleanup();
private slots:
void qdatetimeaxis_data();
void qdatetimeaxis();
void max_raw_data();
void max_raw();
void max_data();
void max();
void max_animation_data();
void max_animation();
void min_raw_data();
void min_raw();
void min_data();
void min();
void min_animation_data();
void min_animation();
void range_raw_data();
void range_raw();
void range_data();
void range();
void range_animation_data();
void range_animation();
void reverse();
private:
QDateTimeAxis *m_dateTimeAxisX;
QDateTimeAxis *m_dateTimeAxisY;
QLineSeries* m_series;
QChartView* m_view;
QChart* m_chart;
};
void tst_QDateTimeAxis::initTestCase()
{
}
void tst_QDateTimeAxis::cleanupTestCase()
{
QTest::qWait(1); // Allow final deleteLaters to run
}
void tst_QDateTimeAxis::init()
{
m_dateTimeAxisX = new QDateTimeAxis();
m_dateTimeAxisY = new QDateTimeAxis();
m_series = new QLineSeries();
*m_series << QPointF(-100, -100) << QPointF(0, 0) << QPointF(100, 100);
// tst_QAbstractAxis::initAxes(m_datetimeaxis, m_series);
m_view = new QChartView;
m_view->resize(200, 200);
m_chart = m_view->chart();
m_chart->addSeries(m_series);
m_chart->addAxis(m_dateTimeAxisY, Qt::AlignLeft);
m_series->attachAxis(m_dateTimeAxisY);
m_chart->addAxis(m_dateTimeAxisX, Qt::AlignBottom);
m_series->attachAxis(m_dateTimeAxisX);
}
void tst_QDateTimeAxis::cleanup()
{
delete m_series;
delete m_dateTimeAxisX;
delete m_dateTimeAxisY;
m_series = 0;
m_dateTimeAxisX = 0;
m_dateTimeAxisY = 0;
delete m_view;
m_view = 0;
m_chart = 0;
// tst_QAbstractAxis::cleanup();
}
void tst_QDateTimeAxis::qdatetimeaxis_data()
{
}
void tst_QDateTimeAxis::qdatetimeaxis()
{
// qabstractaxis();
QCOMPARE(m_dateTimeAxisX->type(), QAbstractAxis::AxisTypeDateTime);
m_view->show();
QVERIFY(QTest::qWaitForWindowExposed(m_view));
QVERIFY(m_dateTimeAxisX->max().toMSecsSinceEpoch() != 0);
QVERIFY(m_dateTimeAxisX->min().toMSecsSinceEpoch() != 0);
QCOMPARE(m_dateTimeAxisX->isReverse(), false);
QCOMPARE(m_dateTimeAxisY->isReverse(), false);
}
void tst_QDateTimeAxis::max_raw_data()
{
QTest::addColumn<QDateTime>("max");
QTest::addColumn<bool>("valid");
QDateTime dateTime;
dateTime.setDate(QDate(2012, 7, 19));
QTest::newRow("19.7.2012 - Valid") << dateTime << true;
dateTime.setDate(QDate(2012, 17, 32));
QTest::newRow("32.17.2012 - Invalid") << dateTime << false;
}
void tst_QDateTimeAxis::max_raw()
{
QFETCH(QDateTime, max);
QFETCH(bool, valid);
QSignalSpy spy0(m_dateTimeAxisX, SIGNAL(maxChanged(QDateTime)));
QSignalSpy spy1(m_dateTimeAxisX, SIGNAL(minChanged(QDateTime)));
QSignalSpy spy2(m_dateTimeAxisX, SIGNAL(rangeChanged(QDateTime,QDateTime)));
m_dateTimeAxisX->setMax(max);
if (valid) {
QVERIFY2(m_dateTimeAxisX->max() == max, "Not equal");
QCOMPARE(spy0.count(), 1);
QCOMPARE(spy1.count(), 0);
QCOMPARE(spy2.count(), 1);
} else {
QVERIFY2(m_dateTimeAxisX->max() != max, "Date is invalid and should not be set");
QCOMPARE(spy0.count(), 0);
QCOMPARE(spy1.count(), 0);
QCOMPARE(spy2.count(), 0);
}
}
void tst_QDateTimeAxis::max_data()
{
max_raw_data();
}
void tst_QDateTimeAxis::max()
{
// m_chart->setAxisX(m_dateTimeAxisX, m_series);
m_view->show();
QVERIFY(QTest::qWaitForWindowExposed(m_view));
max_raw();
}
void tst_QDateTimeAxis::max_animation_data()
{
max_data();
}
void tst_QDateTimeAxis::max_animation()
{
m_chart->setAnimationOptions(QChart::GridAxisAnimations);
max();
}
void tst_QDateTimeAxis::min_raw_data()
{
QTest::addColumn<QDateTime>("min");
QTest::addColumn<bool>("valid");
QDateTime dateTime;
dateTime.setDate(QDate(1908, 1, 11));
QTest::newRow("11.1.1908 - Valid") << dateTime << true; // negative MSecs from Epoch
dateTime.setDate(QDate(2012, 17, 32));
QTest::newRow("32.17.2012 - Invalid") << dateTime << false;
}
void tst_QDateTimeAxis::min_raw()
{
QFETCH(QDateTime, min);
QFETCH(bool, valid);
QSignalSpy spy0(m_dateTimeAxisX, SIGNAL(maxChanged(QDateTime)));
QSignalSpy spy1(m_dateTimeAxisX, SIGNAL(minChanged(QDateTime)));
QSignalSpy spy2(m_dateTimeAxisX, SIGNAL(rangeChanged(QDateTime,QDateTime)));
m_dateTimeAxisX->setMin(min);
if (valid) {
QVERIFY2(m_dateTimeAxisX->min() == min, "Not equal");
QCOMPARE(spy0.count(), 0);
QCOMPARE(spy1.count(), 1);
QCOMPARE(spy2.count(), 1);
} else {
QVERIFY2(m_dateTimeAxisX->min() != min, "Date is invalid and should not be set");
QCOMPARE(spy0.count(), 0);
QCOMPARE(spy1.count(), 0);
QCOMPARE(spy2.count(), 0);
}
}
void tst_QDateTimeAxis::min_data()
{
min_raw_data();
}
void tst_QDateTimeAxis::min()
{
// m_chart->setAxisX(m_dateTimeAxisX, m_series);
m_view->show();
QVERIFY(QTest::qWaitForWindowExposed(m_view));
min_raw();
}
void tst_QDateTimeAxis::min_animation_data()
{
min_data();
}
void tst_QDateTimeAxis::min_animation()
{
m_chart->setAnimationOptions(QChart::GridAxisAnimations);
min();
}
void tst_QDateTimeAxis::range_raw_data()
{
QTest::addColumn<QDateTime>("min");
QTest::addColumn<bool>("minValid");
QTest::addColumn<QDateTime>("max");
QTest::addColumn<bool>("maxValid");
QDateTime minDateTime;
QDateTime maxDateTime;
minDateTime.setDate(QDate(1908, 1, 11));
maxDateTime.setDate(QDate(1958, 11, 21));
QTest::newRow("11.1.1908 - min valid, 21.12.1958 - max valid") << minDateTime << true << maxDateTime << true; // negative MSecs from Epoch, min < max
minDateTime.setDate(QDate(2012, 17, 32));
QTest::newRow("32.17.2012 - min invalid, 21.12.1958 - max valid") << minDateTime << false << maxDateTime << true;
maxDateTime.setDate(QDate(2017, 0, 1));
QTest::newRow("32.17.2012 - min invalid, 1.0.2017 - max invalid") << minDateTime << false << maxDateTime << false;
minDateTime.setDate(QDate(2012, 1, 1));
QTest::newRow("1.1.2012 - min valid, 1.0.2017 - max invalid") << minDateTime << true << maxDateTime << false;
maxDateTime.setDate(QDate(2005, 2, 5));
QTest::newRow("1.1.2012 - min valid, 5.2.2005 - max valid") << minDateTime << true << maxDateTime << true; // min > max
}
void tst_QDateTimeAxis::range_raw()
{
QFETCH(QDateTime, min);
QFETCH(bool, minValid);
QFETCH(QDateTime, max);
QFETCH(bool, maxValid);
QSignalSpy spy0(m_dateTimeAxisX, SIGNAL(maxChanged(QDateTime)));
QSignalSpy spy1(m_dateTimeAxisX, SIGNAL(minChanged(QDateTime)));
QSignalSpy spy2(m_dateTimeAxisX, SIGNAL(rangeChanged(QDateTime,QDateTime)));
m_dateTimeAxisX->setRange(min, max);
if (minValid && maxValid && min < max) {
QCOMPARE(spy0.count(), 1);
QCOMPARE(spy1.count(), 1);
QCOMPARE(spy2.count(), 1);
} else {
QCOMPARE(spy0.count(), 0);
QCOMPARE(spy1.count(), 0);
QCOMPARE(spy2.count(), 0);
}
}
void tst_QDateTimeAxis::range_data()
{
range_raw_data();
}
void tst_QDateTimeAxis::range()
{
// m_chart->setAxisX(m_dateTimeAxisX, m_series);
m_view->show();
QVERIFY(QTest::qWaitForWindowExposed(m_view));
range_raw();
}
void tst_QDateTimeAxis::range_animation_data()
{
range_data();
}
void tst_QDateTimeAxis::range_animation()
{
m_chart->setAnimationOptions(QChart::GridAxisAnimations);
range();
}
void tst_QDateTimeAxis::reverse()
{
QSignalSpy spy(m_dateTimeAxisX, SIGNAL(reverseChanged(bool)));
QCOMPARE(m_dateTimeAxisX->isReverse(), false);
m_dateTimeAxisX->setReverse();
QCOMPARE(m_dateTimeAxisX->isReverse(), true);
QCOMPARE(spy.count(), 1);
m_view->show();
QVERIFY(QTest::qWaitForWindowExposed(m_view));
QCOMPARE(m_dateTimeAxisX->isReverse(), true);
}
QTEST_MAIN(tst_QDateTimeAxis)
#include "tst_qdatetimeaxis.moc"