From 1cf3a930b52a125211844c45d7edd7c543a798cd Mon Sep 17 00:00:00 2001 From: coffeepots Date: Thu, 26 Apr 2018 19:37:02 +0100 Subject: [PATCH] Moved rpc macro tests out into separate module --- tests/testrpcmacro.nim | 53 ++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 53 insertions(+) create mode 100644 tests/testrpcmacro.nim diff --git a/tests/testrpcmacro.nim b/tests/testrpcmacro.nim new file mode 100644 index 0000000..c537eb9 --- /dev/null +++ b/tests/testrpcmacro.nim @@ -0,0 +1,53 @@ +import ../ eth-rpc / server / servertypes, unittest, asyncdispatch, json, tables + +var s = newRpcServer("localhost") +s.on("rpc.simplepath"): + echo "hello3" + result = %1 +s.on("rpc.returnint") do() -> int: + echo "hello2" +s.on("rpc.differentparams") do(a: int, b: string): + var node = %"test" + result = node +s.on("rpc.arrayparam") do(arr: array[0..5, byte], b: string): + var res = newJArray() + for item in arr: + res.add %int(item) + res.add %b + result = %res +s.on("rpc.seqparam") do(b: string, s: seq[int]): + var res = newJArray() + res.add %b + for item in s: + res.add %int(item) + result = res +type MyObject* = object + a: int + b: string + c: float +s.on("rpc.objparam") do(b: string, obj: MyObject): + result = %obj +suite "Server types": + test "On macro registration": + check s.procs.hasKey("rpc.simplepath") + check s.procs.hasKey("rpc.returnint") + check s.procs.hasKey("rpc.returnint") + test "Array/seq parameters": + let r1 = waitfor rpcArrayParam(%[%[1, 2, 3], %"hello"]) + var ckR1 = %[1, 2, 3, 0, 0, 0] + ckR1.elems.add %"hello" + check r1 == ckR1 + + let r2 = waitfor rpcSeqParam(%[%"abc", %[1, 2, 3, 4, 5]]) + var ckR2 = %["abc"] + for i in 0..4: ckR2.add %(i + 1) + check r2 == ckR2 + test "Object parameters": + let + obj = %*{"a": %1, "b": %"hello", "c": %1.23} + r = waitfor rpcObjParam(%[%"abc", obj]) + check r == obj + test "Runtime errors": + expect ValueError: + discard waitfor rpcArrayParam(%[%[0, 1, 2, 3, 4, 5, 6], %"hello"]) + # TODO: Add other errors \ No newline at end of file