diff --git a/src/header/common/if_match.rs b/src/header/common/if_match.rs index 58f55955..9d74dbe3 100644 --- a/src/header/common/if_match.rs +++ b/src/header/common/if_match.rs @@ -21,24 +21,21 @@ header! { #[doc="If-Match = \"*\" / 1#entity-tag"] #[doc="```"] (IfMatch, "If-Match") => {Any / (EntityTag)+} -} -#[test] -fn test_parse_header() { - use header::Header; - { - let a: IfMatch = Header::parse_header( - [b"*".to_vec()].as_ref()).unwrap(); - assert_eq!(a, IfMatch::Any); - } - { - let a: IfMatch = Header::parse_header( - [b"\"xyzzy\", \"r2d2xxxx\", \"c3piozzzz\"".to_vec()].as_ref()).unwrap(); - let b = IfMatch::Items( - vec![EntityTag::new(false, "xyzzy".to_string()), - EntityTag::new(false, "r2d2xxxx".to_string()), - EntityTag::new(false, "c3piozzzz".to_string())]); - assert_eq!(a, b); + test_if_match { + test_header!( + test1, + vec![b"\"xyzzy\""], + Some(HeaderField::Items( + vec![EntityTag::new(false, "xyzzy".to_string())]))); + test_header!( + test2, + vec![b"\"xyzzy\", \"r2d2xxxx\", \"c3piozzzz\""], + Some(HeaderField::Items( + vec![EntityTag::new(false, "xyzzy".to_string()), + EntityTag::new(false, "r2d2xxxx".to_string()), + EntityTag::new(false, "c3piozzzz".to_string())]))); + test_header!(test3, vec![b"*"], Some(IfMatch::Any)); } } diff --git a/src/header/common/if_none_match.rs b/src/header/common/if_none_match.rs index 4a388b0d..697cd7d2 100644 --- a/src/header/common/if_none_match.rs +++ b/src/header/common/if_none_match.rs @@ -20,6 +20,14 @@ header! { #[doc="If-None-Match = \"*\" / 1#entity-tag"] #[doc="```"] (IfNoneMatch, "If-None-Match") => {Any / (EntityTag)+} + + test_if_none_match { + test_header!(test1, vec![b"\"xyzzy\""]); + test_header!(test2, vec![b"W/\"xyzzy\""]); + test_header!(test3, vec![b"\"xyzzy\", \"r2d2xxxx\", \"c3piozzzz\""]); + test_header!(test4, vec![b"W/\"xyzzy\", W/\"r2d2xxxx\", W/\"c3piozzzz\""]); + test_header!(test5, vec![b"*"]); + } } #[cfg(test)] diff --git a/src/header/common/mod.rs b/src/header/common/mod.rs index 68ff14c8..0f88c501 100644 --- a/src/header/common/mod.rs +++ b/src/header/common/mod.rs @@ -176,7 +176,6 @@ macro_rules! header { self.fmt_header(f) } } - #[allow(unused_imports)] mod $tm{ use $crate::header::*; @@ -211,7 +210,7 @@ macro_rules! header { } }; // List header, one or more items with "*" option - ($(#[$a:meta])*($id:ident, $n:expr) => {Any / ($item:ty)+}) => { + ($(#[$a:meta])*($id:ident, $n:expr) => {Any / ($item:ty)+} $tm:ident{$($tf:item)*}) => { $(#[$a])* #[derive(Clone, Debug, PartialEq)] pub enum $id { @@ -250,6 +249,13 @@ macro_rules! header { self.fmt_header(f) } } + #[allow(unused_imports)] + mod $tm{ + use $crate::header::*; + use $crate::mime::*; + use super::$id as HeaderField; + $($tf)* + } }; } diff --git a/src/header/common/vary.rs b/src/header/common/vary.rs index e2b7ffef..9d90f106 100644 --- a/src/header/common/vary.rs +++ b/src/header/common/vary.rs @@ -15,6 +15,10 @@ header! { #[doc="Vary = \"*\" / 1#field-name"] #[doc="```"] (Vary, "Vary") => {Any / (UniCase)+} + + test_vary { + test_header!(test1, vec![b"accept-encoding, accept-language"]); + } } #[cfg(test)]