1- use std :: fmt ;
1+ use mime :: Mime ;
22
3- use header;
4- use header:: parsing;
5-
6- use mime;
3+ use header:: QualityItem ;
74
85/// The `Accept` header.
96///
@@ -26,43 +23,36 @@ use mime;
2623/// qitem(Mime(Text, Xml, vec![])) ]));
2724/// ```
2825#[ derive( Clone , PartialEq , Debug ) ]
29- pub struct Accept ( pub Vec < header:: QualityItem < mime:: Mime > > ) ;
30-
31- deref ! ( Accept => Vec <header:: QualityItem <mime:: Mime >>) ;
32-
33- impl header:: Header for Accept {
34- fn header_name ( ) -> & ' static str {
35- "Accept"
36- }
37-
38- fn parse_header ( raw : & [ Vec < u8 > ] ) -> Option < Accept > {
39- // TODO: Return */* if no value is given.
40- parsing:: from_comma_delimited ( raw) . map ( Accept )
26+ pub struct Accept ( pub Vec < QualityItem < Mime > > ) ;
27+
28+ impl_list_header ! ( Accept ,
29+ "Accept" ,
30+ Vec <QualityItem <Mime >>) ;
31+
32+ #[ cfg( test) ]
33+ mod tests {
34+ use mime:: * ;
35+
36+ use header:: { Header , QualityItem , qitem} ;
37+ use super :: Accept ;
38+
39+ #[ test]
40+ fn test_parse_header_no_quality ( ) {
41+ let a: Accept = Header :: parse_header ( [ b"text/plain; charset=utf-8" . to_vec ( ) ] . as_slice ( ) ) . unwrap ( ) ;
42+ let b = Accept ( vec ! [
43+ qitem( Mime ( TopLevel :: Text , SubLevel :: Plain , vec![ ( Attr :: Charset , Value :: Utf8 ) ] ) ) ,
44+ ] ) ;
45+ assert_eq ! ( a, b) ;
4146 }
42- }
4347
44- impl header:: HeaderFormat for Accept {
45- fn fmt_header ( & self , fmt : & mut fmt:: Formatter ) -> fmt:: Result {
46- parsing:: fmt_comma_delimited ( fmt, & self [ ] )
48+ #[ test]
49+ fn test_parse_header_with_quality ( ) {
50+ let a: Accept = Header :: parse_header ( [ b"text/plain; charset=utf-8; q=0.5" . to_vec ( ) ] . as_slice ( ) ) . unwrap ( ) ;
51+ let b = Accept ( vec ! [
52+ QualityItem :: new( Mime ( TopLevel :: Text , SubLevel :: Plain , vec![ ( Attr :: Charset , Value :: Utf8 ) ] ) , 0.5f32 ) ,
53+ ] ) ;
54+ assert_eq ! ( a, b) ;
4755 }
4856}
4957
5058bench_header ! ( bench, Accept , { vec![ b"text/plain; q=0.5, text/html" . to_vec( ) ] } ) ;
51-
52- #[ test]
53- fn test_parse_header_no_quality ( ) {
54- let a: Accept = header:: Header :: parse_header ( [ b"text/plain; charset=utf-8" . to_vec ( ) ] . as_slice ( ) ) . unwrap ( ) ;
55- let b = Accept ( vec ! [
56- header:: QualityItem { item: mime:: Mime ( mime:: TopLevel :: Text , mime:: SubLevel :: Plain , vec![ ( mime:: Attr :: Charset , mime:: Value :: Utf8 ) ] ) , quality: 1f32 } ,
57- ] ) ;
58- assert_eq ! ( a, b) ;
59- }
60-
61- #[ test]
62- fn test_parse_header_with_quality ( ) {
63- let a: Accept = header:: Header :: parse_header ( [ b"text/plain; charset=utf-8; q=0.5" . to_vec ( ) ] . as_slice ( ) ) . unwrap ( ) ;
64- let b = Accept ( vec ! [
65- header:: QualityItem { item: mime:: Mime ( mime:: TopLevel :: Text , mime:: SubLevel :: Plain , vec![ ( mime:: Attr :: Charset , mime:: Value :: Utf8 ) ] ) , quality: 0.5f32 } ,
66- ] ) ;
67- assert_eq ! ( a, b) ;
68- }
0 commit comments