diff options
Diffstat (limited to 'Tests/CMakeGUI/QCMakeCacheModelTest.cxx')
-rw-r--r-- | Tests/CMakeGUI/QCMakeCacheModelTest.cxx | 108 |
1 files changed, 108 insertions, 0 deletions
diff --git a/Tests/CMakeGUI/QCMakeCacheModelTest.cxx b/Tests/CMakeGUI/QCMakeCacheModelTest.cxx new file mode 100644 index 0000000..f9bc6ae --- /dev/null +++ b/Tests/CMakeGUI/QCMakeCacheModelTest.cxx @@ -0,0 +1,108 @@ +/* Distributed under the OSI-approved BSD 3-Clause License. See accompanying + file Copyright.txt or https://cmake.org/licensing for details. */ +#include "QCMakeCacheModelTest.h" + +#include <algorithm> +#include <iostream> + +#include "QCMakeCacheView.h" +#include <QtTest> + +namespace { +QCMakeProperty makeProperty( + const QString& name, const QString& value, + QCMakeProperty::PropertyType type = QCMakeProperty::STRING, + bool advanced = false) +{ + return QCMakeProperty{ + /*Key=*/name, + /*Value=*/value, + /*Strings=*/{}, + /*Help=*/"", + /*Type=*/type, + /*Advanced=*/advanced, + }; +} +} + +void QCMakeCacheModelTest::setNewProperties() +{ + QFETCH(QCMakePropertyList, oldList); + QFETCH(QCMakePropertyList, newList); + QFETCH(QVector<QString>, names); + QFETCH(QVector<QString>, values); + QFETCH(QVector<QVariant>, background); + + QCMakeCacheModel model; + model.setViewType(QCMakeCacheModel::FlatView); + model.setProperties(oldList); + model.setProperties(newList); + + auto rows = model.rowCount(); + QVector<QString> actualNames(rows); + QVector<QString> actualValues(rows); + QVector<QVariant> actualBackground1(rows); + QVector<QVariant> actualBackground2(rows); + for (int i = 0; i < rows; ++i) { + auto idx1 = model.index(i, 0); + auto idx2 = model.index(i, 1); + + auto name = model.data(idx1, Qt::DisplayRole); + QVERIFY(name.canConvert<QString>()); + actualNames[i] = name.value<QString>(); + + auto value = model.data(idx2, Qt::DisplayRole); + QVERIFY(name.canConvert<QString>()); + actualValues[i] = value.value<QString>(); + + actualBackground1[i] = model.data(idx1, Qt::BackgroundRole); + actualBackground2[i] = model.data(idx2, Qt::BackgroundRole); + } + + QCOMPARE(actualNames, names); + QCOMPARE(actualValues, values); + QCOMPARE(actualBackground1, background); + QCOMPARE(actualBackground2, background); +} + +void QCMakeCacheModelTest::setNewProperties_data() +{ + QTest::addColumn<QCMakePropertyList>("oldList"); + QTest::addColumn<QCMakePropertyList>("newList"); + QTest::addColumn<QVector<QString>>("names"); + QTest::addColumn<QVector<QString>>("values"); + QTest::addColumn<QVector<QVariant>>("background"); + + QTest::newRow("empty") << QCMakePropertyList{} << QCMakePropertyList{} + << QVector<QString>{} << QVector<QString>{} + << QVector<QVariant>{}; + QTest::newRow("noNew") << QCMakePropertyList{ makeProperty("VARIABLE_1", + "Value 1") } + << QCMakePropertyList{} << QVector<QString>{} + << QVector<QString>{} << QVector<QVariant>{}; + QTest::newRow("allNew") + << QCMakePropertyList{} + << QCMakePropertyList{ makeProperty("VARIABLE_1", "Value 1") } + << QVector<QString>{ "VARIABLE_1" } << QVector<QString>{ "Value 1" } + << QVector<QVariant>{ QBrush{ QColor{ 255, 100, 100 } } }; + QTest::newRow("mixed") + << QCMakePropertyList{ makeProperty("VARIABLE_1", "Value 1") } + << QCMakePropertyList{ makeProperty("VARIABLE_2", "Value 2") } + << QVector<QString>{ "VARIABLE_2" } << QVector<QString>{ "Value 2" } + << QVector<QVariant>{ QBrush{ QColor{ 255, 100, 100 } } }; + QTest::newRow("overridden") + << QCMakePropertyList{ makeProperty("VARIABLE_1", "Value 1") } + << QCMakePropertyList{ makeProperty("VARIABLE_1", "Overridden value") } + << QVector<QString>{ "VARIABLE_1" } + << QVector<QString>{ "Overridden value" } + << QVector<QVariant>{ QVariant{} }; + QTest::newRow("overriddenMixed") + << QCMakePropertyList{ makeProperty("VARIABLE_1", "Value 1") } + << QCMakePropertyList{ makeProperty("VARIABLE_1", "Overridden value"), + makeProperty("VARIABLE_2", "Value 2") } + << QVector<QString>{ "VARIABLE_2", "VARIABLE_1" } + << QVector<QString>{ "Value 2", "Overridden value" } + << QVector<QVariant>{ QBrush{ QColor{ 255, 100, 100 } }, QVariant{} }; +} + +QTEST_MAIN(QCMakeCacheModelTest) |