summary refs log tree commit diff stats
path: root/tests/stdlib
diff options
context:
space:
mode:
authorPMunch <peterme@peterme.net>2021-01-07 16:09:57 +0100
committerGitHub <noreply@github.com>2021-01-07 16:09:57 +0100
commit0e7902b976fbd0e566f0fb5f4915695aca406451 (patch)
tree586e315bd2a20ed5ef22fae21ec0c702276f1527 /tests/stdlib
parent89a21e4ec71e705833d2aacd069e291cf41a19c6 (diff)
downloadNim-0e7902b976fbd0e566f0fb5f4915695aca406451.tar.gz
Implements streams for sockets (#15729)
Diffstat (limited to 'tests/stdlib')
-rw-r--r--tests/stdlib/tsocketstreams.nim64
1 files changed, 64 insertions, 0 deletions
diff --git a/tests/stdlib/tsocketstreams.nim b/tests/stdlib/tsocketstreams.nim
new file mode 100644
index 000000000..0cf952810
--- /dev/null
+++ b/tests/stdlib/tsocketstreams.nim
@@ -0,0 +1,64 @@
+discard """
+  output: '''
+OM
+NIM
+3
+NIM
+NIM
+Hello server!
+Hi there client!
+'''"""
+import std/socketstreams, net, streams
+
+block UDP:
+  var recvSocket = newSocket(AF_INET, SOCK_DGRAM, IPPROTO_UDP)
+  var recvStream = newReadSocketStream(recvSocket)
+  recvSocket.bindAddr(Port(12345), "127.0.0.1")
+
+  var sendSocket = newSocket(AF_INET, SOCK_DGRAM, IPPROTO_UDP)
+  sendSocket.connect("127.0.0.1", Port(12345))
+  var sendStream = newWriteSocketStream(sendSocket)
+  sendStream.write "NOM\n"
+  sendStream.setPosition(1)
+  echo sendStream.peekStr(2)
+  sendStream.write "I"
+  sendStream.setPosition(0)
+  echo sendStream.readStr(3)
+  echo sendStream.getPosition()
+  sendStream.flush()
+
+  echo recvStream.readLine()
+  recvStream.setPosition(0)
+  echo recvStream.readLine()
+  recvStream.close()
+
+block TCP:
+  var server = newSocket()
+  server.setSockOpt(OptReusePort, true)
+  server.bindAddr(Port(12345))
+  server.listen()
+
+  var
+    client = newSocket()
+    clientRequestStream = newWriteSocketStream(client)
+    clientResponseStream = newReadSocketStream(client)
+  client.connect("127.0.0.1", Port(12345))
+  clientRequestStream.writeLine("Hello server!")
+  clientRequestStream.flush()
+
+  var
+    incoming: Socket
+    address: string
+  server.acceptAddr(incoming, address)
+  var
+    serverRequestStream = newReadSocketStream(incoming)
+    serverResponseStream = newWriteSocketStream(incoming)
+  echo serverRequestStream.readLine()
+  serverResponseStream.writeLine("Hi there client!")
+  serverResponseStream.flush()
+  serverResponseStream.close()
+  serverRequestStream.close()
+
+  echo clientResponseStream.readLine()
+  clientResponseStream.close()
+  clientRequestStream.close()