use std::cmp::{Ord, Ordering, PartialOrd}; use toml::{from_str, Spanned}; #[macro_use] extern crate serde_derive; #[test] fn test_spans_impls() { #[derive(Deserialize)] struct Foo { bar: Spanned, baz: Spanned, } let f: Foo = from_str( " bar = true baz = \"yes\" ", ) .unwrap(); let g: Foo = from_str( " baz = \"yes\" bar = true ", ) .unwrap(); assert!(f.bar.span() != g.bar.span()); assert!(f.baz.span() != g.baz.span()); // test that eq still holds assert_eq!(f.bar, g.bar); assert_eq!(f.baz, g.baz); // test that Ord returns equal order assert_eq!(f.bar.cmp(&g.bar), Ordering::Equal); assert_eq!(f.baz.cmp(&g.baz), Ordering::Equal); // test that PartialOrd returns equal order assert_eq!(f.bar.partial_cmp(&g.bar), Some(Ordering::Equal)); assert_eq!(f.baz.partial_cmp(&g.baz), Some(Ordering::Equal)); }