diff options
Diffstat (limited to 'tests/auto/sql/models/qsqlquerymodel')
-rw-r--r-- | tests/auto/sql/models/qsqlquerymodel/tst_qsqlquerymodel.cpp | 57 |
1 files changed, 57 insertions, 0 deletions
diff --git a/tests/auto/sql/models/qsqlquerymodel/tst_qsqlquerymodel.cpp b/tests/auto/sql/models/qsqlquerymodel/tst_qsqlquerymodel.cpp index 1c1319630e..582a76b119 100644 --- a/tests/auto/sql/models/qsqlquerymodel/tst_qsqlquerymodel.cpp +++ b/tests/auto/sql/models/qsqlquerymodel/tst_qsqlquerymodel.cpp @@ -91,6 +91,8 @@ private slots: void setQuerySignalEmission(); void setQueryWithNoRowsInResultSet_data() { generic_data(); } void setQueryWithNoRowsInResultSet(); + void nestedResets_data() { generic_data(); } + void nestedResets(); void task_180617(); void task_180617_data() { generic_data(); } @@ -585,6 +587,61 @@ void tst_QSqlQueryModel::setQueryWithNoRowsInResultSet() QCOMPARE(modelRowsInsertedSpy.count(), 0); } +class NestedResetsTest: public QSqlQueryModel +{ + Q_OBJECT + +public: + NestedResetsTest(QObject* parent = 0) : QSqlQueryModel(parent), gotAboutToBeReset(false), gotReset(false) + { + connect(this, SIGNAL(modelAboutToBeReset()), this, SLOT(modelAboutToBeResetSlot())); + connect(this, SIGNAL(modelReset()), this, SLOT(modelResetSlot())); + } + + void testme() + { + // Only the outermost beginResetModel/endResetModel should + // emit signals. + gotAboutToBeReset = gotReset = false; + beginResetModel(); + QCOMPARE(gotAboutToBeReset, true); + QCOMPARE(gotReset, false); + + gotAboutToBeReset = gotReset = false; + beginResetModel(); + QCOMPARE(gotAboutToBeReset, false); + QCOMPARE(gotReset, false); + + gotAboutToBeReset = gotReset = false; + endResetModel(); + QCOMPARE(gotAboutToBeReset, false); + QCOMPARE(gotReset, false); + + gotAboutToBeReset = gotReset = false; + endResetModel(); + QCOMPARE(gotAboutToBeReset, false); + QCOMPARE(gotReset, true); + } + +private slots: + void modelAboutToBeResetSlot() { gotAboutToBeReset = true; } + void modelResetSlot() { gotReset = true; } + +private: + bool gotAboutToBeReset; + bool gotReset; +}; + +void tst_QSqlQueryModel::nestedResets() +{ + QFETCH(QString, dbName); + QSqlDatabase db = QSqlDatabase::database(dbName); + CHECK_DATABASE(db); + + NestedResetsTest t; + t.testme(); +} + // For task 180617 // According to the task, several specific duplicate SQL queries would cause // multiple empty grid lines to be visible in the view |