aboutsummaryrefslogtreecommitdiff
path: root/tests
diff options
context:
space:
mode:
authorLinus Jahn <lnj@kaidan.im>2022-09-09 19:22:25 +0200
committerLinus Jahn <lnj@kaidan.im>2022-09-09 22:49:06 +0200
commit668447ddc8d7cca55516b569e45adb64b19ec6c4 (patch)
tree1a3679549abdd2884b352a5b4f5d3a2979cb1cca /tests
parent3c637faf32767f4179d3d40035b081e9d140c8fd (diff)
downloadqxmpp-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.h25
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