diff options
Diffstat (limited to 'src/libstd')
| -rw-r--r-- | src/libstd/io/net/tcp.rs | 21 |
1 files changed, 21 insertions, 0 deletions
diff --git a/src/libstd/io/net/tcp.rs b/src/libstd/io/net/tcp.rs index 52cca7f622b..c2a70e0120d 100644 --- a/src/libstd/io/net/tcp.rs +++ b/src/libstd/io/net/tcp.rs @@ -589,4 +589,25 @@ mod test { //peer_name(next_test_ip6()); socket_name(next_test_ip6()); }) + + iotest!(fn partial_read() { + let addr = next_test_ip4(); + let (p, c) = Chan::new(); + do spawn { + let mut srv = TcpListener::bind(addr).listen(); + c.send(()); + let mut cl = srv.accept().unwrap(); + cl.write([10]); + let mut b = [0]; + cl.read(b); + c.send(()); + } + + p.recv(); + let mut c = TcpStream::connect(addr).unwrap(); + let mut b = [0, ..10]; + assert_eq!(c.read(b), Some(1)); + c.write([1]); + p.recv(); + }) } |
