summaryrefslogtreecommitdiffstats
path: root/tests/auto/qlocalsocket
diff options
context:
space:
mode:
Diffstat (limited to 'tests/auto/qlocalsocket')
-rw-r--r--tests/auto/qlocalsocket/tst_qlocalsocket.cpp30
1 files changed, 30 insertions, 0 deletions
diff --git a/tests/auto/qlocalsocket/tst_qlocalsocket.cpp b/tests/auto/qlocalsocket/tst_qlocalsocket.cpp
index a8cef92..fdfbd8a 100644
--- a/tests/auto/qlocalsocket/tst_qlocalsocket.cpp
+++ b/tests/auto/qlocalsocket/tst_qlocalsocket.cpp
@@ -107,8 +107,11 @@ private slots:
void recycleServer();
+ void writeToClientAndDisconnect();
+
void debug();
+
#ifdef Q_OS_SYMBIAN
private:
void unlink(QString serverName);
@@ -870,6 +873,33 @@ void tst_QLocalSocket::recycleServer()
QVERIFY(server.nextPendingConnection() != 0);
}
+void tst_QLocalSocket::writeToClientAndDisconnect()
+{
+#ifdef Q_OS_SYMBIAN
+ unlink("writeAndDisconnectServer");
+#endif
+
+ QLocalServer server;
+ QLocalSocket client;
+
+ QVERIFY(server.listen("writeAndDisconnectServer"));
+ client.connectToServer("writeAndDisconnectServer");
+ QVERIFY(client.waitForConnected(200));
+ QVERIFY(server.waitForNewConnection(200));
+ QLocalSocket* clientSocket = server.nextPendingConnection();
+ QVERIFY(clientSocket);
+
+ char buffer[100];
+ memset(buffer, 0, sizeof(buffer));
+ QCOMPARE(clientSocket->write(buffer, sizeof(buffer)), (qint64)sizeof(buffer));
+ clientSocket->flush();
+ clientSocket->disconnectFromServer();
+ qApp->processEvents(); // give the socket the chance to receive data
+ QCOMPARE(client.read(buffer, sizeof(buffer)), (qint64)sizeof(buffer));
+ qApp->processEvents(); // give the socket the chance to close itself
+ QCOMPARE(client.state(), QLocalSocket::UnconnectedState);
+}
+
void tst_QLocalSocket::debug()
{
// Make sure this compiles