diff options
Diffstat (limited to '')
-rw-r--r-- | src/test/ui/deriving/deriving-cmp-generic-struct.rs | 40 |
1 files changed, 40 insertions, 0 deletions
diff --git a/src/test/ui/deriving/deriving-cmp-generic-struct.rs b/src/test/ui/deriving/deriving-cmp-generic-struct.rs new file mode 100644 index 000000000..538caf439 --- /dev/null +++ b/src/test/ui/deriving/deriving-cmp-generic-struct.rs @@ -0,0 +1,40 @@ +// run-pass +#[derive(PartialEq, Eq, PartialOrd, Ord)] +struct S<T> { + x: T, + y: T +} + +pub fn main() { + let s1 = S {x: 1, y: 1}; + let s2 = S {x: 1, y: 2}; + + // in order for both PartialOrd and Ord + let ss = [s1, s2]; + + for (i, s1) in ss.iter().enumerate() { + for (j, s2) in ss.iter().enumerate() { + let ord = i.cmp(&j); + + let eq = i == j; + let lt = i < j; + let le = i <= j; + let gt = i > j; + let ge = i >= j; + + // PartialEq + assert_eq!(*s1 == *s2, eq); + assert_eq!(*s1 != *s2, !eq); + + // PartialOrd + assert_eq!(*s1 < *s2, lt); + assert_eq!(*s1 > *s2, gt); + + assert_eq!(*s1 <= *s2, le); + assert_eq!(*s1 >= *s2, ge); + + // Ord + assert_eq!(s1.cmp(s2), ord); + } + } +} |