toml-rs/test-suite/tests/spanned-impls.rs
est31 e89d255cbf Spanned: impl PartialEq, Eq, Hash, PartialOrd, Ord in terms of the value (#344)
* Spanned: impl PartialEq, Eq, Hash, PartialOrd, Ord in terms of the value

This is because we want to be able to index into HashMap<Spanned<String>, T>
with a dummy span and get results where only the content has to match.

* Add Borrow impl

* Add tests
2019-10-25 14:05:31 -05:00

42 lines
959 B
Rust

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<bool>,
baz: Spanned<String>,
}
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));
}