You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
109 lines
3.9 KiB
109 lines
3.9 KiB
3 years ago
|
/* 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)
|