EditableTreeModel: Add a test
Add a test running QAbstractItemModelTester on the model. Change-Id: I40c141c7e754ca05234da611534bd65e456be2fb Reviewed-by: Kai Köhne <kai.koehne@qt.io> (cherry picked from commit 283cdcd3d5fad368c9df1bcae69cbfbf9ade623f) Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
This commit is contained in:
parent
a51ee84a61
commit
cbb0dabc4c
@ -419,4 +419,19 @@
|
|||||||
\target TreeModel::data
|
\target TreeModel::data
|
||||||
\target TreeModel::setupModelData
|
\target TreeModel::setupModelData
|
||||||
|
|
||||||
|
\section1 Testing the model
|
||||||
|
|
||||||
|
Correctly implementing an item model can be challenging. The class
|
||||||
|
\l QAbstractItemModelTester from the \l{Qt Test} module checks for model
|
||||||
|
consistency, like the model index creation and parent-child relationships.
|
||||||
|
|
||||||
|
You can test your model by just passing a model instance to the class
|
||||||
|
constructor, for instance as part of a Qt unit test:
|
||||||
|
|
||||||
|
\snippet itemviews/editabletreemodel/test.cpp 1
|
||||||
|
|
||||||
|
To create a test which can be run using the \c ctest executable,
|
||||||
|
\c add_test() is used:
|
||||||
|
|
||||||
|
\snippet itemviews/editabletreemodel/CMakeLists.txt 1
|
||||||
*/
|
*/
|
||||||
|
@ -10,7 +10,7 @@ endif()
|
|||||||
|
|
||||||
set(INSTALL_EXAMPLEDIR "${INSTALL_EXAMPLESDIR}/widgets/itemviews/editabletreemodel")
|
set(INSTALL_EXAMPLEDIR "${INSTALL_EXAMPLESDIR}/widgets/itemviews/editabletreemodel")
|
||||||
|
|
||||||
find_package(Qt6 REQUIRED COMPONENTS Core Gui Widgets)
|
find_package(Qt6 REQUIRED COMPONENTS Core Gui Test Widgets)
|
||||||
|
|
||||||
qt_standard_project_setup()
|
qt_standard_project_setup()
|
||||||
|
|
||||||
@ -49,3 +49,29 @@ install(TARGETS editabletreemodel
|
|||||||
BUNDLE DESTINATION "${INSTALL_EXAMPLEDIR}"
|
BUNDLE DESTINATION "${INSTALL_EXAMPLEDIR}"
|
||||||
LIBRARY DESTINATION "${INSTALL_EXAMPLEDIR}"
|
LIBRARY DESTINATION "${INSTALL_EXAMPLEDIR}"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
#! [1]
|
||||||
|
# Unit Test
|
||||||
|
|
||||||
|
include(CTest)
|
||||||
|
|
||||||
|
qt_add_executable(editabletreemodel_tester
|
||||||
|
test.cpp
|
||||||
|
treeitem.cpp treeitem.h
|
||||||
|
treemodel.cpp treemodel.h)
|
||||||
|
|
||||||
|
target_link_libraries(editabletreemodel_tester PRIVATE
|
||||||
|
Qt6::Core
|
||||||
|
Qt6::Test
|
||||||
|
)
|
||||||
|
|
||||||
|
qt_add_resources(editabletreemodel_tester "editabletreemodel"
|
||||||
|
PREFIX
|
||||||
|
"/"
|
||||||
|
FILES
|
||||||
|
${editabletreemodel_resource_files}
|
||||||
|
)
|
||||||
|
|
||||||
|
add_test(NAME editabletreemodel_tester
|
||||||
|
COMMAND editabletreemodel_tester)
|
||||||
|
#! [1]
|
||||||
|
37
examples/widgets/itemviews/editabletreemodel/test.cpp
Normal file
37
examples/widgets/itemviews/editabletreemodel/test.cpp
Normal file
@ -0,0 +1,37 @@
|
|||||||
|
// Copyright (C) 2023 The Qt Company Ltd.
|
||||||
|
// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
|
||||||
|
|
||||||
|
#include "treemodel.h"
|
||||||
|
|
||||||
|
#include <QAbstractItemModelTester>
|
||||||
|
#include <QObject>
|
||||||
|
#include <QTest>
|
||||||
|
|
||||||
|
using namespace Qt::StringLiterals;
|
||||||
|
|
||||||
|
//! [1]
|
||||||
|
class TestEditableTreeModel : public QObject
|
||||||
|
{
|
||||||
|
Q_OBJECT
|
||||||
|
|
||||||
|
private slots:
|
||||||
|
void testTreeModel();
|
||||||
|
};
|
||||||
|
|
||||||
|
void TestEditableTreeModel::testTreeModel()
|
||||||
|
{
|
||||||
|
constexpr auto fileName = ":/default.txt"_L1;
|
||||||
|
QFile file(fileName);
|
||||||
|
QVERIFY2(file.open(QIODevice::ReadOnly | QIODevice::Text),
|
||||||
|
qPrintable(fileName + " cannot be opened: "_L1 + file.errorString()));
|
||||||
|
|
||||||
|
const QStringList headers{"column1"_L1, "column2"_L1};
|
||||||
|
TreeModel model(headers, QString::fromUtf8(file.readAll()));
|
||||||
|
|
||||||
|
QAbstractItemModelTester tester(&model);
|
||||||
|
}
|
||||||
|
|
||||||
|
QTEST_APPLESS_MAIN(TestEditableTreeModel)
|
||||||
|
|
||||||
|
#include "test.moc"
|
||||||
|
//! [1]
|
Loading…
x
Reference in New Issue
Block a user