+ m_testDir = nullptr;
+}
+
+/**
+ * If grouping is enabled, the group headers must be updated
+ * when items have been inserted or removed. This updating
+ * may only be done after all multiple ranges have been inserted
+ * or removed and not after each individual range (see description
+ * in #ifndef QT_NO_DEBUG-block of KItemListView::slotItemsInserted()
+ * and KItemListView::slotItemsRemoved()). This test inserts and
+ * removes multiple ranges and will trigger the Q_ASSERT in the
+ * ifndef QT_NO_DEBUG-block in case if a group-header will be updated
+ * too early.
+ */
+void KFileItemListViewTest::testGroupedItemChanges()
+{
+ QSignalSpy itemsInsertedSpy(m_model, &KFileItemModel::itemsInserted);
+ QVERIFY(itemsInsertedSpy.isValid());
+ QSignalSpy itemsRemovedSpy(m_model, &KFileItemModel::itemsRemoved);
+ QVERIFY(itemsRemovedSpy.isValid());
+
+ m_model->setGroupedSorting(true);
+
+ m_testDir->createFiles({"1", "3", "5"});
+ m_model->loadDirectory(m_testDir->url());
+ QVERIFY(itemsInsertedSpy.wait());
+ QCOMPARE(m_model->count(), 3);
+
+ m_testDir->createFiles({"2", "4"});
+ m_model->m_dirLister->updateDirectory(m_testDir->url());
+ QVERIFY(itemsInsertedSpy.wait());
+ QCOMPARE(m_model->count(), 5);
+
+ m_testDir->removeFiles({"1", "3", "5"});
+ m_model->m_dirLister->updateDirectory(m_testDir->url());
+ QVERIFY(itemsRemovedSpy.wait());
+ QCOMPARE(m_model->count(), 2);