[prev in list] [next in list] [prev in thread] [next in thread]
List: kde-commits
Subject: KDE/kdebase/apps/dolphin/src
From: Frank Reininghaus <frank78ac () googlemail ! com>
Date: 2010-11-17 20:59:06
Message-ID: 20101117205906.1E547AC8A1 () svn ! kde ! org
[Download RAW message or body]
SVN commit 1198202 by freininghaus:
Add unit test which checks that DolphinDetailsView::expandedUrls()
works as expected.
M +81 -0 tests/dolphindetailsviewtest.cpp
M +5 -4 tests/testbase.h
M +3 -0 views/dolphindetailsview.h
--- trunk/KDE/kdebase/apps/dolphin/src/tests/dolphindetailsviewtest.cpp #1198201:1198202
@@ -40,12 +40,93 @@
private slots:
+ void testExpandedUrls();
+
void bug217447_shiftArrowSelection();
void bug234600_overlappingIconsWhenZooming();
+private:
+
+ QModelIndex proxyModelIndexForUrl(const KUrl& url) const {
+ const QModelIndex index = m_dolphinModel->indexForUrl(url);
+ return m_proxyModel->mapFromSource(index);
+ }
};
/**
+ * This test verifies that DolphinDetailsView::expandedUrls() returns the right set of URLs.
+ * The test creates a folder hierarchy: 3 folders (a, b, c) contain 3 subfolders (also names a, b, c) each.
+ * Each of those contains 3 further subfolders of the same name.
+ */
+
+void DolphinDetailsViewTest::testExpandedUrls()
+{
+ QStringList files;
+ QStringList subFolderNames;
+ subFolderNames << "a" << "b" << "c";
+
+ foreach(const QString& level1, subFolderNames) {
+ foreach(const QString& level2, subFolderNames) {
+ foreach(const QString& level3, subFolderNames) {
+ files << level1 + "/" + level2 + "/" + level3 + "/testfile";
+ }
+ }
+ }
+
+ createFiles(files);
+
+ m_view->setMode(DolphinView::DetailsView);
+ DolphinDetailsView* detailsView = qobject_cast<DolphinDetailsView*>(itemView());
+ QVERIFY(detailsView);
+ detailsView->setFoldersExpandable(true);
+ m_view->resize(400, 400);
+ m_view->show();
+ QTest::qWaitForWindowShown(m_view);
+ reloadViewAndWait();
+
+ // We start with an empty set of expanded URLs.
+ QSet<KUrl> expectedExpandedUrls;
+ QCOMPARE(detailsView->expandedUrls(), expectedExpandedUrls);
+
+ // Every time we expand a folder, we have to wait until the view has finished loading
+ // its contents before we can expand further subfolders. We keep track of the reloading
+ // using a signal spy.
+ QSignalSpy spyFinishedPathLoading(m_view, SIGNAL(finishedPathLoading(const KUrl&)));
+
+ // Expand URLs one by one and verify the result of DolphinDetailsView::expandedUrls()
+ QStringList itemsToExpand;
+ itemsToExpand << "b" << "b/a" << "b/a/c" << "b/c" << "c";
+
+ foreach(const QString& item, itemsToExpand) {
+ KUrl url(m_path + item);
+ detailsView->expand(proxyModelIndexForUrl(url));
+ expectedExpandedUrls += url;
+ QCOMPARE(detailsView->expandedUrls(), expectedExpandedUrls);
+
+ // Before we proceed, we have to make sure that the view has finished
+ // loading the contents of the expanded folder.
+ while (spyFinishedPathLoading.isEmpty()) {
+ QTest::qWait(10);
+ }
+ spyFinishedPathLoading.takeFirst();
+ }
+
+ // Collapse URLs one by one and verify the result of DolphinDetailsView::expandedUrls()
+ QStringList itemsToCollapse;
+ itemsToCollapse << "b/c" << "b/a/c" << "c" << "b/a" << "b";
+
+ foreach(const QString& item, itemsToCollapse) {
+ KUrl url(m_path + item);
+ detailsView->collapse(proxyModelIndexForUrl(url));
+ expectedExpandedUrls -= url;
+ QCOMPARE(detailsView->expandedUrls(), expectedExpandedUrls);
+ }
+
+ m_view->hide();
+ cleanupTestDir();
+}
+
+/**
* When the first item in the view is active and Shift is held while the "arrow down"
* key is pressed repeatedly, the selection should grow by one item for each key press.
* A change in Qt 4.6 revealed a bug in DolphinDetailsView which broke this, see
--- trunk/KDE/kdebase/apps/dolphin/src/tests/testbase.h #1198201:1198202
@@ -30,7 +30,7 @@
class DolphinSortFilterProxyModel;
class DolphinView;
-/*
+/**
* The class TestBase aims to make writing Dolphin unit tests easier.
* It provides functionality that almost every unit test needs: setup of the DolphinView and
* easy creation of test files and subfolders in a temporary directory which is removed in
@@ -56,7 +56,7 @@
KUrl testDirUrl() const;
- /*
+ /**
* The following functions create either a file, a list of files, or a directory.
* The paths may be absolute or relative to the test directory. Any missing parent
* directories will be created automatically.
@@ -66,7 +66,7 @@
void createFiles(const QStringList& files);
void createDir(const QString& path);
- /*
+ /**
* Remove the test directory and create an empty one.
*/
@@ -79,10 +79,11 @@
DolphinSortFilterProxyModel* m_proxyModel;
DolphinView* m_view;
+ QString m_path;
+
private:
KTempDir* m_tempDir;
- QString m_path;
QDir* m_dir;
void makePathAbsoluteAndCreateParents(QString& path);
--- trunk/KDE/kdebase/apps/dolphin/src/views/dolphindetailsview.h #1198201:1198202
@@ -211,6 +211,9 @@
QFont m_font;
QSize m_decorationSize;
+
+ // For unit tests
+ friend class DolphinDetailsViewTest;
};
#endif
[prev in list] [next in list] [prev in thread] [next in thread]
Configure |
About |
News |
Add a list |
Sponsored by KoreLogic