// run-pass

#![allow(non_camel_case_types)]


#[derive(Copy, Clone, Debug)]
enum foo { large, small, }

impl PartialEq for foo {
    fn eq(&self, other: &foo) -> bool {
        ((*self) as usize) == ((*other) as usize)
    }
    fn ne(&self, other: &foo) -> bool { !(*self).eq(other) }
}

pub fn main() {
    let a = (1, 2, 3);
    let b = (1, 2, 3);
    assert_eq!(a, b);
    assert!((a != (1, 2, 4)));
    assert!((a < (1, 2, 4)));
    assert!((a <= (1, 2, 4)));
    assert!(((1, 2, 4) > a));
    assert!(((1, 2, 4) >= a));
    let x = foo::large;
    let y = foo::small;
    assert!((x != y));
    assert_eq!(x, foo::large);
    assert!((x != foo::small));
}
