mirror of
https://github.com/nim-lang/Nim.git
synced 2025-12-29 09:24:36 +00:00
Adding test for recvline
Signed-off-by: Euan Torano <euantorano@gmail.com>
This commit is contained in:
@@ -533,15 +533,13 @@ proc recvLineInto*(socket: AsyncSocket, resString: FutureVar[string],
|
||||
else:
|
||||
var c = ""
|
||||
while true:
|
||||
let recvFut = recv(socket, 1, flags)
|
||||
c = await recvFut
|
||||
c = await recv(socket, 1, flags)
|
||||
if c.len == 0:
|
||||
resString.mget.setLen(0)
|
||||
resString.complete()
|
||||
return
|
||||
if c == "\r":
|
||||
let recvFut = recv(socket, 1, flags) # Skip \L
|
||||
c = await recvFut
|
||||
c = await recv(socket, 1, flags) # Skip \L
|
||||
assert c == "\L"
|
||||
addNLIfEmpty()
|
||||
resString.complete()
|
||||
|
||||
54
tests/async/tasyncRecvLine.nim
Normal file
54
tests/async/tasyncRecvLine.nim
Normal file
@@ -0,0 +1,54 @@
|
||||
discard """
|
||||
file: "tasyncsend4754.nim"
|
||||
output: '''
|
||||
Hello World
|
||||
Hello World
|
||||
'''
|
||||
"""
|
||||
|
||||
import asyncdispatch, asyncnet
|
||||
|
||||
const recvLinePort = Port(6047)
|
||||
|
||||
proc setupTestServer(): AsyncSocket =
|
||||
result = newAsyncSocket()
|
||||
result.setSockOpt(OptReuseAddr, true)
|
||||
result.bindAddr(recvLinePort)
|
||||
result.listen()
|
||||
|
||||
proc testUnbuffered(): Future[void] {.async.} =
|
||||
let serverSock = setupTestServer()
|
||||
let serverAcceptClientFut = serverSock.accept()
|
||||
|
||||
let clientSock = newAsyncSocket(buffered = false)
|
||||
let clientConnectFut = clientSock.connect("localhost", recvLinePort)
|
||||
|
||||
let serverAcceptedClient = await serverAcceptClientFut
|
||||
await clientConnectFut
|
||||
|
||||
await serverAcceptedClient.send("Hello World\c\L")
|
||||
|
||||
echo await clientSock.recvLine()
|
||||
|
||||
clientSock.close()
|
||||
serverSock.close()
|
||||
|
||||
proc testBuffered(): Future[void] {.async.} =
|
||||
let serverSock = setupTestServer()
|
||||
let serverAcceptClientFut = serverSock.accept()
|
||||
|
||||
let clientSock = newAsyncSocket(buffered = true)
|
||||
let clientConnectFut = clientSock.connect("localhost", recvLinePort)
|
||||
|
||||
let serverAcceptedClient = await serverAcceptClientFut
|
||||
await clientConnectFut
|
||||
|
||||
await serverAcceptedClient.send("Hello World\c\L")
|
||||
|
||||
echo await clientSock.recvLine()
|
||||
|
||||
clientSock.close()
|
||||
serverSock.close()
|
||||
|
||||
waitFor testUnbuffered()
|
||||
waitFor testBuffered()
|
||||
Reference in New Issue
Block a user