mirror of
https://github.com/wassname/sloth.git
synced 2026-06-27 18:25:49 +08:00
29 lines
1.4 KiB
Plaintext
29 lines
1.4 KiB
Plaintext
ModelTest provides a way to check for common errors in implementations of <a href="QAbstractItemModel">http://doc.trolltech.com/4/qabstractitemmodel.html</a>.
|
|
|
|
|
|
ModelTest continuously checks a model as it changes, helping to verify the state and catching many common errors the moment they show up such as:
|
|
<ul>
|
|
<li>Verifing X number of rows have been inserted in the correct place after the signal rowsAboutToBeInserted() says X rows will be inserted.</li>
|
|
<li>The parent of the first index of the first row is a QModelIndex()</li>
|
|
<li>Calling index() twice in a row with the same values will return the same QModelIndex</li>
|
|
<li>If rowCount() says there are X number of rows, model test will verify that is true.
|
|
<li>Many possible off by one bugs</li>
|
|
<li>hasChildren() returns true if rowCount() is greater then zero.</li>
|
|
<li>and many more...</li>
|
|
</ul>
|
|
|
|
---
|
|
|
|
To Use the model test do the following:
|
|
|
|
1) Include the modeltest.py file in your project directory
|
|
|
|
2) Then in your source import "modeltest" and instantiate ModelTest with your model so the test can live for the lifetime of your model. For example:
|
|
|
|
from modeltest import ModelTest
|
|
|
|
self.model = QDirModel(self)
|
|
self.modeltest = ModelTest(self.model, self);
|
|
|
|
3) That is it. When the test finds a problem it will throw an AssertionError. modeltest.py contains some hints on how to fix problems that the test finds.
|