// Copyright 2012 The Rust Project Developers. See the COPYRIGHT // file at the top-level directory of this distribution and at // http://rust-lang.org/COPYRIGHT. // // Licensed under the Apache License, Version 2.0 or the MIT license // , at your // option. This file may not be copied, modified, or distributed // except according to those terms. // Test default methods in Ord and Eq // struct Fool(bool); impl Eq for Fool { fn eq(&self, other: &Fool) -> bool { **self != **other } } struct Int(int); impl Ord for Int { fn lt(&self, other: &Int) -> bool { **self < **other } } struct RevInt(int); impl Ord for RevInt { fn lt(&self, other: &RevInt) -> bool { **self > **other } } pub fn main() { assert!(Int(2) > Int(1)); assert!(Int(2) >= Int(1)); assert!(Int(1) >= Int(1)); assert!(Int(1) < Int(2)); assert!(Int(1) <= Int(2)); assert!(Int(1) <= Int(1)); assert!(RevInt(2) < RevInt(1)); assert!(RevInt(2) <= RevInt(1)); assert!(RevInt(1) <= RevInt(1)); assert!(RevInt(1) > RevInt(2)); assert!(RevInt(1) >= RevInt(2)); assert!(RevInt(1) >= RevInt(1)); assert!(Fool(true) == Fool(false)); assert!(Fool(true) != Fool(true)); assert!(Fool(false) != Fool(false)); assert!(Fool(false) == Fool(true)); }