00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019 #ifndef QTEST_KDE_H
00020 #define QTEST_KDE_H
00021
00022 #include <QtTest/QtTest>
00023 #include <stdlib.h>
00024 #include <kaboutdata.h>
00025 #include <kcmdlineargs.h>
00026 #include <kcomponentdata.h>
00027 #include <kurl.h>
00028 #include <QtGui/QApplication>
00029 #include <QtCore/QEventLoop>
00030 #include <QtTest/QSignalSpy>
00031
00032 namespace QTest
00033 {
00041 inline bool kWaitForSignal(QObject *obj, const char *signal, int timeout = 0)
00042 {
00043 QEventLoop loop;
00044 QObject::connect(obj, signal, &loop, SLOT(quit()));
00045 QTimer timer;
00046 QSignalSpy timeoutSpy(&timer, SIGNAL(timeout()));
00047 if (timeout > 0) {
00048 QObject::connect(&timer, SIGNAL(timeout()), &loop, SLOT(quit()));
00049 timer.setSingleShot(true);
00050 timer.start(timeout);
00051 }
00052 loop.exec();
00053 return timeoutSpy.isEmpty();
00054 }
00055 }
00056
00057
00058
00059 enum KDEMainFlag { NoGUI = 0, GUI = 1 };
00060 Q_DECLARE_FLAGS(KDEMainFlags, KDEMainFlag)
00061 Q_DECLARE_OPERATORS_FOR_FLAGS(KDEMainFlags)
00077 #define QTEST_KDEMAIN_WITH_COMPONENTNAME(TestObject, flags, componentName) \
00078 int main(int argc, char *argv[]) \
00079 { \
00080 setenv("LC_ALL", "C", 1); \
00081 setenv("KDEHOME", QFile::encodeName( QDir::homePath() + "/.kde-unit-test" ), 1); \
00082 setenv("XDG_DATA_HOME", QFile::encodeName( QDir::homePath() + "/.kde-unit-test/xdg/local" ), 1); \
00083 setenv("XDG_CONFIG_HOME", QFile::encodeName( QDir::homePath() + "/.kde-unit-test/xdg/config" ), 1); \
00084 unsetenv("KDE_COLOR_DEBUG"); \
00085 KAboutData aboutData( QByteArray(componentName), QByteArray(), ki18n("KDE Test Program"), QByteArray("version") ); \
00086 KDEMainFlags mainFlags = flags; \
00087 KComponentData cData(&aboutData); \
00088 QApplication app( argc, argv, (mainFlags & GUI) != 0 ); \
00089 app.setApplicationName( "qttest" ); \
00090 qRegisterMetaType<KUrl>(); \
00091 qRegisterMetaType<KUrl::List>(); \
00092 TestObject tc; \
00093 return QTest::qExec( &tc, argc, argv ); \
00094 }
00095
00109 #define QTEST_KDEMAIN(TestObject, flags) QTEST_KDEMAIN_WITH_COMPONENTNAME(TestObject, flags, "qttest")
00110
00123 #define QTEST_KDEMAIN_CORE(TestObject) \
00124 int main(int argc, char *argv[]) \
00125 { \
00126 setenv("LC_ALL", "C", 1); \
00127 setenv("KDEHOME", QFile::encodeName( QDir::homePath() + "/.kde-unit-test" ), 1); \
00128 setenv("XDG_DATA_HOME", QFile::encodeName( QDir::homePath() + "/.kde-unit-test/xdg/local" ), 1); \
00129 setenv("XDG_CONFIG_HOME", QFile::encodeName( QDir::homePath() + "/.kde-unit-test/xdg/config" ), 1); \
00130 unsetenv("KDE_COLOR_DEBUG"); \
00131 KAboutData aboutData( QByteArray("qttest"), QByteArray(), ki18n("KDE Test Program"), QByteArray("version") ); \
00132 KComponentData cData(&aboutData); \
00133 QCoreApplication app( argc, argv ); \
00134 app.setApplicationName( "qttest" ); \
00135 qRegisterMetaType<KUrl>(); \
00136 qRegisterMetaType<KUrl::List>(); \
00137 TestObject tc; \
00138 return QTest::qExec( &tc, argc, argv ); \
00139 }
00140
00141 #endif
00142