diff options
author | Kyle Edwards <kyle.edwards@kitware.com> | 2020-10-26 19:43:57 (GMT) |
---|---|---|
committer | Kyle Edwards <kyle.edwards@kitware.com> | 2020-10-26 19:43:57 (GMT) |
commit | b8937a992b956b16a9181737f695ca118c5eea49 (patch) | |
tree | 02b30e7d14f767c28e0ef69af3351f343d7bf8c9 /Tests/CMakeGUI/QCMakeCacheModelTest.cxx | |
parent | d13bd6ec3d7232b4b62d3106684f4f57951f3b28 (diff) | |
parent | 9fa7afe7d332ced27264f1ef7c921aa1d95bc476 (diff) | |
download | CMake-b8937a992b956b16a9181737f695ca118c5eea49.zip CMake-b8937a992b956b16a9181737f695ca118c5eea49.tar.gz CMake-b8937a992b956b16a9181737f695ca118c5eea49.tar.bz2 |
Merge branch 'release' into ninja-multi-per-config-sources
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) |