From 280a61ad7b74019c7aad8b7306a0dd7cfb11359c Mon Sep 17 00:00:00 2001 From: Botahamec Date: Sun, 12 Jan 2025 15:04:01 -0500 Subject: More unit tests --- src/rwlock.rs | 31 +++++++++++++++++++++++++++++++ 1 file changed, 31 insertions(+) (limited to 'src/rwlock.rs') diff --git a/src/rwlock.rs b/src/rwlock.rs index ea7d3f0..f78e648 100644 --- a/src/rwlock.rs +++ b/src/rwlock.rs @@ -117,6 +117,7 @@ pub struct RwLockWriteGuard<'a, 'key: 'a, T: ?Sized, Key: Keyable + 'key, R: Raw #[cfg(test)] mod tests { use crate::lockable::Lockable; + use crate::LockCollection; use crate::RwLock; use crate::ThreadKey; @@ -233,6 +234,21 @@ mod tests { assert_eq!(guard.to_string(), "Hello, world!".to_string()); } + #[test] + fn write_ord() { + let key = ThreadKey::get().unwrap(); + let lock1: crate::RwLock<_> = RwLock::new(1); + let lock2: crate::RwLock<_> = RwLock::new(5); + let lock3: crate::RwLock<_> = RwLock::new(5); + let collection = LockCollection::try_new((&lock1, &lock2, &lock3)).unwrap(); + let guard = collection.lock(key); + + assert!(guard.0 < guard.1); + assert!(guard.1 > guard.0); + assert!(guard.1 == guard.2); + assert!(guard.0 != guard.2); + } + #[test] fn read_ref_display_works() { let lock: crate::RwLock<_> = RwLock::new("Hello, world!"); @@ -247,6 +263,21 @@ mod tests { assert_eq!(guard.to_string(), "Hello, world!".to_string()); } + #[test] + fn read_ord() { + let key = ThreadKey::get().unwrap(); + let lock1: crate::RwLock<_> = RwLock::new(1); + let lock2: crate::RwLock<_> = RwLock::new(5); + let lock3: crate::RwLock<_> = RwLock::new(5); + let collection = LockCollection::try_new((&lock1, &lock2, &lock3)).unwrap(); + let guard = collection.read(key); + + assert!(guard.0 < guard.1); + assert!(guard.1 > guard.0); + assert!(guard.1 == guard.2); + assert!(guard.0 != guard.2); + } + #[test] fn dropping_read_ref_releases_rwlock() { let lock: crate::RwLock<_> = RwLock::new("Hello, world!"); -- cgit v1.2.3