use super::{Pool, PoolEntry};
#[tokio::test]
async fn test() {
struct Item;
impl PoolEntry for Item {
fn is_closed(&self) -> bool {
false
}
}
let pool = Pool::default();
assert!(pool.is_empty());
pool.push(Item);
assert_eq!(pool.len(), 1);
assert!(!pool.is_empty());
assert!(pool.acquire().await.is_some());
assert!(pool.acquire().await.is_some());
pool.push(Item);
assert_eq!(pool.len(), 2);
let a = pool.acquire().await;
let b = pool.acquire().await;
assert!(a.is_some());
assert!(b.is_some());
}
#[tokio::test]
async fn test_closed_entries() {
struct Item {
closed: bool,
}
impl PoolEntry for Item {
fn is_closed(&self) -> bool {
self.closed
}
}
let pool = Pool::default();
assert!(pool.is_empty());
pool.push(Item { closed: true });
assert_eq!(pool.len(), 1);
assert!(!pool.is_empty());
assert!(pool.acquire().await.is_some());
assert!(pool.is_empty());
pool.push(Item { closed: false });
pool.push(Item { closed: true });
pool.push(Item { closed: false });
assert_eq!(pool.len(), 3);
{
let a = pool.acquire().await;
let b = pool.acquire().await;
let c = pool.acquire().await;
assert!(a.is_some());
assert!(b.is_some());
assert!(c.is_some());
}
assert_eq!(pool.len(), 2);
}