makes tests green
This commit is contained in:
parent
46f1f41cc9
commit
0d4e52c648
10 changed files with 36 additions and 32 deletions
|
|
@ -57,7 +57,7 @@ proc addHandler*(handler: var EventHandler, fn: proc(e: EventArgs) {.closure.})
|
||||||
|
|
||||||
proc removeHandler*(handler: var EventHandler, fn: proc(e: EventArgs) {.closure.}) =
|
proc removeHandler*(handler: var EventHandler, fn: proc(e: EventArgs) {.closure.}) =
|
||||||
## Removes the callback from the specified event handler.
|
## Removes the callback from the specified event handler.
|
||||||
for i in countup(0, len(handler.handlers) -1):
|
for i in countup(0, len(handler.handlers)-1):
|
||||||
if fn == handler.handlers[i]:
|
if fn == handler.handlers[i]:
|
||||||
handler.handlers.del(i)
|
handler.handlers.del(i)
|
||||||
break
|
break
|
||||||
|
|
|
||||||
|
|
@ -143,7 +143,7 @@ proc main() =
|
||||||
# Create long-lived array, filling half of it
|
# Create long-lived array, filling half of it
|
||||||
echo(" Creating a long-lived array of " & $kArraySize & " doubles")
|
echo(" Creating a long-lived array of " & $kArraySize & " doubles")
|
||||||
newSeq(myarray, kArraySize)
|
newSeq(myarray, kArraySize)
|
||||||
for i in 0..kArraySize div 2 -1:
|
for i in 0..kArraySize div 2 - 1:
|
||||||
myarray[i] = 1.0 / toFloat(i)
|
myarray[i] = 1.0 / toFloat(i)
|
||||||
|
|
||||||
PrintDiagnostics()
|
PrintDiagnostics()
|
||||||
|
|
|
||||||
|
|
@ -69,7 +69,7 @@ proc cmp[T:int8|int16|int32|int64|int] (a,b: T): T {.inline.} =
|
||||||
template binSearchImpl *(docmp: expr) {.immediate.} =
|
template binSearchImpl *(docmp: expr) {.immediate.} =
|
||||||
var bFound = false
|
var bFound = false
|
||||||
result = 0
|
result = 0
|
||||||
var H = haystack.len -1
|
var H = haystack.len - 1
|
||||||
while result <= H :
|
while result <= H :
|
||||||
var I {.inject.} = (result + H) shr 1
|
var I {.inject.} = (result + H) shr 1
|
||||||
var SW = docmp
|
var SW = docmp
|
||||||
|
|
@ -90,7 +90,7 @@ proc DeleteItem[T,D] (n: PNode[T,D], x: int): PNode[T,D] {.inline.} =
|
||||||
return n
|
return n
|
||||||
dec(n.count)
|
dec(n.count)
|
||||||
if n.count > 0 :
|
if n.count > 0 :
|
||||||
for i in countup(x, n.count -1) : n.slots[i] = n.slots[i + 1]
|
for i in countup(x, n.count - 1) : n.slots[i] = n.slots[i + 1]
|
||||||
n.slots[n.count] = nil
|
n.slots[n.count] = nil
|
||||||
case n.count
|
case n.count
|
||||||
of cLen1 : setLen(n.slots, cLen1)
|
of cLen1 : setLen(n.slots, cLen1)
|
||||||
|
|
@ -121,7 +121,7 @@ proc internalDelete[T,D] (ANode: PNode[T,D], key: T, Avalue: var D): PNode[T,D]
|
||||||
if x == 0 :
|
if x == 0 :
|
||||||
n = n.left
|
n = n.left
|
||||||
else :
|
else :
|
||||||
x = (-x) -1
|
x = (-x) - 1
|
||||||
if x < n.count :
|
if x < n.count :
|
||||||
n = n.slots[x].node
|
n = n.slots[x].node
|
||||||
else :
|
else :
|
||||||
|
|
@ -132,10 +132,10 @@ proc internalDelete[T,D] (ANode: PNode[T,D], key: T, Avalue: var D): PNode[T,D]
|
||||||
Avalue = n.slots[x].value
|
Avalue = n.slots[x].value
|
||||||
var n2 = DeleteItem(n, x)
|
var n2 = DeleteItem(n, x)
|
||||||
dec(h)
|
dec(h)
|
||||||
while (n2 != n) and (h >=0) :
|
while (n2 != n) and (h >= 0) :
|
||||||
n = n2
|
n = n2
|
||||||
var w = addr Path[h]
|
var w = addr Path[h]
|
||||||
x = w.Xi -1
|
x = w.Xi - 1
|
||||||
if x >= 0 :
|
if x >= 0 :
|
||||||
if (n == nil) and isClean(w.Nd, x) :
|
if (n == nil) and isClean(w.Nd, x) :
|
||||||
n = w.Nd
|
n = w.Nd
|
||||||
|
|
@ -160,7 +160,7 @@ proc internalFind[T,D] (n: PNode[T,D], key: T): ref TItem[T,D] {.inline.} =
|
||||||
if x == 0 :
|
if x == 0 :
|
||||||
wn = wn.left
|
wn = wn.left
|
||||||
else :
|
else :
|
||||||
x = (-x) -1
|
x = (-x) - 1
|
||||||
if x < wn.count :
|
if x < wn.count :
|
||||||
wn = wn.slots[x].node
|
wn = wn.slots[x].node
|
||||||
else :
|
else :
|
||||||
|
|
@ -199,7 +199,7 @@ proc traceTree[T,D](root: PNode[T,D]) =
|
||||||
if n.left != nil:
|
if n.left != nil:
|
||||||
traceln(space)
|
traceln(space)
|
||||||
write stdout, "left: "
|
write stdout, "left: "
|
||||||
doTrace(n.left, level +1)
|
doTrace(n.left, level+1)
|
||||||
for i, el in n.slots :
|
for i, el in n.slots :
|
||||||
if el != nil and not isClean(el):
|
if el != nil and not isClean(el):
|
||||||
traceln(space)
|
traceln(space)
|
||||||
|
|
@ -208,7 +208,7 @@ proc traceTree[T,D](root: PNode[T,D]) =
|
||||||
write stdout, "error "
|
write stdout, "error "
|
||||||
else:
|
else:
|
||||||
traceEl(el)
|
traceEl(el)
|
||||||
if el.node != nil: doTrace(el.node, level +1)
|
if el.node != nil: doTrace(el.node, level+1)
|
||||||
else : write stdout, " empty "
|
else : write stdout, " empty "
|
||||||
elif i < n.count :
|
elif i < n.count :
|
||||||
traceln(space)
|
traceln(space)
|
||||||
|
|
@ -217,7 +217,7 @@ proc traceTree[T,D](root: PNode[T,D]) =
|
||||||
when T is string :
|
when T is string :
|
||||||
if el.key != nil: write stdout, el.key
|
if el.key != nil: write stdout, el.key
|
||||||
else : write stdout, el.key
|
else : write stdout, el.key
|
||||||
if el.node != nil: doTrace(el.node, level +1)
|
if el.node != nil: doTrace(el.node, level+1)
|
||||||
else : write stdout, " empty "
|
else : write stdout, " empty "
|
||||||
writeLine stdout,""
|
writeLine stdout,""
|
||||||
|
|
||||||
|
|
@ -245,25 +245,25 @@ proc SplitPage[T,D](n, left: PNode[T,D], xi: int, Akey:var T, Avalue:var D): PNo
|
||||||
result.slots.newSeq(cLenCenter)
|
result.slots.newSeq(cLenCenter)
|
||||||
result.count = cCenter
|
result.count = cCenter
|
||||||
if x == cCenter:
|
if x == cCenter:
|
||||||
for i in 0..cCenter -1: shallowCopy(it1[i], left.slots[i])
|
for i in 0..cCenter-1: shallowCopy(it1[i], left.slots[i])
|
||||||
for i in 0..cCenter -1: shallowCopy(result.slots[i], left.slots[cCenter + i])
|
for i in 0..cCenter-1: shallowCopy(result.slots[i], left.slots[cCenter + i])
|
||||||
result.left = n
|
result.left = n
|
||||||
else :
|
else :
|
||||||
if x < cCenter :
|
if x < cCenter :
|
||||||
for i in 0..x-1: shallowCopy(it1[i], left.slots[i])
|
for i in 0..x-1: shallowCopy(it1[i], left.slots[i])
|
||||||
it1[x] = setItem(Akey, Avalue, n)
|
it1[x] = setItem(Akey, Avalue, n)
|
||||||
for i in x+1 .. cCenter -1: shallowCopy(it1[i], left.slots[i-1])
|
for i in x+1 .. cCenter-1: shallowCopy(it1[i], left.slots[i-1])
|
||||||
var w = left.slots[cCenter -1]
|
var w = left.slots[cCenter-1]
|
||||||
Akey = w.key
|
Akey = w.key
|
||||||
Avalue = w.value
|
Avalue = w.value
|
||||||
result.left = w.node
|
result.left = w.node
|
||||||
for i in 0..cCenter -1: shallowCopy(result.slots[i], left.slots[cCenter + i])
|
for i in 0..cCenter-1: shallowCopy(result.slots[i], left.slots[cCenter + i])
|
||||||
else :
|
else :
|
||||||
for i in 0..cCenter -1: shallowCopy(it1[i], left.slots[i])
|
for i in 0..cCenter-1: shallowCopy(it1[i], left.slots[i])
|
||||||
x = x - (cCenter + 1)
|
x = x - (cCenter + 1)
|
||||||
for i in 0..x-1: shallowCopy(result.slots[i], left.slots[cCenter + i + 1])
|
for i in 0..x-1: shallowCopy(result.slots[i], left.slots[cCenter + i + 1])
|
||||||
result.slots[x] = setItem(Akey, Avalue, n)
|
result.slots[x] = setItem(Akey, Avalue, n)
|
||||||
for i in x+1 .. cCenter -1: shallowCopy(result.slots[i], left.slots[cCenter + i])
|
for i in x+1 .. cCenter-1: shallowCopy(result.slots[i], left.slots[cCenter + i])
|
||||||
var w = left.slots[cCenter]
|
var w = left.slots[cCenter]
|
||||||
Akey = w.key
|
Akey = w.key
|
||||||
Avalue = w.value
|
Avalue = w.value
|
||||||
|
|
@ -290,7 +290,7 @@ proc internalPut[T,D](ANode: ref TNode[T,D], Akey: T, Avalue: D, Oldvalue: var D
|
||||||
if x == 0 :
|
if x == 0 :
|
||||||
n = n.left
|
n = n.left
|
||||||
else :
|
else :
|
||||||
x = (-x) -1
|
x = (-x)-1
|
||||||
if x < n.count :
|
if x < n.count :
|
||||||
n = n.slots[x].node
|
n = n.slots[x].node
|
||||||
else :
|
else :
|
||||||
|
|
|
||||||
|
|
@ -277,7 +277,7 @@ when isMainModule:
|
||||||
s.flush
|
s.flush
|
||||||
|
|
||||||
defPacket(Y, tuple[z: int8])
|
defPacket(Y, tuple[z: int8])
|
||||||
proc `$`(z: Y): string = result = "Y("& $z.z &")"
|
proc `$`(z: Y): string = result = "Y(" & $z.z & ")"
|
||||||
defPacket(TestPkt, tuple[x: seq[Y]])
|
defPacket(TestPkt, tuple[x: seq[Y]])
|
||||||
var test = newTestPkt()
|
var test = newTestPkt()
|
||||||
test.x.add([newY(5), newY(4), newY(3), newY(2), newY(1)])
|
test.x.add([newY(5), newY(4), newY(3), newY(2), newY(1)])
|
||||||
|
|
|
||||||
|
|
@ -66,7 +66,7 @@ proc handlePackets*(server: PServer; buf: PBuffer) =
|
||||||
proc updateFileProgress*() =
|
proc updateFileProgress*() =
|
||||||
let progress = currentFileTransfer.pos / currentFileTransfer.fullLen
|
let progress = currentFileTransfer.pos / currentFileTransfer.fullLen
|
||||||
downloadProgress.bg.setSize(vec2f(progress * 100, 20))
|
downloadProgress.bg.setSize(vec2f(progress * 100, 20))
|
||||||
downloadProgress.setString($currentFileTransfer.pos &'/'& $currentFileTransfer.fullLen)
|
downloadProgress.setString($currentFileTransfer.pos & '/' & $currentFileTransfer.fullLen)
|
||||||
|
|
||||||
## HFileTransfer
|
## HFileTransfer
|
||||||
proc handleFilePartRecv*(serv: PServer; buffer: PBuffer) {.procvar.} =
|
proc handleFilePartRecv*(serv: PServer; buffer: PBuffer) {.procvar.} =
|
||||||
|
|
|
||||||
|
|
@ -573,13 +573,13 @@ proc importItem(data: PJsonNode; errors: var seq[string]): PItemRecord =
|
||||||
elif data[2]["bullet"].kind == JObject:
|
elif data[2]["bullet"].kind == JObject:
|
||||||
result.bullet = importBullet(data[2]["bullet"], errors)
|
result.bullet = importBullet(data[2]["bullet"], errors)
|
||||||
else:
|
else:
|
||||||
errors.add "UNKNOWN BULLET TYPE for item "& result.name
|
errors.add "UNKNOWN BULLET TYPE for item " & result.name
|
||||||
of "ammo":
|
of "ammo":
|
||||||
result.kind = Ammo
|
result.kind = Ammo
|
||||||
of "utility":
|
of "utility":
|
||||||
nil
|
nil
|
||||||
else:
|
else:
|
||||||
errors.add "Invalid item type \""& data[1].str &"\" for item "& result.name
|
errors.add "Invalid item type \""&data[1].str&"\" for item "&result.name
|
||||||
|
|
||||||
proc importBullet(data: PJsonNode; errors: var seq[string]): PBulletRecord =
|
proc importBullet(data: PJsonNode; errors: var seq[string]): PBulletRecord =
|
||||||
new(result)
|
new(result)
|
||||||
|
|
|
||||||
|
|
@ -146,7 +146,7 @@ task "download", "download game assets":
|
||||||
|
|
||||||
task "zip-lib", "zip up the libs dir":
|
task "zip-lib", "zip up the libs dir":
|
||||||
var z: TZipArchive
|
var z: TZipArchive
|
||||||
if not z.open("libs-"& getDateStr() &".zip", fmReadWrite):
|
if not z.open("libs-" & getDateStr() & ".zip", fmReadWrite):
|
||||||
quit "Could not open zip"
|
quit "Could not open zip"
|
||||||
for file in walkDirRec("libs", {pcFile, pcDir}):
|
for file in walkDirRec("libs", {pcFile, pcDir}):
|
||||||
echo "adding file ", file
|
echo "adding file ", file
|
||||||
|
|
|
||||||
|
|
@ -764,7 +764,7 @@ proc match*(s: string, pattern: TPeg, matches: var openarray[string],
|
||||||
## returned.
|
## returned.
|
||||||
var c: TCaptures
|
var c: TCaptures
|
||||||
c.origStart = start
|
c.origStart = start
|
||||||
result = rawMatch(s, pattern, start, c) == len(s) -start
|
result = rawMatch(s, pattern, start, c) == len(s)-start
|
||||||
if result:
|
if result:
|
||||||
for i in 0..c.ml-1:
|
for i in 0..c.ml-1:
|
||||||
matches[i] = substr(s, c.matches[i][0], c.matches[i][1])
|
matches[i] = substr(s, c.matches[i][0], c.matches[i][1])
|
||||||
|
|
|
||||||
|
|
@ -10,14 +10,14 @@ import strutils
|
||||||
import os
|
import os
|
||||||
|
|
||||||
type
|
type
|
||||||
TMessageReceivedEventArgs = object of TEventArgs
|
TMessageReceivedEventArgs = object of EventArgs
|
||||||
Nick*: string
|
Nick*: string
|
||||||
Message*: string
|
Message*: string
|
||||||
TIRC = object
|
TIRC = object
|
||||||
EventEmitter: TEventEmitter
|
EventEmitter: EventEmitter
|
||||||
MessageReceivedHandler*: TEventHandler
|
MessageReceivedHandler*: EventHandler
|
||||||
Socket: TSocket
|
Socket: Socket
|
||||||
Thread: TThread[TIRC]
|
Thread: Thread[TIRC]
|
||||||
|
|
||||||
proc initIRC*(): TIRC =
|
proc initIRC*(): TIRC =
|
||||||
result.Socket = socket()
|
result.Socket = socket()
|
||||||
|
|
@ -49,8 +49,8 @@ proc handleData(irc: TIRC) {.thread.} =
|
||||||
return
|
return
|
||||||
|
|
||||||
proc Connect*(irc: var TIRC, nick: string, host: string, port: int = 6667) =
|
proc Connect*(irc: var TIRC, nick: string, host: string, port: int = 6667) =
|
||||||
connect(irc.Socket ,host ,TPort(port),TDomain.AF_INET)
|
connect(irc.Socket, host, TPort(port), TDomain.AF_INET)
|
||||||
send(irc.Socket,"USER " & nick & " " & nick & " " & nick & " " & nick &"\r\L")
|
send(irc.Socket,"USER " & nick & " " & nick & " " & nick & " " & nick & "\r\L")
|
||||||
send(irc.Socket,"NICK " & nick & "\r\L")
|
send(irc.Socket,"NICK " & nick & "\r\L")
|
||||||
var thread: TThread[TIRC]
|
var thread: TThread[TIRC]
|
||||||
createThread(thread, handleData, irc)
|
createThread(thread, handleData, irc)
|
||||||
|
|
|
||||||
|
|
@ -33,6 +33,10 @@ News
|
||||||
|
|
||||||
``echo $ foo`` continues to be parsed as ``(echo) $ (foo)``.
|
``echo $ foo`` continues to be parsed as ``(echo) $ (foo)``.
|
||||||
|
|
||||||
|
This also means that ``-1`` is always parsed as prefix operator so
|
||||||
|
code like ``0..kArraySize div 2 -1`` needs to be changed to
|
||||||
|
``0..kArraySize div 2 - 1``.
|
||||||
|
|
||||||
|
|
||||||
Iterator changes
|
Iterator changes
|
||||||
~~~~~~~~~~~~~~~~
|
~~~~~~~~~~~~~~~~
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue