Example #1
0
 public void WaitOnBorrowWhenExausted()
 {
     int n = 100;
     object[] objects = new object[n];
     pool = new SimplePool(new MyFactory(), n);
     for (int i = 0; i < n; i++)
     {
         objects[i] = pool.BorrowObject();
     }
     Latch latch = new Latch();
     ISync sync = new Latch();
     Helper helper = new Helper(latch, sync, pool);
     Thread thread = new Thread(new ThreadStart(helper.UsePool));
     thread.Start();
     Assert.AreEqual(n, pool.NumActive);
     Assert.AreEqual(0, pool.NumIdle);
     object released = objects[n - 1];
     pool.ReturnObject(released);
     latch.Acquire();
     Assert.AreEqual(n, pool.NumActive);
     Assert.AreEqual(0, pool.NumIdle);
     Assert.IsNotNull(helper.gotFromPool, "helper did not get from pool");
     Assert.AreSame(released, helper.gotFromPool, "got unexpected object");
 }
Example #2
0
        public void ThrowsExceptionWhenOutOfItemsBecauseFailedValidation()
        {
            object o = new object();
            Expect.Call(factory.MakeObject()).Return(o);
            Expect.Call(factory.ValidateObject(o)).Return(false);
            mocks.ReplayAll();

            pool = new SimplePool(factory, 1);
            pool.BorrowObject();
            mocks.VerifyAll();
        }