megatest checks output and nimout
This commit is contained in:
parent
2a4c09ff88
commit
3859878db8
16 changed files with 218 additions and 202 deletions
|
|
@ -430,55 +430,50 @@ iterator keys* [T,D] (n: PNode[T,D]): T =
|
|||
i = Path[level].Xi
|
||||
inc(i)
|
||||
|
||||
proc test() =
|
||||
var oldvalue: int
|
||||
var root = internalPut[int, int](nil, 312, 312, oldvalue)
|
||||
var someOtherRoot = internalPut[string, int](nil, "312", 312, oldvalue)
|
||||
var it1 = internalFind(root, 312)
|
||||
echo it1.value
|
||||
|
||||
when isMainModule:
|
||||
for i in 1..1_000_000:
|
||||
root = internalPut(root, i, i, oldvalue)
|
||||
|
||||
proc test() =
|
||||
var oldvalue: int
|
||||
var root = internalPut[int, int](nil, 312, 312, oldvalue)
|
||||
var someOtherRoot = internalPut[string, int](nil, "312", 312, oldvalue)
|
||||
var it1 = internalFind(root, 312)
|
||||
echo it1.value
|
||||
|
||||
for i in 1..1_000_000:
|
||||
root = internalPut(root, i, i, oldvalue)
|
||||
|
||||
var cnt = 0
|
||||
oldvalue = -1
|
||||
when true : # code compiles, when this or the other when is switched to false
|
||||
for k in root.keys :
|
||||
if k <= oldvalue :
|
||||
echo k
|
||||
oldvalue = k
|
||||
inc(cnt)
|
||||
echo cnt
|
||||
var cnt = 0
|
||||
oldvalue = -1
|
||||
when true : # code compiles, when this or the other when is switched to false
|
||||
for k in root.keys :
|
||||
if k <= oldvalue :
|
||||
echo k
|
||||
oldvalue = k
|
||||
inc(cnt)
|
||||
echo cnt
|
||||
when true :
|
||||
cnt = 0
|
||||
VisitAll(root, proc(key, val: int) = inc(cnt))
|
||||
echo cnt
|
||||
when true :
|
||||
cnt = 0
|
||||
VisitAll(root, proc(key, val: int) = inc(cnt))
|
||||
echo cnt
|
||||
when true :
|
||||
root = VisitAll(root, proc(key: int, value: var int): bool =
|
||||
return key mod 2 == 0 )
|
||||
cnt = 0
|
||||
oldvalue = -1
|
||||
VisitAll(root, proc(key: int, value: int) {.closure.} =
|
||||
if key <= oldvalue :
|
||||
echo key
|
||||
oldvalue = key
|
||||
inc(cnt) )
|
||||
echo cnt
|
||||
root = VisitAll(root, proc(key: int, value: var int): bool =
|
||||
return key mod 2 != 0 )
|
||||
cnt = 0
|
||||
oldvalue = -1
|
||||
VisitAll(root, proc(key: int, value: int) {.closure.} =
|
||||
if key <= oldvalue :
|
||||
echo "error ", key
|
||||
oldvalue = key
|
||||
inc(cnt) )
|
||||
echo cnt
|
||||
#traceTree(root)
|
||||
return key mod 2 == 0 )
|
||||
cnt = 0
|
||||
oldvalue = -1
|
||||
VisitAll(root, proc(key: int, value: int) {.closure.} =
|
||||
if key <= oldvalue :
|
||||
echo key
|
||||
oldvalue = key
|
||||
inc(cnt) )
|
||||
echo cnt
|
||||
root = VisitAll(root, proc(key: int, value: var int): bool =
|
||||
return key mod 2 != 0 )
|
||||
cnt = 0
|
||||
oldvalue = -1
|
||||
VisitAll(root, proc(key: int, value: int) {.closure.} =
|
||||
if key <= oldvalue :
|
||||
echo "error ", key
|
||||
oldvalue = key
|
||||
inc(cnt) )
|
||||
echo cnt
|
||||
#traceTree(root)
|
||||
|
||||
|
||||
|
||||
test()
|
||||
test()
|
||||
|
|
|
|||
|
|
@ -26,9 +26,11 @@ proc safeReadLine(): TMaybe[string] =
|
|||
if r == "": return Nothing[string]()
|
||||
else: return Just(r)
|
||||
|
||||
when isMainModule:
|
||||
proc main() =
|
||||
var Test = Just("Test")
|
||||
echo(Test.value)
|
||||
var mSomething = safeReadLine()
|
||||
echo(mSomething.value)
|
||||
mSomething = safeReadLine()
|
||||
|
||||
main()
|
||||
|
|
|
|||
|
|
@ -397,19 +397,18 @@ template grammar*[K](Kind, Text, Symbol: typedesc; default: K, code: untyped): t
|
|||
template grammar*[K](Kind: typedesc; default: K, code: untyped): typed {.hint[XDeclaredButNotUsed]: off.} =
|
||||
grammar(Kind, string, char, default, code)
|
||||
|
||||
when isMainModule:
|
||||
block:
|
||||
type DummyKind = enum dkDefault
|
||||
grammar(DummyKind, string, char, dkDefault):
|
||||
let rule = token("h[a]+m") + ignore(token(r"\s+")) + (literal("eggs") / literal("beans"))
|
||||
var text = "ham beans"
|
||||
discard rule.parse(text)
|
||||
block:
|
||||
type DummyKind = enum dkDefault
|
||||
grammar(DummyKind, string, char, dkDefault):
|
||||
let rule = token("h[a]+m") + ignore(token(r"\s+")) + (literal("eggs") / literal("beans"))
|
||||
var text = "ham beans"
|
||||
discard rule.parse(text)
|
||||
|
||||
var recursive = newRule()
|
||||
recursive -> (literal("(") + recursive + literal(")")) / token(r"\d+")
|
||||
for test in ["spam", "57", "(25)", "((25))"]:
|
||||
discard recursive.parse(test)
|
||||
var recursive = newRule()
|
||||
recursive -> (literal("(") + recursive + literal(")")) / token(r"\d+")
|
||||
for test in ["spam", "57", "(25)", "((25))"]:
|
||||
discard recursive.parse(test)
|
||||
|
||||
let repeated = +literal("spam") + ?literal("ham") + *literal("salami")
|
||||
for test in ["ham", "spam", "spamspamspam" , "spamham", "spamsalami", "spamsalamisalami"]:
|
||||
discard repeated.parse(test)
|
||||
let repeated = +literal("spam") + ?literal("ham") + *literal("salami")
|
||||
for test in ["ham", "spam", "spamspamspam" , "spamham", "spamsalami", "spamsalamisalami"]:
|
||||
discard repeated.parse(test)
|
||||
|
|
|
|||
|
|
@ -589,70 +589,68 @@ proc delete*[M, D: Dim; RT, LT](t: RTree[M, D, RT, LT]; leaf: L[D, RT, LT]): boo
|
|||
t.root.parent = nil
|
||||
return true
|
||||
|
||||
when isMainModule:
|
||||
|
||||
var t = [4, 1, 3, 2]
|
||||
var xt = 7
|
||||
sortPlus(t, xt, system.cmp, SortOrder.Ascending)
|
||||
echo xt, " ", t
|
||||
var t = [4, 1, 3, 2]
|
||||
var xt = 7
|
||||
sortPlus(t, xt, system.cmp, SortOrder.Ascending)
|
||||
echo xt, " ", t
|
||||
|
||||
type
|
||||
RSE = L[2, int, int]
|
||||
RSeq = seq[RSE]
|
||||
type
|
||||
RSE = L[2, int, int]
|
||||
RSeq = seq[RSE]
|
||||
|
||||
proc rseq_search(rs: RSeq; rse: RSE): seq[int] =
|
||||
result = newSeq[int]()
|
||||
for i in rs:
|
||||
if intersect(i.b, rse.b):
|
||||
result.add(i.l)
|
||||
proc rseq_search(rs: RSeq; rse: RSE): seq[int] =
|
||||
result = newSeq[int]()
|
||||
for i in rs:
|
||||
if intersect(i.b, rse.b):
|
||||
result.add(i.l)
|
||||
|
||||
proc rseq_delete(rs: var RSeq; rse: RSE): bool =
|
||||
for i in 0 .. rs.high:
|
||||
if rs[i] == rse:
|
||||
#rs.delete(i)
|
||||
rs[i] = rs[rs.high]
|
||||
rs.setLen(rs.len - 1)
|
||||
return true
|
||||
proc rseq_delete(rs: var RSeq; rse: RSE): bool =
|
||||
for i in 0 .. rs.high:
|
||||
if rs[i] == rse:
|
||||
#rs.delete(i)
|
||||
rs[i] = rs[rs.high]
|
||||
rs.setLen(rs.len - 1)
|
||||
return true
|
||||
|
||||
import random, algorithm
|
||||
import random, algorithm
|
||||
|
||||
proc test(n: int) =
|
||||
var b: Box[2, int]
|
||||
echo center(b)
|
||||
var x1, x2, y1, y2: int
|
||||
var t = newRStarTree[8, 2, int, int]()
|
||||
#var t = newRTree[8, 2, int, int]()
|
||||
var rs = newSeq[RSE]()
|
||||
for i in 0 .. 5:
|
||||
for i in 0 .. n - 1:
|
||||
x1 = rand(1000)
|
||||
y1 = rand(1000)
|
||||
x2 = x1 + rand(25)
|
||||
y2 = y1 + rand(25)
|
||||
b = [(x1, x2), (y1, y2)]
|
||||
let el: L[2, int, int] = (b, i + 7)
|
||||
t.insert(el)
|
||||
rs.add(el)
|
||||
proc test(n: int) =
|
||||
var b: Box[2, int]
|
||||
echo center(b)
|
||||
var x1, x2, y1, y2: int
|
||||
var t = newRStarTree[8, 2, int, int]()
|
||||
#var t = newRTree[8, 2, int, int]()
|
||||
var rs = newSeq[RSE]()
|
||||
for i in 0 .. 5:
|
||||
for i in 0 .. n - 1:
|
||||
x1 = rand(1000)
|
||||
y1 = rand(1000)
|
||||
x2 = x1 + rand(25)
|
||||
y2 = y1 + rand(25)
|
||||
b = [(x1, x2), (y1, y2)]
|
||||
let el: L[2, int, int] = (b, i + 7)
|
||||
t.insert(el)
|
||||
rs.add(el)
|
||||
|
||||
for i in 0 .. (n div 4):
|
||||
let j = rand(rs.high)
|
||||
var el = rs[j]
|
||||
assert t.delete(el)
|
||||
assert rs.rseq_delete(el)
|
||||
for i in 0 .. (n div 4):
|
||||
let j = rand(rs.high)
|
||||
var el = rs[j]
|
||||
assert t.delete(el)
|
||||
assert rs.rseq_delete(el)
|
||||
|
||||
for i in 0 .. n - 1:
|
||||
x1 = rand(1000)
|
||||
y1 = rand(1000)
|
||||
x2 = x1 + rand(100)
|
||||
y2 = y1 + rand(100)
|
||||
b = [(x1, x2), (y1, y2)]
|
||||
let el: L[2, int, int] = (b, i)
|
||||
let r = search(t, b)
|
||||
let r2 = rseq_search(rs, el)
|
||||
assert r.len == r2.len
|
||||
assert r.sorted(system.cmp) == r2.sorted(system.cmp)
|
||||
for i in 0 .. n - 1:
|
||||
x1 = rand(1000)
|
||||
y1 = rand(1000)
|
||||
x2 = x1 + rand(100)
|
||||
y2 = y1 + rand(100)
|
||||
b = [(x1, x2), (y1, y2)]
|
||||
let el: L[2, int, int] = (b, i)
|
||||
let r = search(t, b)
|
||||
let r2 = rseq_search(rs, el)
|
||||
assert r.len == r2.len
|
||||
assert r.sorted(system.cmp) == r2.sorted(system.cmp)
|
||||
|
||||
test(1500)
|
||||
|
||||
# 651 lines
|
||||
test(1500)
|
||||
|
||||
# 651 lines
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue