blob: 5d4cf7c745769c62ca60eaa31cbca5f58913c192 [file] [log] [blame]
Huon Wilsonbff37482013-04-02 11:02:461// 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#[deriving(Eq, TotalEq, Ord, TotalOrd)]
12struct TS<T>(T,T);
13
14
15pub fn main() {
Patrick Walton8114d0e2013-06-05 04:43:4116 let ts1 = TS(1, 1);
17 let ts2 = TS(1, 2);
Huon Wilsonbff37482013-04-02 11:02:4618
19 // in order for both Ord and TotalOrd
20 let tss = [ts1, ts2];
21
Daniel Micay100894552013-08-03 16:45:2322 for (i, ts1) in tss.iter().enumerate() {
23 for (j, ts2) in tss.iter().enumerate() {
Huon Wilsonbff37482013-04-02 11:02:4624 let ord = i.cmp(&j);
25
26 let eq = i == j;
Patrick Walton8114d0e2013-06-05 04:43:4127 let lt = i < j;
28 let le = i <= j;
29 let gt = i > j;
30 let ge = i >= j;
Huon Wilsonbff37482013-04-02 11:02:4631
32 // Eq
33 assert_eq!(*ts1 == *ts2, eq);
34 assert_eq!(*ts1 != *ts2, !eq);
35
36 // TotalEq
37 assert_eq!(ts1.equals(ts2), eq);
38
39 // Ord
40 assert_eq!(*ts1 < *ts2, lt);
41 assert_eq!(*ts1 > *ts2, gt);
42
43 assert_eq!(*ts1 <= *ts2, le);
44 assert_eq!(*ts1 >= *ts2, ge);
45
46 // TotalOrd
47 assert_eq!(ts1.cmp(ts2), ord);
48 }
49 }
Patrick Walton8114d0e2013-06-05 04:43:4150}