diff --git a/tests/auto/qamqpclient/tst_qamqpclient.cpp b/tests/auto/qamqpclient/tst_qamqpclient.cpp index ffcf8db..c562286 100644 --- a/tests/auto/qamqpclient/tst_qamqpclient.cpp +++ b/tests/auto/qamqpclient/tst_qamqpclient.cpp @@ -4,6 +4,8 @@ #include "qamqptestcase.h" #include "qamqpauthenticator.h" +#include "qamqpexchange.h" +#include "qamqpqueue.h" #include "qamqpclient_p.h" #include "qamqpclient.h" @@ -20,6 +22,7 @@ private Q_SLOTS: void socketError(); void validateUri_data(); void validateUri(); + void issue38(); public Q_SLOTS: // temporarily disabled void autoReconnect(); @@ -27,6 +30,7 @@ public Q_SLOTS: // temporarily disabled private: QSslConfiguration createSslConfiguration(); + void issue38_helper(QAmqpClient *client); }; @@ -222,5 +226,34 @@ void tst_QAMQPClient::validateUri() QCOMPARE(clientPrivate.virtualHost, expectedVirtualHost); } +void tst_QAMQPClient::issue38_helper(QAmqpClient *client) +{ + // connect + client->connectToHost(); + QVERIFY(waitForSignal(client, SIGNAL(connected()))); + + // create then declare, remove and close queue + QAmqpQueue *queue = client->createQueue(); + QVERIFY(waitForSignal(queue, SIGNAL(opened()))); + queue->declare(); + QVERIFY(waitForSignal(queue, SIGNAL(declared()))); + queue->remove(QAmqpExchange::roForce); + QVERIFY(waitForSignal(queue, SIGNAL(removed()))); + queue->close(); + QVERIFY(waitForSignal(queue, SIGNAL(closed()))); + queue->deleteLater(); + + // disconnect + client->disconnectFromHost(); + QVERIFY(waitForSignal(client, SIGNAL(disconnected()))); +} + +void tst_QAMQPClient::issue38() +{ + QAmqpClient client; + issue38_helper(&client); + issue38_helper(&client); +} + QTEST_MAIN(tst_QAMQPClient) #include "tst_qamqpclient.moc"