From 42818140ac7e24679f9dddfd59b2d9542250eb40 Mon Sep 17 00:00:00 2001 From: Christian Mollekopf Date: Wed, 27 Dec 2017 19:57:50 +0100 Subject: FolderlistModelTest --- framework/src/tests/folderlistmodeltest.cpp | 70 +++++++++++++++++++++++++++++ 1 file changed, 70 insertions(+) create mode 100644 framework/src/tests/folderlistmodeltest.cpp (limited to 'framework/src/tests/folderlistmodeltest.cpp') diff --git a/framework/src/tests/folderlistmodeltest.cpp b/framework/src/tests/folderlistmodeltest.cpp new file mode 100644 index 00000000..da84d432 --- /dev/null +++ b/framework/src/tests/folderlistmodeltest.cpp @@ -0,0 +1,70 @@ +#include +#include +#include +#include "krecursivefilterproxymodel.h" +#include "folderlistmodel.h" + +class TestModel : public KRecursiveFilterProxyModel { +public: + + TestModel() + :KRecursiveFilterProxyModel() + { + auto model = QSharedPointer::create(); + setSourceModel(model.data()); + mModel = model; + } + + bool lessThan(const QModelIndex &left, const QModelIndex &right) const Q_DECL_OVERRIDE + { + return left.data(Qt::DisplayRole).toString() < right.data(Qt::DisplayRole).toString(); + } + + bool acceptRow(int sourceRow, const QModelIndex &sourceParent) const Q_DECL_OVERRIDE + { + auto index = sourceModel()->index(sourceRow, 0, sourceParent); + return index.data(Qt::DisplayRole).toString().contains("accept"); + } + + QSharedPointer mModel; +}; + +bool contains(QAbstractItemModel &model, const QModelIndex &parent, QString s) +{ + for (int row = 0; row < model.rowCount(parent); row++) { + auto idx = model.index(row, 0, parent); + if (idx.data(Qt::DisplayRole).toString() == s) { + return true; + } + if (contains(model, idx, s)) { + return true; + } + } + return false; +} + +class FolderlistModelTest : public QObject +{ + Q_OBJECT +private slots: + + void initTestCase() + { + } + + void testRecursiveFilterModel() + { + TestModel model; + auto root = new QStandardItem{"acceptroot"}; + model.mModel->appendRow(root); + auto item = new QStandardItem{"accept1"}; + root->appendRow(item); + item->appendRow(new QStandardItem{"accept11"}); + QVERIFY(contains(model, {}, "acceptroot")); + QVERIFY(contains(model, {}, "accept1")); + QVERIFY(contains(model, {}, "accept11")); + } +}; + +QTEST_MAIN(FolderlistModelTest) +#include "folderlistmodeltest.moc" -- cgit v1.2.3