┌   ┐
54
└   ┘

summaryrefslogtreecommitdiff
path: root/src/tests/kfileitemmodeltest.cpp
diff options
context:
space:
mode:
authorFrank Reininghaus <[email protected]>2011-09-18 15:03:45 +0200
committerFrank Reininghaus <[email protected]>2011-09-18 15:03:45 +0200
commit31d3b91813c2b9d74d175876d2551cca4484ab5e (patch)
tree8eba74dfe6075f3c45c7983b2ee1743823c3ae5b /src/tests/kfileitemmodeltest.cpp
parent01d4b8d0820ee3ab9f05df23c31a8230acfe7083 (diff)
Implement some missing sorting options
Changing the sort order and enabling/disabling the "Sort Folders First" option works now.
Diffstat (limited to 'src/tests/kfileitemmodeltest.cpp')
-rw-r--r--src/tests/kfileitemmodeltest.cpp69
1 files changed, 69 insertions, 0 deletions
diff --git a/src/tests/kfileitemmodeltest.cpp b/src/tests/kfileitemmodeltest.cpp
index d3404782c..820cf7848 100644
--- a/src/tests/kfileitemmodeltest.cpp
+++ b/src/tests/kfileitemmodeltest.cpp
@@ -46,6 +46,7 @@ private slots:
void testModelConsistencyWhenInsertingItems();
void testItemRangeConsistencyWhenInsertingItems();
void testExpandItems();
+ void testSorting();
void testExpansionLevelsCompare_data();
void testExpansionLevelsCompare();
@@ -54,6 +55,7 @@ private slots:
private:
bool isModelConsistent() const;
+ QStringList itemsInModel() const;
private:
KFileItemModel* m_model;
@@ -331,6 +333,62 @@ void KFileItemModelTest::testExpandItems()
QCOMPARE(m_model->expandedUrls(), allFolders);
}
+void KFileItemModelTest::testSorting()
+{
+ // Create some files with different sizes and modification times to check the different sorting options
+ QDateTime now = QDateTime::currentDateTime();
+
+ m_testDir->createFile("a", "A file", now.addDays(-3));
+ m_testDir->createFile("b", "A larger file", now.addDays(0));
+ m_testDir->createDir("c", now.addDays(-2));
+ m_testDir->createFile("d", "The largest file in this directory", now.addDays(-1));
+ m_testDir->createFile("e", "An even larger file", now.addDays(-4));
+ m_testDir->createFile(".f");
+
+ m_dirLister->openUrl(m_testDir->url());
+ QVERIFY(QTest::kWaitForSignal(m_model, SIGNAL(itemsInserted(KItemRangeList)), DefaultTimeout));
+
+ // Default: Sort by Name, ascending
+ QCOMPARE(m_model->sortRole(), QByteArray("name"));
+ QCOMPARE(m_model->sortOrder(), Qt::AscendingOrder);
+ QVERIFY(m_model->sortFoldersFirst());
+ //QVERIFY(!m_model->showHiddenFiles());
+ QCOMPARE(itemsInModel(), QStringList() << "c" << "a" << "b" << "d" << "e");
+
+ // Sort by Name, descending
+ m_model->setSortOrder(Qt::DescendingOrder);
+ QCOMPARE(m_model->sortRole(), QByteArray("name"));
+ QCOMPARE(m_model->sortOrder(), Qt::DescendingOrder);
+ QCOMPARE(itemsInModel(), QStringList() << "c" << "e" << "d" << "b" << "a");
+
+ // Sort by Date, decending
+ m_model->setSortRole("date");
+ QCOMPARE(m_model->sortRole(), QByteArray("date"));
+ QCOMPARE(m_model->sortOrder(), Qt::DescendingOrder);
+ QCOMPARE(itemsInModel(), QStringList() << "c" << "b" << "d" << "a" << "e");
+
+ // Sort by Date, ascending
+ m_model->setSortOrder(Qt::AscendingOrder);
+ QCOMPARE(m_model->sortRole(), QByteArray("date"));
+ QCOMPARE(m_model->sortOrder(), Qt::AscendingOrder);
+ QCOMPARE(itemsInModel(), QStringList() << "c" << "e" << "a" << "d" << "b");
+
+ // Sort by Date, ascending, 'Sort Folders First' disabled
+ m_model->setSortFoldersFirst(false);
+ QCOMPARE(m_model->sortRole(), QByteArray("date"));
+ QCOMPARE(m_model->sortOrder(), Qt::AscendingOrder);
+ QVERIFY(!m_model->sortFoldersFirst());
+ QCOMPARE(itemsInModel(), QStringList() << "e" << "a" << "c" << "d" << "b");
+
+ // Default: Sort by Name, ascending, 'Sort Folders First' disabled
+ m_model->setSortRole("name");
+ QCOMPARE(m_model->sortOrder(), Qt::AscendingOrder);
+ QVERIFY(!m_model->sortFoldersFirst());
+ QCOMPARE(itemsInModel(), QStringList() << "a" << "b" << "c" << "d" << "e");
+
+ // TODO: Sort by other roles; show/hide hidden files
+}
+
void KFileItemModelTest::testExpansionLevelsCompare_data()
{
QTest::addColumn<QString>("urlA");
@@ -426,6 +484,17 @@ bool KFileItemModelTest::isModelConsistent() const
return true;
}
+QStringList KFileItemModelTest::itemsInModel() const
+{
+ QStringList items;
+
+ for (int i = 0; i < m_model->count(); i++) {
+ items << m_model->data(i).value("name").toString();
+ }
+
+ return items;
+}
+
QTEST_KDEMAIN(KFileItemModelTest, NoGUI)
#include "kfileitemmodeltest.moc"