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.
 
 
 
 
 
 

61 lines
1.5 KiB

#include <QTest>
#include <QStringListModel>
#include <kselectionproxymodel.h>
class KSelectionProxyModelTest : public QObject
{
Q_OBJECT
public:
KSelectionProxyModelTest(QObject* parent = 0)
: QObject(parent)
{
}
private Q_SLOTS:
void selectOnSourceReset();
};
void KSelectionProxyModelTest::selectOnSourceReset()
{
QStringList days = {
"Monday",
"Tuesday",
"Wednesday",
"Thursday"
};
QStringListModel strings(days);
QItemSelectionModel selectionModel(&strings);
connect(&strings, &QAbstractItemModel::modelReset, [&] {
selectionModel.select(QItemSelection(strings.index(0, 0), strings.index(2, 0)),
QItemSelectionModel::Select);
});
KSelectionProxyModel proxy(&selectionModel);
proxy.setSourceModel(&strings);
selectionModel.select(QItemSelection(strings.index(0, 0), strings.index(2, 0)),
QItemSelectionModel::Select);
QCOMPARE(proxy.rowCount(), 3);
for (int i = 0; i < 3; ++i)
QCOMPARE(proxy.index(i, 0).data().toString(), days.at(i));
QStringList numbers = { "One", "Two", "Three", "Four" };
strings.setStringList(numbers);
QCOMPARE(proxy.rowCount(), 3);
for (int i = 0; i < 3; ++i)
QCOMPARE(proxy.index(i, 0).data().toString(), numbers.at(i));
QVERIFY(selectionModel.selection().contains(strings.index(0, 0)));
QVERIFY(selectionModel.selection().contains(strings.index(1, 0)));
QVERIFY(selectionModel.selection().contains(strings.index(2, 0)));
}
QTEST_MAIN(KSelectionProxyModelTest)
#include "kselectionproxymodeltest.moc"