diff options
Diffstat (limited to 'src/test/ui/derives/derive-partial-ord.rs')
-rw-r--r-- | src/test/ui/derives/derive-partial-ord.rs | 60 |
1 files changed, 0 insertions, 60 deletions
diff --git a/src/test/ui/derives/derive-partial-ord.rs b/src/test/ui/derives/derive-partial-ord.rs deleted file mode 100644 index 9078a7ffa..000000000 --- a/src/test/ui/derives/derive-partial-ord.rs +++ /dev/null @@ -1,60 +0,0 @@ -// Checks that in a derived implementation of PartialOrd the lt, le, ge, gt methods are consistent -// with partial_cmp. Also verifies that implementation is consistent with that for tuples. -// -// run-pass - -#[derive(PartialEq, PartialOrd)] -struct P(f64, f64); - -fn main() { - let values: &[f64] = &[1.0, 2.0, f64::NAN]; - for a in values { - for b in values { - for c in values { - for d in values { - // Check impl for a tuple. - check(&(*a, *b), &(*c, *d)); - - // Check derived impl. - check(&P(*a, *b), &P(*c, *d)); - - // Check that impls agree with each other. - assert_eq!( - PartialOrd::partial_cmp(&(*a, *b), &(*c, *d)), - PartialOrd::partial_cmp(&P(*a, *b), &P(*c, *d)), - ); - } - } - } - } -} - -fn check<T: PartialOrd>(a: &T, b: &T) { - use std::cmp::Ordering::*; - match PartialOrd::partial_cmp(a, b) { - None => { - assert!(!(a < b)); - assert!(!(a <= b)); - assert!(!(a > b)); - assert!(!(a >= b)); - } - Some(Equal) => { - assert!(!(a < b)); - assert!(a <= b); - assert!(!(a > b)); - assert!(a >= b); - } - Some(Less) => { - assert!(a < b); - assert!(a <= b); - assert!(!(a > b)); - assert!(!(a >= b)); - } - Some(Greater) => { - assert!(!(a < b)); - assert!(!(a <= b)); - assert!(a > b); - assert!(a >= b); - } - } -} |