pub use meerkat_core::handles::DefaultSessionClaimRegistry as RuntimeSessionClaimRegistry;
#[cfg(test)]
#[allow(clippy::unwrap_used, clippy::expect_used)]
mod tests {
use std::sync::Arc;
use meerkat_core::SessionId;
use meerkat_core::handles::{SessionClaimError, SessionClaimHandle};
use super::RuntimeSessionClaimRegistry;
#[test]
fn second_live_acquire_for_same_session_fails() {
let registry: Arc<dyn SessionClaimHandle> = Arc::new(RuntimeSessionClaimRegistry::new());
let sid = SessionId::new();
let _claim = registry.clone().try_acquire(&sid).expect("first acquire");
let err = registry.try_acquire(&sid).expect_err("second must fail");
assert!(matches!(err, SessionClaimError::SessionIdentityInUse(_)));
}
#[test]
fn drop_releases_claim() {
let registry: Arc<dyn SessionClaimHandle> = Arc::new(RuntimeSessionClaimRegistry::new());
let sid = SessionId::new();
{
let _claim = registry.clone().try_acquire(&sid).expect("first acquire");
}
let _claim2 = registry
.try_acquire(&sid)
.expect("acquire after drop should succeed");
}
}