diff options
Diffstat (limited to 'kio/tests/kdirwatchunittest.cpp')
-rw-r--r-- | kio/tests/kdirwatchunittest.cpp | 180 |
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 <[email protected]> + + 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" |