diff --git a/presto/btrees.nim b/presto/btrees.nim index b078a68..e8eed4c 100644 --- a/presto/btrees.nim +++ b/presto/btrees.nim @@ -166,68 +166,3 @@ iterator pairs*[Key, Val](b: BTree[Key, Val]): (Key, Val) = yield (k, v) proc len*[Key, Val](b: BTree[Key, Val]): int {.inline.} = b.entries - -when isMainModule: - - import random, tables - - proc main = - var st = initBTree[string, string]() - st.add("www.cs.princeton.edu", "abc") - st.add("www.princeton.edu", "128.112.128.15") - st.add("www.yale.edu", "130.132.143.21") - st.add("www.simpsons.com", "209.052.165.60") - st.add("www.apple.com", "17.112.152.32") - st.add("www.amazon.com", "207.171.182.16") - st.add("www.ebay.com", "66.135.192.87") - st.add("www.cnn.com", "64.236.16.20") - st.add("www.google.com", "216.239.41.99") - st.add("www.nytimes.com", "199.239.136.200") - st.add("www.microsoft.com", "207.126.99.140") - st.add("www.dell.com", "143.166.224.230") - st.add("www.slashdot.org", "66.35.250.151") - st.add("www.espn.com", "199.181.135.201") - st.add("www.weather.com", "63.111.66.11") - st.add("www.yahoo.com", "216.109.118.65") - - assert st.getOrDefault("www.cs.princeton.edu") == "abc" - assert st.getOrDefault("www.harvardsucks.com") == "" - - assert st.getOrDefault("www.simpsons.com") == "209.052.165.60" - assert st.getOrDefault("www.apple.com") == "17.112.152.32" - assert st.getOrDefault("www.ebay.com") == "66.135.192.87" - assert st.getOrDefault("www.dell.com") == "143.166.224.230" - assert(st.entries == 16) - - for k, v in st: - echo k, ": ", v - - when false: - var b2 = initBTree[string, string]() - const iters = 10_000 - for i in 1..iters: - b2.add($i, $(iters - i)) - for i in 1..iters: - let x = b2.getOrDefault($i) - if x != $(iters - i): - echo "got ", x, ", but expected ", iters - i - echo b2.entries - - when true: - var b2 = initBTree[int, string]() - var t2 = initTable[int, string]() - const iters = 100_000 - for i in 1..iters: - let x = rand(high(int)) - if not t2.hasKey(x): - doAssert b2.getOrDefault(x).len == 0, " what, tree has this element " & $x - t2[x] = $x - b2.add(x, $x) - - doAssert b2.entries == t2.len - echo "unique entries ", b2.entries - for k, v in t2: - doAssert $k == v - doAssert b2.getOrDefault(k) == $k - - main() diff --git a/presto/route.nim b/presto/route.nim index 89f9fc0..b4c1f20 100644 --- a/presto/route.nim +++ b/presto/route.nim @@ -101,16 +101,15 @@ proc makeProcName(m, s: string): string = case c of {'/', '{', '_'}: toUpper = true - inc(k, 1) of Letters + Digits: if toUpper: res.add(toUpperAscii(c)) toUpper = false else: res.add(c) - inc(k, 1) else: - inc(k, 1) + discard + inc(k, 1) res proc getRestReturnType(params: NimNode): NimNode = @@ -351,7 +350,8 @@ macro api*(router: RestRouter, meth: static[HttpMethod], `optDecoder` `respDecoder` `bodyDecoder` - `procBody` + block: + `procBody` `router`.addRoute(`methIdent`, `path`, `doMain`) diff --git a/tests/testall.nim b/tests/testall.nim index 20d7df9..0e6d4a9 100644 --- a/tests/testall.nim +++ b/tests/testall.nim @@ -5,4 +5,4 @@ # Licensed under either of # Apache License, version 2.0, (LICENSE-APACHEv2) # MIT license (LICENSE-MIT) -import testsegpath, testroute, testserver, testsecureserver +import testbtrees, testsegpath, testroute, testserver, testsecureserver diff --git a/tests/testbtrees.nim b/tests/testbtrees.nim new file mode 100644 index 0000000..9b3b021 --- /dev/null +++ b/tests/testbtrees.nim @@ -0,0 +1,61 @@ +import std/[random, tables, unittest] +import ../presto/btrees + +suite "B-Tree test suite": + test "B-Tree original standard library test": + proc main() = + var st = initBTree[string, string]() + st.add("www.cs.princeton.edu", "abc") + st.add("www.princeton.edu", "128.112.128.15") + st.add("www.yale.edu", "130.132.143.21") + st.add("www.simpsons.com", "209.052.165.60") + st.add("www.apple.com", "17.112.152.32") + st.add("www.amazon.com", "207.171.182.16") + st.add("www.ebay.com", "66.135.192.87") + st.add("www.cnn.com", "64.236.16.20") + st.add("www.google.com", "216.239.41.99") + st.add("www.nytimes.com", "199.239.136.200") + st.add("www.microsoft.com", "207.126.99.140") + st.add("www.dell.com", "143.166.224.230") + st.add("www.slashdot.org", "66.35.250.151") + st.add("www.espn.com", "199.181.135.201") + st.add("www.weather.com", "63.111.66.11") + st.add("www.yahoo.com", "216.109.118.65") + + check: + st.getOrDefault("www.cs.princeton.edu") == "abc" + st.getOrDefault("www.harvardsucks.com") == "" + st.getOrDefault("www.simpsons.com") == "209.052.165.60" + st.getOrDefault("www.apple.com") == "17.112.152.32" + st.getOrDefault("www.ebay.com") == "66.135.192.87" + st.getOrDefault("www.dell.com") == "143.166.224.230" + st.entries == 16 + + when false: + var b2 = initBTree[string, string]() + const iters = 10_000 + for i in 1..iters: + b2.add($i, $(iters - i)) + for i in 1..iters: + let x = b2.getOrDefault($i) + if x != $(iters - i): + echo "got ", x, ", but expected ", iters - i + echo b2.entries + + when true: + var b2 = initBTree[int, string]() + var t2 = initTable[int, string]() + const iters = 100_000 + for i in 1..iters: + let x = rand(high(int)) + if not t2.hasKey(x): + check b2.getOrDefault(x).len == 0 + t2[x] = $x + b2.add(x, $x) + + check b2.entries == t2.len + for k, v in t2: + check $k == v + check b2.getOrDefault(k) == $k + + main() diff --git a/tests/testsecureserver.nim b/tests/testsecureserver.nim index 57aff88..0a40a37 100644 --- a/tests/testsecureserver.nim +++ b/tests/testsecureserver.nim @@ -132,7 +132,7 @@ template asyncTest*(name: string, body: untyped): untyped = body )()) -suite "REST API server test suite": +suite "Secure REST API server test suite": let serverAddress = initTAddress("127.0.0.1:30180") asyncTest "Responses test": var router = RestRouter.init(testValidate)