use http1::*;
use http1::test::*;
use test::*;
macro_rules! setup {
() => ({
let (mut p, mut h) = http1_setup!();
assert_eos(
&mut p,
&mut h,
b"GET ",
ParserState::RequestUrl1,
b"GET ".len()
);
(p, h)
});
}
#[test]
fn allowed() {
for b in visible_7bit_vec().iter() {
let (mut p, mut h) = setup!();
assert_eos(
&mut p,
&mut h,
&[*b],
ParserState::RequestUrl2,
[*b].len()
);
}
}
#[test]
fn entire_iter() {
let (mut p, mut h) = setup!();
iter_assert_eos(
&mut p,
&mut h,
&[(b'/', ParserState::RequestUrl2),
(b'p', ParserState::RequestUrl2),
(b'a', ParserState::RequestUrl2),
(b't', ParserState::RequestUrl2),
(b'h', ParserState::RequestUrl2),
(b' ', ParserState::RequestHttp1)]
);
assert_eq!(
h.url,
b"/path"
);
}
#[test]
fn not_allowed_error() {
for b in non_visible_7bit_vec().iter()
.filter(|&x| *x != b'\t')
.filter(|&x| *x != b' ') {
let (mut p, mut h) = setup!();
assert_error(
&mut p,
&mut h,
&[*b],
ParserError::Url(*b)
);
}
}
#[test]
fn state_request_http1() {
let (mut p, mut h) = setup!();
iter_assert_eos(
&mut p,
&mut h,
&[(b'/', ParserState::RequestUrl2),
(b' ', ParserState::RequestHttp1)]
);
}