/**
* Verifies that validation exceptions always propagate
*/
public void testExceptionOnValidate() throws Exception {
SelectiveFactory factory = new SelectiveFactory();
ObjectPool pool = new StackObjectPool(factory, 2);
factory.setThrowOnValidate(true);
// addObject
try {
pool.addObject();
fail("Expecting IntegerFactoryException");
} catch (IntegerFactoryException ex) {
assertEquals("validateObject", ex.getType());
}
assertEquals(0, pool.getNumIdle());
// returnObject
factory.setThrowOnValidate(false);
Object obj = pool.borrowObject();
factory.setThrowOnValidate(true);
try {
pool.returnObject(obj);
fail("Expecting IntegerFactoryException");
} catch (IntegerFactoryException ex) {
assertEquals("validateObject", ex.getType());
}
assertEquals(0, pool.getNumIdle());
// borrowObject - throws NoSuchElementException
try {
pool.borrowObject();
fail("Expecting NoSuchElementException");
} catch (NoSuchElementException ex) {
// Expected
}
}