| /* 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 "QCMakeCacheView.h" |
| #include <QtTest> |
| |
| 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) |