summaryrefslogtreecommitdiffstats
path: root/third_party/rust/futures/tests/io_read_exact.rs
blob: 6582e50b80aaf4e3c750592272eaac6be93cf1fd (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
use futures::executor::block_on;
use futures::io::AsyncReadExt;

#[test]
fn read_exact() {
    let mut reader: &[u8] = &[1, 2, 3, 4, 5];
    let mut out = [0u8; 3];

    let res = block_on(reader.read_exact(&mut out)); // read 3 bytes out
    assert!(res.is_ok());
    assert_eq!(out, [1, 2, 3]);
    assert_eq!(reader.len(), 2);

    let res = block_on(reader.read_exact(&mut out)); // read another 3 bytes, but only 2 bytes left
    assert!(res.is_err());
    assert_eq!(reader.len(), 0);
}