use http2::{ Flags,
FrameType,
Parser,
ParserState };
use http2::test::*;
#[test]
fn with_padding() {
let mut v = Vec::new();
pack_u32!(
v,
(
13 + 1 + 10 ) << 8
| 0x0 );
pack_u8!(v, 0x8);
pack_u32!(v, 0x7FFFFFFF);
pack_u8!(v, 10);
pack_bytes!(v, b"Hello, world!");
pack_bytes!(v, b"XXXXXXXXXX");
let mut h = DebugHandler::new();
let mut p = Parser::new();
p.resume(&mut h, &v);
assert!(Flags::from_u8(h.frame_flags).is_padded());
assert_eq!(
FrameType::from_u8(h.frame_type),
FrameType::Data
);
assert_eq!(
&h.data_data,
b"Hello, world!"
);
assert!(h.data_data_finished);
assert_eq!(
p.state(),
ParserState::FrameLength1
);
}
#[test]
fn without_padding() {
let mut v = Vec::new();
pack_u32!(
v,
(
13 ) << 8
| 0x0 );
pack_u8!(v, 0);
pack_u32!(v, 0x7FFFFFFF);
pack_bytes!(v, b"Hello, world!");
let mut h = DebugHandler::new();
let mut p = Parser::new();
p.resume(&mut h, &v);
assert!(Flags::from_u8(h.frame_flags).is_empty());
assert_eq!(
FrameType::from_u8(h.frame_type),
FrameType::Data
);
assert_eq!(
&h.data_data,
b"Hello, world!"
);
assert!(h.data_data_finished);
assert_eq!(
p.state(),
ParserState::FrameLength1
);
}