KUnitTest
module.h
Go to the documentation of this file.
00001 00026 #ifndef KUNITTEST_MODULE_H 00027 #define KUNITTEST_MODULE_H 00028 00029 #include <QtCore/QString> 00030 00031 #include <klibloader.h> 00032 #include <kunittest/runner.h> 00033 00034 namespace KUnitTest 00035 { 00045 #define KUNITTEST_MODULE(library,suite) \ 00046 static const QString s_kunittest_suite = QLatin1String(suite); \ 00047 class library##Module : public QObject \ 00048 { \ 00049 public: \ 00050 library##Module() \ 00051 { \ 00052 KUnitTest::Registry::const_iterator it = s_registry.constBegin(); \ 00053 for( ; it != s_registry.constEnd(); ++it ) \ 00054 KUnitTest::Runner::registerTester(it.key(), it.value()); \ 00055 } \ 00056 \ 00057 static KUnitTest::Registry s_registry; \ 00058 }; \ 00059 \ 00060 KUnitTest::Registry library##Module::s_registry; \ 00061 \ 00062 void kunittest_registerModuleTester(const char *name, KUnitTest::Tester *test) \ 00063 { \ 00064 library##Module::s_registry.insert(name, test); \ 00065 } \ 00066 \ 00067 class module##Factory : public KLibFactory \ 00068 { \ 00069 public: \ 00070 QObject *createObject (QObject *, const char *, const char *, const QStringList &) \ 00071 { \ 00072 return new library##Module(); \ 00073 }; \ 00074 }; \ 00075 \ 00076 K_EXPORT_COMPONENT_FACTORY( library, module##Factory ) 00077 00084 #define KUNITTEST_MODULE_REGISTER_TESTER( tester) \ 00085 static class tester##ModuleAutoregister \ 00086 { \ 00087 public: \ 00088 tester##ModuleAutoregister() \ 00089 { \ 00090 KUnitTest::Tester *test = new tester(); \ 00091 QString name = s_kunittest_suite + QLatin1String("::") + QString::fromLocal8Bit(#tester); \ 00092 test->setName(name.local8Bit()); \ 00093 kunittest_registerModuleTester(name.local8Bit(), test ); \ 00094 } \ 00095 } tester##ModuleAutoregisterInstance; 00096 00102 #define KUNITTEST_MODULE_REGISTER_NAMEDTESTER( name , tester) \ 00103 static class tester##ModuleAutoregister \ 00104 { \ 00105 public: \ 00106 tester##ModuleAutoregister() \ 00107 { \ 00108 QString fullName = s_kunittest_suite + QString("::") + QString::fromLocal8Bit(name); \ 00109 KUnitTest::Tester *test = new tester(fullName.local8Bit()); \ 00110 kunittest_registerModuleTester(fullName.local8Bit(), test); \ 00111 } \ 00112 } tester##ModuleAutoregisterInstance; 00113 } 00114 00115 #endif
KDE 4.6 API Reference