about summary refs log tree commit diff
path: root/src/test/ui/cmp-default.rs
diff options
context:
space:
mode:
authorVadim Petrochenkov <vadim.petrochenkov@gmail.com>2019-07-27 01:33:01 +0300
committerVadim Petrochenkov <vadim.petrochenkov@gmail.com>2019-07-27 18:56:16 +0300
commit9be35f82c1abf2ecbab489bca9eca138ea648312 (patch)
tree69888506e34af447d9748c0d542de3ba1dd76210 /src/test/ui/cmp-default.rs
parentca9faa52f5ada0054b1fa27d97aedf448afb059b (diff)
downloadrust-9be35f82c1abf2ecbab489bca9eca138ea648312.tar.gz
rust-9be35f82c1abf2ecbab489bca9eca138ea648312.zip
tests: Move run-pass tests without naming conflicts to ui
Diffstat (limited to 'src/test/ui/cmp-default.rs')
-rw-r--r--src/test/ui/cmp-default.rs73
1 files changed, 73 insertions, 0 deletions
diff --git a/src/test/ui/cmp-default.rs b/src/test/ui/cmp-default.rs
new file mode 100644
index 00000000000..bb5c39f5cde
--- /dev/null
+++ b/src/test/ui/cmp-default.rs
@@ -0,0 +1,73 @@
+// run-pass
+
+use std::cmp::Ordering;
+
+// Test default methods in PartialOrd and PartialEq
+//
+#[derive(Debug)]
+struct Fool(bool);
+
+impl PartialEq for Fool {
+    fn eq(&self, other: &Fool) -> bool {
+        let Fool(this) = *self;
+        let Fool(other) = *other;
+        this != other
+    }
+}
+
+struct Int(isize);
+
+impl PartialEq for Int {
+    fn eq(&self, other: &Int) -> bool {
+        let Int(this) = *self;
+        let Int(other) = *other;
+        this == other
+    }
+}
+
+impl PartialOrd for Int {
+    fn partial_cmp(&self, other: &Int) -> Option<Ordering> {
+        let Int(this) = *self;
+        let Int(other) = *other;
+        this.partial_cmp(&other)
+    }
+}
+
+struct RevInt(isize);
+
+impl PartialEq for RevInt {
+    fn eq(&self, other: &RevInt) -> bool {
+        let RevInt(this) = *self;
+        let RevInt(other) = *other;
+        this == other
+    }
+}
+
+impl PartialOrd for RevInt {
+    fn partial_cmp(&self, other: &RevInt) -> Option<Ordering> {
+        let RevInt(this) = *self;
+        let RevInt(other) = *other;
+        other.partial_cmp(&this)
+    }
+}
+
+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_eq!(Fool(true), Fool(false));
+    assert!(Fool(true)  != Fool(true));
+    assert!(Fool(false) != Fool(false));
+    assert_eq!(Fool(false), Fool(true));
+}