Revision control

Copy as Markdown

// Copyright (C) 2024 The Qt Company Ltd.
// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only
#include <QtGraphs/QBarSet>
#include <QtTest/QtTest>
class tst_barset : public QObject
{
Q_OBJECT
private slots:
void initTestCase();
void cleanupTestCase();
void init();
void cleanup();
void construct();
void initialProperties();
void initializeProperties();
void selectDeselectSum();
void appendInsertRemove();
void replaceAt();
private:
QBarSet *m_set;
};
void tst_barset::initTestCase() {}
void tst_barset::cleanupTestCase() {}
void tst_barset::init()
{
m_set = new QBarSet();
}
void tst_barset::cleanup()
{
delete m_set;
}
void tst_barset::construct()
{
QBarSet *set = new QBarSet();
QVERIFY(set);
delete set;
}
void tst_barset::initialProperties()
{
QVERIFY(m_set);
QCOMPARE(m_set->label(), "");
QCOMPARE(m_set->color(), QColor(Qt::transparent));
QCOMPARE(m_set->borderColor(), QColor(Qt::transparent));
QCOMPARE(m_set->labelColor(), QColor(Qt::transparent));
QCOMPARE(m_set->values(), {});
QCOMPARE(m_set->borderWidth(), -1);
QCOMPARE(m_set->count(), 0);
QCOMPARE(m_set->selectedBars(), {});
}
void tst_barset::initializeProperties()
{
QVERIFY(m_set);
QSignalSpy spy0(m_set, &QBarSet::labelChanged);
QSignalSpy spy1(m_set, &QBarSet::colorChanged);
QSignalSpy spy2(m_set, &QBarSet::borderColorChanged);
QSignalSpy spy3(m_set, &QBarSet::labelColorChanged);
QSignalSpy spy4(m_set, &QBarSet::valuesChanged);
QSignalSpy spy5(m_set, &QBarSet::borderWidthChanged);
QSignalSpy spy6(m_set, &QBarSet::selectedColorChanged);
QVariantList vals = {1, 2, 3};
m_set->setLabel("BarSet");
m_set->setColor("#ff0000");
m_set->setBorderColor("00ff00");
m_set->setLabelColor("#0000ff");
m_set->setValues(vals);
m_set->setBorderWidth(2);
m_set->setSelectedColor("#ffffff");
QCOMPARE(m_set->label(), "BarSet");
QCOMPARE(m_set->color(), "#ff0000");
QCOMPARE(m_set->borderColor(), "00ff00");
QCOMPARE(m_set->labelColor(), "#0000ff");
QCOMPARE(m_set->values(), vals);
QCOMPARE(m_set->borderWidth(), 2);
QCOMPARE(m_set->count(), 3);
QCOMPARE(m_set->selectedColor(), "#ffffff");
QCOMPARE(spy0.size(), 1);
QCOMPARE(spy1.size(), 1);
QCOMPARE(spy2.size(), 1);
QCOMPARE(spy3.size(), 1);
QCOMPARE(spy4.size(), 1);
QCOMPARE(spy5.size(), 1);
}
void tst_barset::selectDeselectSum()
{
QVERIFY(m_set);
QSignalSpy spy0(m_set, &QBarSet::valuesChanged);
QSignalSpy spy1(m_set, &QBarSet::selectedBarsChanged);
QVariantList vals = {10, 20, 30};
QList<qsizetype> selectedsome = {0, 2};
QList<qsizetype> selectedall = {0, 1, 2};
m_set->setValues(vals);
QCOMPARE(m_set->sum(), 60);
// Select one
m_set->selectBar(1);
QCOMPARE(m_set->selectedBars(), {1});
QCOMPARE(m_set->isBarSelected(1), true);
// Toggle selection of one
m_set->setBarSelected(1, false);
QCOMPARE(m_set->selectedBars(), {});
QCOMPARE(m_set->isBarSelected(1), false);
// Toggle selection of one again
m_set->setBarSelected(1, true);
QCOMPARE(m_set->selectedBars(), {1});
m_set->deselectAllBars();
// Select two
m_set->selectBars(selectedsome);
QCOMPARE(m_set->selectedBars().size(), selectedsome.size());
for (int i = 0; i < selectedsome.size(); i++) {
QCOMPARE(m_set->selectedBars().contains(selectedsome[i]), true);
}
// Select all
m_set->selectAllBars();
QCOMPARE(m_set->selectedBars().size(), selectedall.size());
for (int i = 0; i < selectedsome.size(); i++) {
QCOMPARE(m_set->selectedBars().contains(selectedall[i]), true);
}
// Deselect one
m_set->deselectBar(1);
QCOMPARE(m_set->selectedBars().size(), selectedsome.size());
for (int i = 0; i < selectedsome.size(); i++) {
QCOMPARE(m_set->selectedBars().contains(selectedsome[i]), true);
}
// Deselect all
m_set->deselectAllBars();
QCOMPARE(m_set->selectedBars(), {});
QCOMPARE(spy0.size(), 1);
QCOMPARE(spy1.size(), 8);
}
void tst_barset::appendInsertRemove()
{
QVERIFY(m_set);
QSignalSpy spy0(m_set, &QBarSet::valuesAdded);
QSignalSpy spy1(m_set, &QBarSet::valuesRemoved);
QSignalSpy spy2(m_set, &QBarSet::selectedBarsChanged);
QSignalSpy spy3(m_set, &QBarSet::countChanged);
QList<qreal> nums = {10, 20, 30};
QList<qreal> morenums = {11, 21, 31};
QVariantList vals = {10, 20, 30};
QVariantList morevals = {11, 21, 31};
QVariantList allvals = {10, 20, 30, 11, 21, 31};
QVariantList mixedvals = {10, 11, 20, 21, 30, 31};
// Append 3
for (int i = 0; i < nums.count(); ++i)
m_set->append(nums[i]);
QCOMPARE(m_set->values(), vals);
QCOMPARE(spy0.size(), 3);
QCOMPARE(spy3.size(), 3);
// Append 3 more
for (int i = 0; i < morenums.count(); ++i)
m_set->append(morenums[i]);
QCOMPARE(m_set->values(), allvals);
QCOMPARE(spy0.size(), 6);
QCOMPARE(spy3.size(), 6);
// Remove the first 3 one by one
for (int i = 2; i >= 0; --i)
m_set->remove(i);
QCOMPARE(m_set->values(), morevals);
QCOMPARE(spy0.size(), 6);
QCOMPARE(spy3.size(), 9);
// Insert them in between
m_set->insert(0, nums[0]); // -> 10, 11, 21, 31
m_set->insert(2, nums[1]); // -> 10, 11, 20, 21, 31
m_set->insert(4, nums[2]); // -> 10, 11, 20, 21, 30, 31
QCOMPARE(m_set->values(), mixedvals);
QCOMPARE(spy0.size(), 9); // values added
QCOMPARE(spy1.size(), 3); // values removed
QCOMPARE(spy2.size(), 0); // selectedbarsChanged
QCOMPARE(spy3.size(), 12); // countChanged
}
void tst_barset::replaceAt()
{
QVERIFY(m_set);
QSignalSpy spy0(m_set, &QBarSet::valuesAdded);
QSignalSpy spy1(m_set, &QBarSet::valueChanged);
QList<qreal> nums = {10, 20, 30};
QList<qreal> morenums = {11, 21, 31};
m_set->append(nums);
for (int i = 0; i < m_set->count(); ++i)
QCOMPARE(m_set->at(i), nums[i]);
for (int i = 0; i < m_set->count(); ++i)
m_set->replace(i, morenums[i]);
for (int i = 0; i < m_set->count(); ++i)
QCOMPARE(m_set->at(i), morenums[i]);
QCOMPARE(spy0.size(), 1);
QCOMPARE(spy1.size(), 3);
}
QTEST_MAIN(tst_barset)
#include "tst_barset.moc"