]> cloud.milkyroute.net Git - dolphin.git/commitdiff
Add unit test for KFileItemModel::createMimeData().
authorFrank Reininghaus <frank78ac@googlemail.com>
Sun, 22 Dec 2013 12:08:38 +0000 (13:08 +0100)
committerFrank Reininghaus <frank78ac@googlemail.com>
Sun, 22 Dec 2013 12:12:51 +0000 (13:12 +0100)
The test verifies that creating the mime data for a child of an expanced
folder does not cause a crash. The regression happenened in the master
branch, but it doesn't hurt to have the test also in KDE/4.12.

CCBUG: 329119

src/tests/CMakeLists.txt
src/tests/kfileitemmodeltest.cpp

index 9b152ed07d4f3be36f80e59a38a3e93979e4e14a..fca0819f81b7e6634906c119ce8c3c1fb5fae947 100644 (file)
@@ -65,6 +65,7 @@ set(kfileitemmodeltest_SRCS
     testdir.cpp
     ../kitemviews/kfileitemmodel.cpp
     ../kitemviews/kitemmodelbase.cpp
     testdir.cpp
     ../kitemviews/kfileitemmodel.cpp
     ../kitemviews/kitemmodelbase.cpp
+    ../kitemviews/kitemset.cpp
 )
 kde4_add_unit_test(kfileitemmodeltest TEST ${kfileitemmodeltest_SRCS})
 target_link_libraries(kfileitemmodeltest dolphinprivate ${KDE4_KIO_LIBS} ${QT_QTTEST_LIBRARY})
 )
 kde4_add_unit_test(kfileitemmodeltest TEST ${kfileitemmodeltest_SRCS})
 target_link_libraries(kfileitemmodeltest dolphinprivate ${KDE4_KIO_LIBS} ${QT_QTTEST_LIBRARY})
index 9079e584ecb9b562ce932afa1c75d66b1facb637..99ee3368eae9d69fbbb259ba2152c8812aae54be 100644 (file)
@@ -93,6 +93,7 @@ private slots:
     void testChangeRolesForFilteredItems();
     void testChangeSortRoleWhileFiltering();
     void testRefreshFilteredItems();
     void testChangeRolesForFilteredItems();
     void testChangeSortRoleWhileFiltering();
     void testRefreshFilteredItems();
+    void testCreateMimeData();
 
 private:
     QStringList itemsInModel() const;
 
 private:
     QStringList itemsInModel() const;
@@ -1591,6 +1592,33 @@ void KFileItemModelTest::testRefreshFilteredItems()
     QCOMPARE(itemsInModel(), QStringList() << "a.txt" << "b.txt" << "d.jpg" << "e.jpg");
 }
 
     QCOMPARE(itemsInModel(), QStringList() << "a.txt" << "b.txt" << "d.jpg" << "e.jpg");
 }
 
+void KFileItemModelTest::testCreateMimeData()
+{
+    QSet<QByteArray> modelRoles = m_model->roles();
+    modelRoles << "isExpanded" << "isExpandable" << "expandedParentsCount";
+    m_model->setRoles(modelRoles);
+
+    QStringList files;
+    files << "a/1";
+    m_testDir->createFiles(files);
+
+    m_model->loadDirectory(m_testDir->url());
+    QVERIFY(QTest::kWaitForSignal(m_model, SIGNAL(itemsInserted(KItemRangeList)), DefaultTimeout));
+    QCOMPARE(itemsInModel(), QStringList() << "a");
+
+    // Expand "a/".
+    m_model->setExpanded(0, true);
+    QVERIFY(QTest::kWaitForSignal(m_model, SIGNAL(itemsInserted(KItemRangeList)), DefaultTimeout));
+    QCOMPARE(itemsInModel(), QStringList() << "a" << "1");
+
+    // Verify that creating the MIME data for a child of an expanded folder does
+    // not cause a crash, see https://bugs.kde.org/show_bug.cgi?id=329119
+    KItemSet selection;
+    selection.insert(1);
+    QMimeData* mimeData = m_model->createMimeData(selection);
+    delete mimeData;
+}
+
 QStringList KFileItemModelTest::itemsInModel() const
 {
     QStringList items;
 QStringList KFileItemModelTest::itemsInModel() const
 {
     QStringList items;