v2 / vlib / io / io_test.v
41 lines · 36 sloc · 554 bytes · c6158e4519b8b495f9b46d4e1916f3927df3bb22
Raw
1import io
2
3struct Buf {
4pub:
5 bytes []u8
6mut:
7 i int
8}
9
10struct Writ {
11pub mut:
12 bytes []u8
13}
14
15fn (mut b Buf) read(mut buf []u8) !int {
16 if !(b.i < b.bytes.len) {
17 return io.Eof{}
18 }
19 n := copy(mut buf, b.bytes[b.i..])
20 b.i += n
21 return n
22}
23
24fn (mut w Writ) write(buf []u8) !int {
25 if buf.len <= 0 {
26 return error('none')
27 }
28 w.bytes << buf
29 return buf.len
30}
31
32fn test_copy() {
33 mut src := Buf{
34 bytes: 'abcdefghij'.repeat(10).bytes()
35 }
36 mut dst := Writ{
37 bytes: []u8{}
38 }
39 io.cp(mut src, mut dst) or { assert false }
40 assert dst.bytes == src.bytes
41}
42