From d0ee87febaee67947c1bede77d12e965704d0ec7 Mon Sep 17 00:00:00 2001 From: Benjamin Saunders Date: Tue, 1 May 2018 19:37:16 -0700 Subject: [PATCH] core: test finishing streams --- tests/tests.rs | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) diff --git a/tests/tests.rs b/tests/tests.rs index ef7b2fd45..e448cbace 100644 --- a/tests/tests.rs +++ b/tests/tests.rs @@ -189,6 +189,26 @@ fn stateless_reset() { assert_matches!(pair.client.poll(), Some((conn, Event::ConnectionLost { reason: ConnectionError::Reset })) if conn == client_conn); } +#[test] +fn finish_stream() { + let mut pair = Pair::new(Config { max_remote_uni_streams: 1, ..Config::default()}, Config::default()); + let (client_conn, server_conn) = pair.connect(); + + let s = pair.client.open(client_conn, Directionality::Uni).unwrap(); + + const MSG: &[u8] = b"hello"; + pair.client.write(client_conn, s, MSG).unwrap(); + pair.client.finish(client_conn, s); + pair.drive(); + + assert_matches!(pair.client.poll(), Some((conn, Event::StreamFinished { stream })) if conn == client_conn && stream == s); + assert_matches!(pair.client.poll(), None); + assert_matches!(pair.server.poll(), Some((conn, Event::StreamReadable { stream, fresh: true })) if conn == server_conn && stream == s); + assert_matches!(pair.server.poll(), None); + assert_matches!(pair.server.read_unordered(server_conn, s), Ok((ref data, 0)) if data == MSG); + assert_matches!(pair.server.read_unordered(server_conn, s), Err(ReadError::Finished)); +} + #[test] fn reset_stream() { let mut pair = Pair::new(Config { max_remote_uni_streams: 1, ..Config::default()}, Config::default());