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/CMakeLists.txt | 1 + framework/src/tests/CMakeLists.txt | 15 +++++++ framework/src/tests/folderlistmodeltest.cpp | 70 +++++++++++++++++++++++++++++ 3 files changed, 86 insertions(+) create mode 100644 framework/src/tests/CMakeLists.txt create mode 100644 framework/src/tests/folderlistmodeltest.cpp diff --git a/framework/src/CMakeLists.txt b/framework/src/CMakeLists.txt index 9d4e238e..a5b2f6bc 100644 --- a/framework/src/CMakeLists.txt +++ b/framework/src/CMakeLists.txt @@ -71,6 +71,7 @@ install(TARGETS frameworkplugin DESTINATION ${FRAMEWORK_INSTALL_DIR}) set(BUILD_TESTING ON) +add_subdirectory(tests) add_subdirectory(domain/mime/tests) add_subdirectory(domain/mime/mimetreeparser) add_subdirectory(domain/settings/tests) diff --git a/framework/src/tests/CMakeLists.txt b/framework/src/tests/CMakeLists.txt new file mode 100644 index 00000000..fb2e2ead --- /dev/null +++ b/framework/src/tests/CMakeLists.txt @@ -0,0 +1,15 @@ +include_directories( + ${CMAKE_CURRENT_BINARY_DIR} + ${CMAKE_CURRENT_SOURCE_DIR}/.. +) + +find_package(Qt5 REQUIRED NO_MODULE COMPONENTS Core Test Gui) + +add_executable(folderlistmodeltest folderlistmodeltest.cpp) +add_test(folderlistmodeltest folderlistmodeltest) +target_link_libraries(folderlistmodeltest + Qt5::Core + Qt5::Test + Qt5::Gui + kubeframework +) 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