Convert tst_QSettings::testVariantTypes()'s macro body into a lambda

Retain the macro, so as to automate checking
QTest::currentTestFailed() after return from the lambda.

Change-Id: If5873a533224ea3b809cef02255642a7d071d642
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
Reviewed-by: Mårten Nordheim <marten.nordheim@qt.io>
bb10
Edward Welbourne 2022-04-22 13:01:20 +02:00
parent 2b16997116
commit 7b909dccc2
1 changed files with 18 additions and 13 deletions

View File

@ -1300,19 +1300,24 @@ void tst_QSettings::testVariantTypes()
QCOMPARE(settings.value("empty"), QVariant());
}
#define testValue(key, actual, expected) do { \
{ \
QSettings settings1(format, QSettings::UserScope, "software.org", "KillerAPP"); \
settings1.setValue(key, QVariant::fromValue(actual)); \
} \
QConfFile::clearCache(); \
{ \
QSettings settings2(format, QSettings::UserScope, "software.org", "KillerAPP"); \
QVariant v = settings2.value(key); \
QCOMPARE(v.metaType().id(), QMetaType::expected); \
QCOMPARE(qvariant_cast<decltype(actual)>(v), actual); \
} \
} while (0)
auto checker = [format](const char *key, auto value, QMetaType::Type expected) {
{
QSettings settings(format, QSettings::UserScope, "software.org", "KillerAPP");
settings.setValue(key, QVariant::fromValue(value));
}
QConfFile::clearCache();
{
QSettings settings(format, QSettings::UserScope, "software.org", "KillerAPP");
QVariant actual = settings.value(key);
QCOMPARE(actual.metaType().id(), expected);
QCOMPARE(qvariant_cast<decltype(value)>(actual), value);
}
};
#define testValue(key, supplied, expected) do { \
checker(key, supplied, QMetaType::expected); \
if (QTest::currentTestFailed()) \
return; \
} while (0)
typedef QMap<QString, QVariant> TestVariantMap;