Skip to content

Commit 76cbf38

Browse files
committed
feat(headers): add PartialEq impl for Headers struct
compare the raw representations of the headers for the lack of a better alternative helpful when asserting HttpRequest/ HttpResponse in tests elsewhere
1 parent 3d05a90 commit 76cbf38

File tree

1 file changed

+46
-0
lines changed

1 file changed

+46
-0
lines changed

src/header/mod.rs

Lines changed: 46 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -309,6 +309,22 @@ impl Headers {
309309
}
310310
}
311311

312+
impl PartialEq for Headers {
313+
fn eq(&self, other: &Headers) -> bool {
314+
if self.len() != other.len() {
315+
return false;
316+
}
317+
318+
for header in self.iter() {
319+
match other.get_raw(header.name()) {
320+
Some(val) if val == self.get_raw(header.name()).unwrap() => {},
321+
_ => { return false; }
322+
}
323+
}
324+
return true;
325+
}
326+
}
327+
312328
impl fmt::Display for Headers {
313329
fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
314330
for header in self.iter() {
@@ -695,6 +711,36 @@ mod tests {
695711
}
696712
}
697713

714+
#[test]
715+
fn test_eq() {
716+
let mut headers1 = Headers::new();
717+
let mut headers2 = Headers::new();
718+
719+
assert_eq!(headers1, headers2);
720+
721+
headers1.set(ContentLength(11));
722+
headers2.set(Host {hostname: "foo.bar".to_owned(), port: None});
723+
assert!(headers1 != headers2);
724+
725+
headers1 = Headers::new();
726+
headers2 = Headers::new();
727+
728+
headers1.set(ContentLength(11));
729+
headers2.set(ContentLength(11));
730+
assert_eq!(headers1, headers2);
731+
732+
headers1.set(ContentLength(10));
733+
assert!(headers1 != headers2);
734+
735+
headers1 = Headers::new();
736+
headers2 = Headers::new();
737+
738+
headers1.set(Host { hostname: "foo.bar".to_owned(), port: None });
739+
headers1.set(ContentLength(11));
740+
headers2.set(ContentLength(11));
741+
assert!(headers1 != headers2);
742+
}
743+
698744
#[cfg(feature = "nightly")]
699745
#[bench]
700746
fn bench_headers_new(b: &mut Bencher) {

0 commit comments

Comments
 (0)