Skip to content

Commit ad54c55

Browse files
committed
expand test cases for remove_entry_mult
1 parent 19e82f4 commit ad54c55

1 file changed

Lines changed: 83 additions & 15 deletions

File tree

tests/header_map.rs

Lines changed: 83 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -175,8 +175,9 @@ fn drain_entry() {
175175
"more".parse::<HeaderName>().unwrap(),
176176
"insertions".parse().unwrap(),
177177
);
178+
assert_eq!(5, headers.len());
178179

179-
// Using insert
180+
// Using insert_mult
180181
{
181182
let mut e = match headers.entry("hello") {
182183
Entry::Occupied(e) => e,
@@ -188,6 +189,8 @@ fn drain_entry() {
188189
assert_eq!(vals[0], "world");
189190
assert_eq!(vals[1], "world2");
190191
}
192+
193+
assert_eq!(5-2+1, headers.len());
191194
}
192195

193196
#[test]
@@ -422,23 +425,88 @@ fn value_htab() {
422425
HeaderValue::from_str("hello\tworld").unwrap();
423426
}
424427

428+
#[test]
429+
fn remove_entry_multi_0() {
430+
let mut headers = HeaderMap::new();
431+
let cookies = remove_all_set_cookies(&mut headers);
432+
assert_eq!(cookies.len(), 0);
433+
assert_eq!(headers.len(), 0);
434+
}
435+
436+
#[test]
437+
fn remove_entry_multi_0_others() {
438+
let mut headers = HeaderMap::new();
439+
headers.insert(VIA, "1.1 example.com".parse().unwrap());
440+
headers.append(VIA, "1.1 other.com".parse().unwrap());
441+
442+
let cookies = remove_all_set_cookies(&mut headers);
443+
assert_eq!(cookies.len(), 0);
444+
assert_eq!(headers.len(), 2);
445+
}
446+
447+
#[test]
448+
fn remove_entry_multi_1() {
449+
let mut headers = HeaderMap::new();
450+
headers.insert(SET_COOKIE, "cookie_1=value 1".parse().unwrap());
451+
452+
let cookies = remove_all_set_cookies(&mut headers);
453+
assert_eq!(cookies.len(), 1);
454+
assert_eq!(headers.len(), 0);
455+
}
456+
457+
#[test]
458+
fn remove_entry_multi_1_other() {
459+
let mut headers = HeaderMap::new();
460+
headers.insert(SET_COOKIE, "cookie_1=value 1".parse().unwrap());
461+
headers.insert(VIA, "1.1 example.com".parse().unwrap());
462+
463+
let cookies = remove_all_set_cookies(&mut headers);
464+
assert_eq!(cookies.len(), 1);
465+
assert_eq!(headers.len(), 1);
466+
}
467+
425468
// For issue hyperimum/http#446
426469
#[test]
427-
fn remove_entry_multi() {
428-
let mut headers = http::HeaderMap::new();
429-
for h in &[
430-
"cookie_1=value 1; path=/path; Domain=example.com; \
431-
Expires=Wed, 30 Nov 2020 13:28:00 GMT",
432-
"cookie_2=valu%C3%A9 2; path=/; Domain=par.example.com; \
433-
Expires=Wed, 29 Nov 2020 18:00:00 GMT" ]
434-
{
435-
headers.append(SET_COOKIE, h.parse().unwrap());
436-
}
470+
fn remove_entry_multi_2() {
471+
let mut headers = HeaderMap::new();
472+
headers.insert(SET_COOKIE, "cookie_1=value 1".parse().unwrap());
473+
headers.append(SET_COOKIE, "cookie_2=value 2".parse().unwrap());
474+
475+
let cookies = remove_all_set_cookies(&mut headers);
476+
assert_eq!(cookies.len(), 2);
477+
assert_eq!(headers.len(), 0);
478+
}
479+
480+
#[test]
481+
fn remove_entry_multi_3() {
482+
let mut headers = HeaderMap::new();
483+
headers.insert(SET_COOKIE, "cookie_1=value 1".parse().unwrap());
484+
headers.append(SET_COOKIE, "cookie_2=value 2".parse().unwrap());
485+
headers.append(SET_COOKIE, "cookie_3=value 3".parse().unwrap());
437486

438-
let cookies: Vec<HeaderValue> = match headers.entry(SET_COOKIE) {
487+
let cookies = remove_all_set_cookies(&mut headers);
488+
assert_eq!(cookies.len(), 3);
489+
assert_eq!(headers.len(), 0);
490+
}
491+
492+
#[test]
493+
fn remove_entry_multi_3_others() {
494+
let mut headers = HeaderMap::new();
495+
headers.insert(VIA, "1.1 example.com".parse().unwrap());
496+
headers.insert(SET_COOKIE, "cookie_1=value 1".parse().unwrap());
497+
headers.append(SET_COOKIE, "cookie_2=value 2".parse().unwrap());
498+
headers.append(VIA, "1.1 other.com".parse().unwrap());
499+
headers.append(SET_COOKIE, "cookie_3=value 3".parse().unwrap());
500+
headers.insert(VARY, "*".parse().unwrap());
501+
502+
let cookies = remove_all_set_cookies(&mut headers);
503+
assert_eq!(cookies.len(), 3);
504+
assert_eq!(headers.len(), 3);
505+
}
506+
507+
fn remove_all_set_cookies(headers: &mut HeaderMap) -> Vec<HeaderValue> {
508+
match headers.entry(SET_COOKIE) {
439509
Entry::Occupied(e) => e.remove_entry_mult().1.collect(),
440510
Entry::Vacant(_) => vec![],
441-
};
442-
443-
assert_eq!(cookies.len(), 2);
511+
}
444512
}

0 commit comments

Comments
 (0)