in neqo-http3/src/connection_client.rs [2442:2525]
fn frame_reading() {
let (mut client, mut server) = connect_only_transport();
// create a control stream.
let control_stream = server.conn.stream_create(StreamType::UniDi).unwrap();
// send the stream type
let mut sent = server.conn.stream_send(control_stream, &[0x0]);
assert_eq!(sent, Ok(1));
let out = server.conn.process_output(now());
client.process(out.dgram(), now());
// start sending SETTINGS frame
sent = server.conn.stream_send(control_stream, &[0x4]);
assert_eq!(sent, Ok(1));
let out = server.conn.process_output(now());
client.process(out.dgram(), now());
sent = server.conn.stream_send(control_stream, &[0x4]);
assert_eq!(sent, Ok(1));
let out = server.conn.process_output(now());
client.process(out.dgram(), now());
sent = server.conn.stream_send(control_stream, &[0x6]);
assert_eq!(sent, Ok(1));
let out = server.conn.process_output(now());
client.process(out.dgram(), now());
sent = server.conn.stream_send(control_stream, &[0x0]);
assert_eq!(sent, Ok(1));
let out = server.conn.process_output(now());
client.process(out.dgram(), now());
sent = server.conn.stream_send(control_stream, &[0x8]);
assert_eq!(sent, Ok(1));
let out = server.conn.process_output(now());
client.process(out.dgram(), now());
sent = server.conn.stream_send(control_stream, &[0x0]);
assert_eq!(sent, Ok(1));
let out = server.conn.process_output(now());
client.process(out.dgram(), now());
assert_eq!(client.state(), Http3State::Connected);
// Now test PushPromise
sent = server.conn.stream_send(control_stream, &[0x5]);
assert_eq!(sent, Ok(1));
let out = server.conn.process_output(now());
client.process(out.dgram(), now());
sent = server.conn.stream_send(control_stream, &[0x5]);
assert_eq!(sent, Ok(1));
let out = server.conn.process_output(now());
client.process(out.dgram(), now());
sent = server.conn.stream_send(control_stream, &[0x4]);
assert_eq!(sent, Ok(1));
let out = server.conn.process_output(now());
client.process(out.dgram(), now());
sent = server.conn.stream_send(control_stream, &[0x61]);
assert_eq!(sent, Ok(1));
let out = server.conn.process_output(now());
client.process(out.dgram(), now());
sent = server.conn.stream_send(control_stream, &[0x62]);
assert_eq!(sent, Ok(1));
let out = server.conn.process_output(now());
client.process(out.dgram(), now());
sent = server.conn.stream_send(control_stream, &[0x63]);
assert_eq!(sent, Ok(1));
let out = server.conn.process_output(now());
client.process(out.dgram(), now());
sent = server.conn.stream_send(control_stream, &[0x64]);
assert_eq!(sent, Ok(1));
let out = server.conn.process_output(now());
client.process(out.dgram(), now());
// PUSH_PROMISE on a control stream will cause an error
assert_closed(&client, &Error::HttpFrameUnexpected);
}