AusweisApp2/test/qt/global/test_ScopeGuard.cpp

133 lines
2.1 KiB
C++
Raw Normal View History

2017-12-20 14:54:05 +01:00
/*!
* \brief Unit tests for \ref ScopeGuard
*
2019-05-22 10:08:38 +02:00
* \copyright Copyright (c) 2017-2019 Governikus GmbH & Co. KG, Germany
2017-12-20 14:54:05 +01:00
*/
#include "ScopeGuard.h"
#include "LogHandler.h"
#include <QtTest>
using namespace governikus;
class test_ScopeGuard
: public QObject
{
Q_OBJECT
private Q_SLOTS:
void initTestCase()
{
2019-01-03 15:06:22 +01:00
Env::getSingleton<LogHandler>()->init();
2017-12-20 14:54:05 +01:00
}
void cleanup()
{
2019-01-03 15:06:22 +01:00
Env::getSingleton<LogHandler>()->resetBacklog();
2017-12-20 14:54:05 +01:00
}
void simple()
{
bool flipMe = false;
{
const ScopeGuard obj([&flipMe] {
flipMe = true;
});
QVERIFY(obj.mFunction);
QVERIFY(obj.isEnabled());
QVERIFY(!flipMe);
}
QVERIFY(flipMe);
}
void disabled()
{
bool flipMe = false;
{
const ScopeGuard obj([&flipMe] {
flipMe = true;
}, false);
QVERIFY(obj.mFunction);
QVERIFY(!obj.isEnabled());
QVERIFY(!flipMe);
}
QVERIFY(!flipMe);
}
void disabledAfterCtor()
{
bool flipMe = false;
{
ScopeGuard obj([&flipMe] {
flipMe = true;
});
QVERIFY(obj.mFunction);
QVERIFY(obj.isEnabled());
obj.setEnabled(false);
QVERIFY(!obj.isEnabled());
QVERIFY(!flipMe);
}
QVERIFY(!flipMe);
}
void enabledAfterCtor()
{
bool flipMe = false;
{
ScopeGuard obj([&flipMe] {
flipMe = true;
}, false);
QVERIFY(!obj.isEnabled());
QVERIFY(obj.mFunction);
obj.setEnabled(true);
QVERIFY(obj.isEnabled());
QVERIFY(!flipMe);
}
QVERIFY(flipMe);
}
void emptyFunc()
{
2019-01-03 15:06:22 +01:00
QSignalSpy spy(Env::getSingleton<LogHandler>(), &LogHandler::fireLog);
2017-12-20 14:54:05 +01:00
const std::function<void()> func;
{
ScopeGuard obj(func);
QVERIFY(obj.isEnabled());
QVERIFY(!obj.mFunction);
obj.setEnabled(true);
QVERIFY(obj.isEnabled());
}
QCOMPARE(spy.count(), 1);
auto param = spy.takeFirst();
#ifdef Q_OS_WIN
const QLatin1String lineBreak("\r\n");
#else
const QLatin1Char lineBreak('\n');
#endif
QVERIFY(param.at(0).toString().endsWith(QStringLiteral("Cannot call an empty function") + lineBreak));
}
};
QTEST_GUILESS_MAIN(test_ScopeGuard)
#include "test_ScopeGuard.moc"