| /* Distributed under the OSI-approved BSD 3-Clause License. See accompanying | |
| file LICENSE.rst or https://cmake.org/licensing for details. */ | |
| #include "QCMakeCacheModelTest.h" | |
| #include <algorithm> | |
| #include <iostream> | |
| #include <QtTest> | |
| #include "QCMakeCacheView.h" | |
| namespace { | |
| QCMakeProperty makeProperty( | |
| QString const& name, QString const& 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) |