tests/auto/modeltest/tst_modeltest.cpp
changeset 30 5dc02b23752f
parent 18 2f34d5167611
--- a/tests/auto/modeltest/tst_modeltest.cpp	Wed Jun 23 19:07:03 2010 +0300
+++ b/tests/auto/modeltest/tst_modeltest.cpp	Tue Jul 06 15:10:48 2010 +0300
@@ -67,6 +67,7 @@
     void standardItemModel();
     void testInsertThroughProxy();
     void moveSourceItems();
+    void testResetThroughProxy();
 };
 
 
@@ -225,8 +226,9 @@
 
     void storePersistent()
     {
-        m_persistentSourceIndexes.clear();
-        m_persistentProxyIndexes.clear();
+      foreach(const QModelIndex &idx, m_persistentProxyIndexes)
+        Q_ASSERT(idx.isValid()); // This is called from layoutAboutToBeChanged. Persistent indexes should be valid
+
         Q_ASSERT(m_proxy->persistent().isEmpty());
         storePersistent(QModelIndex());
         Q_ASSERT(!m_proxy->persistent().isEmpty());
@@ -243,6 +245,8 @@
             QModelIndex updatedSource = m_persistentSourceIndexes.at(row);
             QCOMPARE(m_proxy->mapToSource(updatedProxy), updatedSource);
         }
+        m_persistentSourceIndexes.clear();
+        m_persistentProxyIndexes.clear();
     }
 
 private:
@@ -278,6 +282,28 @@
     moveCommand->doCommand();
 }
 
+void tst_ModelTest::testResetThroughProxy()
+{
+    DynamicTreeModel *model = new DynamicTreeModel(this);
+
+    ModelInsertCommand *insertCommand = new ModelInsertCommand(model, this);
+    insertCommand->setStartRow(0);
+    insertCommand->setEndRow(2);
+    insertCommand->doCommand();
+
+    QPersistentModelIndex persistent = model->index(0, 0);
+
+    AccessibleProxyModel *proxy = new AccessibleProxyModel(this);
+    proxy->setSourceModel(model);
+
+    ObservingObject observer(proxy);
+    observer.storePersistent();
+
+    ModelResetCommand *resetCommand = new ModelResetCommand(model, this);
+    resetCommand->setNumCols(0);
+    resetCommand->doCommand();
+}
+
 
 QTEST_MAIN(tst_ModelTest)
 #include "tst_modeltest.moc"