From ce4a32fe52ef09d8f5ff1dd22c001110902b60a2 Mon Sep 17 00:00:00 2001 From: toma Date: Wed, 25 Nov 2009 17:56:58 +0000 Subject: Copy the KDE 3.5 branch to branches/trinity for new KDE 3.5 features. BUG:215923 git-svn-id: svn://anonsvn.kde.org/home/kde/branches/trinity/kdelibs@1054174 283d02a7-25f6-0310-bc7c-ecb5cbfe19da --- kio/tests/kdirwatchunittest.cpp | 180 ++++++++++++++++++++++++++++++++++++++++ 1 file changed, 180 insertions(+) create mode 100644 kio/tests/kdirwatchunittest.cpp (limited to 'kio/tests/kdirwatchunittest.cpp') 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 + + It is licensed under GPL version 2. + + If it is part of KDE libraries than this file is licensed under + LGPL version 2. + */ + +#include + +#include +#include + +#include + +#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" -- cgit v1.2.1