add io.readChars overload (simpler, less error prone) (#16044)
* add simpler to use readChars overload * use new readChars overload * Update lib/wrappers/openssl.nim Co-authored-by: Andreas Rumpf <rumpf_a@web.de> Co-authored-by: flywind <xzsflywind@gmail.com>
This commit is contained in:
parent
a1f4113705
commit
ce7caec4b3
5 changed files with 50 additions and 6 deletions
37
tests/stdlib/tio.nim
Normal file
37
tests/stdlib/tio.nim
Normal file
|
|
@ -0,0 +1,37 @@
|
|||
# xxx move to here other tests that belong here; io is a proper module
|
||||
|
||||
import std/os
|
||||
from stdtest/specialpaths import buildDir
|
||||
|
||||
block: # readChars
|
||||
let file = buildDir / "D20201118T205105.txt"
|
||||
let s = "he\0l\0lo"
|
||||
writeFile(file, s)
|
||||
defer: removeFile(file)
|
||||
let f = open(file)
|
||||
defer: close(f)
|
||||
let n = f.getFileInfo.blockSize
|
||||
var buf = newString(n)
|
||||
template fn =
|
||||
let n2 = f.readChars(buf)
|
||||
doAssert n2 == s.len
|
||||
doAssert buf[0..<n2] == s
|
||||
fn()
|
||||
setFilePos(f, 0)
|
||||
fn()
|
||||
|
||||
block:
|
||||
setFilePos(f, 0)
|
||||
var s2: string
|
||||
let nSmall = 2
|
||||
for ai in buf.mitems: ai = '\0'
|
||||
var n2s: seq[int]
|
||||
while true:
|
||||
let n2 = f.readChars(toOpenArray(buf, 0, nSmall-1))
|
||||
# xxx: maybe we could support: toOpenArray(buf, 0..nSmall)
|
||||
n2s.add n2
|
||||
s2.add buf[0..<n2]
|
||||
if n2 == 0:
|
||||
break
|
||||
doAssert n2s == @[2,2,2,1,0]
|
||||
doAssert s2 == s
|
||||
Loading…
Add table
Add a link
Reference in a new issue