┌   ┐
54
└   ┘

summaryrefslogtreecommitdiff
path: root/src/tests/testdir.cpp
diff options
context:
space:
mode:
authorFrank Reininghaus <[email protected]>2011-04-03 15:31:27 +0200
committerFrank Reininghaus <[email protected]>2011-04-03 15:32:12 +0200
commit95cb8ffe01e0252d3a26f244e8607254200d067f (patch)
treed76499d9b454b8730e48a2f24a55c914f7f0230c /src/tests/testdir.cpp
parent5ff682d852a07b5121e49d8ed2a239b0a1762b6b (diff)
Dolphin unit test refactoring
This commit changes mainly two things: 1. The functionality related to the handling of temporary files and folders is moved to a new class TestDir. 2. The setup of a temporary folder and of DolphinView instances is now done in each unit test function. A benefit of this change is that there are no unwanted interactions between different unit test functions any more. Moreover, different test functions could now share a test folder more easily. Additionally, the reference arguments of all functions are changed to pointers for consistency.
Diffstat (limited to 'src/tests/testdir.cpp')
-rw-r--r--src/tests/testdir.cpp98
1 files changed, 98 insertions, 0 deletions
diff --git a/src/tests/testdir.cpp b/src/tests/testdir.cpp
new file mode 100644
index 000000000..64d7f1aaa
--- /dev/null
+++ b/src/tests/testdir.cpp
@@ -0,0 +1,98 @@
+/*****************************************************************************
+ * Copyright (C) 2010-2011 by Frank Reininghaus ([email protected]) *
+ * *
+ * This program is free software; you can redistribute it and/or modify *
+ * it under the terms of the GNU General Public License as published by *
+ * the Free Software Foundation; either version 2 of the License, or *
+ * (at your option) any later version. *
+ * *
+ * This program is distributed in the hope that it will be useful, *
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of *
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
+ * GNU General Public License for more details. *
+ * *
+ * You should have received a copy of the GNU General Public License *
+ * along with this program; if not, write to the *
+ * Free Software Foundation, Inc., *
+ * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA *
+ *****************************************************************************/
+
+#include "testdir.h"
+
+#include <QDir>
+
+#ifdef Q_OS_UNIX
+#include <utime.h>
+#else
+#include <sys/utime.h>
+#endif
+
+/** 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 TestDir::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 TestDir::createFiles(const QStringList& files)
+{
+ foreach(const QString& path, files) {
+ createFile(path);
+ }
+}
+
+void TestDir::createDir(const QString& path, const QDateTime& time)
+{
+ QString absolutePath = path;
+ makePathAbsoluteAndCreateParents(absolutePath);
+ QDir(name()).mkdir(absolutePath);
+
+ if (time.isValid()) {
+ setTimeStamp(absolutePath, time);
+ }
+
+ Q_ASSERT(QFile::exists(absolutePath));
+}
+
+void TestDir::makePathAbsoluteAndCreateParents(QString& path)
+{
+ QFileInfo fileInfo(path);
+ if (!fileInfo.isAbsolute()) {
+ path = name() + path;
+ fileInfo.setFile(path);
+ }
+
+ const QDir dir = fileInfo.dir();
+ if (!dir.exists()) {
+ createDir(dir.absolutePath());
+ }
+
+ Q_ASSERT(dir.exists());
+}