From 37ab873d21ca1fcd43db8d6a26d5bac4f5285f71 Mon Sep 17 00:00:00 2001 From: Mica White Date: Wed, 25 Dec 2024 17:58:06 -0500 Subject: Move some logic into the Sharable trait --- src/rwlock.rs | 24 ++++++++++++++++++++++++ 1 file changed, 24 insertions(+) (limited to 'src/rwlock.rs') 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::*; @@ -147,6 +149,28 @@ mod tests { assert!(writer.try_lock(key).is_ok()); } + #[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(); -- cgit v1.2.3