diff options
Diffstat (limited to 'tests/auto/qcandlestickmodelmapper/tst_qcandlestickmodelmapper.cpp')
-rw-r--r-- | tests/auto/qcandlestickmodelmapper/tst_qcandlestickmodelmapper.cpp | 632 |
1 files changed, 632 insertions, 0 deletions
diff --git a/tests/auto/qcandlestickmodelmapper/tst_qcandlestickmodelmapper.cpp b/tests/auto/qcandlestickmodelmapper/tst_qcandlestickmodelmapper.cpp new file mode 100644 index 00000000..b6110c7f --- /dev/null +++ b/tests/auto/qcandlestickmodelmapper/tst_qcandlestickmodelmapper.cpp @@ -0,0 +1,632 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** This file is part of the Qt Charts module of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:GPL$ +** Commercial License Usage +** Licensees holding valid commercial Qt licenses may use this file in +** accordance with the commercial license agreement provided with the +** Software or, alternatively, in accordance with the terms contained in +** a written agreement between you and The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 3 or (at your option) any later version +** approved by the KDE Free Qt Foundation. The licenses are as published by +** the Free Software Foundation and appearing in the file LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#include <QtCharts/QCandlestickSeries> +#include <QtCharts/QCandlestickSet> +#include <QtCharts/QChartView> +#include <QtCharts/QHCandlestickModelMapper> +#include <QtCharts/QVCandlestickModelMapper> +#include <QtCore/QString> +#include <QtGui/QStandardItemModel> +#include <QtTest/QtTest> + +QT_CHARTS_USE_NAMESPACE + +class tst_qcandlestickmodelmapper : public QObject +{ + Q_OBJECT + +public: + tst_qcandlestickmodelmapper(); + + void createVerticalMapper(); + void createHorizontalMapper(); + +public Q_SLOTS: + void initTestCase(); + void cleanupTestCase(); + void init(); + void cleanup(); + +private Q_SLOTS: + void verticalMapper_data(); + void verticalMapper(); + void verticalMapperCustomMapping_data(); + void verticalMapperCustomMapping(); + void horizontalMapper_data(); + void horizontalMapper(); + void horizontalMapperCustomMapping_data(); + void horizontalMapperCustomMapping(); + void seriesUpdated(); + void verticalModelInsertRows(); + void verticalModelRemoveRows(); + void verticalModelInsertColumns(); + void verticalModelRemoveColumns(); + void horizontalModelInsertRows(); + void horizontalModelRemoveRows(); + void horizontalModelInsertColumns(); + void horizontalModelRemoveColumns(); + void modelUpdateCell(); + void verticalMapperSignals(); + void horizontalMapperSignals(); + +private: + QStandardItemModel *m_model; + int m_modelRowCount; + int m_modelColumnCount; + + QCandlestickSeries *m_series; + QChart *m_chart; + QChartView *m_chartView; + + QHCandlestickModelMapper *m_hMapper; + QVCandlestickModelMapper *m_vMapper; +}; + +tst_qcandlestickmodelmapper::tst_qcandlestickmodelmapper() + : m_model(nullptr), + m_modelRowCount(10), + m_modelColumnCount(8), + m_series(nullptr), + m_chart(nullptr), + m_chartView(nullptr), + m_hMapper(nullptr), + m_vMapper(nullptr) +{ +} + +void tst_qcandlestickmodelmapper::createHorizontalMapper() +{ + m_hMapper = new QHCandlestickModelMapper; + QVERIFY(m_hMapper->model() == nullptr); + m_hMapper->setTimestampColumn(0); + m_hMapper->setOpenColumn(1); + m_hMapper->setHighColumn(3); + m_hMapper->setLowColumn(5); + m_hMapper->setCloseColumn(6); + m_hMapper->setFirstCandlestickSetRow(0); + m_hMapper->setLastCandlestickSetRow(4); + m_hMapper->setModel(m_model); + m_hMapper->setSeries(m_series); +} + +void tst_qcandlestickmodelmapper::createVerticalMapper() +{ + m_vMapper = new QVCandlestickModelMapper; + QVERIFY(m_vMapper->model() == nullptr); + m_vMapper->setTimestampRow(0); + m_vMapper->setOpenRow(1); + m_vMapper->setHighRow(3); + m_vMapper->setLowRow(5); + m_vMapper->setCloseRow(6); + m_vMapper->setFirstCandlestickSetColumn(0); + m_vMapper->setLastCandlestickSetColumn(4); + m_vMapper->setModel(m_model); + m_vMapper->setSeries(m_series); +} + +void tst_qcandlestickmodelmapper::initTestCase() +{ + m_chart = new QChart(); + m_chartView = new QChartView(m_chart); + m_chartView->show(); +} + +void tst_qcandlestickmodelmapper::cleanupTestCase() +{ + delete m_chartView; + QTest::qWait(1); // Allow final deleteLaters to run +} + +void tst_qcandlestickmodelmapper::init() +{ + m_series = new QCandlestickSeries(); + m_chart->addSeries(m_series); + + m_model = new QStandardItemModel(m_modelRowCount, m_modelColumnCount, this); + for (int row = 0; row < m_modelRowCount; ++row) { + for (int column = 0; column < m_modelColumnCount; ++column) + m_model->setData(m_model->index(row, column), row * column); + } +} + +void tst_qcandlestickmodelmapper::cleanup() +{ + m_chart->removeSeries(m_series); + delete m_series; + m_series = nullptr; + + m_model->clear(); + m_model->deleteLater(); + m_model = nullptr; + + if (m_vMapper) { + m_vMapper->deleteLater(); + m_vMapper = nullptr; + } + + if (m_hMapper) { + m_hMapper->deleteLater(); + m_hMapper = nullptr; + } +} + +void tst_qcandlestickmodelmapper::verticalMapper_data() +{ + QTest::addColumn<int>("firstCandlestickSetColumn"); + QTest::addColumn<int>("lastCandlestickSetColumn"); + QTest::addColumn<int>("expectedCandlestickSetCount"); + + QTest::newRow("last column greater than first column") << 0 << 1 << 2; + QTest::newRow("last column equal to first column") << 1 << 1 << 1; + QTest::newRow("last column lesser than first column") << 1 << 0 << 0; + QTest::newRow("invalid first column and correct last column") << -3 << 1 << 0; + QTest::newRow("first column beyond the size of model and correct last column") << m_modelColumnCount << 1 << 0; + QTest::newRow("first column beyond the size of model and invalid last column") << m_modelColumnCount << -1 << 0; +} + +void tst_qcandlestickmodelmapper::verticalMapper() +{ + QFETCH(int, firstCandlestickSetColumn); + QFETCH(int, lastCandlestickSetColumn); + QFETCH(int, expectedCandlestickSetCount); + + QCandlestickSeries *series = new QCandlestickSeries(); + m_chart->addSeries(series); + + createVerticalMapper(); + m_vMapper->setFirstCandlestickSetColumn(firstCandlestickSetColumn); + m_vMapper->setLastCandlestickSetColumn(lastCandlestickSetColumn); + m_vMapper->setSeries(series); + + QCOMPARE(m_vMapper->firstCandlestickSetColumn(), qMax(firstCandlestickSetColumn, -1)); + QCOMPARE(m_vMapper->lastCandlestickSetColumn(), qMax(lastCandlestickSetColumn, -1)); + QCOMPARE(series->count(), expectedCandlestickSetCount); + + m_chart->removeSeries(series); + delete series; +} + +void tst_qcandlestickmodelmapper::verticalMapperCustomMapping_data() +{ + QTest::addColumn<int>("timestampRow"); + QTest::addColumn<int>("openRow"); + QTest::addColumn<int>("highRow"); + QTest::addColumn<int>("lowRow"); + QTest::addColumn<int>("closeRow"); + + QTest::newRow("all rows are correct") << 0 << 1 << 2 << 3 << 4; + QTest::newRow("all rows are invalid") << -3 << -3 << -3 << -3 << -3; + QTest::newRow("timestamp: -1 (invalid)") << -1 << 1 << 2 << 3 << 4; + QTest::newRow("timestamp: -3 (invalid - should default to -1)") << -3 << 1 << 2 << 3 << 4; + QTest::newRow("timestamp: +1 greater than the number of rows in the model") << m_modelRowCount + 1 << 1 << 2 << 3 << 4; + QTest::newRow("open: -1 (invalid)") << 0 << -1 << 2 << 3 << 4; + QTest::newRow("open: -3 (invalid - should default to -1)") << 0 << -3 << 2 << 3 << 4; + QTest::newRow("open: +1 greater than the number of rows in the model") << 0 << m_modelRowCount + 1 << 2 << 3 << 4; + QTest::newRow("high: -1 (invalid)") << 0 << 1 << -1 << 3 << 4; + QTest::newRow("high: -3 (invalid - should default to -1)") << 0 << 1 << -3 << 3 << 4; + QTest::newRow("high: +1 greater than the number of rows in the model") << 0 << 1 << m_modelRowCount + 1 << 3 << 4; + QTest::newRow("low: -1 (invalid)") << 0 << 1 << 2 << -1 << 4; + QTest::newRow("low: -3 (invalid - should default to -1)") << 0 << 1 << 2 << -3 << 4; + QTest::newRow("low: +1 greater than the number of rows in the model") << 0 << 1 << 2 << m_modelRowCount + 1 << 4; + QTest::newRow("close: -1 (invalid)") << 0 << 1 << 2 << 3 << -1; + QTest::newRow("close: -3 (invalid - should default to -1)") << 0 << 1 << 2 << 3 << -3; + QTest::newRow("close: +1 greater than the number of rows in the model") << 0 << 1 << 2 << 3 << m_modelRowCount + 1; +} + +void tst_qcandlestickmodelmapper::verticalMapperCustomMapping() +{ + QFETCH(int, timestampRow); + QFETCH(int, openRow); + QFETCH(int, highRow); + QFETCH(int, lowRow); + QFETCH(int, closeRow); + + QCandlestickSeries *series = new QCandlestickSeries(); + m_chart->addSeries(series); + QCOMPARE(series->count(), 0); + + createVerticalMapper(); + m_vMapper->setTimestampRow(timestampRow); + m_vMapper->setOpenRow(openRow); + m_vMapper->setHighRow(highRow); + m_vMapper->setLowRow(lowRow); + m_vMapper->setCloseRow(closeRow); + m_vMapper->setSeries(series); + + QCOMPARE(m_vMapper->timestampRow(), qMax(timestampRow, -1)); + QCOMPARE(m_vMapper->openRow(), qMax(openRow, -1)); + QCOMPARE(m_vMapper->highRow(), qMax(highRow, -1)); + QCOMPARE(m_vMapper->lowRow(), qMax(lowRow, -1)); + QCOMPARE(m_vMapper->closeRow(), qMax(closeRow, -1)); + + int count; + if ((m_vMapper->timestampRow() >= 0 && m_vMapper->timestampRow() < m_modelRowCount) + && (m_vMapper->openRow() >= 0 && m_vMapper->openRow() < m_modelRowCount) + && (m_vMapper->highRow() >= 0 && m_vMapper->highRow() < m_modelRowCount) + && (m_vMapper->lowRow() >= 0 && m_vMapper->lowRow() < m_modelRowCount) + && (m_vMapper->closeRow() >= 0 && m_vMapper->closeRow() < m_modelRowCount)) + count = m_vMapper->lastCandlestickSetColumn() - m_vMapper->firstCandlestickSetColumn() + 1; + else + count = 0; + QCOMPARE(series->count(), count); + + // change values column mapping to invalid + m_vMapper->setFirstCandlestickSetColumn(-1); + m_vMapper->setLastCandlestickSetColumn(1); + QCOMPARE(series->count(), 0); + + m_chart->removeSeries(series); + delete series; +} + +void tst_qcandlestickmodelmapper::horizontalMapper_data() +{ + QTest::addColumn<int>("firstCandlestickSetRow"); + QTest::addColumn<int>("lastCandlestickSetRow"); + QTest::addColumn<int>("expectedCandlestickSetCount"); + + QTest::newRow("last row greater than first row") << 0 << 1 << 2; + QTest::newRow("last row equal to first row") << 1 << 1 << 1; + QTest::newRow("last row lesser than first row") << 1 << 0 << 0; + QTest::newRow("invalid first row and correct last row") << -3 << 1 << 0; + QTest::newRow("first row beyond the size of model and correct last row") << m_modelRowCount << 1 << 0; + QTest::newRow("first row beyond the size of model and invalid last row") << m_modelRowCount << -1 << 0; +} + +void tst_qcandlestickmodelmapper::horizontalMapper() +{ + QFETCH(int, firstCandlestickSetRow); + QFETCH(int, lastCandlestickSetRow); + QFETCH(int, expectedCandlestickSetCount); + + QCandlestickSeries *series = new QCandlestickSeries(); + m_chart->addSeries(series); + + createHorizontalMapper(); + m_hMapper->setFirstCandlestickSetRow(firstCandlestickSetRow); + m_hMapper->setLastCandlestickSetRow(lastCandlestickSetRow); + m_hMapper->setSeries(series); + + QCOMPARE(m_hMapper->firstCandlestickSetRow(), qMax(firstCandlestickSetRow, -1)); + QCOMPARE(m_hMapper->lastCandlestickSetRow(), qMax(lastCandlestickSetRow, -1)); + QCOMPARE(series->count(), expectedCandlestickSetCount); + + m_chart->removeSeries(series); + delete series; +} + +void tst_qcandlestickmodelmapper::horizontalMapperCustomMapping_data() +{ + QTest::addColumn<int>("timestampColumn"); + QTest::addColumn<int>("openColumn"); + QTest::addColumn<int>("highColumn"); + QTest::addColumn<int>("lowColumn"); + QTest::addColumn<int>("closeColumn"); + + QTest::newRow("all columns are correct") << 0 << 1 << 2 << 3 << 4; + QTest::newRow("all columns are invalid") << -3 << -3 << -3 << -3 << -3; + QTest::newRow("timestamp: -1 (invalid)") << -1 << 1 << 2 << 3 << 4; + QTest::newRow("timestamp: -3 (invalid - should default to -1)") << -3 << 1 << 2 << 3 << 4; + QTest::newRow("timestamp: +1 greater than the number of columns in the model") << m_modelColumnCount + 1 << 1 << 2 << 3 << 4; + QTest::newRow("open: -1 (invalid)") << 0 << -1 << 2 << 3 << 4; + QTest::newRow("open: -3 (invalid - should default to -1)") << 0 << -3 << 2 << 3 << 4; + QTest::newRow("open: +1 greater than the number of columns in the model") << 0 << m_modelColumnCount + 1 << 2 << 3 << 4; + QTest::newRow("high: -1 (invalid)") << 0 << 1 << -1 << 3 << 4; + QTest::newRow("high: -3 (invalid - should default to -1)") << 0 << 1 << -3 << 3 << 4; + QTest::newRow("high: +1 greater than the number of columns in the model") << 0 << 1 << m_modelColumnCount + 1 << 3 << 4; + QTest::newRow("low: -1 (invalid)") << 0 << 1 << 2 << -1 << 4; + QTest::newRow("low: -3 (invalid - should default to -1)") << 0 << 1 << 2 << -3 << 4; + QTest::newRow("low: +1 greater than the number of columns in the model") << 0 << 1 << 2 << m_modelColumnCount + 1 << 4; + QTest::newRow("close: -1 (invalid)") << 0 << 1 << 2 << 3 << -1; + QTest::newRow("close: -3 (invalid - should default to -1)") << 0 << 1 << 2 << 3 << -3; + QTest::newRow("close: +1 greater than the number of columns in the model") << 0 << 1 << 2 << 3 << m_modelColumnCount + 1; +} + +void tst_qcandlestickmodelmapper::horizontalMapperCustomMapping() +{ + QFETCH(int, timestampColumn); + QFETCH(int, openColumn); + QFETCH(int, highColumn); + QFETCH(int, lowColumn); + QFETCH(int, closeColumn); + + QCandlestickSeries *series = new QCandlestickSeries(); + m_chart->addSeries(series); + QCOMPARE(series->count(), 0); + + createHorizontalMapper(); + m_hMapper->setTimestampColumn(timestampColumn); + m_hMapper->setOpenColumn(openColumn); + m_hMapper->setHighColumn(highColumn); + m_hMapper->setLowColumn(lowColumn); + m_hMapper->setCloseColumn(closeColumn); + m_hMapper->setSeries(series); + + QCOMPARE(m_hMapper->timestampColumn(), qMax(timestampColumn, -1)); + QCOMPARE(m_hMapper->openColumn(), qMax(openColumn, -1)); + QCOMPARE(m_hMapper->highColumn(), qMax(highColumn, -1)); + QCOMPARE(m_hMapper->lowColumn(), qMax(lowColumn, -1)); + QCOMPARE(m_hMapper->closeColumn(), qMax(closeColumn, -1)); + + int count; + if ((m_hMapper->timestampColumn() >= 0 && m_hMapper->timestampColumn() < m_modelColumnCount) + && (m_hMapper->openColumn() >= 0 && m_hMapper->openColumn() < m_modelColumnCount) + && (m_hMapper->highColumn() >= 0 && m_hMapper->highColumn() < m_modelColumnCount) + && (m_hMapper->lowColumn() >= 0 && m_hMapper->lowColumn() < m_modelColumnCount) + && (m_hMapper->closeColumn() >= 0 && m_hMapper->closeColumn() < m_modelColumnCount)) + count = m_hMapper->lastCandlestickSetRow() - m_hMapper->firstCandlestickSetRow() + 1; + else + count = 0; + QCOMPARE(series->count(), count); + + // change values row mapping to invalid + m_hMapper->setFirstCandlestickSetRow(-1); + m_hMapper->setLastCandlestickSetRow(1); + QCOMPARE(series->count(), 0); + + m_chart->removeSeries(series); + delete series; +} + +void tst_qcandlestickmodelmapper::seriesUpdated() +{ + createVerticalMapper(); + QVERIFY(m_vMapper->model() != nullptr); + + QCandlestickSet *set = m_series->candlestickSets().value(0, 0); + QVERIFY(set != nullptr); + + // update values + QCOMPARE(m_model->data(m_model->index(m_vMapper->timestampRow(), 0)).toReal(),set->timestamp()); + QCOMPARE(m_model->data(m_model->index(m_vMapper->openRow(), 0)).toReal(), set->open()); + QCOMPARE(m_model->data(m_model->index(m_vMapper->highRow(), 0)).toReal(), set->high()); + QCOMPARE(m_model->data(m_model->index(m_vMapper->lowRow(), 0)).toReal(), set->low()); + QCOMPARE(m_model->data(m_model->index(m_vMapper->closeRow(), 0)).toReal(), set->close()); + set->setTimestamp(set->timestamp() + 5.0); + set->setOpen(set->open() + 6.0); + set->setHigh(set->high() + 7.0); + set->setLow(set->low() + 8.0); + set->setClose(set->close() + 9.0); + QCOMPARE(m_model->data(m_model->index(m_vMapper->timestampRow(), 0)).toReal(),set->timestamp()); + QCOMPARE(m_model->data(m_model->index(m_vMapper->openRow(), 0)).toReal(), set->open()); + QCOMPARE(m_model->data(m_model->index(m_vMapper->highRow(), 0)).toReal(), set->high()); + QCOMPARE(m_model->data(m_model->index(m_vMapper->lowRow(), 0)).toReal(), set->low()); + QCOMPARE(m_model->data(m_model->index(m_vMapper->closeRow(), 0)).toReal(), set->close()); + + // append new sets + QList<QCandlestickSet *> newCandlestickSets; + newCandlestickSets << new QCandlestickSet(3.0, 5.0, 2.0, 4.0, 1234); + newCandlestickSets << new QCandlestickSet(5.0, 7.0, 4.0, 6.0, 5678); + m_series->append(newCandlestickSets); + QCOMPARE(m_model->columnCount(), m_modelColumnCount + newCandlestickSets.count()); + + // remove sets + newCandlestickSets.clear(); + newCandlestickSets << m_series->candlestickSets().at(m_series->count() - 1); + newCandlestickSets << m_series->candlestickSets().at(m_series->count() - 2); + m_series->remove(newCandlestickSets); + QCOMPARE(m_model->columnCount(), m_modelColumnCount); +} + +void tst_qcandlestickmodelmapper::verticalModelInsertRows() +{ + createVerticalMapper(); + int count = m_vMapper->lastCandlestickSetColumn() - m_vMapper->firstCandlestickSetColumn() + 1; + QVERIFY(m_vMapper->model() != 0); + QCOMPARE(m_series->count(), count); + + m_model->insertRows(3, 4); + QCOMPARE(m_series->count(), count); +} + +void tst_qcandlestickmodelmapper::verticalModelRemoveRows() +{ + createVerticalMapper(); + int count = m_vMapper->lastCandlestickSetColumn() - m_vMapper->firstCandlestickSetColumn() + 1; + QVERIFY(m_vMapper->model() != 0); + QCOMPARE(m_series->count(), count); + + m_model->removeRows(m_modelRowCount - 1, 1); + QCOMPARE(m_series->count(), count); + + int removeCount = m_model->rowCount() - m_vMapper->closeRow(); + m_model->removeRows(m_vMapper->closeRow(), removeCount); + QCOMPARE(m_series->count(), 0); +} + +void tst_qcandlestickmodelmapper::verticalModelInsertColumns() +{ + createVerticalMapper(); + int count = m_vMapper->lastCandlestickSetColumn() - m_vMapper->firstCandlestickSetColumn() + 1; + QVERIFY(m_vMapper->model() != 0); + QCOMPARE(m_series->count(), count); + + m_model->insertColumns(3, 4); + QCOMPARE(m_series->count(), count); +} + +void tst_qcandlestickmodelmapper::verticalModelRemoveColumns() +{ + createVerticalMapper(); + int count = m_vMapper->lastCandlestickSetColumn() - m_vMapper->firstCandlestickSetColumn() + 1; + QVERIFY(m_vMapper->model() != 0); + QCOMPARE(m_series->count(), count); + + int removeCount = m_modelColumnCount - 2; + m_model->removeColumns(0, removeCount); + QCOMPARE(m_series->count(), qMin(m_model->columnCount(), count)); + + // leave all the columns + m_model->removeColumns(0, m_modelColumnCount - removeCount); + QCOMPARE(m_series->count(), 0); +} + +void tst_qcandlestickmodelmapper::horizontalModelInsertRows() +{ + createHorizontalMapper(); + int count = m_hMapper->lastCandlestickSetRow() - m_hMapper->firstCandlestickSetRow() + 1; + QVERIFY(m_hMapper->model() != 0); + QCOMPARE(m_series->count(), count); + + m_model->insertRows(3, 4); + QCOMPARE(m_series->count(), count); +} + +void tst_qcandlestickmodelmapper::horizontalModelRemoveRows() +{ + createHorizontalMapper(); + int count = m_hMapper->lastCandlestickSetRow() - m_hMapper->firstCandlestickSetRow() + 1; + QVERIFY(m_hMapper->model() != 0); + QCOMPARE(m_series->count(), qMin(m_model->rowCount(), count)); + + int removeCount = m_modelRowCount - 2; + m_model->removeRows(0, removeCount); + QCOMPARE(m_series->count(), qMin(m_model->rowCount(), count)); + + // leave all the columns + m_model->removeRows(0, m_modelRowCount - removeCount); + QCOMPARE(m_series->count(), 0); +} + +void tst_qcandlestickmodelmapper::horizontalModelInsertColumns() +{ + createHorizontalMapper(); + int count = m_hMapper->lastCandlestickSetRow() - m_hMapper->firstCandlestickSetRow() + 1; + QVERIFY(m_hMapper->model() != 0); + QCOMPARE(m_series->count(), count); + + m_model->insertColumns(3, 4); + QCOMPARE(m_series->count(), count); +} + +void tst_qcandlestickmodelmapper::horizontalModelRemoveColumns() +{ + createHorizontalMapper(); + int count = m_hMapper->lastCandlestickSetRow() - m_hMapper->firstCandlestickSetRow() + 1; + QVERIFY(m_hMapper->model() != 0); + QCOMPARE(m_series->count(), count); + + m_model->removeColumns(m_modelColumnCount - 1, 1); + QCOMPARE(m_series->count(), count); + + int removeCount = m_model->columnCount() - m_hMapper->closeColumn(); + m_model->removeColumns(m_hMapper->closeColumn(), removeCount); + QCOMPARE(m_series->count(), 0); +} + +void tst_qcandlestickmodelmapper::modelUpdateCell() +{ + createVerticalMapper(); + QVERIFY(m_vMapper->model() != 0); + + QModelIndex index = m_model->index(m_vMapper->timestampRow(), 0); + qreal newValue = 44.0; + QVERIFY(m_model->setData(index, newValue)); + QCOMPARE(m_model->data(index).toReal(), newValue); + QCOMPARE(m_series->candlestickSets().at(index.row())->timestamp(), newValue); +} + +void tst_qcandlestickmodelmapper::verticalMapperSignals() +{ + QVCandlestickModelMapper *mapper = new QVCandlestickModelMapper(); + + QSignalSpy spy0(mapper, SIGNAL(modelReplaced())); + QSignalSpy spy1(mapper, SIGNAL(seriesReplaced())); + QSignalSpy spy2(mapper, SIGNAL(timestampRowChanged())); + QSignalSpy spy3(mapper, SIGNAL(openRowChanged())); + QSignalSpy spy4(mapper, SIGNAL(highRowChanged())); + QSignalSpy spy5(mapper, SIGNAL(lowRowChanged())); + QSignalSpy spy6(mapper, SIGNAL(closeRowChanged())); + QSignalSpy spy7(mapper, SIGNAL(firstCandlestickSetColumnChanged())); + QSignalSpy spy8(mapper, SIGNAL(lastCandlestickSetColumnChanged())); + + mapper->setModel(m_model); + mapper->setSeries(m_series); + mapper->setTimestampRow(1); + mapper->setOpenRow(2); + mapper->setHighRow(3); + mapper->setLowRow(4); + mapper->setCloseRow(5); + mapper->setFirstCandlestickSetColumn(0); + mapper->setLastCandlestickSetColumn(1); + + QCOMPARE(spy0.count(), 1); + QCOMPARE(spy1.count(), 1); + QCOMPARE(spy2.count(), 1); + QCOMPARE(spy3.count(), 1); + QCOMPARE(spy4.count(), 1); + QCOMPARE(spy5.count(), 1); + QCOMPARE(spy6.count(), 1); + QCOMPARE(spy7.count(), 1); + QCOMPARE(spy8.count(), 1); + + delete mapper; +} + +void tst_qcandlestickmodelmapper::horizontalMapperSignals() +{ + QHCandlestickModelMapper *mapper = new QHCandlestickModelMapper(); + + QSignalSpy spy0(mapper, SIGNAL(modelReplaced())); + QSignalSpy spy1(mapper, SIGNAL(seriesReplaced())); + QSignalSpy spy2(mapper, SIGNAL(timestampColumnChanged())); + QSignalSpy spy3(mapper, SIGNAL(openColumnChanged())); + QSignalSpy spy4(mapper, SIGNAL(highColumnChanged())); + QSignalSpy spy5(mapper, SIGNAL(lowColumnChanged())); + QSignalSpy spy6(mapper, SIGNAL(closeColumnChanged())); + QSignalSpy spy7(mapper, SIGNAL(firstCandlestickSetRowChanged())); + QSignalSpy spy8(mapper, SIGNAL(lastCandlestickSetRowChanged())); + + mapper->setModel(m_model); + mapper->setSeries(m_series); + mapper->setTimestampColumn(1); + mapper->setOpenColumn(2); + mapper->setHighColumn(3); + mapper->setLowColumn(4); + mapper->setCloseColumn(5); + mapper->setFirstCandlestickSetRow(0); + mapper->setLastCandlestickSetRow(1); + + QCOMPARE(spy0.count(), 1); + QCOMPARE(spy1.count(), 1); + QCOMPARE(spy2.count(), 1); + QCOMPARE(spy3.count(), 1); + QCOMPARE(spy4.count(), 1); + QCOMPARE(spy5.count(), 1); + QCOMPARE(spy6.count(), 1); + QCOMPARE(spy7.count(), 1); + QCOMPARE(spy8.count(), 1); + + delete mapper; +} + +QTEST_MAIN(tst_qcandlestickmodelmapper) + +#include "tst_qcandlestickmodelmapper.moc" |