summaryrefslogtreecommitdiff
path: root/src/poisonable.rs
diff options
context:
space:
mode:
Diffstat (limited to 'src/poisonable.rs')
-rw-r--r--src/poisonable.rs26
1 files changed, 25 insertions, 1 deletions
diff --git a/src/poisonable.rs b/src/poisonable.rs
index da7758f..e577ce9 100644
--- a/src/poisonable.rs
+++ b/src/poisonable.rs
@@ -96,7 +96,7 @@ pub type TryLockPoisonableResult<'flag, 'key, G, Key> =
mod tests {
use super::*;
use crate::lockable::Lockable;
- use crate::{Mutex, ThreadKey};
+ use crate::{LockCollection, Mutex, ThreadKey};
#[test]
fn display_works() {
@@ -109,6 +109,24 @@ mod tests {
}
#[test]
+ fn ord_works() {
+ let key = ThreadKey::get().unwrap();
+ let lock1 = Poisonable::new(Mutex::new(1));
+ let lock2 = Poisonable::new(Mutex::new(3));
+ let lock3 = Poisonable::new(Mutex::new(3));
+ let collection = LockCollection::try_new((&lock1, &lock2, &lock3)).unwrap();
+
+ let guard = collection.lock(key);
+ let guard1 = guard.0.as_ref().unwrap();
+ let guard2 = guard.1.as_ref().unwrap();
+ let guard3 = guard.2.as_ref().unwrap();
+ assert!(guard1 < guard2);
+ assert!(guard2 > guard1);
+ assert!(guard2 == guard3);
+ assert!(guard1 != guard3);
+ }
+
+ #[test]
fn get_ptrs() {
let mutex = Mutex::new(5);
let poisonable = Poisonable::new(mutex);
@@ -118,4 +136,10 @@ mod tests {
assert_eq!(lock_ptrs.len(), 1);
assert!(std::ptr::addr_eq(lock_ptrs[0], &poisonable.inner));
}
+
+ #[test]
+ fn new_poisonable_is_not_poisoned() {
+ let mutex = Poisonable::new(Mutex::new(42));
+ assert!(!mutex.is_poisoned());
+ }
}