diff options
| author | Linus Jahn <lnj@kaidan.im> | 2022-09-09 19:22:25 +0200 |
|---|---|---|
| committer | Linus Jahn <lnj@kaidan.im> | 2022-09-09 22:49:06 +0200 |
| commit | 668447ddc8d7cca55516b569e45adb64b19ec6c4 (patch) | |
| tree | 1a3679549abdd2884b352a5b4f5d3a2979cb1cca /tests | |
| parent | 3c637faf32767f4179d3d40035b081e9d140c8fd (diff) | |
| download | qxmpp-668447ddc8d7cca55516b569e45adb64b19ec6c4.tar.gz | |
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.
Diffstat (limited to 'tests')
| -rw-r--r-- | tests/util.h | 25 |
1 files changed, 17 insertions, 8 deletions
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<typename T, typename Variant> +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<T>(var), message.c_str()); + }(); + return std::get<T>(std::move(var)); +} + template<typename T, typename Input> T expectFutureVariant(const QFuture<Input> &future) { -#define return \ - return \ - { \ - } - QVERIFY(future.isFinished()); - QVERIFY2(std::holds_alternative<T>(future.result()), "Variant contains wrong type!"); -#undef return - return std::get<T>(future.result()); + [&]() { + QVERIFY(future.isFinished()); + }(); + return expectVariant<T>(future.result()); } class TestPasswordChecker : public QXmppPasswordChecker |
