diff options
-rw-r--r-- | openpgp/src/keyhandle.rs | 41 |
1 files changed, 41 insertions, 0 deletions
diff --git a/openpgp/src/keyhandle.rs b/openpgp/src/keyhandle.rs index 63d7666b..a667979e 100644 --- a/openpgp/src/keyhandle.rs +++ b/openpgp/src/keyhandle.rs @@ -401,8 +401,19 @@ impl KeyHandle { #[cfg(test)] mod tests { + use quickcheck::{Arbitrary, Gen}; use super::*; + impl Arbitrary for KeyHandle { + fn arbitrary(g: &mut Gen) -> Self { + if bool::arbitrary(g) { + Fingerprint::arbitrary(g).into() + } else { + KeyID::arbitrary(g).into() + } + } + } + #[test] fn upper_hex_formatting() { let handle = KeyHandle::Fingerprint(Fingerprint::V4([1, 2, 3, 4, 5, 6, 7, @@ -461,4 +472,34 @@ mod tests { Ok(()) } + + quickcheck! { + fn partial_cmp_is_asymmetric(a: KeyHandle, b: KeyHandle) + -> bool { + use Ordering::*; + true + && (! (a.partial_cmp(&b) == Some(Less)) + || ! (a.partial_cmp(&b) == Some(Greater))) + && (! (a.partial_cmp(&b) == Some(Greater)) + || ! (a.partial_cmp(&b) == Some(Less))) + } + } + + quickcheck! { + fn partial_cmp_is_transitive(a: KeyHandle, b: KeyHandle, c: KeyHandle) + -> bool { + use Ordering::*; + true + && (! (a.partial_cmp(&b) == Some(Less) + && b.partial_cmp(&c) == Some(Less)) + || a.partial_cmp(&c) == Some(Less)) + && (! (a.partial_cmp(&b) == Some(Equal) + && b.partial_cmp(&c) == Some(Equal)) + || a.partial_cmp(&c) == Some(Equal)) + && (! (a.partial_cmp(&b) == Some(Greater) + && b.partial_cmp(&c) == Some(Greater)) + || a.partial_cmp(&c) == Some(Greater)) + + } + } } |