┌   ┐
54
└   ┘

summaryrefslogtreecommitdiff
path: root/src/tests/kfileitemmodeltest.cpp
diff options
context:
space:
mode:
authorDawit Alemayehu <[email protected]>2013-06-20 08:41:12 -0400
committerDawit Alemayehu <[email protected]>2013-06-20 08:41:12 -0400
commitfda88516e9c32ed93cb4fe47a3a9a9bf2aecc456 (patch)
treea1bf218a4724db94cd9f4c8660d9fd421441759d /src/tests/kfileitemmodeltest.cpp
parent030acf4f1188e392a43b6cd398628085470e4cfe (diff)
parent75ed1946f8743bc924d28a49ca87df1392f1d408 (diff)
Merge remote-tracking branch 'origin/KDE/4.10'
Diffstat (limited to 'src/tests/kfileitemmodeltest.cpp')
-rw-r--r--src/tests/kfileitemmodeltest.cpp43
1 files changed, 42 insertions, 1 deletions
diff --git a/src/tests/kfileitemmodeltest.cpp b/src/tests/kfileitemmodeltest.cpp
index 6c2a1465f..0ad7a378d 100644
--- a/src/tests/kfileitemmodeltest.cpp
+++ b/src/tests/kfileitemmodeltest.cpp
@@ -69,6 +69,7 @@ private slots:
void testSetData();
void testSetDataWithModifiedSortRole_data();
void testSetDataWithModifiedSortRole();
+ void testChangeSortRole();
void testModelConsistencyWhenInsertingItems();
void testItemRangeConsistencyWhenInsertingItems();
void testExpandItems();
@@ -277,6 +278,8 @@ void KFileItemModelTest::testSetDataWithModifiedSortRole()
// Changing the value of a sort-role must result in
// a reordering of the items.
QCOMPARE(m_model->sortRole(), QByteArray("text"));
+ m_model->setSortRole("rating");
+ QCOMPARE(m_model->sortRole(), QByteArray("rating"));
QStringList files;
files << "a.txt" << "b.txt" << "c.txt";
@@ -302,7 +305,6 @@ void KFileItemModelTest::testSetDataWithModifiedSortRole()
ratingC.insert("rating", 6);
m_model->setData(2, ratingC);
- m_model->setSortRole("rating");
QCOMPARE(m_model->data(0).value("rating").toInt(), 2);
QCOMPARE(m_model->data(1).value("rating").toInt(), 4);
QCOMPARE(m_model->data(2).value("rating").toInt(), 6);
@@ -323,6 +325,45 @@ void KFileItemModelTest::testSetDataWithModifiedSortRole()
QVERIFY(m_model->isConsistent());
}
+void KFileItemModelTest::testChangeSortRole()
+{
+ QCOMPARE(m_model->sortRole(), QByteArray("text"));
+
+ QStringList files;
+ files << "a.txt" << "b.jpg" << "c.txt";
+ m_testDir->createFiles(files);
+
+ m_model->loadDirectory(m_testDir->url());
+ QVERIFY(QTest::kWaitForSignal(m_model, SIGNAL(itemsInserted(KItemRangeList)), DefaultTimeout));
+ QCOMPARE(itemsInModel(), QStringList() << "a.txt" << "b.jpg" << "c.txt");
+
+ // Simulate that KFileItemModelRolesUpdater determines the mime type.
+ // Resorting the files by 'type' will only work immediately if their
+ // mime types are known.
+ for (int index = 0; index < m_model->count(); ++index) {
+ m_model->fileItem(index).determineMimeType();
+ }
+
+ // Now: sort by type.
+ QSignalSpy spyItemsMoved(m_model, SIGNAL(itemsMoved(KItemRange,QList<int>)));
+ m_model->setSortRole("type");
+ QCOMPARE(m_model->sortRole(), QByteArray("type"));
+ QVERIFY(!spyItemsMoved.isEmpty());
+
+ // The actual order of the files might depend on the translation of the
+ // result of KFileItem::mimeComment() in the user's language.
+ QStringList version1;
+ version1 << "b.jpg" << "a.txt" << "c.txt";
+
+ QStringList version2;
+ version2 << "a.txt" << "c.txt" << "b.jpg";
+
+ const bool ok1 = (itemsInModel() == version1);
+ const bool ok2 = (itemsInModel() == version2);
+
+ QVERIFY(ok1 || ok2);
+}
+
void KFileItemModelTest::testModelConsistencyWhenInsertingItems()
{
//QSKIP("Temporary disabled", SkipSingle);