summaryrefslogtreecommitdiffstats
path: root/kio/tests/kdirwatchunittest.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'kio/tests/kdirwatchunittest.cpp')
-rw-r--r--kio/tests/kdirwatchunittest.cpp180
1 files changed, 180 insertions, 0 deletions
diff --git a/kio/tests/kdirwatchunittest.cpp b/kio/tests/kdirwatchunittest.cpp
new file mode 100644
index 000000000..d523909ec
--- /dev/null
+++ b/kio/tests/kdirwatchunittest.cpp
@@ -0,0 +1,180 @@
+ /*
+ This file is or will be part of KDE desktop environment
+
+ (c) 2006 Dirk Mueller <mueller@kde.org>
+
+ It is licensed under GPL version 2.
+
+ If it is part of KDE libraries than this file is licensed under
+ LGPL version 2.
+ */
+
+#include <unistd.h>
+
+#include <qfile.h>
+#include <qdir.h>
+
+#include <kdebug.h>
+
+#include "kdirwatchunittest.h"
+
+void KDirWatchTest::VERIFY_NOTHING()
+{
+ unsigned m_s[3];
+ for(int i = 0; i < 3; ++i)
+ m_s[i] = m_signals[i];
+
+ for (int i = 0; i < 20; ++i) {
+ usleep(100*1000);
+ qApp->processEvents();
+ }
+
+ bool nothing_failed = true;
+ for (int i = 0; i < 3; ++i)
+ if (m_s[i] != m_signals[i])
+ nothing_failed = false;
+
+ KDirWatch::statistics();
+
+ VERIFY (nothing_failed);
+}
+
+void KDirWatchTest::VERIFY_DIRTY(const QString& alert)
+{
+ unsigned m_s[3];
+ for(int i = 0; i < 3; ++i)
+ m_s[i] = m_signals[i];
+
+ for (int i = 0; i < 20; ++i) {
+ usleep(100*1000);
+ qApp->processEvents();
+ }
+
+ VERIFY (m_s[sigCreated] == m_signals[sigCreated] &&
+ m_s[sigDeleted] == m_signals[sigDeleted] &&
+ m_s[sigDirty] + 1 == m_signals[sigDirty] &&
+ m_lastSignal == alert);
+}
+
+void KDirWatchTest::VERIFY_CREATED(const QString& alert)
+{
+ unsigned m_s[3];
+ for(int i = 0; i < 3; ++i)
+ m_s[i] = m_signals[i];
+
+ for (int i = 0; i < 20; ++i) {
+ usleep(100*1000);
+ qApp->processEvents();
+ }
+
+ VERIFY (m_s[sigDirty] == m_signals[sigDirty] &&
+ m_s[sigDeleted] == m_signals[sigDeleted] &&
+ m_s[sigCreated] + 1 == m_signals[sigCreated] &&
+ m_lastSignal == alert);
+}
+
+void KDirWatchTest::VERIFY_DELETED(const QString& alert)
+{
+ unsigned m_s[3];
+ for(int i = 0; i < 3; ++i)
+ m_s[i] = m_signals[i];
+
+ for (int i = 0; i < 20; ++i) {
+ usleep(100*1000);
+ qApp->processEvents();
+ }
+
+ VERIFY (m_s[sigDirty] == m_signals[sigDirty] &&
+ m_s[sigCreated] == m_signals[sigCreated] &&
+ m_s[sigDeleted] + 1 == m_signals[sigDeleted] &&
+ m_lastSignal == alert);
+}
+
+void KDirWatchTest::remove_file (const QString& file)
+{
+ ::unlink (QFile::encodeName(file));
+}
+
+void KDirWatchTest::touch_file (const QString& file)
+{
+ QFile f(file);
+ f.open(IO_WriteOnly);
+}
+
+void KDirWatchTest::rename_file(const QString& from, const QString& to)
+{
+ ::rename(QFile::encodeName(from), QFile::encodeName(to));
+}
+
+KUNITTEST_MODULE ( kunittest_kdirwatch, "KDirWatchTest" )
+KUNITTEST_MODULE_REGISTER_TESTER (KDirWatchTest)
+
+#define SLEEP() QApplication::processEvents();
+
+void KDirWatchTest::allTests()
+{
+ for(int loop=0; loop<3; ++loop) {
+ d = new KDirWatch;
+ VERIFY (d != 0);
+
+ QDir* dir = new QDir(m_workingDir);
+ VERIFY (dir != 0);
+
+ connect(d, SIGNAL (dirty( const QString &)), SLOT( slotDirty( const QString &)) );
+ connect(d, SIGNAL (created( const QString &)), SLOT( slotCreated( const QString &)) );
+ connect(d, SIGNAL (deleted( const QString &)), SLOT( slotDeleted( const QString &)) );
+
+ VERIFY (dir->mkdir (m_workingDir));
+
+ d->addDir (m_workingDir);
+ VERIFY_NOTHING();
+ dir->mkdir ("does");
+ VERIFY_DIRTY (m_workingDir);
+ touch_file (m_workingDir + "/file");
+ VERIFY_DIRTY (m_workingDir);
+ VERIFY_NOTHING ();
+ remove_file (m_workingDir + "/file");
+ d->addDir (m_workingDir + "/does/not/exist");
+ d->removeDir (m_workingDir);
+ VERIFY_NOTHING();
+
+ dir->mkdir ("does/not");
+ VERIFY_NOTHING();
+ dir->mkdir ("does/not/exist");
+ VERIFY_CREATED (m_workingDir + "/does/not/exist");
+
+ dir->rmdir ("does/not/exist");
+ VERIFY_DELETED (m_workingDir + "/does/not/exist");
+ dir->rmdir ("does/not");
+ VERIFY_NOTHING();
+ dir->rmdir ("does");
+ VERIFY_NOTHING();
+
+ d->addFile(m_workingDir + "/a");
+ touch_file(m_workingDir + "/a");
+ VERIFY_CREATED (m_workingDir + "/a");
+
+ rename_file (m_workingDir + "/a", m_workingDir + "/b");
+ VERIFY_DELETED (m_workingDir + "/a");
+ VERIFY_NOTHING();
+
+ touch_file (m_workingDir + "/a");
+ VERIFY_CREATED (m_workingDir + "/a");
+ VERIFY_NOTHING();
+
+ touch_file (m_workingDir + "/a");
+ VERIFY_DIRTY (m_workingDir + "/a");
+
+ remove_file (m_workingDir + "/b");
+ VERIFY_NOTHING();
+
+ d->removeFile(m_workingDir + "/a");
+
+ remove_file(m_workingDir + "/a");
+
+ VERIFY (dir->rmdir (m_workingDir));
+ delete d;
+ }
+}
+
+#include "kdirwatchunittest.moc"