summaryrefslogtreecommitdiff
path: root/src/rwlock.rs
diff options
context:
space:
mode:
Diffstat (limited to 'src/rwlock.rs')
-rw-r--r--src/rwlock.rs24
1 files changed, 24 insertions, 0 deletions
diff --git a/src/rwlock.rs b/src/rwlock.rs
index 64dc82b..1425b54 100644
--- a/src/rwlock.rs
+++ b/src/rwlock.rs
@@ -116,6 +116,8 @@ pub struct RwLockWriteGuard<'a, 'key, T: ?Sized, Key: Keyable + 'key, R: RawRwLo
#[cfg(test)]
mod tests {
+ use crate::lockable::Lockable;
+ use crate::RwLock;
use crate::ThreadKey;
use super::*;
@@ -148,6 +150,28 @@ mod tests {
}
#[test]
+ fn read_lock_get_ptrs() {
+ let rwlock = RwLock::new(5);
+ let readlock = ReadLock::new(&rwlock);
+ let mut lock_ptrs = Vec::new();
+ readlock.get_ptrs(&mut lock_ptrs);
+
+ assert_eq!(lock_ptrs.len(), 1);
+ assert!(std::ptr::addr_eq(lock_ptrs[0], &rwlock));
+ }
+
+ #[test]
+ fn write_lock_get_ptrs() {
+ let rwlock = RwLock::new(5);
+ let writelock = WriteLock::new(&rwlock);
+ let mut lock_ptrs = Vec::new();
+ writelock.get_ptrs(&mut lock_ptrs);
+
+ assert_eq!(lock_ptrs.len(), 1);
+ assert!(std::ptr::addr_eq(lock_ptrs[0], &rwlock));
+ }
+
+ #[test]
fn locked_after_read() {
let key = ThreadKey::get().unwrap();
let lock: crate::RwLock<_> = RwLock::new("Hello, world!");