use util::*;
#[test]
fn missing_end_quote_error() {
let mut error = None;
for (_, _) in FieldIterator::new(
b"compression=\"bzip",
b';',
false
).on_error(
|x| {
error = Some(x);
}
) {
}
match error.unwrap() {
FieldError::Name(_) => panic!(),
FieldError::Value(x) => assert_eq!(x, b'p')
}
}
#[test]
fn name_error() {
let mut error = None;
for (_, _) in FieldIterator::new(
b"compr\ression=bzip",
b';',
false
).on_error(
|x| {
error = Some(x);
}
) {
}
match error.unwrap() {
FieldError::Name(x) => assert_eq!(x, b'\r'),
FieldError::Value(_) => panic!()
}
}
#[test]
fn normalize() {
for (n, (name, value)) in FieldIterator::new(
b"COMPRESSION=bzip; BOUNDARY=longrandomboundarystring",
b';',
true
).enumerate() {
if n == 0 {
assert_eq!(
name,
"compression"
);
assert_eq!(
value.unwrap(),
"bzip"
);
} else if n == 1 {
assert_eq!(
name,
"boundary"
);
assert_eq!(
value.unwrap(),
"longrandomboundarystring"
);
}
}
}
#[test]
fn no_normalize() {
for (n, (name, value)) in FieldIterator::new(
b"Compression=Bzip; Boundary=Longrandomboundarystring",
b';',
false
).enumerate() {
if n == 0 {
assert_eq!(
name,
"Compression"
);
assert_eq!(
value.unwrap(),
"Bzip"
);
} else if n == 1 {
assert_eq!(
name,
"Boundary"
);
assert_eq!(
value.unwrap(),
"Longrandomboundarystring"
);
}
}
}
#[test]
fn no_value() {
for (n, (name, value)) in FieldIterator::new(
b"compression=bzip; field2; field3",
b';',
false
).enumerate() {
if n == 0 {
assert_eq!(
name,
"compression"
);
assert_eq!(
value.unwrap(),
"bzip"
);
} else if n == 1 {
assert_eq!(
name,
"field2"
);
assert_eq!(
value,
None
);
} else if n == 2 {
assert_eq!(
name,
"field3"
);
assert_eq!(
value,
None
);
}
}
}
#[test]
fn quoted() {
for (n, (name, value)) in FieldIterator::new(
b"compression=bzip; content-type=\"application\\\"/\\\"json\"",
b';',
false
).enumerate() {
if n == 0 {
assert_eq!(
name,
"compression"
);
assert_eq!(
value.unwrap(),
"bzip"
);
} else if n == 1 {
assert_eq!(
name,
"content-type"
);
assert_eq!(
value.unwrap(),
"application\"/\"json"
);
}
}
}
#[test]
fn value_error() {
let mut error = None;
for (_, _) in FieldIterator::new(
b"compression=bzip\r",
b';',
false
).on_error(
|x| {
error = Some(x);
}
) {
}
match error.unwrap() {
FieldError::Name(_) => panic!(),
FieldError::Value(x) => assert_eq!(x, b'\r')
}
}