diff options
| author | Mica White <botahamec@gmail.com> | 2024-12-25 17:58:06 -0500 |
|---|---|---|
| committer | Mica White <botahamec@gmail.com> | 2024-12-25 17:58:06 -0500 |
| commit | 37ab873d21ca1fcd43db8d6a26d5bac4f5285f71 (patch) | |
| tree | 987e0a0604c29ceea8d17e424df65993608c7ea5 /src/rwlock.rs | |
| parent | bfdbf20a813bb4b5527a3d6ff4a5c1bac134b466 (diff) | |
Move some logic into the Sharable trait
Diffstat (limited to 'src/rwlock.rs')
| -rw-r--r-- | src/rwlock.rs | 24 |
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!"); |
