diff options
| author | Vadim Petrochenkov <vadim.petrochenkov@gmail.com> | 2019-07-27 01:33:01 +0300 |
|---|---|---|
| committer | Vadim Petrochenkov <vadim.petrochenkov@gmail.com> | 2019-07-27 18:56:16 +0300 |
| commit | 9be35f82c1abf2ecbab489bca9eca138ea648312 (patch) | |
| tree | 69888506e34af447d9748c0d542de3ba1dd76210 /src/test/ui/cmp-default.rs | |
| parent | ca9faa52f5ada0054b1fa27d97aedf448afb059b (diff) | |
| download | rust-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.rs | 73 |
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)); +} |
