summaryrefslogtreecommitdiff
path: root/tests/forget.rs
blob: 0c74c84d7656bd7c3d6063dc2358f774bf76b5e7 (plain)
#![cfg(feature = "std")]

use happylock::{Mutex, ThreadKey};

#[test]
fn no_new_threadkey_when_forgetting_lock() {
	let key = ThreadKey::get().unwrap();
	let mutex = Mutex::new("foo".to_string());

	let guard = mutex.lock(key);
	std::mem::forget(guard);

	assert!(ThreadKey::get().is_none());
}

#[test]
fn no_new_threadkey_in_scoped_lock() {
	let mut key = ThreadKey::get().unwrap();
	let mutex = Mutex::new("foo".to_string());

	mutex.scoped_lock(&mut key, |_| {
		assert!(ThreadKey::get().is_none());
	});

	mutex.lock(key);
}