/**************************************************************************** ** ** 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$ ** ****************************************************************************/ #ifndef BUILD_PRIVATE_UNIT_TESTS #include class tst_ChartDataSet: public QObject { Q_OBJECT private Q_SLOTS: void skip(); }; void tst_ChartDataSet::skip() { QSKIP("This test requires the debug version of library"); } QTEST_MAIN(tst_ChartDataSet) #include "tst_chartdataset.moc" #else #include #include #include #include #include #ifndef QT_ON_ARM #include #endif #include #include #include #include #include #include #include #include #include #include #include QT_CHARTS_USE_NAMESPACE Q_DECLARE_METATYPE(AbstractDomain *) Q_DECLARE_METATYPE(QAbstractAxis *) Q_DECLARE_METATYPE(QAbstractSeries *) Q_DECLARE_METATYPE(QList) Q_DECLARE_METATYPE(QList) Q_DECLARE_METATYPE(Qt::Alignment) Q_DECLARE_METATYPE(QList) Q_DECLARE_METATYPE(QLineSeries *) class tst_ChartDataSet: public QObject { Q_OBJECT public: tst_ChartDataSet():m_dataset(0){}; public Q_SLOTS: void initTestCase(); void cleanupTestCase(); void init(); void cleanup(); private Q_SLOTS: void chartdataset_data(); void chartdataset(); void addSeries_data(); void addSeries(); void removeSeries_data(); void removeSeries(); void addAxis_data(); void addAxis(); void removeAxis_data(); void removeAxis(); void attachAxis_data(); void attachAxis(); void detachAxis_data(); void detachAxis(); private: ChartDataSet* m_dataset; }; void tst_ChartDataSet::initTestCase() { qRegisterMetaType(); qRegisterMetaType(); qRegisterMetaType(); } void tst_ChartDataSet::cleanupTestCase() { } void tst_ChartDataSet::init() { Q_ASSERT(!m_dataset); m_dataset = new ChartDataSet(0); } void tst_ChartDataSet::cleanup() { delete m_dataset; m_dataset=0; } void tst_ChartDataSet::chartdataset_data() { } void tst_ChartDataSet::chartdataset() { QVERIFY(m_dataset->axes().isEmpty()); QVERIFY(m_dataset->series().isEmpty()); m_dataset->createDefaultAxes(); } void tst_ChartDataSet::addSeries_data() { QTest::addColumn("series"); QAbstractSeries* line = new QLineSeries(this); QTest::newRow("line") << line; QAbstractSeries* area = new QAreaSeries(static_cast(new QLineSeries(this))); QTest::newRow("area") << area; QAbstractSeries* scatter = new QScatterSeries(this); QTest::newRow("scatter") << scatter; QAbstractSeries* spline = new QSplineSeries(this); QTest::newRow("spline") << spline; QAbstractSeries* pie = new QPieSeries(this); QTest::newRow("pie") << pie; QAbstractSeries* bar = new QBarSeries(this); QTest::newRow("bar") << bar; QAbstractSeries* percent = new QPercentBarSeries(this); QTest::newRow("percent") << percent; QAbstractSeries* stacked = new QStackedBarSeries(this); QTest::newRow("stacked") << stacked; } void tst_ChartDataSet::addSeries() { QFETCH(QAbstractSeries*, series); QVERIFY(m_dataset->series().isEmpty()); QSignalSpy spy0(m_dataset, SIGNAL(axisAdded(QAbstractAxis*))); QSignalSpy spy1(m_dataset, SIGNAL(axisRemoved(QAbstractAxis*))); QSignalSpy spy2(m_dataset, SIGNAL(seriesAdded(QAbstractSeries*))); QSignalSpy spy3(m_dataset, SIGNAL(seriesRemoved(QAbstractSeries*))); m_dataset->addSeries(series); QCOMPARE(m_dataset->series().count(),1); TRY_COMPARE(spy0.count(), 0); TRY_COMPARE(spy1.count(), 0); TRY_COMPARE(spy2.count(), 1); TRY_COMPARE(spy3.count(), 0); } void tst_ChartDataSet::removeSeries_data() { addSeries_data(); } void tst_ChartDataSet::removeSeries() { QFETCH(QAbstractSeries*, series); QVERIFY(m_dataset->series().isEmpty()); m_dataset->addSeries(series); QSignalSpy spy0(m_dataset, SIGNAL(axisAdded(QAbstractAxis*))); QSignalSpy spy1(m_dataset, SIGNAL(axisRemoved(QAbstractAxis*))); QSignalSpy spy2(m_dataset, SIGNAL(seriesAdded(QAbstractSeries*))); QSignalSpy spy3(m_dataset, SIGNAL(seriesRemoved(QAbstractSeries*))); m_dataset->removeSeries(series); QCOMPARE(m_dataset->series().count(),0); TRY_COMPARE(spy0.count(), 0); TRY_COMPARE(spy1.count(), 0); TRY_COMPARE(spy2.count(), 0); TRY_COMPARE(spy3.count(), 1); } void tst_ChartDataSet::addAxis_data() { QTest::addColumn("axis"); QAbstractAxis* value = new QValueAxis(this); QAbstractAxis* category = new QCategoryAxis(this); QAbstractAxis* barcategory = new QBarCategoryAxis(this); #ifndef Q_WS_QWS QAbstractAxis* datetime = new QDateTimeAxis(this); #endif QTest::newRow("value") << value; QTest::newRow("category") << category; QTest::newRow("barcategory") << barcategory; #ifndef Q_WS_QWS QTest::newRow("datetime") << datetime; #endif } void tst_ChartDataSet::addAxis() { QFETCH(QAbstractAxis*, axis); QVERIFY(m_dataset->axes().isEmpty()); QSignalSpy spy0(m_dataset, SIGNAL(axisAdded(QAbstractAxis*))); QSignalSpy spy1(m_dataset, SIGNAL(axisRemoved(QAbstractAxis*))); QSignalSpy spy2(m_dataset, SIGNAL(seriesAdded(QAbstractSeries*))); QSignalSpy spy3(m_dataset, SIGNAL(seriesRemoved(QAbstractSeries*))); m_dataset->addAxis(axis,Qt::AlignBottom); QCOMPARE(m_dataset->axes().count(),1); TRY_COMPARE(spy0.count(), 1); TRY_COMPARE(spy1.count(), 0); TRY_COMPARE(spy2.count(), 0); TRY_COMPARE(spy3.count(), 0); } void tst_ChartDataSet::removeAxis_data() { addAxis_data(); } void tst_ChartDataSet::removeAxis() { QFETCH(QAbstractAxis*, axis); QVERIFY(m_dataset->series().isEmpty()); m_dataset->addAxis(axis,Qt::AlignBottom); QSignalSpy spy0(m_dataset, SIGNAL(axisAdded(QAbstractAxis*))); QSignalSpy spy1(m_dataset, SIGNAL(axisRemoved(QAbstractAxis*))); QSignalSpy spy2(m_dataset, SIGNAL(seriesAdded(QAbstractSeries*))); QSignalSpy spy3(m_dataset, SIGNAL(seriesRemoved(QAbstractSeries*))); m_dataset->removeAxis(axis); QCOMPARE(m_dataset->axes().count(),0); QCOMPARE(m_dataset->series().count(),0); TRY_COMPARE(spy0.count(), 0); TRY_COMPARE(spy1.count(), 1); TRY_COMPARE(spy2.count(), 0); TRY_COMPARE(spy3.count(), 0); } void tst_ChartDataSet::attachAxis_data() { QTest::addColumn >("series"); QTest::addColumn >("axis"); QTest::addColumn >("alignment"); QTest::addColumn("attachSeries"); QTest::addColumn("attachAxis"); QTest::addColumn("success"); //QAbstractSeries* area = new QAreaSeries(static_cast(line)); QAbstractSeries* scatter = new QScatterSeries(this); QAbstractSeries* spline = new QSplineSeries(this); QAbstractSeries* pie = new QPieSeries(this); QAbstractSeries* bar = new QBarSeries(this); QAbstractSeries* percent = new QPercentBarSeries(this); QAbstractSeries* stacked = new QStackedBarSeries(this); QAbstractAxis* category = new QCategoryAxis(this); QAbstractAxis* barcategory = new QBarCategoryAxis(this); #ifndef Q_WS_QWS QAbstractAxis* datetime = new QDateTimeAxis(this); #endif { QList series; QList axes; QList alignment; QAbstractSeries* line = new QLineSeries(this); QAbstractAxis* value1 = new QValueAxis(this); QAbstractAxis* value2 = new QValueAxis(this); series << line << 0; axes << value1 << value2; alignment << Qt::AlignBottom << Qt::AlignLeft; QTest::newRow("first") << series << axes << alignment << line << value2 << true ; } { QList series; QList axes; QList alignment; QAbstractSeries* line = new QLineSeries(this); QAbstractAxis* value1 = new QValueAxis(this); QAbstractAxis* value2 = new QValueAxis(this); series << 0 << line; axes << value1 << value2; alignment << Qt::AlignBottom << Qt::AlignLeft; QTest::newRow("second") << series << axes << alignment << line << value1 << true; } } void tst_ChartDataSet::attachAxis() { QFETCH(QList, series); QFETCH(QList, axis); QFETCH(QList, alignment); QFETCH(QAbstractSeries*, attachSeries); QFETCH(QAbstractAxis*, attachAxis); QFETCH(bool, success); Q_ASSERT(series.count() == axis.count()); Q_ASSERT(series.count() == alignment.count()); QVERIFY(m_dataset->series().isEmpty()); QVERIFY(m_dataset->axes().isEmpty()); for(int i = 0 ; i < series.count() ; i++){ if(series[i]) m_dataset->addSeries(series[i]); if(axis[i]) m_dataset->addAxis(axis[i],alignment[i]); if(series[i] && axis[i]) m_dataset->attachAxis(series[i],axis[i]); } QSignalSpy spy0(m_dataset, SIGNAL(axisAdded(QAbstractAxis*))); QSignalSpy spy1(m_dataset, SIGNAL(axisRemoved(QAbstractAxis*))); QSignalSpy spy2(m_dataset, SIGNAL(seriesAdded(QAbstractSeries*))); QSignalSpy spy3(m_dataset, SIGNAL(seriesRemoved(QAbstractSeries*))); QCOMPARE(m_dataset->attachAxis(attachSeries,attachAxis),success); } void tst_ChartDataSet::detachAxis_data() { QTest::addColumn >("series"); QTest::addColumn >("axis"); QTest::addColumn("detachSeries"); QTest::addColumn("detachAxis"); QTest::addColumn("success"); { QList series; QList axes; QAbstractSeries* line = new QLineSeries(this); QAbstractAxis* value = new QValueAxis(this); series << line; axes << value; QTest::newRow("first") << series << axes << line << value << true; } } void tst_ChartDataSet::detachAxis() { QFETCH(QList, series); QFETCH(QList, axis); QFETCH(QAbstractSeries*, detachSeries); QFETCH(QAbstractAxis*, detachAxis); QFETCH(bool, success); Q_ASSERT(series.count() == axis.count()); QVERIFY(m_dataset->series().isEmpty()); QVERIFY(m_dataset->axes().isEmpty()); for(int i = 0; i < series.count(); i++) { if(series[i]) m_dataset->addSeries(series[i]); if(axis[i]) m_dataset->addAxis(axis[i],Qt::AlignBottom); if(series[i] && axis[i]) m_dataset->attachAxis(series[i],axis[i]); } QSignalSpy spy0(m_dataset, SIGNAL(axisAdded(QAbstractAxis*))); QSignalSpy spy1(m_dataset, SIGNAL(axisRemoved(QAbstractAxis*))); QSignalSpy spy2(m_dataset, SIGNAL(seriesAdded(QAbstractSeries*))); QSignalSpy spy3(m_dataset, SIGNAL(seriesRemoved(QAbstractSeries*))); QCOMPARE(m_dataset->detachAxis(detachSeries,detachAxis),success); } QTEST_MAIN(tst_ChartDataSet) #include "tst_chartdataset.moc" #endif