Re: More fuzz testing
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
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
printSeq is writing to stdout itself before returning a default value empty string.
Re: More fuzz testing
I would expect print first 1 3 5 7 printSeq(seq1 ,2) 1 3 Run
Re: More fuzz testing
what's the bug?
More fuzz testing
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