Merge pull request #319 from pyfisch/partialordqualityitem
feat(headers): Implement PartialOrd for QualityItem
This commit is contained in:
		| @@ -5,6 +5,7 @@ | |||||||
|  |  | ||||||
| use std::fmt; | use std::fmt; | ||||||
| use std::str; | use std::str; | ||||||
|  | use std::cmp; | ||||||
| #[cfg(test)] use super::encoding::*; | #[cfg(test)] use super::encoding::*; | ||||||
|  |  | ||||||
| /// Represents an item with a quality value as defined in | /// 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> { | impl<T: fmt::Display> fmt::Display for QualityItem<T> { | ||||||
|     fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result { |     fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result { | ||||||
|         if self.quality == 1.0 { |         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(); |     let x: Result<QualityItem<Encoding>, ()> = "gzip; q=0.2739999".parse(); | ||||||
|     assert_eq!(x, Err(())); |     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) | ||||||
|  | } | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user