#include "views/dolphindirlister.h"
#include "views/dolphinsortfilterproxymodel.h"
-#include <KTempDir>
-
-#include <QDir>
#include <QAbstractItemView>
-#include <KDebug>
-
-#ifdef Q_OS_UNIX
-#include <utime.h>
-#else
-#include <sys/utime.h>
-#endif
-
-TestBase::TestBase()
-{
- m_tempDir = new KTempDir;
- Q_ASSERT(m_tempDir->exists());
- m_path = m_tempDir->name();
- m_dir = new QDir(m_path);
- m_view = new DolphinView(KUrl(m_path), 0);
-}
-
-TestBase::~TestBase()
+QAbstractItemView* TestBase::itemView(const DolphinView* view)
{
- delete m_view;
- delete m_dir;
- delete m_tempDir;
+ return view->m_viewAccessor.itemView();
}
-QAbstractItemView* TestBase::itemView() const
+void TestBase::waitForFinishedPathLoading(DolphinView* view, int milliseconds)
{
- return m_view->m_viewAccessor.itemView();
+ // If the signal is not received, somthing is going seriously wrong.
+ // -> assert here rather than continuing, which might result in test failures which are hard to unterstand.
+ bool viewHasFinishedLoading = QTest::kWaitForSignal(view, SIGNAL(finishedPathLoading(const KUrl&)), milliseconds);
+ Q_ASSERT(viewHasFinishedLoading);
+ Q_UNUSED(viewHasFinishedLoading) // suppress compiler warining is asserts are disabled
}
-void TestBase::reloadViewAndWait()
+void TestBase::reloadViewAndWait(DolphinView* view)
{
- m_view->reload();
- QVERIFY(QTest::kWaitForSignal(m_view, SIGNAL(finishedPathLoading(const KUrl&)), 2000));
+ view->reload();
+ waitForFinishedPathLoading(view);
}
-KUrl TestBase::testDirUrl() const
-{
- return KUrl(m_path);
-}
-
-/** The following function is taken from kdelibs/kio/tests/kiotesthelper.h, copyright (C) 2006 by David Faure */
-
-static void setTimeStamp(const QString& path, const QDateTime& mtime)
-{
-#ifdef Q_OS_UNIX
- struct utimbuf utbuf;
- utbuf.actime = mtime.toTime_t();
- utbuf.modtime = utbuf.actime;
- utime(QFile::encodeName(path), &utbuf);
-#elif defined(Q_OS_WIN)
- struct _utimbuf utbuf;
- utbuf.actime = mtime.toTime_t();
- utbuf.modtime = utbuf.actime;
- _wutime(reinterpret_cast<const wchar_t *>(path.utf16()), &utbuf);
-#endif
-}
-
-void TestBase::createFile(const QString& path, const QByteArray& data, const QDateTime& time)
-{
- QString absolutePath = path;
- makePathAbsoluteAndCreateParents(absolutePath);
-
- QFile f(absolutePath);
- f.open(QIODevice::WriteOnly);
- f.write(data);
- f.close();
-
- if (time.isValid()) {
- setTimeStamp(absolutePath, time);
- }
-
- Q_ASSERT(QFile::exists(absolutePath));
-}
-
-void TestBase::createFiles(const QStringList& files)
-{
- foreach(const QString& path, files) {
- createFile(path);
- }
-}
-
-void TestBase::createDir(const QString& path, const QDateTime& time)
-{
- QString absolutePath = path;
- makePathAbsoluteAndCreateParents(absolutePath);
- m_dir->mkdir(absolutePath);
-
- if (time.isValid()) {
- setTimeStamp(absolutePath, time);
- }
-
- Q_ASSERT(QFile::exists(absolutePath));
-}
-
-QStringList TestBase::viewItems() const
+QStringList TestBase::viewItems(const DolphinView* view)
{
QStringList itemList;
- const QAbstractItemModel* model = itemView()->model();
+ const QAbstractItemModel* model = itemView(view)->model();
for (int row = 0; row < model->rowCount(); row++) {
itemList << model->data(model->index(row, 0), Qt::DisplayRole).toString();
return itemList;
}
-void TestBase::makePathAbsoluteAndCreateParents(QString& path)
+QStringList TestBase::selectedItems(const DolphinView* view)
{
- QFileInfo fileInfo(path);
- if (!fileInfo.isAbsolute()) {
- path = m_path + path;
- fileInfo.setFile(path);
- }
+ QStringList itemList;
+ const QAbstractItemModel* model = itemView(view)->model();
+ const QModelIndexList selectedIndexes = itemView(view)->selectionModel()->selectedIndexes();
- const QDir dir = fileInfo.dir();
- if (!dir.exists()) {
- createDir(dir.absolutePath());
+ for (int row = 0; row < model->rowCount(); row++) {
+ const QModelIndex index = model->index(row, 0);
+ if (selectedIndexes.contains(index)) {
+ itemList << model->data(model->index(row, 0), Qt::DisplayRole).toString();
+ }
}
- Q_ASSERT(dir.exists());
-}
-
-void TestBase::cleanupTestDir()
-{
- delete m_tempDir;
- m_tempDir = new KTempDir;
- Q_ASSERT(m_tempDir->exists());
- m_path = m_tempDir->name();
- m_dir->setPath(m_path);
- m_view->setUrl(m_path);
+ return itemList;
}