aboutsummaryrefslogtreecommitdiff
path: root/tests
diff options
context:
space:
mode:
authorLinus Jahn <lnj@kaidan.im>2022-03-02 22:31:12 +0100
committerLinus Jahn <lnj@kaidan.im>2022-03-03 13:49:50 +0100
commit274da5d7bc049c748b0eb04f24275efe15ab7720 (patch)
tree829789ee3cdf377a570830642d262027cdf0dd53 /tests
parentec1480a11ee69924712b3b1b10cde7fbf6ba1866 (diff)
downloadqxmpp-274da5d7bc049c748b0eb04f24275efe15ab7720.tar.gz
Stanza: Make E2eeMetadata optional to avoid allocation
Avoids an allocation of the E2eeMetadataPrivate object when it's not used. It doesn't use optional<E2eeMetadata> directly because that wouldn't avoid the allocation and takes up 16 bytes instead of 8. This concept could be generalized and used elsewhere in the code (e.g. extended addresses in the stanza are unused 99% of the time).
Diffstat (limited to 'tests')
-rw-r--r--tests/qxmppatmmanager/tst_qxmppatmmanager.cpp2
-rw-r--r--tests/qxmppstanza/tst_qxmppstanza.cpp16
2 files changed, 11 insertions, 7 deletions
diff --git a/tests/qxmppatmmanager/tst_qxmppatmmanager.cpp b/tests/qxmppatmmanager/tst_qxmppatmmanager.cpp
index e8fd08a4..215d7e8c 100644
--- a/tests/qxmppatmmanager/tst_qxmppatmmanager.cpp
+++ b/tests/qxmppatmmanager/tst_qxmppatmmanager.cpp
@@ -842,7 +842,7 @@ void tst_QXmppAtmManager::testHandleMessage()
QFETCH(bool, isSenderKeyAuthenticated);
const auto senderJid = QXmppUtils::jidToBareJid(message.from());
- const auto senderKey = message.e2eeMetadata().senderKey();
+ const auto senderKey = message.e2eeMetadata()->senderKey();
// Add the sender key in preparation for the test.
if (areTrustDecisionsValid) {
diff --git a/tests/qxmppstanza/tst_qxmppstanza.cpp b/tests/qxmppstanza/tst_qxmppstanza.cpp
index 98be3d63..b4826e1b 100644
--- a/tests/qxmppstanza/tst_qxmppstanza.cpp
+++ b/tests/qxmppstanza/tst_qxmppstanza.cpp
@@ -386,22 +386,26 @@ void tst_QXmppStanza::testSenderKey()
{
QXmppStanzaStub stanza;
auto e2eeMetadata = stanza.e2eeMetadata();
- QVERIFY(e2eeMetadata.senderKey().isEmpty());
- e2eeMetadata.setSenderKey(QByteArray::fromBase64(QByteArrayLiteral("aFABnX7Q/rbTgjBySYzrT2FsYCVYb49mbca5yB734KQ=")));
+ QVERIFY(!e2eeMetadata.has_value());
+ e2eeMetadata = QXmppE2eeMetadata();
+ e2eeMetadata->setSenderKey(QByteArray::fromBase64(QByteArrayLiteral("aFABnX7Q/rbTgjBySYzrT2FsYCVYb49mbca5yB734KQ=")));
stanza.setE2eeMetadata(e2eeMetadata);
e2eeMetadata = stanza.e2eeMetadata();
- QCOMPARE(e2eeMetadata.senderKey(), QByteArray::fromBase64(QByteArrayLiteral("aFABnX7Q/rbTgjBySYzrT2FsYCVYb49mbca5yB734KQ=")));
+ QCOMPARE(e2eeMetadata->senderKey(), QByteArray::fromBase64(QByteArrayLiteral("aFABnX7Q/rbTgjBySYzrT2FsYCVYb49mbca5yB734KQ=")));
}
void tst_QXmppStanza::testSceTimestamp()
{
QXmppStanzaStub stanza;
auto e2eeMetadata = stanza.e2eeMetadata();
- QVERIFY(e2eeMetadata.sceTimestamp().isNull());
- e2eeMetadata.setSceTimestamp(QDateTime(QDate(2022, 01, 01), QTime()));
+ QVERIFY(!e2eeMetadata.has_value());
+ e2eeMetadata = QXmppE2eeMetadata();
+ QVERIFY(e2eeMetadata->senderKey().isEmpty());
+ QVERIFY(e2eeMetadata->sceTimestamp().isNull());
+ e2eeMetadata->setSceTimestamp(QDateTime(QDate(2022, 01, 01), QTime()));
stanza.setE2eeMetadata(e2eeMetadata);
e2eeMetadata = stanza.e2eeMetadata();
- QCOMPARE(e2eeMetadata.sceTimestamp(), QDateTime(QDate(2022, 01, 01), QTime()));
+ QCOMPARE(e2eeMetadata->sceTimestamp(), QDateTime(QDate(2022, 01, 01), QTime()));
}
QTEST_MAIN(tst_QXmppStanza)