Re: More fuzz testing

2020-06-23 Thread Araq
Because `write` collects all the arguments in an array? See 
[https://nim-lang.org/docs/io.html#write%2CFile%2Cvarargs%5Bstring%2C%5D](https://nim-lang.org/docs/io.html#write%2CFile%2Cvarargs%5Bstring%2C%5D)

Reading the docs can beat "fuzzing".


Re: More fuzz testing

2020-06-23 Thread neo
I am still trying to figure out the logic


let sp = ' '
let seq1 = @[1, 3, 5, 7]

proc printSeq(s: seq, nprinted: int = -1) :string =
  var nprinted = if nprinted == -1: s.len else: min(nprinted, s.len)
  for i in 0 ..< nprinted:
write(stdout, s[i], sp)

write(stdout, "print first", printSeq(seq1), "\L")
write(stdout, printSeq(seq1), "print first", "\L")

write(stdout, "print first ")
write(stdout, printSeq(seq1), "\L")

Run


1 3 5 7 print first
1 3 5 7 print first
print first 1 3 5 7


Run

Why would "print first" not be streamed to stdout first?


Re: More fuzz testing

2020-06-22 Thread quetzalb
printSeq is writing to stdout itself before returning a default value empty 
string.


Re: More fuzz testing

2020-06-22 Thread neo
I would expect


print first 1 3 5 7
printSeq(seq1 ,2) 1 3


Run


Re: More fuzz testing

2020-06-22 Thread SolitudeSF
what's the bug?


More fuzz testing

2020-06-22 Thread neo
Follows an edge case, an unexpected behaviour or a programmer's bug?


let sp = ' '
let seq1 = @[1, 3, 5, 7]

proc printSeq(s: seq, nprinted: int = -1) :string =
  var nprinted = if nprinted == -1: s.len else: min(nprinted, s.len)
  for i in 0 ..< nprinted:
write(stdout, s[i], sp)

write(stdout, "print first", printSeq(seq1), "\L")

echo "printSeq(seq1, 2)", printSeq(seq1, 2)

Run

ouputs


1 3 5 7 print first
1 3 printSeq(seq1 ,2)


Run