diff options
author | Araq <rumpf_a@web.de> | 2014-08-05 21:45:58 +0200 |
---|---|---|
committer | Araq <rumpf_a@web.de> | 2014-08-05 21:45:58 +0200 |
commit | ca8135f34b30b5c9da62f6d55f6bc5726206535b (patch) | |
tree | 27cfb6801e4df7130f533b494a9c549cb430d9eb /tests/closure/tforum.nim | |
parent | 55250b3f36f403d0a8baf49c8d30e2290105d2b1 (diff) | |
download | Nim-ca8135f34b30b5c9da62f6d55f6bc5726206535b.tar.gz |
added test
Diffstat (limited to 'tests/closure/tforum.nim')
-rw-r--r-- | tests/closure/tforum.nim | 44 |
1 files changed, 44 insertions, 0 deletions
diff --git a/tests/closure/tforum.nim b/tests/closure/tforum.nim new file mode 100644 index 000000000..4f6a16ff7 --- /dev/null +++ b/tests/closure/tforum.nim @@ -0,0 +1,44 @@ +discard """ + output: '''asdas +processClient end +false +''' +""" + +type + PAsyncHttpServer = ref object + value: string + PFutureBase = ref object + callback: proc () {.closure.} + value: string + failed: bool + +proc accept(server: PAsyncHttpServer): PFutureBase = + new(result) + result.callback = proc () = + discard + server.value = "hahaha" + +proc processClient(): PFutureBase = + new(result) + +proc serve(server: PAsyncHttpServer): PFutureBase = + iterator serveIter(): PFutureBase {.closure.} = + echo server.value + while true: + var acceptAddrFut = server.accept() + yield acceptAddrFut + var fut = acceptAddrFut.value + + var f = processClient() + f.callback = + proc () = + echo("processClient end") + echo(f.failed) + yield f + var x = serveIter + for i in 0 .. 1: + result = x() + result.callback() + +discard serve(PAsyncHttpServer(value: "asdas")) |