]>
Commit | Line | Data |
---|---|---|
b7449926 | 1 | // run-pass |
1a4d82fc | 2 | #[derive(PartialEq, Eq, PartialOrd, Ord)] |
970d7e83 LB |
3 | struct S<T> { |
4 | x: T, | |
5 | y: T | |
6 | } | |
7 | ||
8 | pub fn main() { | |
85aaf69f SL |
9 | let s1 = S {x: 1, y: 1}; |
10 | let s2 = S {x: 1, y: 2}; | |
970d7e83 | 11 | |
1a4d82fc | 12 | // in order for both PartialOrd and Ord |
970d7e83 LB |
13 | let ss = [s1, s2]; |
14 | ||
1a4d82fc JJ |
15 | for (i, s1) in ss.iter().enumerate() { |
16 | for (j, s2) in ss.iter().enumerate() { | |
970d7e83 LB |
17 | let ord = i.cmp(&j); |
18 | ||
19 | let eq = i == j; | |
20 | let lt = i < j; | |
21 | let le = i <= j; | |
22 | let gt = i > j; | |
23 | let ge = i >= j; | |
24 | ||
1a4d82fc | 25 | // PartialEq |
970d7e83 LB |
26 | assert_eq!(*s1 == *s2, eq); |
27 | assert_eq!(*s1 != *s2, !eq); | |
28 | ||
1a4d82fc | 29 | // PartialOrd |
970d7e83 LB |
30 | assert_eq!(*s1 < *s2, lt); |
31 | assert_eq!(*s1 > *s2, gt); | |
32 | ||
33 | assert_eq!(*s1 <= *s2, le); | |
34 | assert_eq!(*s1 >= *s2, ge); | |
35 | ||
1a4d82fc | 36 | // Ord |
970d7e83 LB |
37 | assert_eq!(s1.cmp(s2), ord); |
38 | } | |
39 | } | |
40 | } |