1
0
mirror of https://github.com/qt/qtmqtt.git synced 2026-10-25 16:16:26 +00:00
qtmqtt/tests/auto/qmqttcontrolpacket/tst_qmqttcontrolpacket.cpp
Lucie Gérard edd6855344 Use SPDX license identifiers
Replace the current license disclaimer in files by
a SPDX-License-Identifier.
License files are organized under LICENSES directory.

Pick-to: 6.4
Task-number: QTBUG-67283
Change-Id: Ie4309963c8e17d4e7dad602f61a660246d5e23cb
Reviewed-by: Jörg Bornemann <joerg.bornemann@qt.io>
2022-06-16 10:22:20 +02:00

134 lines
3.4 KiB
C++

// Copyright (C) 2017 The Qt Company Ltd.
// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only WITH Qt-GPL-exception-1.0
#include <QtCore/QString>
#include <QtTest/QtTest>
#include <QtMqtt/private/qmqttcontrolpacket_p.h>
class Tst_QMqttControlPacket : public QObject
{
Q_OBJECT
public:
Tst_QMqttControlPacket();
private Q_SLOTS:
void initTestCase();
void cleanupTestCase();
void header();
void append();
void simple_data();
void simple();
};
Tst_QMqttControlPacket::Tst_QMqttControlPacket()
{
}
void Tst_QMqttControlPacket::initTestCase()
{
}
void Tst_QMqttControlPacket::cleanupTestCase()
{
}
void Tst_QMqttControlPacket::header()
{
#ifdef QT_BUILD_INTERNAL
{
QMqttControlPacket packet;
QVERIFY(packet.header() == QMqttControlPacket::UNKNOWN);
}
{
QMqttControlPacket packet(QMqttControlPacket::CONNECT);
QVERIFY(packet.header() == QMqttControlPacket::CONNECT);
packet.setHeader(QMqttControlPacket::DISCONNECT);
QVERIFY(packet.header() == QMqttControlPacket::DISCONNECT);
packet.clear();
QVERIFY(packet.header() == QMqttControlPacket::UNKNOWN);
packet.setHeader(42);
QVERIFY(packet.header() == QMqttControlPacket::UNKNOWN);
}
#else
QSKIP("This test requires a Qt -developer-build.");
#endif
}
void Tst_QMqttControlPacket::append()
{
#ifdef QT_BUILD_INTERNAL
QMqttControlPacket packet;
QCOMPARE(packet.payload().size(), 0);
packet.append('0');
QCOMPARE(packet.payload().size(), 1);
QVERIFY(packet.payload() == QByteArray("0"));
packet.clear();
QCOMPARE(packet.payload().size(), 0);
const quint16 value = 100;
packet.append(value);
QByteArray payload = packet.payload();
QCOMPARE(payload.size(), 2);
const quint16 valueBigEndian = qToBigEndian<quint16>(value);
const quint16 payloadUint16 = *reinterpret_cast<const quint16 *>(payload.constData());
QCOMPARE(payloadUint16, valueBigEndian);
packet.clear();
QCOMPARE(packet.payload().size(), 0);
const QByteArray data("some data in the packet");
packet.append(data);
payload = packet.payload();
QCOMPARE(payload.size(), data.size() + 2);
const QByteArray partSize = payload.left(2);
const QByteArray partContent = payload.mid(2);
const int partSizeInt = qFromBigEndian<quint16>(*reinterpret_cast<const quint16 *>(partSize.constData()));
QCOMPARE(partSizeInt, data.size());
QCOMPARE(partContent, data);
packet.clear();
packet.appendRaw(data);
payload = packet.payload();
QCOMPARE(payload.size(), data.size());
QCOMPARE(payload, data);
const QByteArray containsZero("Some data\0 with zero", 21);
packet.clear();
packet.appendRaw(containsZero);
payload = packet.payload();
QCOMPARE(containsZero, payload);
QCOMPARE(payload.size(), 21);
packet.clear();
packet.append(containsZero);
payload = packet.payload().mid(2); // mid because size got prepended
QCOMPARE(containsZero, payload);
QCOMPARE(payload.size(), 21);
#else
QSKIP("This test requires a Qt -developer-build.");
#endif
}
void Tst_QMqttControlPacket::simple_data()
{
QTest::addColumn<QString>("data");
QTest::newRow("0") << QString();
}
void Tst_QMqttControlPacket::simple()
{
QFETCH(QString, data);
QVERIFY2(true, "Failure");
}
QTEST_APPLESS_MAIN(Tst_QMqttControlPacket)
#include "tst_qmqttcontrolpacket.moc"