Merge pull request #319 from pyfisch/partialordqualityitem

feat(headers): Implement PartialOrd for QualityItem
This commit is contained in:
Jonathan Reem
2015-02-15 14:30:43 -08:00

View File

@@ -5,6 +5,7 @@
use std::fmt;
use std::str;
use std::cmp;
#[cfg(test)] use super::encoding::*;
/// Represents an item with a quality value as defined in
@@ -26,6 +27,12 @@ impl<T> QualityItem<T> {
}
}
impl<T: PartialEq> cmp::PartialOrd for QualityItem<T> {
fn partial_cmp(&self, other: &QualityItem<T>) -> Option<cmp::Ordering> {
self.quality.partial_cmp(&other.quality)
}
}
impl<T: fmt::Display> fmt::Display for QualityItem<T> {
fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
if self.quality == 1.0 {
@@ -127,3 +134,10 @@ fn test_quality_item_from_str5() {
let x: Result<QualityItem<Encoding>, ()> = "gzip; q=0.2739999".parse();
assert_eq!(x, Err(()));
}
#[test]
fn test_quality_item_ordering() {
let x: QualityItem<Encoding> = "gzip; q=0.5".parse().ok().unwrap();
let y: QualityItem<Encoding> = "gzip; q=0.273".parse().ok().unwrap();
let comparision_result: bool = x.gt(&y);
assert_eq!(comparision_result, true)
}