Revision control
Copy as Markdown
// Copyright (C) 2024 The Qt Company Ltd.
// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only
#include <QtGraphs/QDateTimeAxis>
#include <QtTest/QtTest>
#include "qtestcase.h"
class tst_datetimeaxis : public QObject
{
Q_OBJECT
private slots:
void initTestCase();
void cleanupTestCase();
void init();
void cleanup();
void construct();
void initialProperties();
void initializeProperties();
void invalidProperties();
private:
QDateTimeAxis *m_axis;
};
void tst_datetimeaxis::initTestCase() {}
void tst_datetimeaxis::cleanupTestCase() {}
void tst_datetimeaxis::init()
{
m_axis = new QDateTimeAxis();
}
void tst_datetimeaxis::cleanup()
{
delete m_axis;
}
void tst_datetimeaxis::construct()
{
QDateTimeAxis *axis = new QDateTimeAxis();
QVERIFY(axis);
delete axis;
}
void tst_datetimeaxis::initialProperties()
{
QVERIFY(m_axis);
QCOMPARE(m_axis->min(),
QDateTime(QDate(1970, 1, 1), QTime::fromMSecsSinceStartOfDay(0), QTimeZone::UTC));
QCOMPARE(m_axis->max(),
QDateTime(QDate(1970, 1, 1), QTime::fromMSecsSinceStartOfDay(0), QTimeZone::UTC)
.addYears(10));
QCOMPARE(m_axis->labelFormat(), "dd-MMMM-yy");
QCOMPARE(m_axis->subTickCount(), 0);
QCOMPARE(m_axis->timeZoneAsString(), "UTC");
QCOMPARE(m_axis->tickCount(), 0);
}
void tst_datetimeaxis::initializeProperties()
{
QVERIFY(m_axis);
#ifdef QT_FEATURE_timezone
QString timeZoneString = "Europe/Helsinki";
#else
QString tzone = "UTC";
#endif
QSignalSpy minSpy(m_axis, &QDateTimeAxis::minChanged);
QSignalSpy maxSpy(m_axis, &QDateTimeAxis::maxChanged);
QSignalSpy labelFormatSpy(m_axis, &QDateTimeAxis::labelFormatChanged);
QSignalSpy tickCountSpy(m_axis, &QDateTimeAxis::tickCountChanged);
QSignalSpy subTickCountSpy(m_axis, &QDateTimeAxis::subTickCountChanged);
QSignalSpy timeZoneSpy(m_axis, &QDateTimeAxis::timeZoneChanged);
m_axis->setMin(QDateTime(QDate::currentDate(), QTime::fromMSecsSinceStartOfDay(0)));
m_axis->setMax(
QDateTime(QDate::currentDate(), QTime::fromMSecsSinceStartOfDay(0), QTimeZone::UTC)
.addYears(20));
m_axis->setLabelFormat("yyyy");
m_axis->setSubTickCount(2);
m_axis->setTickCount(1);
QCOMPARE(m_axis->min(), QDateTime(QDate::currentDate(), QTime::fromMSecsSinceStartOfDay(0)));
QCOMPARE(m_axis->max(),
QDateTime(QDate::currentDate(), QTime::fromMSecsSinceStartOfDay(0), QTimeZone::UTC)
.addYears(20));
QCOMPARE(m_axis->min().timeZone(), QTimeZone::utc());
QCOMPARE(m_axis->max().timeZone(), QTimeZone::utc());
QCOMPARE(m_axis->labelFormat(), "yyyy");
QCOMPARE(m_axis->subTickCount(), 2);
QCOMPARE(m_axis->tickCount(), 1);
auto tz = QString(timeZoneString).toUtf8();
m_axis->setTimeZone(QTimeZone(tz));
auto max = QDateTime(QDate::currentDate(), QTime::fromMSecsSinceStartOfDay(0), QTimeZone::UTC)
.addYears(20);
auto min = QDateTime(QDate::currentDate(), QTime::fromMSecsSinceStartOfDay(0));
max.toTimeZone(QTimeZone(tz));
min.toTimeZone(QTimeZone(tz));
QCOMPARE(m_axis->timeZoneAsString(), timeZoneString);
QCOMPARE(m_axis->min(), min);
QCOMPARE(m_axis->max(), max);
QCOMPARE(m_axis->min().timeZone().offsetFromUtc(m_axis->min()), QTimeZone(tz).offsetFromUtc(m_axis->min()));
QCOMPARE(m_axis->max().timeZone().offsetFromUtc(m_axis->max()), QTimeZone(tz).offsetFromUtc(m_axis->max()));
QCOMPARE(minSpy.size(), 1);
QCOMPARE(maxSpy.size(), 1);
QCOMPARE(labelFormatSpy.size(), 1);
QCOMPARE(tickCountSpy.size(), 1);
QCOMPARE(subTickCountSpy.size(), 1);
QCOMPARE(timeZoneSpy.size(), 1);
}
void tst_datetimeaxis::invalidProperties()
{
QVERIFY(m_axis);
m_axis->setSubTickCount(-1);
m_axis->setTickCount(-1);
QCOMPARE(m_axis->subTickCount(), 0);
QCOMPARE(m_axis->tickCount(), 0);
}
QTEST_MAIN(tst_datetimeaxis)
#include "tst_datetimeaxis.moc"