summaryrefslogtreecommitdiffstats
path: root/tests/auto/sql/models/qsqlquerymodel
diff options
context:
space:
mode:
Diffstat (limited to 'tests/auto/sql/models/qsqlquerymodel')
-rw-r--r--tests/auto/sql/models/qsqlquerymodel/tst_qsqlquerymodel.cpp57
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