module io struct Buf { pub: bytes []byte mut: i int } fn (mut b Buf) read(mut buf []byte) ?int { if !(b.i < b.bytes.len) { return eof } n := copy(buf, b.bytes[b.i..b.bytes.len]) b.i += n return n } fn test_read_all() { buf := Buf{ bytes: '123'.repeat(10).bytes() } res := read_all(buf) or { assert false ''.bytes() } assert res == '123'.repeat(10).bytes() } /* TODO: This test failed by a bug of read_all fn test_read_all_huge() { buf := Buf{bytes: "123".repeat(100000).bytes()} res := read_all(buf) or { assert false "".bytes() } assert res == "123".repeat(100000).bytes() } */