From 668447ddc8d7cca55516b569e45adb64b19ec6c4 Mon Sep 17 00:00:00 2001 From: Linus Jahn Date: Fri, 9 Sep 2022 19:22:25 +0200 Subject: tests: util: Add expectVariant() helper We had expectFutureVariant() which is useful for futures with a variant type. This new function can check the type of just a variant and outputs the value. --- tests/util.h | 25 +++++++++++++++++-------- 1 file changed, 17 insertions(+), 8 deletions(-) (limited to 'tests') diff --git a/tests/util.h b/tests/util.h index fd26f656..51aac3f8 100644 --- a/tests/util.h +++ b/tests/util.h @@ -72,17 +72,26 @@ QDomElement writePacketToDom(T packet) return doc.documentElement(); } +template +T expectVariant(Variant var) +{ + using namespace std::string_literals; + [&]() { + std::string message = + "Variant ("s + typeid(Variant).name() + + ") contains wrong type; expected '"s + typeid(T).name() + "'."s; + QVERIFY2(std::holds_alternative(var), message.c_str()); + }(); + return std::get(std::move(var)); +} + template T expectFutureVariant(const QFuture &future) { -#define return \ - return \ - { \ - } - QVERIFY(future.isFinished()); - QVERIFY2(std::holds_alternative(future.result()), "Variant contains wrong type!"); -#undef return - return std::get(future.result()); + [&]() { + QVERIFY(future.isFinished()); + }(); + return expectVariant(future.result()); } class TestPasswordChecker : public QXmppPasswordChecker -- cgit v1.2.3