]> git.proxmox.com Git - rustc.git/blame - src/test/run-pass/deriving-cmp-generic-struct-enum.rs
Imported Upstream version 1.1.0+dfsg1
[rustc.git] / src / test / run-pass / deriving-cmp-generic-struct-enum.rs
CommitLineData
970d7e83
LB
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
1a4d82fc 11#[derive(PartialEq, Eq, PartialOrd, Ord)]
970d7e83
LB
12enum ES<T> {
13 ES1 { x: T },
14 ES2 { x: T, y: T }
15}
16
17
18pub fn main() {
1a4d82fc 19 let (es11, es12, es21, es22) = (ES::ES1 {
85aaf69f 20 x: 1
1a4d82fc 21 }, ES::ES1 {
85aaf69f 22 x: 2
1a4d82fc 23 }, ES::ES2 {
85aaf69f
SL
24 x: 1,
25 y: 1
1a4d82fc 26 }, ES::ES2 {
85aaf69f
SL
27 x: 1,
28 y: 2
1a4d82fc
JJ
29 });
30
31 // in order for both PartialOrd and Ord
970d7e83
LB
32 let ess = [es11, es12, es21, es22];
33
1a4d82fc
JJ
34 for (i, es1) in ess.iter().enumerate() {
35 for (j, es2) in ess.iter().enumerate() {
970d7e83
LB
36 let ord = i.cmp(&j);
37
38 let eq = i == j;
1a4d82fc
JJ
39 let (lt, le) = (i < j, i <= j);
40 let (gt, ge) = (i > j, i >= j);
970d7e83 41
1a4d82fc 42 // PartialEq
970d7e83
LB
43 assert_eq!(*es1 == *es2, eq);
44 assert_eq!(*es1 != *es2, !eq);
45
1a4d82fc 46 // PartialOrd
970d7e83
LB
47 assert_eq!(*es1 < *es2, lt);
48 assert_eq!(*es1 > *es2, gt);
49
50 assert_eq!(*es1 <= *es2, le);
51 assert_eq!(*es1 >= *es2, ge);
52
1a4d82fc 53 // Ord
970d7e83
LB
54 assert_eq!(es1.cmp(es2), ord);
55 }
56 }
1a4d82fc 57}