]> git.proxmox.com Git - rustc.git/blob - src/test/run-pass/deriving-cmp-generic-struct-enum.rs
Imported Upstream version 1.0.0~beta
[rustc.git] / src / test / run-pass / deriving-cmp-generic-struct-enum.rs
1 // Copyright 2013 The Rust Project Developers. See the COPYRIGHT
2 // file at the top-level directory of this distribution and at
3 // http://rust-lang.org/COPYRIGHT.
4 //
5 // Licensed under the Apache License, Version 2.0 <LICENSE-APACHE or
6 // http://www.apache.org/licenses/LICENSE-2.0> or the MIT license
7 // <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your
8 // option. This file may not be copied, modified, or distributed
9 // except according to those terms.
10
11 // no-pretty-expanded FIXME #15189
12
13 // pretty-expanded FIXME #23616
14
15 #[derive(PartialEq, Eq, PartialOrd, Ord)]
16 enum ES<T> {
17 ES1 { x: T },
18 ES2 { x: T, y: T }
19 }
20
21
22 pub fn main() {
23 let (es11, es12, es21, es22) = (ES::ES1 {
24 x: 1
25 }, ES::ES1 {
26 x: 2
27 }, ES::ES2 {
28 x: 1,
29 y: 1
30 }, ES::ES2 {
31 x: 1,
32 y: 2
33 });
34
35 // in order for both PartialOrd and Ord
36 let ess = [es11, es12, es21, es22];
37
38 for (i, es1) in ess.iter().enumerate() {
39 for (j, es2) in ess.iter().enumerate() {
40 let ord = i.cmp(&j);
41
42 let eq = i == j;
43 let (lt, le) = (i < j, i <= j);
44 let (gt, ge) = (i > j, i >= j);
45
46 // PartialEq
47 assert_eq!(*es1 == *es2, eq);
48 assert_eq!(*es1 != *es2, !eq);
49
50 // PartialOrd
51 assert_eq!(*es1 < *es2, lt);
52 assert_eq!(*es1 > *es2, gt);
53
54 assert_eq!(*es1 <= *es2, le);
55 assert_eq!(*es1 >= *es2, ge);
56
57 // Ord
58 assert_eq!(es1.cmp(es2), ord);
59 }
60 }
61 }