diff options
Diffstat (limited to 'tests/auto/qmqttclient/tst_qmqttclient.cpp')
-rw-r--r-- | tests/auto/qmqttclient/tst_qmqttclient.cpp | 38 |
1 files changed, 37 insertions, 1 deletions
diff --git a/tests/auto/qmqttclient/tst_qmqttclient.cpp b/tests/auto/qmqttclient/tst_qmqttclient.cpp index 6c70007..b94bfd4 100644 --- a/tests/auto/qmqttclient/tst_qmqttclient.cpp +++ b/tests/auto/qmqttclient/tst_qmqttclient.cpp @@ -57,6 +57,7 @@ private Q_SLOTS: void dataIncludingZero(); void publishLongTopic(); void reconnect_QTBUG65726(); + void openIODevice_QTBUG66955(); private: QProcess m_brokerProcess; QString m_testBroker; @@ -395,7 +396,7 @@ class FakeServer : public QObject Q_OBJECT public: FakeServer() { - server = new QTcpServer(); + server = new QTcpServer(this); connect(server, &QTcpServer::newConnection, this, &FakeServer::createSocket); server->listen(QHostAddress::Any, 5726); } @@ -447,6 +448,41 @@ void Tst_QMqttClient::reconnect_QTBUG65726() QTRY_COMPARE(client.error(), QMqttClient::NoError); } +class IOTransport : public QIODevice +{ +public: + bool open(OpenMode mode) override { + return QIODevice::open(mode); + } + qint64 readData(char *data, qint64 maxlen) override { + Q_UNUSED(data); + Q_UNUSED(maxlen); + return 0; + } + qint64 writeData(const char *data, qint64 len) override { + Q_UNUSED(data); + Q_UNUSED(len); + if (data[0] == 0x10) + written = 1; + else + qWarning() << "Received unknown/invalid data"; + return len; + } + QAtomicInt written{0}; +}; + +void Tst_QMqttClient::openIODevice_QTBUG66955() +{ + IOTransport trans; + trans.open(QIODevice::ReadWrite); + + QMqttClient client; + client.setTransport(&trans, QMqttClient::IODevice); + client.connectToHost(); + + QTRY_COMPARE(trans.written, 1); +} + QTEST_MAIN(Tst_QMqttClient) #include "tst_qmqttclient.moc" |