v2 / vlib / io / multi_writer_test.v
49 lines · 40 sloc · 966 bytes · 3d60410b605d001e54f280070d5f952da9de1112
Raw
1module io
2
3fn test_multi_writer_write_successful() {
4 mut mw := new_multi_writer(&TestWriter{}, &TestWriter{})
5 n := mw.write('0123456789'.bytes()) or {
6 assert false
7 return
8 }
9 assert n == 10
10}
11
12fn test_multi_writer_write_incomplete() {
13 mut mw := new_multi_writer(&TestWriter{}, &TestIncompleteWriter{})
14 _ := mw.write('0123456789'.bytes()) or { return }
15 assert false
16}
17
18fn test_multi_writer_write_error() {
19 mut mw := new_multi_writer(&TestWriter{}, &TestErrorWriter{}, &TestWriter{})
20 _ := mw.write('0123456789'.bytes()) or { return }
21 assert false
22}
23
24struct TestWriter {
25pub mut:
26 bytes []u8
27}
28
29fn (mut w TestWriter) write(buf []u8) !int {
30 w.bytes << buf
31 return buf.len
32}
33
34struct TestIncompleteWriter {
35pub mut:
36 bytes []u8
37}
38
39fn (mut w TestIncompleteWriter) write(buf []u8) !int {
40 b := buf[..buf.len - 1]
41 w.bytes << b
42 return b.len
43}
44
45struct TestErrorWriter {}
46
47fn (mut w TestErrorWriter) write(buf []u8) !int {
48 return error('error writer errored')
49}
50