Revision control

Copy as Markdown

// Copyright (C) 2024 The Qt Company Ltd.
// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only
#include <QStandardItemModel>
#include <QtGraphs/QBarModelMapper>
#include <QtGraphs/QBarSeries>
#include <QtGraphs/QBarSet>
#include <QtTest/QtTest>
class tst_barmodelmapper : public QObject
{
Q_OBJECT
private Q_SLOTS:
void initTestCase();
void cleanupTestCase();
void init();
void cleanup();
void verticalMapper_data();
void verticalMapper();
void verticalMapperCustomMapping_data();
void verticalMapperCustomMapping();
void verticalModelInsertRows();
void verticalModelRemoveRows();
void verticalModelInsertColumns();
void verticalModelRemoveColumns();
void verticalMapperSignals();
void horizontalMapper_data();
void horizontalMapper();
void horizontalMapperCustomMapping_data();
void horizontalMapperCustomMapping();
void horizontalModelInsertRows();
void horizontalModelRemoveRows();
void horizontalModelInsertColumns();
void horizontalModelRemoveColumns();
void horizontalMapperSignals();
void construct();
void seriesUpdated();
void modelUpdateCell();
private:
QBarSeries *m_series = nullptr;
QStandardItemModel *m_model = nullptr;
int m_modelRowCount = 10;
int m_modelColumnCount = 8;
QBarModelMapper *m_vMapper = nullptr;
QBarModelMapper *m_hMapper = nullptr;
void createVerticalMapper();
void createHorizontalMapper();
};
void tst_barmodelmapper::initTestCase() {}
void tst_barmodelmapper::cleanupTestCase() {}
void tst_barmodelmapper::init()
{
m_series = new QBarSeries();
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_barmodelmapper::cleanup() {}
void tst_barmodelmapper::verticalMapper_data()
{
QTest::addColumn<int>("firstBarSetColumn");
QTest::addColumn<int>("lastBarSetColumn");
QTest::addColumn<int>("expectedBarSetCount");
QTest::newRow("lastBarSetColumn greater than firstBarSetColumn") << 0 << 1 << 2;
QTest::newRow("lastBarSetColumn equal to firstBarSetColumn") << 1 << 1 << 1;
QTest::newRow("lastBarSetColumn lesser than firstBarSetColumn") << 1 << 0 << 0;
QTest::newRow("invalid firstBarSetColumn and correct lastBarSetColumn") << -3 << 1 << 0;
QTest::newRow("firstBarSetColumn beyond the size of model and correct lastBarSetColumn")
<< m_modelColumnCount << 1 << 0;
QTest::newRow("firstBarSetColumn beyond the size of model and invalid lastBarSetColumn")
<< m_modelColumnCount << -1 << 0;
}
void tst_barmodelmapper::verticalMapper()
{
QFETCH(int, firstBarSetColumn);
QFETCH(int, lastBarSetColumn);
QFETCH(int, expectedBarSetCount);
QBarSeries *series = new QBarSeries;
QBarModelMapper *mapper = new QBarModelMapper;
mapper->setOrientation(Qt::Vertical);
mapper->setFirstBarSetSection(firstBarSetColumn);
mapper->setLastBarSetSection(lastBarSetColumn);
mapper->setModel(m_model);
mapper->setSeries(series);
QCOMPARE(series->count(), expectedBarSetCount);
QCOMPARE(mapper->firstBarSetSection(), qMax(-1, firstBarSetColumn));
QCOMPARE(mapper->lastBarSetSection(), qMax(-1, lastBarSetColumn));
delete mapper;
delete series;
}
void tst_barmodelmapper::verticalMapperCustomMapping_data()
{
QTest::addColumn<int>("first");
QTest::addColumn<int>("countLimit");
QTest::addColumn<int>("expectedBarSetCount");
QTest::addColumn<int>("expectedCount");
QTest::newRow("first: 0, unlimited count") << 0 << -1 << 2 << m_modelRowCount;
QTest::newRow("first: 3, unlimited count") << 3 << -1 << 2 << m_modelRowCount - 3;
QTest::newRow("first: 0, count: 5") << 0 << 5 << 2 << qMin(5, m_modelRowCount);
QTest::newRow("first: 3, count: 5") << 3 << 5 << 2 << qMin(5, m_modelRowCount - 3);
QTest::newRow("first: +1 greater then the number of rows in the model, unlimited count")
<< m_modelRowCount + 1 << -1 << 0 << 0;
QTest::newRow("first: +1 greater then the number of rows in the model, count: 5")
<< m_modelRowCount + 1 << 5 << 0 << 0;
QTest::newRow("first: 0, count: +3 greater than the number of rows in the model (should limit "
"to the size of model)")
<< 0 << m_modelRowCount + 3 << 2 << m_modelRowCount;
QTest::newRow("first: -3(invalid - should default to 0), unlimited count")
<< -3 << -1 << 2 << m_modelRowCount;
QTest::newRow("first: 0, count: -3 (invalid - shlould default to -1)")
<< 0 << -3 << 2 << m_modelRowCount;
QTest::newRow(
"first: -3(invalid - should default to 0), count: -3 (invalid - shlould default to -1)")
<< -3 << -3 << 2 << m_modelRowCount;
}
void tst_barmodelmapper::verticalMapperCustomMapping()
{
QFETCH(int, first);
QFETCH(int, countLimit);
QFETCH(int, expectedBarSetCount);
QFETCH(int, expectedCount);
QBarSeries *series = new QBarSeries;
QCOMPARE(series->count(), 0);
QBarModelMapper *mapper = new QBarModelMapper;
mapper->setFirstBarSetSection(0);
mapper->setLastBarSetSection(1);
mapper->setModel(m_model);
mapper->setSeries(series);
mapper->setFirst(first);
mapper->setCount(countLimit);
QCOMPARE(series->count(), expectedBarSetCount);
if (expectedBarSetCount > 0)
QCOMPARE(series->barSets().first()->count(), expectedCount);
// change values column mapping to invalid
mapper->setFirstBarSetSection(-1);
mapper->setLastBarSetSection(1);
QCOMPARE(series->count(), 0);
delete mapper;
delete series;
}
void tst_barmodelmapper::verticalModelInsertRows()
{ // setup the mapper
createVerticalMapper();
QCOMPARE(m_series->count(),
m_vMapper->lastBarSetSection() - m_vMapper->firstBarSetSection() + 1);
QCOMPARE(m_series->barSets().first()->count(), m_modelRowCount);
QVERIFY(m_vMapper->model() != 0);
int insertCount = 4;
m_model->insertRows(3, insertCount);
QCOMPARE(m_series->count(),
m_vMapper->lastBarSetSection() - m_vMapper->firstBarSetSection() + 1);
QCOMPARE(m_series->barSets().first()->count(), m_modelRowCount + insertCount);
int first = 3;
m_vMapper->setFirst(3);
QCOMPARE(m_series->count(),
m_vMapper->lastBarSetSection() - m_vMapper->firstBarSetSection() + 1);
QCOMPARE(m_series->barSets().first()->count(), m_modelRowCount + insertCount - first);
m_model->insertRows(3, insertCount);
QCOMPARE(m_series->count(),
m_vMapper->lastBarSetSection() - m_vMapper->firstBarSetSection() + 1);
QCOMPARE(m_series->barSets().first()->count(), m_modelRowCount + 2 * insertCount - first);
int countLimit = 6;
m_vMapper->setCount(countLimit);
QCOMPARE(m_series->count(),
m_vMapper->lastBarSetSection() - m_vMapper->firstBarSetSection() + 1);
QCOMPARE(m_series->barSets().first()->count(),
qMin(countLimit, m_modelRowCount + 2 * insertCount - first));
m_model->insertRows(3, insertCount);
QCOMPARE(m_series->count(),
m_vMapper->lastBarSetSection() - m_vMapper->firstBarSetSection() + 1);
QCOMPARE(m_series->barSets().first()->count(),
qMin(countLimit, m_modelRowCount + 3 * insertCount - first));
m_vMapper->setFirst(0);
QCOMPARE(m_series->count(),
m_vMapper->lastBarSetSection() - m_vMapper->firstBarSetSection() + 1);
QCOMPARE(m_series->barSets().first()->count(),
qMin(countLimit, m_modelRowCount + 3 * insertCount));
m_vMapper->setCount(-1);
QCOMPARE(m_series->count(),
m_vMapper->lastBarSetSection() - m_vMapper->firstBarSetSection() + 1);
QCOMPARE(m_series->barSets().first()->count(), m_modelRowCount + 3 * insertCount);
}
void tst_barmodelmapper::verticalModelRemoveRows()
{ // setup the mapper
createVerticalMapper();
QCOMPARE(m_series->count(),
m_vMapper->lastBarSetSection() - m_vMapper->firstBarSetSection() + 1);
QCOMPARE(m_series->barSets().first()->count(), m_modelRowCount);
QVERIFY(m_vMapper->model() != 0);
int removeCount = 2;
m_model->removeRows(1, removeCount);
QCOMPARE(m_series->count(),
m_vMapper->lastBarSetSection() - m_vMapper->firstBarSetSection() + 1);
QCOMPARE(m_series->barSets().first()->count(), m_modelRowCount - removeCount);
int first = 1;
m_vMapper->setFirst(first);
QCOMPARE(m_series->count(),
m_vMapper->lastBarSetSection() - m_vMapper->firstBarSetSection() + 1);
QCOMPARE(m_series->barSets().first()->count(), m_modelRowCount - removeCount - first);
m_model->removeRows(1, removeCount);
QCOMPARE(m_series->count(),
m_vMapper->lastBarSetSection() - m_vMapper->firstBarSetSection() + 1);
QCOMPARE(m_series->barSets().first()->count(), m_modelRowCount - 2 * removeCount - first);
int countLimit = 3;
m_vMapper->setCount(countLimit);
QCOMPARE(m_series->count(),
m_vMapper->lastBarSetSection() - m_vMapper->firstBarSetSection() + 1);
QCOMPARE(m_series->barSets().first()->count(),
qMin(countLimit, m_modelRowCount - 2 * removeCount - first));
m_model->removeRows(1, removeCount);
QCOMPARE(m_series->count(),
m_vMapper->lastBarSetSection() - m_vMapper->firstBarSetSection() + 1);
QCOMPARE(m_series->barSets().first()->count(),
qMin(countLimit, m_modelRowCount - 3 * removeCount - first));
m_vMapper->setFirst(0);
QCOMPARE(m_series->count(),
m_vMapper->lastBarSetSection() - m_vMapper->firstBarSetSection() + 1);
QCOMPARE(m_series->barSets().first()->count(),
qMin(countLimit, m_modelRowCount - 3 * removeCount));
m_vMapper->setCount(-1);
QCOMPARE(m_series->count(),
m_vMapper->lastBarSetSection() - m_vMapper->firstBarSetSection() + 1);
QCOMPARE(m_series->barSets().first()->count(), m_modelRowCount - 3 * removeCount);
}
void tst_barmodelmapper::verticalModelInsertColumns()
{
// setup the mapper
createVerticalMapper();
QCOMPARE(m_series->count(),
m_vMapper->lastBarSetSection() - m_vMapper->firstBarSetSection() + 1);
QCOMPARE(m_series->barSets().first()->count(), m_modelRowCount);
QVERIFY(m_vMapper->model() != 0);
int insertCount = 4;
m_model->insertColumns(3, insertCount);
QCOMPARE(m_series->count(),
m_vMapper->lastBarSetSection() - m_vMapper->firstBarSetSection() + 1);
QCOMPARE(m_series->barSets().first()->count(), m_modelRowCount);
}
void tst_barmodelmapper::verticalModelRemoveColumns()
{
// setup the mapper
createVerticalMapper();
QCOMPARE(m_series->count(),
qMin(m_model->columnCount(),
m_vMapper->lastBarSetSection() - m_vMapper->firstBarSetSection() + 1));
QCOMPARE(m_series->barSets().first()->count(), m_modelRowCount);
QVERIFY(m_vMapper->model() != 0);
int removeCount = m_modelColumnCount - 2;
m_model->removeColumns(0, removeCount);
QCOMPARE(m_series->count(),
qMin(m_model->columnCount(),
m_vMapper->lastBarSetSection() - m_vMapper->firstBarSetSection() + 1));
QCOMPARE(m_series->barSets().first()->count(), m_modelRowCount);
// leave all the columns
m_model->removeColumns(0, m_modelColumnCount - removeCount);
QCOMPARE(m_series->count(), 0);
}
void tst_barmodelmapper::verticalMapperSignals()
{
QBarModelMapper *mapper = new QBarModelMapper;
QSignalSpy spy0(mapper, SIGNAL(firstChanged()));
QSignalSpy spy1(mapper, SIGNAL(countChanged()));
QSignalSpy spy2(mapper, SIGNAL(firstBarSetSectionChanged()));
QSignalSpy spy3(mapper, SIGNAL(lastBarSetSectionChanged()));
QSignalSpy spy4(mapper, SIGNAL(modelChanged()));
QSignalSpy spy5(mapper, SIGNAL(seriesChanged()));
mapper->setFirstBarSetSection(0);
mapper->setLastBarSetSection(1);
mapper->setModel(m_model);
mapper->setSeries(m_series);
mapper->setFirst(1);
mapper->setCount(5);
QCOMPARE(spy0.size(), 1);
QCOMPARE(spy1.size(), 1);
QCOMPARE(spy2.size(), 1);
QCOMPARE(spy3.size(), 1);
QCOMPARE(spy4.size(), 1);
QCOMPARE(spy5.size(), 1);
delete mapper;
}
void tst_barmodelmapper::horizontalMapper_data()
{
QTest::addColumn<int>("firstBarSetRow");
QTest::addColumn<int>("lastBarSetRow");
QTest::addColumn<int>("expectedBarSetCount");
QTest::newRow("lastBarSetRow greater than firstBarSetRow") << 0 << 1 << 2;
QTest::newRow("lastBarSetRow equal to firstBarSetRow") << 1 << 1 << 1;
QTest::newRow("lastBarSetRow lesser than firstBarSetRow") << 1 << 0 << 0;
QTest::newRow("invalid firstBarSetRow and correct lastBarSetRow") << -3 << 1 << 0;
QTest::newRow("firstBarSetRow beyond the size of model and correct lastBarSetRow")
<< m_modelRowCount << 1 << 0;
QTest::newRow("firstBarSetRow beyond the size of model and invalid lastBarSetRow")
<< m_modelRowCount << -1 << 0;
}
void tst_barmodelmapper::horizontalMapper()
{
QFETCH(int, firstBarSetRow);
QFETCH(int, lastBarSetRow);
QFETCH(int, expectedBarSetCount);
QBarSeries *series = new QBarSeries;
QBarModelMapper *mapper = new QBarModelMapper;
mapper->setOrientation(Qt::Horizontal);
mapper->setFirstBarSetSection(firstBarSetRow);
mapper->setLastBarSetSection(lastBarSetRow);
mapper->setModel(m_model);
mapper->setSeries(series);
QCOMPARE(series->count(), expectedBarSetCount);
QCOMPARE(mapper->firstBarSetSection(), qMax(-1, firstBarSetRow));
QCOMPARE(mapper->lastBarSetSection(), qMax(-1, lastBarSetRow));
delete mapper;
delete series;
}
void tst_barmodelmapper::horizontalMapperCustomMapping_data()
{
QTest::addColumn<int>("first");
QTest::addColumn<int>("countLimit");
QTest::addColumn<int>("expectedBarSetCount");
QTest::addColumn<int>("expectedCount");
QTest::newRow("first: 0, unlimited count") << 0 << -1 << 2 << m_modelColumnCount;
QTest::newRow("first: 3, unlimited count") << 3 << -1 << 2 << m_modelColumnCount - 3;
QTest::newRow("first: 0, count: 5") << 0 << 5 << 2 << qMin(5, m_modelColumnCount);
QTest::newRow("first: 3, count: 5") << 3 << 5 << 2 << qMin(5, m_modelColumnCount - 3);
QTest::newRow("first: +1 greater then the number of rows in the model, unlimited count")
<< m_modelColumnCount + 1 << -1 << 0 << 0;
QTest::newRow("first: +1 greater then the number of rows in the model, count: 5")
<< m_modelColumnCount + 1 << 5 << 0 << 0;
QTest::newRow("first: 0, count: +3 greater than the number of rows in the model (should limit "
"to the size of model)")
<< 0 << m_modelColumnCount + 3 << 2 << m_modelColumnCount;
QTest::newRow("first: -3(invalid - should default to 0), unlimited count")
<< -3 << -1 << 2 << m_modelColumnCount;
QTest::newRow("first: 0, count: -3 (invalid - shlould default to -1)")
<< 0 << -3 << 2 << m_modelColumnCount;
QTest::newRow(
"first: -3(invalid - should default to 0), count: -3 (invalid - shlould default to -1)")
<< -3 << -3 << 2 << m_modelColumnCount;
}
void tst_barmodelmapper::horizontalMapperCustomMapping()
{
QFETCH(int, first);
QFETCH(int, countLimit);
QFETCH(int, expectedBarSetCount);
QFETCH(int, expectedCount);
QBarSeries *series = new QBarSeries;
QCOMPARE(series->count(), 0);
QBarModelMapper *mapper = new QBarModelMapper;
mapper->setOrientation(Qt::Horizontal);
mapper->setFirstBarSetSection(0);
mapper->setLastBarSetSection(1);
mapper->setModel(m_model);
mapper->setSeries(series);
mapper->setFirst(first);
mapper->setCount(countLimit);
QCOMPARE(series->count(), expectedBarSetCount);
if (expectedBarSetCount > 0)
QCOMPARE(series->barSets().first()->count(), expectedCount);
// change values column mapping to invalid
mapper->setFirstBarSetSection(-1);
mapper->setLastBarSetSection(1);
QCOMPARE(series->count(), 0);
delete mapper;
delete series;
}
void tst_barmodelmapper::horizontalModelInsertRows()
{
// setup the mapper
createHorizontalMapper();
QCOMPARE(m_series->count(),
m_hMapper->lastBarSetSection() - m_hMapper->firstBarSetSection() + 1);
QCOMPARE(m_series->barSets().first()->count(), m_modelColumnCount);
QVERIFY(m_hMapper->model() != 0);
int insertCount = 4;
m_model->insertRows(3, insertCount);
QCOMPARE(m_series->count(),
m_hMapper->lastBarSetSection() - m_hMapper->firstBarSetSection() + 1);
QCOMPARE(m_series->barSets().first()->count(), m_modelColumnCount);
}
void tst_barmodelmapper::horizontalModelRemoveRows()
{
// setup the mapper
createHorizontalMapper();
QCOMPARE(m_series->count(),
qMin(m_model->rowCount(),
m_hMapper->lastBarSetSection() - m_hMapper->firstBarSetSection() + 1));
QCOMPARE(m_series->barSets().first()->count(), m_modelColumnCount);
QVERIFY(m_hMapper->model() != 0);
int removeCount = m_modelRowCount - 2;
m_model->removeRows(0, removeCount);
QCOMPARE(m_series->count(),
qMin(m_model->rowCount(),
m_hMapper->lastBarSetSection() - m_hMapper->firstBarSetSection() + 1));
QCOMPARE(m_series->barSets().first()->count(), m_modelColumnCount);
// leave all the columns
m_model->removeRows(0, m_modelRowCount - removeCount);
QCOMPARE(m_series->count(), 0);
}
void tst_barmodelmapper::horizontalModelInsertColumns()
{
// setup the mapper
createHorizontalMapper();
QCOMPARE(m_series->count(),
m_hMapper->lastBarSetSection() - m_hMapper->firstBarSetSection() + 1);
QCOMPARE(m_series->barSets().first()->count(), m_modelColumnCount);
QVERIFY(m_hMapper->model() != 0);
int insertCount = 4;
m_model->insertColumns(3, insertCount);
QCOMPARE(m_series->count(),
m_hMapper->lastBarSetSection() - m_hMapper->firstBarSetSection() + 1);
QCOMPARE(m_series->barSets().first()->count(), m_modelColumnCount + insertCount);
int first = 3;
m_hMapper->setFirst(3);
QCOMPARE(m_series->count(),
m_hMapper->lastBarSetSection() - m_hMapper->firstBarSetSection() + 1);
QCOMPARE(m_series->barSets().first()->count(), m_modelColumnCount + insertCount - first);
m_model->insertColumns(3, insertCount);
QCOMPARE(m_series->count(),
m_hMapper->lastBarSetSection() - m_hMapper->firstBarSetSection() + 1);
QCOMPARE(m_series->barSets().first()->count(), m_modelColumnCount + 2 * insertCount - first);
int countLimit = 6;
m_hMapper->setCount(countLimit);
QCOMPARE(m_series->count(),
m_hMapper->lastBarSetSection() - m_hMapper->firstBarSetSection() + 1);
QCOMPARE(m_series->barSets().first()->count(),
qMin(countLimit, m_modelColumnCount + 2 * insertCount - first));
m_model->insertColumns(3, insertCount);
QCOMPARE(m_series->count(),
m_hMapper->lastBarSetSection() - m_hMapper->firstBarSetSection() + 1);
QCOMPARE(m_series->barSets().first()->count(),
qMin(countLimit, m_modelColumnCount + 3 * insertCount - first));
m_hMapper->setFirst(0);
QCOMPARE(m_series->count(),
m_hMapper->lastBarSetSection() - m_hMapper->firstBarSetSection() + 1);
QCOMPARE(m_series->barSets().first()->count(),
qMin(countLimit, m_modelColumnCount + 3 * insertCount));
m_hMapper->setCount(-1);
QCOMPARE(m_series->count(),
m_hMapper->lastBarSetSection() - m_hMapper->firstBarSetSection() + 1);
QCOMPARE(m_series->barSets().first()->count(), m_modelColumnCount + 3 * insertCount);
}
void tst_barmodelmapper::horizontalModelRemoveColumns()
{
// setup the mapper
createHorizontalMapper();
QCOMPARE(m_series->count(),
m_hMapper->lastBarSetSection() - m_hMapper->firstBarSetSection() + 1);
QCOMPARE(m_series->barSets().first()->count(), m_modelColumnCount);
QVERIFY(m_hMapper->model() != 0);
int removeCount = 2;
m_model->removeColumns(1, removeCount);
QCOMPARE(m_series->count(),
m_hMapper->lastBarSetSection() - m_hMapper->firstBarSetSection() + 1);
QCOMPARE(m_series->barSets().first()->count(), m_modelColumnCount - removeCount);
int first = 1;
m_hMapper->setFirst(first);
QCOMPARE(m_series->count(),
m_hMapper->lastBarSetSection() - m_hMapper->firstBarSetSection() + 1);
QCOMPARE(m_series->barSets().first()->count(), m_modelColumnCount - removeCount - first);
m_model->removeColumns(1, removeCount);
QCOMPARE(m_series->count(),
m_hMapper->lastBarSetSection() - m_hMapper->firstBarSetSection() + 1);
QCOMPARE(m_series->barSets().first()->count(), m_modelColumnCount - 2 * removeCount - first);
int countLimit = 3;
m_hMapper->setCount(countLimit);
QCOMPARE(m_series->count(),
m_hMapper->lastBarSetSection() - m_hMapper->firstBarSetSection() + 1);
QCOMPARE(m_series->barSets().first()->count(),
qMin(countLimit, m_modelColumnCount - 2 * removeCount - first));
m_model->removeColumns(1, removeCount);
QCOMPARE(m_series->count(),
m_hMapper->lastBarSetSection() - m_hMapper->firstBarSetSection() + 1);
QCOMPARE(m_series->barSets().first()->count(),
qMin(countLimit, m_modelColumnCount - 3 * removeCount - first));
m_hMapper->setFirst(0);
QCOMPARE(m_series->count(),
m_hMapper->lastBarSetSection() - m_hMapper->firstBarSetSection() + 1);
QCOMPARE(m_series->barSets().first()->count(),
qMin(countLimit, m_modelColumnCount - 3 * removeCount));
m_hMapper->setCount(-1);
QCOMPARE(m_series->count(),
m_hMapper->lastBarSetSection() - m_hMapper->firstBarSetSection() + 1);
QCOMPARE(m_series->barSets().first()->count(), m_modelColumnCount - 3 * removeCount);
}
void tst_barmodelmapper::horizontalMapperSignals()
{
QBarModelMapper *mapper = new QBarModelMapper;
QSignalSpy spy0(mapper, SIGNAL(firstChanged()));
QSignalSpy spy1(mapper, SIGNAL(countChanged()));
QSignalSpy spy2(mapper, SIGNAL(firstBarSetSectionChanged()));
QSignalSpy spy3(mapper, SIGNAL(lastBarSetSectionChanged()));
QSignalSpy spy4(mapper, SIGNAL(modelChanged()));
QSignalSpy spy5(mapper, SIGNAL(seriesChanged()));
mapper->setFirstBarSetSection(0);
mapper->setLastBarSetSection(1);
mapper->setModel(m_model);
mapper->setSeries(m_series);
mapper->setFirst(1);
mapper->setCount(5);
QCOMPARE(spy0.size(), 1);
QCOMPARE(spy1.size(), 1);
QCOMPARE(spy2.size(), 1);
QCOMPARE(spy3.size(), 1);
QCOMPARE(spy4.size(), 1);
QCOMPARE(spy5.size(), 1);
delete mapper;
}
void tst_barmodelmapper::construct()
{
auto mapper = new QBarModelMapper();
QVERIFY(mapper);
delete mapper;
}
void tst_barmodelmapper::createVerticalMapper()
{
m_vMapper = new QBarModelMapper;
QVERIFY(m_vMapper->model() == nullptr);
m_vMapper->setFirstBarSetSection(0);
m_vMapper->setLastBarSetSection(4);
m_vMapper->setModel(m_model);
m_vMapper->setSeries(m_series);
}
void tst_barmodelmapper::createHorizontalMapper()
{
m_hMapper = new QBarModelMapper;
QVERIFY(m_hMapper->model() == 0);
m_hMapper->setOrientation(Qt::Horizontal);
m_hMapper->setFirstBarSetSection(0);
m_hMapper->setLastBarSetSection(4);
m_hMapper->setModel(m_model);
m_hMapper->setSeries(m_series);
}
void tst_barmodelmapper::seriesUpdated()
{
// setup the mapper
createVerticalMapper();
QCOMPARE(m_series->barSets().first()->count(), m_modelRowCount);
QCOMPARE(m_vMapper->count(), -1);
m_series->barSets().first()->append(123);
QCOMPARE(m_model->rowCount(), m_modelRowCount + 1);
QCOMPARE(m_vMapper->count(),
-1); // the value should not change as it indicates 'all' items there are in the model
m_series->barSets().last()->remove(0, m_modelRowCount);
QCOMPARE(m_model->rowCount(), 1);
QCOMPARE(m_vMapper->count(),
-1); // the value should not change as it indicates 'all' items there are in the model
m_series->barSets().first()->replace(0, 444.0);
QCOMPARE(m_model->data(m_model->index(0, 0)).toReal(), 444.0);
m_series->barSets().first()->setLabel("Hello");
QCOMPARE(m_model->headerData(0, Qt::Horizontal).toString(), QString("Hello"));
QList<qreal> newValues;
newValues << 15 << 27 << 35 << 49;
m_series->barSets().first()->append(newValues);
QCOMPARE(m_model->rowCount(), 1 + newValues.size());
QList<QBarSet *> newBarSets;
QBarSet *newBarSet_1 = new QBarSet("New_1");
newBarSet_1->append(101);
newBarSet_1->append(102);
newBarSet_1->append(103);
newBarSets.append(newBarSet_1);
QBarSet *newBarSet_2 = new QBarSet("New_2");
newBarSet_2->append(201);
newBarSet_2->append(202);
newBarSet_2->append(203);
newBarSets.append(newBarSet_2);
m_series->append(newBarSets);
QCOMPARE(m_model->columnCount(), m_modelColumnCount + newBarSets.size());
}
void tst_barmodelmapper::modelUpdateCell()
{
// setup the mapper
createVerticalMapper();
QVERIFY(m_model->setData(m_model->index(1, 0), 44));
QCOMPARE(m_series->barSets().at(0)->at(1), 44.0);
QCOMPARE(m_model->data(m_model->index(1, 0)).toReal(), 44.0);
}
QTEST_MAIN(tst_barmodelmapper)
#include "tst_barmodelmapper.moc"