summaryrefslogtreecommitdiffstats
path: root/tests/auto/other/modeltest
diff options
context:
space:
mode:
Diffstat (limited to 'tests/auto/other/modeltest')
-rw-r--r--tests/auto/other/modeltest/modeltest.cpp170
-rw-r--r--tests/auto/other/modeltest/modeltest.h6
2 files changed, 89 insertions, 87 deletions
diff --git a/tests/auto/other/modeltest/modeltest.cpp b/tests/auto/other/modeltest/modeltest.cpp
index 611f9e904b..1f4a96f7b6 100644
--- a/tests/auto/other/modeltest/modeltest.cpp
+++ b/tests/auto/other/modeltest/modeltest.cpp
@@ -28,61 +28,66 @@
#include "modeltest.h"
-#include <QtCore/QtCore>
#include <QtTest/QtTest>
+Q_LOGGING_CATEGORY(lcModelTest, "qt.modeltest")
+
/*!
Connect to all of the models signals. Whenever anything happens recheck everything.
*/
-ModelTest::ModelTest(QAbstractItemModel *_model, QObject *parent) : QObject(parent),
- model(_model),
- fetchingMore(false)
+ModelTest::ModelTest(QAbstractItemModel *model, QObject *parent)
+ : QObject(parent),
+ model(model),
+ fetchingMore(false)
{
if (!model)
qFatal("%s: model must not be null", Q_FUNC_INFO);
- connect(model, SIGNAL(columnsAboutToBeInserted(QModelIndex,int,int)),
- this, SLOT(runAllTests()));
- connect(model, SIGNAL(columnsAboutToBeRemoved(QModelIndex,int,int)),
- this, SLOT(runAllTests()));
- connect(model, SIGNAL(columnsInserted(QModelIndex,int,int)),
- this, SLOT(runAllTests()));
- connect(model, SIGNAL(columnsRemoved(QModelIndex,int,int)),
- this, SLOT(runAllTests()));
- connect(model, SIGNAL(dataChanged(QModelIndex,QModelIndex)),
- this, SLOT(runAllTests()));
- connect(model, SIGNAL(headerDataChanged(Qt::Orientation,int,int)),
- this, SLOT(runAllTests()));
- connect(model, SIGNAL(layoutAboutToBeChanged()), this, SLOT(runAllTests()));
- connect(model, SIGNAL(layoutChanged()), this, SLOT(runAllTests()));
- connect(model, SIGNAL(modelReset()), this, SLOT(runAllTests()));
- connect(model, SIGNAL(rowsAboutToBeInserted(QModelIndex,int,int)),
- this, SLOT(runAllTests()));
- connect(model, SIGNAL(rowsAboutToBeRemoved(QModelIndex,int,int)),
- this, SLOT(runAllTests()));
- connect(model, SIGNAL(rowsInserted(QModelIndex,int,int)),
- this, SLOT(runAllTests()));
- connect(model, SIGNAL(rowsRemoved(QModelIndex,int,int)),
- this, SLOT(runAllTests()));
+ connect(model, &QAbstractItemModel::columnsAboutToBeInserted,
+ this, &ModelTest::runAllTests);
+ connect(model, &QAbstractItemModel::columnsAboutToBeRemoved,
+ this, &ModelTest::runAllTests);
+ connect(model, &QAbstractItemModel::columnsInserted,
+ this, &ModelTest::runAllTests);
+ connect(model, &QAbstractItemModel::columnsRemoved,
+ this, &ModelTest::runAllTests);
+ connect(model, &QAbstractItemModel::dataChanged,
+ this, &ModelTest::runAllTests);
+ connect(model, &QAbstractItemModel::headerDataChanged,
+ this, &ModelTest::runAllTests);
+ connect(model, &QAbstractItemModel::layoutAboutToBeChanged,
+ this, &ModelTest::runAllTests);
+ connect(model, &QAbstractItemModel::layoutChanged,
+ this, &ModelTest::runAllTests);
+ connect(model, &QAbstractItemModel::modelReset,
+ this, &ModelTest::runAllTests);
+ connect(model, &QAbstractItemModel::rowsAboutToBeInserted,
+ this, &ModelTest::runAllTests);
+ connect(model, &QAbstractItemModel::rowsAboutToBeRemoved,
+ this, &ModelTest::runAllTests);
+ connect(model, &QAbstractItemModel::rowsInserted,
+ this, &ModelTest::runAllTests);
+ connect(model, &QAbstractItemModel::rowsRemoved,
+ this, &ModelTest::runAllTests);
// Special checks for changes
- connect(model, SIGNAL(layoutAboutToBeChanged()),
- this, SLOT(layoutAboutToBeChanged()));
- connect(model, SIGNAL(layoutChanged()),
- this, SLOT(layoutChanged()));
-
- connect(model, SIGNAL(rowsAboutToBeInserted(QModelIndex,int,int)),
- this, SLOT(rowsAboutToBeInserted(QModelIndex,int,int)));
- connect(model, SIGNAL(rowsAboutToBeRemoved(QModelIndex,int,int)),
- this, SLOT(rowsAboutToBeRemoved(QModelIndex,int,int)));
- connect(model, SIGNAL(rowsInserted(QModelIndex,int,int)),
- this, SLOT(rowsInserted(QModelIndex,int,int)));
- connect(model, SIGNAL(rowsRemoved(QModelIndex,int,int)),
- this, SLOT(rowsRemoved(QModelIndex,int,int)));
- connect(model, SIGNAL(dataChanged(QModelIndex,QModelIndex)),
- this, SLOT(dataChanged(QModelIndex,QModelIndex)));
- connect(model, SIGNAL(headerDataChanged(Qt::Orientation,int,int)),
- this, SLOT(headerDataChanged(Qt::Orientation,int,int)));
+ connect(model, &QAbstractItemModel::layoutAboutToBeChanged,
+ this, &ModelTest::layoutAboutToBeChanged);
+ connect(model, &QAbstractItemModel::layoutChanged,
+ this, &ModelTest::layoutChanged);
+
+ connect(model, &QAbstractItemModel::rowsAboutToBeInserted,
+ this, &ModelTest::rowsAboutToBeInserted);
+ connect(model, &QAbstractItemModel::rowsAboutToBeRemoved,
+ this, &ModelTest::rowsAboutToBeRemoved);
+ connect(model, &QAbstractItemModel::rowsInserted,
+ this, &ModelTest::rowsInserted);
+ connect(model, &QAbstractItemModel::rowsRemoved,
+ this, &ModelTest::rowsRemoved);
+ connect(model, &QAbstractItemModel::dataChanged,
+ this, &ModelTest::dataChanged);
+ connect(model, &QAbstractItemModel::headerDataChanged,
+ this, &ModelTest::headerDataChanged);
runAllTests();
}
@@ -142,7 +147,6 @@ void ModelTest::nonDestructiveBasicTest()
*/
void ModelTest::rowCount()
{
-// qDebug() << "rc";
// check top row
QModelIndex topIndex = model->index(0, 0, QModelIndex());
int rows = model->rowCount(topIndex);
@@ -186,7 +190,6 @@ void ModelTest::columnCount()
*/
void ModelTest::hasIndex()
{
-// qDebug() << "hi";
// Make sure that invalid values returns an invalid index
QVERIFY(!model->hasIndex(-2, -2));
QVERIFY(!model->hasIndex(-2, 0));
@@ -211,7 +214,6 @@ void ModelTest::hasIndex()
*/
void ModelTest::index()
{
-// qDebug() << "i";
// Make sure that invalid values returns an invalid index
QVERIFY(!model->index(-2, -2).isValid());
QVERIFY(!model->index(-2, 0).isValid());
@@ -241,7 +243,6 @@ void ModelTest::index()
*/
void ModelTest::parent()
{
-// qDebug() << "p";
// Make sure the model won't crash and will return an invalid QModelIndex
// when asked for the parent of an invalid index.
QVERIFY(!model->parent(QModelIndex()).isValid());
@@ -309,8 +310,8 @@ void ModelTest::checkChildren(const QModelIndex &parent, int currentDepth)
fetchingMore = false;
}
- int rows = model->rowCount(parent);
- int columns = model->columnCount(parent);
+ const int rows = model->rowCount(parent);
+ const int columns = model->columnCount(parent);
if (rows > 0)
QVERIFY(model->hasChildren(parent));
@@ -321,9 +322,6 @@ void ModelTest::checkChildren(const QModelIndex &parent, int currentDepth)
if (rows > 0)
QVERIFY(model->hasChildren(parent));
- //qDebug() << "parent:" << model->data(parent).toString() << "rows:" << rows
- // << "columns:" << columns << "parent column:" << parent.column();
-
const QModelIndex topLeftChild = model->index(0, 0, parent);
QVERIFY(!model->hasIndex(rows + 1, 0, parent));
@@ -339,7 +337,7 @@ void ModelTest::checkChildren(const QModelIndex &parent, int currentDepth)
QModelIndex index = model->index(r, c, parent);
// rowCount() and columnCount() said that it existed...
if (!index.isValid())
- qWarning() << "Got invalid index at row=" << r << "col=" << c << "parent=" << parent;
+ qCWarning(lcModelTest) << "Got invalid index at row=" << r << "col=" << c << "parent=" << parent;
QVERIFY(index.isValid());
// index() should always return the same index when called twice in a row
@@ -364,30 +362,22 @@ void ModelTest::checkChildren(const QModelIndex &parent, int currentDepth)
QCOMPARE(index.model(), model);
QCOMPARE(index.row(), r);
QCOMPARE(index.column(), c);
- // While you can technically return a QVariant usually this is a sign
- // of a bug in data(). Disable if this really is ok in your model.
-// QVERIFY( model->data ( index, Qt::DisplayRole ).isValid() );
// If the next test fails here is some somewhat useful debug you play with.
-
if (model->parent(index) != parent) {
- qDebug() << r << c << currentDepth << model->data(index).toString()
- << model->data(parent).toString();
- qDebug() << index << parent << model->parent(index);
-// And a view that you can even use to show the model.
-// QTreeView view;
-// view.setModel(model);
-// view.show();
+ qCWarning(lcModelTest) << "Inconsistent parent() implementation detected:";
+ qCWarning(lcModelTest) << " index=" << index << "exp. parent=" << parent << "act. parent=" << model->parent(index);
+ qCWarning(lcModelTest) << " row=" << r << "col=" << c << "depth=" << currentDepth;
+ qCWarning(lcModelTest) << " data for child" << model->data(index).toString();
+ qCWarning(lcModelTest) << " data for parent" << model->data(parent).toString();
}
// Check that we can get back our real parent.
QCOMPARE(model->parent(index), parent);
// recursively go down the children
- if (model->hasChildren(index) && currentDepth < 10) {
- //qDebug() << r << c << "has children" << model->rowCount(index);
+ if (model->hasChildren(index) && currentDepth < 10)
checkChildren(index, ++currentDepth);
- }/* else { if (currentDepth >= 10) qDebug() << "checked 10 deep"; };*/
// make sure that after testing the children that the index doesn't change.
QModelIndex newerIndex = model->index(r, c, parent);
@@ -465,12 +455,14 @@ void ModelTest::data()
\sa rowsInserted()
*/
-void ModelTest::rowsAboutToBeInserted(const QModelIndex &parent, int start, int /* end */)
+void ModelTest::rowsAboutToBeInserted(const QModelIndex &parent, int start, int end)
{
-// Q_UNUSED(end);
-// qDebug() << "rowsAboutToBeInserted" << "start=" << start << "end=" << end << "parent=" << model->data ( parent ).toString()
-// << "current count of parent=" << model->rowCount ( parent ); // << "display of last=" << model->data( model->index(start-1, 0, parent) );
-// qDebug() << model->index(start-1, 0, parent) << model->data( model->index(start-1, 0, parent) );
+ qCDebug(lcModelTest) << "rowsAboutToBeInserted"
+ << "start=" << start << "end=" << end << "parent=" << parent
+ << "parent data=" << model->data(parent).toString()
+ << "current count of parent=" << model->rowCount(parent)
+ << "last before insertion=" << model->index(start - 1, 0, parent) << model->data(model->index(start - 1, 0, parent));
+
Changing c;
c.parent = parent;
c.oldSize = model->rowCount(parent);
@@ -486,16 +478,19 @@ void ModelTest::rowsAboutToBeInserted(const QModelIndex &parent, int start, int
*/
void ModelTest::rowsInserted(const QModelIndex &parent, int start, int end)
{
+ qCDebug(lcModelTest) << "rowsInserted"
+ << "start=" << start << "end=" << end << "parent=" << parent
+ << "parent data=" << model->data(parent).toString()
+ << "current count of parent=" << model->rowCount(parent);
+
+ for (int i = start; i <= end; ++i) {
+ qCDebug(lcModelTest) << " itemWasInserted:" << i
+ << model->index(i, 0, parent).data();
+ }
+
+
Changing c = insert.pop();
QCOMPARE(parent, c.parent);
-// qDebug() << "rowsInserted" << "start=" << start << "end=" << end << "oldsize=" << c.oldSize
-// << "parent=" << model->data ( parent ).toString() << "current rowcount of parent=" << model->rowCount ( parent );
-
-// for (int ii=start; ii <= end; ii++)
-// {
-// qDebug() << "itemWasInserted:" << ii << model->data ( model->index ( ii, 0, parent ));
-// }
-// qDebug();
QCOMPARE(model->rowCount(parent), c.oldSize + (end - start + 1));
QCOMPARE(model->data(model->index(start - 1, 0, c.parent)), c.last);
@@ -532,7 +527,12 @@ void ModelTest::layoutChanged()
*/
void ModelTest::rowsAboutToBeRemoved(const QModelIndex &parent, int start, int end)
{
- qDebug() << "ratbr" << parent << start << end;
+ qCDebug(lcModelTest) << "rowsAboutToBeRemoved"
+ << "start=" << start << "end=" << end << "parent=" << parent
+ << "parent data=" << model->data(parent).toString()
+ << "current count of parent=" << model->rowCount(parent)
+ << "last before removal=" << model->index(start - 1, 0, parent) << model->data(model->index(start - 1, 0, parent));
+
Changing c;
c.parent = parent;
c.oldSize = model->rowCount(parent);
@@ -548,7 +548,11 @@ void ModelTest::rowsAboutToBeRemoved(const QModelIndex &parent, int start, int e
*/
void ModelTest::rowsRemoved(const QModelIndex &parent, int start, int end)
{
- qDebug() << "rr" << parent << start << end;
+ qCDebug(lcModelTest) << "rowsRemoved"
+ << "start=" << start << "end=" << end << "parent=" << parent
+ << "parent data=" << model->data(parent).toString()
+ << "current count of parent=" << model->rowCount(parent);
+
Changing c = remove.pop();
QCOMPARE(parent, c.parent);
QCOMPARE(model->rowCount(parent), c.oldSize - (end - start + 1));
diff --git a/tests/auto/other/modeltest/modeltest.h b/tests/auto/other/modeltest/modeltest.h
index 4676bf4434..9d09c6da5b 100644
--- a/tests/auto/other/modeltest/modeltest.h
+++ b/tests/auto/other/modeltest/modeltest.h
@@ -38,9 +38,9 @@ class ModelTest : public QObject
Q_OBJECT
public:
- ModelTest(QAbstractItemModel *model, QObject *parent = 0);
+ ModelTest(QAbstractItemModel *model, QObject *parent = nullptr);
-private Q_SLOTS:
+private:
void nonDestructiveBasicTest();
void rowCount();
void columnCount();
@@ -49,7 +49,6 @@ private Q_SLOTS:
void parent();
void data();
-protected Q_SLOTS:
void runAllTests();
void layoutAboutToBeChanged();
void layoutChanged();
@@ -60,7 +59,6 @@ protected Q_SLOTS:
void dataChanged(const QModelIndex &topLeft, const QModelIndex &bottomRight);
void headerDataChanged(Qt::Orientation orientation, int start, int end);
-private:
void checkChildren(const QModelIndex &parent, int currentDepth = 0);
QAbstractItemModel *model;