qtgraphs/tests/auto/cpp2dtest/qgaxis-value/tst_valueaxis.cpp

150 lines
3.6 KiB
C++

// Copyright (C) 2024 The Qt Company Ltd.
// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only
#include "qtestcase.h"
#include <QtGraphs/QValueAxis>
#include <QtGraphs/private/qgraphsview_p.h>
#include <QtTest/QtTest>
class tst_valueaxis : public QObject
{
Q_OBJECT
private slots:
void initTestCase();
void cleanupTestCase();
void init();
void cleanup();
void construct();
void initialProperties();
void initializeProperties();
void invalidProperties();
void addAndDelete();
private:
QValueAxis *m_axis;
};
void tst_valueaxis::initTestCase() {}
void tst_valueaxis::cleanupTestCase() {}
void tst_valueaxis::init()
{
m_axis = new QValueAxis();
}
void tst_valueaxis::cleanup()
{
delete m_axis;
}
void tst_valueaxis::construct()
{
QValueAxis *axis = new QValueAxis();
QVERIFY(axis);
delete axis;
}
void tst_valueaxis::initialProperties()
{
QVERIFY(m_axis);
QCOMPARE(m_axis->min(), 0);
QCOMPARE(m_axis->max(), 10);
QCOMPARE(m_axis->labelFormat(), "");
QCOMPARE(m_axis->labelDecimals(), -1);
QCOMPARE(m_axis->subTickCount(), 0);
QCOMPARE(m_axis->tickAnchor(), 0.0);
QCOMPARE(m_axis->tickInterval(), 0.0);
QCOMPARE(m_axis->zoom(), 1.0);
QCOMPARE(m_axis->pan(), 0.0);
}
void tst_valueaxis::initializeProperties()
{
QVERIFY(m_axis);
QSignalSpy spy0(m_axis, &QValueAxis::minChanged);
QSignalSpy spy1(m_axis, &QValueAxis::maxChanged);
QSignalSpy spy2(m_axis, &QValueAxis::labelFormatChanged);
QSignalSpy spy3(m_axis, &QValueAxis::labelDecimalsChanged);
QSignalSpy spy4(m_axis, &QValueAxis::subTickCountChanged);
QSignalSpy spy5(m_axis, &QValueAxis::tickAnchorChanged);
QSignalSpy spy6(m_axis, &QValueAxis::tickIntervalChanged);
m_axis->setMin(5);
m_axis->setMax(100);
m_axis->setLabelFormat("d");
m_axis->setLabelDecimals(2);
m_axis->setSubTickCount(2);
m_axis->setTickAnchor(0.5);
m_axis->setTickInterval(0.5);
m_axis->setZoom(2.0);
m_axis->setPan(1.0);
QCOMPARE(m_axis->min(), 5);
QCOMPARE(m_axis->max(), 100);
QCOMPARE(m_axis->labelFormat(), "d");
QCOMPARE(m_axis->labelDecimals(), 2);
QCOMPARE(m_axis->subTickCount(), 2);
QCOMPARE(m_axis->tickAnchor(), 0.5);
QCOMPARE(m_axis->tickInterval(), 0.5);
QCOMPARE(m_axis->zoom(), 2.0);
QCOMPARE(m_axis->pan(), 1.0);
m_axis->setLabelFormat("%.2f cakes");
QCOMPARE(m_axis->labelFormat(), "%.2f cakes");
//Constuct a string same way we do in axisRenderer.
QByteArray format = m_axis->labelFormat().toLatin1();
QString formatTest = QString::asprintf(format.constData(), m_axis->min());
QCOMPARE(formatTest, "5.00 cakes");
QCOMPARE(spy0.size(), 1);
QCOMPARE(spy1.size(), 1);
QCOMPARE(spy2.size(), 2);
QCOMPARE(spy3.size(), 1);
QCOMPARE(spy4.size(), 1);
QCOMPARE(spy5.size(), 1);
QCOMPARE(spy6.size(), 1);
}
void tst_valueaxis::invalidProperties()
{
QVERIFY(m_axis);
m_axis->setMin(100);
m_axis->setMax(0);
m_axis->setSubTickCount(-1);
QCOMPARE(m_axis->min(), 0);
QCOMPARE(m_axis->max(), 0);
QCOMPARE(m_axis->subTickCount(), 0);
}
void tst_valueaxis::addAndDelete()
{
QValueAxis *xAxis = new QValueAxis();
QValueAxis *yAxis = new QValueAxis();
QGraphsView view;
view.setAxisX(xAxis);
view.setAxisY(yAxis);
QVERIFY(view.axisX());
QVERIFY(view.axisY());
// Axis destructors should remove them from the GraphsView
delete xAxis;
QVERIFY(!view.axisX());
QVERIFY(view.axisY());
delete yAxis;
QVERIFY(!view.axisX());
QVERIFY(!view.axisY());
}
QTEST_MAIN(tst_valueaxis)
#include "tst_valueaxis.moc"