package org.bodington.pool;

import junit.framework.TestCase;

public class ObjectPoolTest extends TestCase {

	
	public void testGetObject() throws ObjectPoolException
	{
		ObjectPool pool = new ObjectPool(3);
		Object borrowed = pool.getObject();
		assertNotNull(borrowed);
	}
	
	public void testFreeObject() throws ObjectPoolException
	{
		ObjectPool pool = new ObjectPool(3);
		Object borrowed = pool.getObject();
		pool.freeObject(borrowed);
	}
	
	public void testGetObjectAll() throws ObjectPoolException
	{
		ObjectPool pool = new ObjectPool(3);
		Object borrowed1 = pool.getObject();
		Object borrowed2 = pool.getObject();
		Object borrowed3 = pool.getObject();
		
		assertNotSame(borrowed1, borrowed2);
		assertNotSame(borrowed1, borrowed3);
		assertNotSame(borrowed2, borrowed3);
		
		// Pool now all in use.
		Object borrowed = pool.getObject();
		assertNull(borrowed);
		
		// Check that we get back the same one we return
		pool.freeObject(borrowed1);
		assertEquals(borrowed1, pool.getObject());
		
	}
}
