@@ -428,7 +428,7 @@ fn value_htab() {
428428#[ test]
429429fn remove_entry_multi_0 ( ) {
430430 let mut headers = HeaderMap :: new ( ) ;
431- let cookies = remove_all_set_cookies ( & mut headers) ;
431+ let cookies = remove_all_values ( & mut headers, SET_COOKIE ) ;
432432 assert_eq ! ( cookies. len( ) , 0 ) ;
433433 assert_eq ! ( headers. len( ) , 0 ) ;
434434}
@@ -439,7 +439,7 @@ fn remove_entry_multi_0_others() {
439439 headers. insert ( VIA , "1.1 example.com" . parse ( ) . unwrap ( ) ) ;
440440 headers. append ( VIA , "1.1 other.com" . parse ( ) . unwrap ( ) ) ;
441441
442- let cookies = remove_all_set_cookies ( & mut headers) ;
442+ let cookies = remove_all_values ( & mut headers, SET_COOKIE ) ;
443443 assert_eq ! ( cookies. len( ) , 0 ) ;
444444 assert_eq ! ( headers. len( ) , 2 ) ;
445445}
@@ -449,7 +449,7 @@ fn remove_entry_multi_1() {
449449 let mut headers = HeaderMap :: new ( ) ;
450450 headers. insert ( SET_COOKIE , "cookie_1=value 1" . parse ( ) . unwrap ( ) ) ;
451451
452- let cookies = remove_all_set_cookies ( & mut headers) ;
452+ let cookies = remove_all_values ( & mut headers, SET_COOKIE ) ;
453453 assert_eq ! ( cookies. len( ) , 1 ) ;
454454 assert_eq ! ( headers. len( ) , 0 ) ;
455455}
@@ -460,9 +460,13 @@ fn remove_entry_multi_1_other() {
460460 headers. insert ( SET_COOKIE , "cookie_1=value 1" . parse ( ) . unwrap ( ) ) ;
461461 headers. insert ( VIA , "1.1 example.com" . parse ( ) . unwrap ( ) ) ;
462462
463- let cookies = remove_all_set_cookies ( & mut headers) ;
463+ let cookies = remove_all_values ( & mut headers, SET_COOKIE ) ;
464464 assert_eq ! ( cookies. len( ) , 1 ) ;
465465 assert_eq ! ( headers. len( ) , 1 ) ;
466+
467+ let vias = remove_all_values ( & mut headers, VIA ) ;
468+ assert_eq ! ( vias. len( ) , 1 ) ;
469+ assert_eq ! ( headers. len( ) , 0 ) ;
466470}
467471
468472// For issue hyperimum/http#446
@@ -472,7 +476,7 @@ fn remove_entry_multi_2() {
472476 headers. insert ( SET_COOKIE , "cookie_1=value 1" . parse ( ) . unwrap ( ) ) ;
473477 headers. append ( SET_COOKIE , "cookie_2=value 2" . parse ( ) . unwrap ( ) ) ;
474478
475- let cookies = remove_all_set_cookies ( & mut headers) ;
479+ let cookies = remove_all_values ( & mut headers, SET_COOKIE ) ;
476480 assert_eq ! ( cookies. len( ) , 2 ) ;
477481 assert_eq ! ( headers. len( ) , 0 ) ;
478482}
@@ -484,7 +488,7 @@ fn remove_entry_multi_3() {
484488 headers. append ( SET_COOKIE , "cookie_2=value 2" . parse ( ) . unwrap ( ) ) ;
485489 headers. append ( SET_COOKIE , "cookie_3=value 3" . parse ( ) . unwrap ( ) ) ;
486490
487- let cookies = remove_all_set_cookies ( & mut headers) ;
491+ let cookies = remove_all_values ( & mut headers, SET_COOKIE ) ;
488492 assert_eq ! ( cookies. len( ) , 3 ) ;
489493 assert_eq ! ( headers. len( ) , 0 ) ;
490494}
@@ -499,13 +503,23 @@ fn remove_entry_multi_3_others() {
499503 headers. append ( SET_COOKIE , "cookie_3=value 3" . parse ( ) . unwrap ( ) ) ;
500504 headers. insert ( VARY , "*" . parse ( ) . unwrap ( ) ) ;
501505
502- let cookies = remove_all_set_cookies ( & mut headers) ;
506+ let cookies = remove_all_values ( & mut headers, SET_COOKIE ) ;
503507 assert_eq ! ( cookies. len( ) , 3 ) ;
504508 assert_eq ! ( headers. len( ) , 3 ) ;
509+
510+ let vias = remove_all_values ( & mut headers, VIA ) ;
511+ assert_eq ! ( vias. len( ) , 2 ) ;
512+ assert_eq ! ( headers. len( ) , 1 ) ;
513+
514+ let varies = remove_all_values ( & mut headers, VARY ) ;
515+ assert_eq ! ( varies. len( ) , 1 ) ;
516+ assert_eq ! ( headers. len( ) , 0 ) ;
505517}
506518
507- fn remove_all_set_cookies ( headers : & mut HeaderMap ) -> Vec < HeaderValue > {
508- match headers. entry ( SET_COOKIE ) {
519+ fn remove_all_values < K > ( headers : & mut HeaderMap , key : K ) -> Vec < HeaderValue >
520+ where K : IntoHeaderName
521+ {
522+ match headers. entry ( key) {
509523 Entry :: Occupied ( e) => e. remove_entry_mult ( ) . 1 . collect ( ) ,
510524 Entry :: Vacant ( _) => vec ! [ ] ,
511525 }
0 commit comments