tst_qchartview.cpp
183 lines
| 5.0 KiB
| text/x-c
|
CppLexer
|
r774 | /**************************************************************************** | ||
** | ||||
** Copyright (C) 2012 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 Commercial Charts Add-on. | ||||
** | ||||
** $QT_BEGIN_LICENSE$ | ||||
** Licensees holding valid Qt Commercial licenses may use this file in | ||||
** accordance with the Qt Commercial 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 <QtTest/QtTest> | ||||
#include <qchartview.h> | ||||
|
r802 | #include <qlineseries.h> | ||
#include <cmath> | ||||
|
r1109 | #include <tst_definitions.h> | ||
|
r1652 | #include <qvaluesaxis.h> | ||
|
r774 | |||
QTCOMMERCIALCHART_USE_NAMESPACE | ||||
Q_DECLARE_METATYPE(QChart*) | ||||
Q_DECLARE_METATYPE(QChartView::RubberBands) | ||||
|
r804 | Q_DECLARE_METATYPE(Qt::Key) | ||
|
r774 | |||
class tst_QChartView : public QObject | ||||
{ | ||||
Q_OBJECT | ||||
public Q_SLOTS: | ||||
void initTestCase(); | ||||
void cleanupTestCase(); | ||||
void init(); | ||||
void cleanup(); | ||||
private Q_SLOTS: | ||||
void qchartview_data(); | ||||
void qchartview(); | ||||
void chart_data(); | ||||
void chart(); | ||||
void rubberBand_data(); | ||||
void rubberBand(); | ||||
private: | ||||
QChartView* m_view; | ||||
}; | ||||
void tst_QChartView::initTestCase() | ||||
{ | ||||
|
r804 | //test tracks mouse, give a while to user to relese it | ||
QTest::qWait(1000); | ||||
|
r774 | } | ||
void tst_QChartView::cleanupTestCase() | ||||
{ | ||||
} | ||||
void tst_QChartView::init() | ||||
{ | ||||
m_view = new QChartView(new QChart()); | ||||
|
r874 | m_view->chart()->legend()->setVisible(false); | ||
|
r774 | } | ||
void tst_QChartView::cleanup() | ||||
{ | ||||
delete m_view; | ||||
m_view =0; | ||||
} | ||||
void tst_QChartView::qchartview_data() | ||||
{ | ||||
} | ||||
void tst_QChartView::qchartview() | ||||
{ | ||||
QVERIFY(m_view->chart()); | ||||
QCOMPARE(m_view->rubberBand(), QChartView::NoRubberBand); | ||||
|
r802 | m_view->show(); | ||
|
r774 | QTest::qWaitForWindowShown(m_view); | ||
|
r1290 | |||
delete(new QChartView()); | ||||
QChartView view; | ||||
QVERIFY(view.chart()); | ||||
|
r774 | } | ||
void tst_QChartView::chart_data() | ||||
{ | ||||
QTest::addColumn<QChart*>("chart"); | ||||
QTest::newRow("qchart") << new QChart(); | ||||
} | ||||
void tst_QChartView::chart() | ||||
{ | ||||
QFETCH(QChart*, chart); | ||||
QChartView* view = new QChartView(chart); | ||||
QCOMPARE(view->chart(), chart); | ||||
delete view; | ||||
} | ||||
void tst_QChartView::rubberBand_data() | ||||
{ | ||||
QTest::addColumn<QChartView::RubberBands>("rubberBand"); | ||||
|
r802 | QTest::addColumn<int>("Xcount"); | ||
QTest::addColumn<int>("Ycount"); | ||||
QTest::addColumn<int>("minX"); | ||||
QTest::addColumn<int>("maxX"); | ||||
QTest::addColumn<int>("minY"); | ||||
QTest::addColumn<int>("maxY"); | ||||
|
r914 | QTest::newRow("HorizonalRubberBand") << QChartView::RubberBands(QChartView::HorizonalRubberBand) << 0 << 1 << 20 << 180 << 0<< 200; | ||
QTest::newRow("VerticalRubberBand") << QChartView::RubberBands(QChartView::VerticalRubberBand) << 1 << 0 << 0 << 200 << 20<< 180; | ||||
QTest::newRow("RectangleRubberBand") << QChartView::RubberBands(QChartView::RectangleRubberBand) << 1 << 1 <<20 << 180 << 20<< 180; | ||||
|
r774 | } | ||
void tst_QChartView::rubberBand() | ||||
{ | ||||
QFETCH(QChartView::RubberBands, rubberBand); | ||||
|
r802 | QFETCH(int, Xcount); | ||
QFETCH(int, Ycount); | ||||
QFETCH(int, minX); | ||||
QFETCH(int, maxX); | ||||
QFETCH(int, minY); | ||||
QFETCH(int, maxY); | ||||
|
r774 | m_view->setRubberBand(rubberBand); | ||
|
r874 | QRectF padding = m_view->chart()->margins(); | ||
|
r774 | QCOMPARE(m_view->rubberBand(), rubberBand); | ||
|
r802 | |||
QLineSeries* line = new QLineSeries(); | ||||
|
r914 | *line << QPointF(0, 0) << QPointF(200, 200); | ||
|
r802 | |||
m_view->chart()->addSeries(line); | ||||
|
r1652 | m_view->chart()->createDefaultAxes(); | ||
|
r914 | m_view->resize(200 + padding.left() + padding.right(), 200 + padding.top()+ padding.bottom()); | ||
|
r802 | m_view->show(); | ||
|
r804 | |||
//this is hack since view does not get events otherwise | ||||
|
r802 | m_view->setMouseTracking(true); | ||
|
r1541 | QAbstractAxis* axisY = m_view->chart()->axisY(); | ||
|
r967 | QSignalSpy spy0(axisY, SIGNAL(rangeChanged(qreal,qreal))); | ||
|
r1541 | QAbstractAxis* axisX = m_view->chart()->axisX(); | ||
|
r967 | QSignalSpy spy1(axisX, SIGNAL(rangeChanged(qreal,qreal))); | ||
|
r802 | |||
QTest::qWaitForWindowShown(m_view); | ||||
|
r874 | QTest::mouseMove(m_view->viewport(), QPoint(minX, minY) + padding.topLeft().toPoint()); | ||
QTest::mousePress(m_view->viewport(), Qt::LeftButton, 0, QPoint(minX, minY) + padding.topLeft().toPoint()); | ||||
QTest::mouseMove(m_view->viewport(), QPoint(maxX, maxY) + padding.topLeft().toPoint()); | ||||
QTest::mouseRelease(m_view->viewport(), Qt::LeftButton, 0, QPoint(maxX, maxY)+ padding.topLeft().toPoint()); | ||||
|
r1109 | TRY_COMPARE(spy0.count(), Xcount); | ||
TRY_COMPARE(spy1.count(), Ycount); | ||||
|
r804 | |||
//this is hack since view does not get events otherwise | ||||
m_view->setMouseTracking(false); | ||||
|
r1652 | QValuesAxis* vaxisX = qobject_cast<QValuesAxis*>(axisX); | ||
QValuesAxis* vaxisY = qobject_cast<QValuesAxis*>(axisY); | ||||
QVERIFY(vaxisX->min() - minX < 1); | ||||
QVERIFY(vaxisX->max() - maxX < 1); | ||||
QVERIFY(vaxisY->min() - minY < 1); | ||||
QVERIFY(vaxisY->max() - maxY < 1); | ||||
|
r804 | } | ||
|
r774 | QTEST_MAIN(tst_QChartView) | ||
#include "tst_qchartview.moc" | ||||