public void Handle()
{
bool called = false;
var pool = new Pool<int>(() => {called = true; return 0;}, int.MaxValue, 2);
Assert.IsTrue(called);
called = false;
Assert.AreEqual(2, pool.Count);
using(var handle = pool.GetHandle())
Assert.AreEqual(1, pool.Count);
Assert.AreEqual(2, pool.Count);
Assert.IsFalse(called);
while(pool.Count != 0)
pool.Get();
using(var handle = pool.GetHandle())
{
Assert.IsTrue(called);
Assert.AreEqual(0, pool.Count);
}
Assert.AreEqual(1, pool.Count);
Assert.AreEqual(0, pool.Get());
using(var handle = pool.GetHandle(() => 3))
Assert.AreEqual(3, handle.Object);
}