##// END OF EJS Templates
Plugged some memory leaks....
Plugged some memory leaks. Autotests were also made Valgrind friendly by adding a final one millisecond wait to the end of the test to allow pending deleteLaters to run. Also some minor cosmetic cleanup done to autotests. Change-Id: Ic3719167a22949f243eaf54614e174a681dbe34a Reviewed-by: Titta Heikkala <titta.heikkala@theqtcompany.com>

File last commit:

r2733:c6ed50e68438
r2733:c6ed50e68438
Show More
tst_qdatetimeaxis.cpp
314 lines | 8.2 KiB | text/x-c | CppLexer
/****************************************************************************
**
** Copyright (C) 2014 Digia Plc
** All rights reserved.
** For any questions to Digia, please use contact form at http://qt.digia.com
**
** This file is part of the Qt Enterprise Charts Add-on.
**
** $QT_BEGIN_LICENSE$
** Licensees holding valid Qt Enterprise licenses may use this file in
** accordance with the Qt Enterprise License Agreement provided with the
** Software or, alternatively, in accordance with the terms contained in
** a written agreement between you and Digia.
**
** If you have questions regarding the use of this file, please use
** contact form at http://qt.digia.com
** $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();
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::init(m_datetimeaxis, m_series);
m_view = new QChartView;
m_chart = m_view->chart();
m_chart->addSeries(m_series);
m_chart->setAxisY(m_dateTimeAxisY, m_series);
m_chart->setAxisX(m_dateTimeAxisX, m_series);
}
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();
QTest::qWaitForWindowShown(m_view);
QVERIFY(m_dateTimeAxisX->max().toMSecsSinceEpoch() != 0);
QVERIFY(m_dateTimeAxisX->min().toMSecsSinceEpoch() != 0);
}
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();
QTest::qWaitForWindowShown(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();
QTest::qWaitForWindowShown(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();
QTest::qWaitForWindowShown(m_view);
range_raw();
}
void tst_QDateTimeAxis::range_animation_data()
{
range_data();
}
void tst_QDateTimeAxis::range_animation()
{
m_chart->setAnimationOptions(QChart::GridAxisAnimations);
range();
}
QTEST_MAIN(tst_QDateTimeAxis)
#include "tst_qdatetimeaxis.moc"