Qt wiki will be updated on October 12th 2023 starting at 11:30 AM (EEST) and the maintenance will last around 2-3 hours. During the maintenance the site will be unavailable.
Model Test: Difference between revisions
(Merge edit by Bveelo) |
Raven-worx (talk | contribs) (updated borken links to the ModelTest sources) |
||
Line 1: | Line 1: | ||
'''English''' [[Model_Test_Spanish|Spanish]] | '''English''' [[Model_Test_Spanish|Spanish]] | ||
Line 34: | Line 33: | ||
3. That is it. When the test finds a problem it will assert. modeltest.cpp contains some hints on how to fix problems that the test finds. | 3. That is it. When the test finds a problem it will assert. modeltest.cpp contains some hints on how to fix problems that the test finds. | ||
The source can be found [ | The source can be found [https://code.qt.io/cgit/qt/qt.git/tree/tests/auto/modeltest here (Qt 4)] and [https://code.qt.io/cgit/qt-creator/qt-creator.git/plain/src/shared/modeltest/ here (Qt 5)] |
Revision as of 06:43, 4 June 2018
English Spanish
ModelTest provides a way to check for common errors in implementations of QAbstractItemModel.
ModelTest continuously checks a model as it changes, helping to verify the state and catching many common errors the moment they show up.
Some of the conditions caught include:
- Verifying X number of rows have been inserted in the correct place after the signal rowsAboutToBeInserted() says X rows will be inserted.
- The parent of the first index of the first row is a QModelIndex()
- Calling index() twice in a row with the same values will return the same QModelIndex
- If rowCount() says there are X number of rows, model test will verify that is true.
- Many possible off by one bugs
- hasChildren() returns true if rowCount() is greater then zero.
- and many more…
To use the model test do the following:
1. Include the pri file at the end of your project pro file using the include() command like so: include(../path/to/dir/modeltest.pri)
2. Then in your source include "modeltest.h" and instantiate ModelTest with your model so the test can live for the lifetime of your model. For example:
#include <modeltest.h>
QDirModel *model = new QDirModel(this);
new ModelTest(model, this);
3. That is it. When the test finds a problem it will assert. modeltest.cpp contains some hints on how to fix problems that the test finds.
The source can be found here (Qt 4) and here (Qt 5)