diff --git a/tests/mutex.rs b/tests/mutex.rs index dce687a..01d4924 100644 --- a/tests/mutex.rs +++ b/tests/mutex.rs @@ -32,6 +32,14 @@ fn smoke_blocking() { drop(m.lock_blocking()); } +#[cfg(all(feature = "std", not(target_family = "wasm")))] +#[test] +fn smoke_arc_blocking() { + let m = Arc::new(Mutex::new(())); + drop(m.lock_arc_blocking()); + drop(m.lock_arc_blocking()); +} + #[test] fn try_lock() { let m = Mutex::new(()); diff --git a/tests/rwlock.rs b/tests/rwlock.rs index ab6fc37..fd38ea0 100644 --- a/tests/rwlock.rs +++ b/tests/rwlock.rs @@ -54,9 +54,27 @@ fn smoke_blocking() { drop(lock.read_blocking()); drop(lock.write_blocking()); drop((lock.read_blocking(), lock.read_blocking())); + let read = lock.read_blocking(); + let upgradabe = lock.upgradable_read_blocking(); + drop(read); + drop(RwLockUpgradableReadGuard::upgrade_blocking(upgradabe)); drop(lock.write_blocking()); } +#[cfg(all(feature = "std", not(target_family = "wasm")))] +#[test] +fn smoke_arc_blocking() { + let lock = Arc::new(RwLock::new(())); + drop(lock.read_arc_blocking()); + drop(lock.write_arc_blocking()); + drop((lock.read_arc_blocking(), lock.read_arc_blocking())); + let read = lock.read_arc_blocking(); + let upgradabe = lock.upgradable_read_arc_blocking(); + drop(read); + drop(RwLockUpgradableReadGuardArc::upgrade_blocking(upgradabe)); + drop(lock.write_arc_blocking()); +} + #[test] fn try_write() { future::block_on(async { diff --git a/tests/semaphore.rs b/tests/semaphore.rs index 0aab0b5..52042bd 100644 --- a/tests/semaphore.rs +++ b/tests/semaphore.rs @@ -125,6 +125,17 @@ fn smoke_blocking() { assert!(s.try_acquire().is_some()); } +#[cfg(all(feature = "std", not(target_family = "wasm")))] +#[test] +fn smoke_arc_blocking() { + let s = Arc::new(Semaphore::new(2)); + let g1 = s.acquire_arc_blocking(); + let _g2 = s.acquire_arc_blocking(); + assert!(s.try_acquire().is_none()); + drop(g1); + assert!(s.try_acquire().is_some()); +} + #[test] fn add_permits() { static COUNTER: AtomicUsize = AtomicUsize::new(0);