You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
86 lines
0 B
86 lines
0 B
14 years ago
|
/**
|
||
|
* @author Rob Caldecott
|
||
|
* @note This was obtained from http://qtcreator.blogspot.com/2010/04/sample-multiple-unit-test-project.html
|
||
|
*
|
||
|
*/
|
||
|
|
||
|
#ifndef AUTOTEST_H
|
||
|
#define AUTOTEST_H
|
||
|
|
||
|
#include <QTest>
|
||
|
#include <QList>
|
||
|
#include <QString>
|
||
|
#include <QSharedPointer>
|
||
|
|
||
|
namespace AutoTest
|
||
|
{
|
||
|
typedef QList<QObject*> TestList;
|
||
|
|
||
|
inline TestList& testList()
|
||
|
{
|
||
|
static TestList list;
|
||
|
return list;
|
||
|
}
|
||
|
|
||
|
inline bool findObject(QObject* object)
|
||
|
{
|
||
|
TestList& list = testList();
|
||
|
if (list.contains(object))
|
||
|
{
|
||
|
return true;
|
||
|
}
|
||
|
foreach (QObject* test, list)
|
||
|
{
|
||
|
if (test->objectName() == object->objectName())
|
||
|
{
|
||
|
return true;
|
||
|
}
|
||
|
}
|
||
|
return false;
|
||
|
}
|
||
|
|
||
|
inline void addTest(QObject* object)
|
||
|
{
|
||
|
TestList& list = testList();
|
||
|
if (!findObject(object))
|
||
|
{
|
||
|
list.append(object);
|
||
|
}
|
||
|
}
|
||
|
|
||
|
inline int run(int argc, char *argv[])
|
||
|
{
|
||
|
int ret = 0;
|
||
|
|
||
|
foreach (QObject* test, testList())
|
||
|
{
|
||
|
ret += QTest::qExec(test, argc, argv);
|
||
|
}
|
||
|
|
||
|
return ret;
|
||
|
}
|
||
|
}
|
||
|
|
||
|
template <class T>
|
||
|
class Test
|
||
|
{
|
||
|
public:
|
||
|
QSharedPointer<T> child;
|
||
|
|
||
|
Test(const QString& name) : child(new T)
|
||
|
{
|
||
|
child->setObjectName(name);
|
||
|
AutoTest::addTest(child.data());
|
||
|
}
|
||
|
};
|
||
|
|
||
|
#define DECLARE_TEST(className) static Test<className> t(#className);
|
||
|
|
||
|
#define TEST_MAIN \
|
||
|
int main(int argc, char *argv[]) \
|
||
|
{ \
|
||
|
return AutoTest::run(argc, argv); \
|
||
|
}
|
||
|
|
||
|
#endif // AUTOTEST_H
|