summaryrefslogtreecommitdiffstats
path: root/tests/auto/qmqttclient/tst_qmqttclient.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'tests/auto/qmqttclient/tst_qmqttclient.cpp')
-rw-r--r--tests/auto/qmqttclient/tst_qmqttclient.cpp38
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"