make test green

This commit is contained in:
andri lim 2019-09-03 14:18:17 +07:00 committed by zah
parent d954859d58
commit 4378d9fc93
4 changed files with 40 additions and 40 deletions

View File

@ -68,6 +68,7 @@ func load64(b: openArray[byte]): uint64 {.inline.} =
func load64(b: openArray[byte], i: int): uint64 = func load64(b: openArray[byte], i: int): uint64 =
result = load64(b[i..<i+8]) result = load64(b[i..<i+8])
import typetraits
# emitLiteral writes a literal chunk. # emitLiteral writes a literal chunk.
# #
# It assumes that: # It assumes that:
@ -79,11 +80,11 @@ proc emitLiteral(s: OutputStreamVar, lit: openarray[byte]) =
s.append (byte(n) shl 2) or tagLiteral s.append (byte(n) shl 2) or tagLiteral
elif n < (1 shl 8): elif n < (1 shl 8):
s.append (60 shl 2) or tagLiteral s.append (60 shl 2) or tagLiteral
s.append byte(n) s.append byte(n and 0xFF)
else: else:
s.append (61 shl 2) or tagLiteral s.append (61 shl 2) or tagLiteral
s.append byte(n) s.append byte(n and 0xFF)
s.append byte(n shr 8) s.append byte((n shr 8) and 0xFF)
s.append lit s.append lit
@ -106,27 +107,26 @@ proc emitCopy(s: OutputStreamVar, offset, length: int) =
while length >= 68: while length >= 68:
# Emit a length 64 copy, encoded as 3 bytes. # Emit a length 64 copy, encoded as 3 bytes.
s.append (63 shl 2) or tagCopy2 s.append (63 shl 2) or tagCopy2
s.append byte(offset) s.append byte(offset and 0xFF)
s.append byte(offset shr 8) s.append byte((offset shr 8) and 0xFF)
dec(length, 64) dec(length, 64)
if length > 64: if length > 64:
# Emit a length 60 copy, encoded as 3 bytes. # Emit a length 60 copy, encoded as 3 bytes.
s.append (59 shl 2) or tagCopy2 s.append (59 shl 2) or tagCopy2
s.append byte(offset) s.append byte(offset and 0xFF)
s.append byte(offset shr 8) s.append byte((offset shr 8) and 0xFF)
dec(length, 60) dec(length, 60)
if (length >= 12) or (offset >= 2048): if (length >= 12) or (offset >= 2048):
# Emit the remaining copy, encoded as 3 bytes. # Emit the remaining copy, encoded as 3 bytes.
s.append (byte(length-1) shl 2) or tagCopy2 s.append byte((((length-1) shl 2) or tagCopy2) and 0xFF)
s.append byte(offset) s.append byte(offset and 0xFF)
s.append byte(offset shr 8) s.append byte((offset shr 8) and 0xFF)
return return
# Emit the remaining copy, encoded as 2 bytes. s.append byte((((offset shr 8) shl 5) or ((length-4) shl 2) or tagCopy1) and 0xFF)
s.append (byte(offset shr 8) shl 5) or (byte(length-4) shl 2) or tagCopy1 s.append byte(offset and 0xFF)
s.append byte(offset)
when false: when false:
# extendMatch returns the largest k such that k <= len(src) and that # extendMatch returns the largest k such that k <= len(src) and that

View File

@ -89,8 +89,8 @@ proc emitLiteral(s: Stream, lit: openarray[byte]) =
s.writeByte byte(n) s.writeByte byte(n)
else: else:
s.writeByte (61 shl 2) or tagLiteral s.writeByte (61 shl 2) or tagLiteral
s.writeByte byte(n) s.writeByte byte(n and 0xFF)
s.writeByte byte(n shr 8) s.writeByte byte((n shr 8) and 0xFF)
s.writeBytes lit s.writeBytes lit
@ -113,27 +113,26 @@ proc emitCopy(s: Stream, offset, length: int) =
while length >= 68: while length >= 68:
# Emit a length 64 copy, encoded as 3 bytes. # Emit a length 64 copy, encoded as 3 bytes.
s.writeByte (63 shl 2) or tagCopy2 s.writeByte (63 shl 2) or tagCopy2
s.writeByte byte(offset) s.writeByte byte(offset and 0xFF)
s.writeByte byte(offset shr 8) s.writeByte byte((offset shr 8) and 0xFF)
dec(length, 64) dec(length, 64)
if length > 64: if length > 64:
# Emit a length 60 copy, encoded as 3 bytes. # Emit a length 60 copy, encoded as 3 bytes.
s.writeByte (59 shl 2) or tagCopy2 s.writeByte (59 shl 2) or tagCopy2
s.writeByte byte(offset) s.writeByte byte(offset and 0xFF)
s.writeByte byte(offset shr 8) s.writeByte byte((offset shr 8) and 0xFF)
dec(length, 60) dec(length, 60)
if (length >= 12) or (offset >= 2048): if (length >= 12) or (offset >= 2048):
# Emit the remaining copy, encoded as 3 bytes. # Emit the remaining copy, encoded as 3 bytes.
s.writeByte (byte(length-1) shl 2) or tagCopy2 s.writeByte byte((((length-1) shl 2) or tagCopy2) and 0xFF)
s.writeByte byte(offset) s.writeByte byte(offset and 0xFF)
s.writeByte byte(offset shr 8) s.writeByte byte((offset shr 8) and 0xFF)
return return
# Emit the remaining copy, encoded as 2 bytes. s.writeByte byte((((offset shr 8) shl 5) or ((length-4) shl 2) or tagCopy1) and 0xFF)
s.writeByte (byte(offset shr 8) shl 5) or (byte(length-4) shl 2) or tagCopy1 s.writeByte byte(offset and 0xFF)
s.writeByte byte(offset)
when false: when false:
# extendMatch returns the largest k such that k <= len(src) and that # extendMatch returns the largest k such that k <= len(src) and that

View File

@ -89,8 +89,8 @@ func emitLiteral(dst: var openArray[byte], lit: openArray[byte]): int =
i = 2 i = 2
else: else:
dst[0] = (61 shl 2) or tagLiteral dst[0] = (61 shl 2) or tagLiteral
dst[1] = byte(n) dst[1] = byte(n and 0xFF)
dst[2] = byte(n shr 8) dst[2] = byte((n shr 8) and 0xFF)
i = 3 i = 3
copyMem(dst[i].addr, lit[0].unsafeAddr, lit.len) copyMem(dst[i].addr, lit[0].unsafeAddr, lit.len)
@ -119,29 +119,29 @@ func emitCopy(dst: var openArray[byte], offset, length: int): int =
while length >= 68: while length >= 68:
# Emit a length 64 copy, encoded as 3 bytes. # Emit a length 64 copy, encoded as 3 bytes.
dst[i+0] = (63 shl 2) or tagCopy2 dst[i+0] = (63 shl 2) or tagCopy2
dst[i+1] = byte(offset) dst[i+1] = byte(offset and 0xFF)
dst[i+2] = byte(offset shr 8) dst[i+2] = byte((offset shr 8) and 0xFF)
inc(i, 3) inc(i, 3)
dec(length, 64) dec(length, 64)
if length > 64: if length > 64:
# Emit a length 60 copy, encoded as 3 bytes. # Emit a length 60 copy, encoded as 3 bytes.
dst[i+0] = (59 shl 2) or tagCopy2 dst[i+0] = (59 shl 2) or tagCopy2
dst[i+1] = byte(offset) dst[i+1] = byte(offset and 0xFF)
dst[i+2] = byte(offset shr 8) dst[i+2] = byte((offset shr 8) and 0xFF)
inc(i, 3) inc(i, 3)
dec(length, 60) dec(length, 60)
if (length >= 12) or (offset >= 2048): if (length >= 12) or (offset >= 2048):
# Emit the remaining copy, encoded as 3 bytes. # Emit the remaining copy, encoded as 3 bytes.
dst[i+0] = (byte(length-1) shl 2) or tagCopy2 dst[i+0] = (byte(length-1) shl 2) or tagCopy2
dst[i+1] = byte(offset) dst[i+1] = byte(offset and 0xFF)
dst[i+2] = byte(offset shr 8) dst[i+2] = byte((offset shr 8) and 0xFF)
return i + 3 return i + 3
# Emit the remaining copy, encoded as 2 bytes. # Emit the remaining copy, encoded as 2 bytes.
dst[i+0] = (byte(offset shr 8) shl 5) or (byte(length-4) shl 2) or tagCopy1 dst[i+0] = byte((((offset shr 8) shl 5) or ((length-4) shl 2) or tagCopy1) and 0xFF)
dst[i+1] = byte(offset) dst[i+1] = byte(offset and 0xFF)
result = i + 2 result = i + 2
when false: when false:

View File

@ -142,11 +142,12 @@ proc roundTripRev(msg: string, sourceName: string): bool =
template toBytes(s: string): auto = template toBytes(s: string): auto =
toOpenArrayByte(s, 0, s.len-1) toOpenArrayByte(s, 0, s.len-1)
proc compressFileWithFaststreams(src, dst: string) = when false:
var input = faststreams.openFile(src) proc compressFileWithFaststreams(src, dst: string) =
var output = OutputStream.init(dst) var input = faststreams.openFile(src)
output.appendSnappyBytes input.readBytes(input.endPos - 1) var output = OutputStream.init(dst)
output.flush() output.appendSnappyBytes input.readBytes(input.endPos - 1)
output.flush()
proc compressFileWithNimStreams(src, dst: string) = proc compressFileWithNimStreams(src, dst: string) =
var input = newFileStream(src, fmRead) var input = newFileStream(src, fmRead)