From 784d4360d5ed32b2aa63e977122ab24f905de972 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?S=C3=B6nke=20Ludwig?= Date: Sun, 12 Nov 2017 14:35:17 +0100 Subject: [PATCH] Add test for cancelConnectStream. --- tests/0-tcp-cancelconn.d | 40 ++++++++++++++++++++++++++++++++++++++++ 1 file changed, 40 insertions(+) create mode 100644 tests/0-tcp-cancelconn.d diff --git a/tests/0-tcp-cancelconn.d b/tests/0-tcp-cancelconn.d new file mode 100644 index 0000000..6a24452 --- /dev/null +++ b/tests/0-tcp-cancelconn.d @@ -0,0 +1,40 @@ +/++ dub.sdl: + name "test" + dependency "eventcore" path=".." ++/ +module test; + +import eventcore.core; +import eventcore.socket; +import std.socket : parseAddress; +import core.time : Duration, msecs; + +ubyte[256] s_rbuf; +bool s_done; + +void main() +{ + // (hopefully) non-existant host, so that the connection times out + auto baddr = parseAddress("192.0.2.1", 1); + + auto sock = eventDriver.sockets.connectStream(baddr, null, (sock, status) { + assert(false, "Connection callback should not have been called."); + }); + assert(sock != StreamSocketFD.invalid, "Expected connection to be in progress."); + assert(eventDriver.sockets.getConnectionState(sock) == ConnectionState.connecting); + + auto tm = eventDriver.timers.create(); + eventDriver.timers.set(tm, 100.msecs, 0.msecs); + eventDriver.timers.wait(tm, (tm) { + assert(eventDriver.sockets.getConnectionState(sock) == ConnectionState.connecting); + eventDriver.sockets.cancelConnectStream(sock); + s_done = true; + }); + + ExitReason er; + do er = eventDriver.core.processEvents(Duration.max); + while (er == ExitReason.idle); + assert(er == ExitReason.outOfWaiters); + assert(s_done); + s_done = false; +}