@Test
public void testPoolUtil() throws SQLException{

	Maps.newHashMap();
	Map<Object, Object> logParams = new LinkedHashMap<Object, Object>();
	logParams.put("1", "123");
	logParams.put("2", "456");
	logParams.put("3", new Blob() {
		public void truncate(long len) throws SQLException {
			// do nothing
		}
		public int setBytes(long pos, byte[] bytes, int offset, int len)
				throws SQLException {
			return 0;
		}
		public int setBytes(long pos, byte[] bytes) throws SQLException {
			return 0;
		}
		public OutputStream setBinaryStream(long pos) throws SQLException {
			return null;
		}
		public long position(Blob pattern, long start) throws SQLException {
			return 0;
		}
		public long position(byte[] pattern, long start) throws SQLException {
			return 0;
		}
		public long length() throws SQLException {
			return 5;
		}
		public byte[] getBytes(long pos, int length) throws SQLException {
			return null;
		}
		public InputStream getBinaryStream(long pos, long length)
				throws SQLException {
			return null;
		}
		public InputStream getBinaryStream() throws SQLException {
			return null;
		}
		public void free() throws SQLException {
			//do nothing
		}
	});
	logParams.put("4", new Clob() {
		public void truncate(long len) throws SQLException {
			//do nothing
		}
		public int setString(long pos, String str, int offset, int len)
				throws SQLException {
			return 0;
		}
		public int setString(long pos, String str) throws SQLException {
			return 0;
		}
		public Writer setCharacterStream(long pos) throws SQLException {
			return null;
		}
		public OutputStream setAsciiStream(long pos) throws SQLException {
			return null;
		}
		public long position(Clob searchstr, long start) throws SQLException {
			return 0;
		}
		public long position(String searchstr, long start) throws SQLException {
			return 0;
		}
		public long length() throws SQLException {
			return 5;
		}
		public String getSubString(long pos, int length) throws SQLException {
			return null;
		}
		public Reader getCharacterStream(long pos, long length) throws SQLException {
			return null;
		}
		public Reader getCharacterStream() throws SQLException {
			return null;
		}
		public InputStream getAsciiStream() throws SQLException {
			return null;
		}
		public void free() throws SQLException {
			//do nothing
		}
	});
	logParams.put("5", new Array() {
		public ResultSet getResultSet(long index, int count,
				Map<String, Class<?>> map) throws SQLException {
			return null;
		}
		public ResultSet getResultSet(long index, int count) throws SQLException {
			return null;
		}
		public ResultSet getResultSet(Map<String, Class<?>> map)
				throws SQLException {
			return null;
		}
		public ResultSet getResultSet() throws SQLException {
			return null;
		}
		public String getBaseTypeName() throws SQLException {
			return "Base type name";
		}
		public int getBaseType() throws SQLException {
			return 14;
		}
		public Object getArray(long index, int count, Map<String, Class<?>> map)
				throws SQLException {
			return null;
		}
		public Object getArray(long index, int count) throws SQLException {
			return null;
		}
		public Object getArray(Map<String, Class<?>> map) throws SQLException {
			return null;
		}
		public Object getArray() throws SQLException {
			return null;
		}
		public void free() throws SQLException {
			// nop
		}
	});
	logParams.put("6", new Ref() {
		public void setObject(Object value) throws SQLException {
		}
		public Object getObject(Map<String, Class<?>> map) throws SQLException {
			return null;
		}
		public Object getObject() throws SQLException {
			return null;
		}
		public String getBaseTypeName() throws SQLException {
			return "type";
		}
	});
	logParams.put("7", new Integer(999));
	// test proper replacement/escaping
	assertEquals("ID='123' AND FOO='?' and LALA=\"BOO\" '456' (blob of length 5) (cblob of length 5) (array of type14) (ref of type4) 999 ?", PoolUtil.fillLogParams("ID=? AND FOO='?' and LALA=\"BOO\" ? ? ? ? ? ? ?", logParams));
}