From 48aaedad542b9c6cbdc85d22517cd0d151f38443 Mon Sep 17 00:00:00 2001 From: Mica White Date: Sun, 1 Dec 2024 15:28:44 -0500 Subject: Unit testing --- src/collection/ref.rs | 34 ++++++++++++++++++++++++++++++++++ 1 file changed, 34 insertions(+) (limited to 'src/collection/ref.rs') diff --git a/src/collection/ref.rs b/src/collection/ref.rs index 8b9e0f8..60abdfa 100644 --- a/src/collection/ref.rs +++ b/src/collection/ref.rs @@ -436,3 +436,37 @@ where self.into_iter() } } + +#[cfg(test)] +mod tests { + use super::*; + use crate::{Mutex, ThreadKey}; + + #[test] + fn non_duplicates_allowed() { + let mutex1 = Mutex::new(0); + let mutex2 = Mutex::new(1); + assert!(RefLockCollection::try_new(&[&mutex1, &mutex2]).is_some()) + } + + #[test] + fn duplicates_not_allowed() { + let mutex1 = Mutex::new(0); + assert!(RefLockCollection::try_new(&[&mutex1, &mutex1]).is_none()) + } + + #[test] + fn works_in_collection() { + let key = ThreadKey::get().unwrap(); + let mutex1 = Mutex::new(0); + let mutex2 = Mutex::new(1); + let collection0 = [&mutex1, &mutex2]; + let collection1 = RefLockCollection::try_new(&collection0).unwrap(); + let collection = RefLockCollection::try_new(&collection1).unwrap(); + + let guard = collection.lock(key); + assert!(mutex1.is_locked()); + assert!(mutex2.is_locked()); + drop(guard); + } +} -- cgit v1.2.3