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

From Qt Wiki
Jump to navigation Jump to search
No edit summary
No edit summary
Line 3: Line 3:
'''English''' [[Model_Test_Spanish|Spanish]]
'''English''' [[Model_Test_Spanish|Spanish]]


= Model Test =
 


ModelTest provides a way to check for common errors in implementations of [http://doc.qt.io/qt-5/qabstractitemmodel.html QAbstractItemModel].
ModelTest provides a way to check for common errors in implementations of [http://doc.qt.io/qt-5/qabstractitemmodel.html QAbstractItemModel].

Revision as of 09:10, 25 March 2015


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.

Modeltest.png

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