Tests: Allow specifying test suit name

This commit is contained in:
Lukas W
2020-05-06 15:09:51 +02:00
parent 29df871800
commit 78c92e8314
2 changed files with 41 additions and 11 deletions

View File

@@ -6,20 +6,49 @@
#include "Engine.h"
void printAvailableSuits()
{
QStringList suitNames;
for (QTestSuite* suite : QTestSuite::suites()) {
suitNames.push_back(suite->metaObject()->className());
}
qDebug().noquote() << "Available test suits are: " << suitNames.join(", ");
}
int runSuit(const QString& name, const QStringList& args)
{
for (QTestSuite* suite : QTestSuite::suites()) {
if (suite->metaObject()->className() == name) {
return QTest::qExec(suite, args);
}
}
throw std::invalid_argument("No such test suit " + name.toStdString());
}
int main(int argc, char* argv[])
{
new QCoreApplication(argc, argv);
auto app = new QCoreApplication(argc, argv);
Engine::init(true);
int numsuites = QTestSuite::suites().size();
qDebug() << ">> Will run" << numsuites << "test suites";
int failed = 0;
for (QTestSuite*& suite : QTestSuite::suites())
{
failed += QTest::qExec(suite, argc, argv);
int rc = 0;
if (app->arguments().size() > 1) {
try {
runSuit(app->arguments()[1], app->arguments().mid(1));
} catch (const std::invalid_argument& e) {
qDebug().noquote() << e.what();
printAvailableSuits();
rc = -1;
}
} else {
int numsuites = QTestSuite::suites().size();
qDebug() << ">> Will run" << numsuites << "test suites";
for (QTestSuite* suite : QTestSuite::suites()) {
rc += QTest::qExec(suite, argc, argv);
}
qDebug() << "<<" << rc << "out of"<<numsuites<<"test suites failed.";
}
qDebug() << "<<" << failed << "out of"<<numsuites<<"test suites failed.";
Engine::destroy();
return failed;
return rc;
}

View File

@@ -36,11 +36,12 @@ private slots:
void MemoryPoolTests()
{
using T = std::array<char, 16>;
MemoryPool<T> pool(256);
int n = 256;
MemoryPool<T> pool(n);
std::stack<T*> ptrs;
for (int i=0; i < 256; i++) {
for (int i=0; i < n; i++) {
ptrs.push(pool.allocate_bounded());
QVERIFY(ptrs.top());
}