    @Test
    public void testSetParam() throws SQLException, MalformedURLException {

        preparedStatementProxy.clearParameters();
        preparedStatementProxy.setNull(1, JDBCType.DECIMAL.getVendorTypeNumber());
        Assertions.assertEquals(Null.get(), preparedStatementProxy.getParamsByIndex(1).get(0));
        preparedStatementProxy.clearParameters();

        preparedStatementProxy.setNull(1, JDBCType.DECIMAL.getVendorTypeNumber(), "NULL");
        Assertions.assertEquals(Null.get(), preparedStatementProxy.getParamsByIndex(1).get(0));
        preparedStatementProxy.clearParameters();

        preparedStatementProxy.setBoolean(1, true);
        Assertions.assertEquals(true, preparedStatementProxy.getParamsByIndex(1).get(0));
        preparedStatementProxy.clearParameters();

        preparedStatementProxy.setByte(1, (byte)0);
        Assertions.assertEquals((byte)0, preparedStatementProxy.getParamsByIndex(1).get(0));
        preparedStatementProxy.clearParameters();

        preparedStatementProxy.setShort(1, (short)0);
        Assertions.assertEquals((short)0, preparedStatementProxy.getParamsByIndex(1).get(0));
        preparedStatementProxy.clearParameters();

        preparedStatementProxy.setInt(1, 0);
        Assertions.assertEquals(0, preparedStatementProxy.getParamsByIndex(1).get(0));
        preparedStatementProxy.clearParameters();

        preparedStatementProxy.setLong(1, 0L);
        Assertions.assertEquals(0L, preparedStatementProxy.getParamsByIndex(1).get(0));
        preparedStatementProxy.clearParameters();

        preparedStatementProxy.setFloat(1, 0f);
        Assertions.assertEquals(0f, preparedStatementProxy.getParamsByIndex(1).get(0));
        preparedStatementProxy.clearParameters();

        preparedStatementProxy.setDouble(1, 1.1);
        Assertions.assertEquals(1.1, preparedStatementProxy.getParamsByIndex(1).get(0));
        preparedStatementProxy.clearParameters();

        preparedStatementProxy.setBigDecimal(1, new BigDecimal(0));
        Assertions.assertEquals(new BigDecimal(0), preparedStatementProxy.getParamsByIndex(1).get(0));
        preparedStatementProxy.clearParameters();

        preparedStatementProxy.setString(1, "x");
        Assertions.assertEquals("x", preparedStatementProxy.getParamsByIndex(1).get(0));
        preparedStatementProxy.clearParameters();

        preparedStatementProxy.setNString(1, "x");
        Assertions.assertEquals("x", preparedStatementProxy.getParamsByIndex(1).get(0));
        preparedStatementProxy.clearParameters();

        preparedStatementProxy.setBytes(1, "x".getBytes());
        Assertions.assertTrue(Objects.deepEquals("x".getBytes(), preparedStatementProxy.getParamsByIndex(1).get(0)));
        preparedStatementProxy.clearParameters();

        Date date = new Date(System.currentTimeMillis());
        preparedStatementProxy.setDate(1, date);
        Assertions.assertEquals(date, preparedStatementProxy.getParamsByIndex(1).get(0));
        preparedStatementProxy.clearParameters();

        preparedStatementProxy.setDate(1, date, Calendar.getInstance());
        Assertions.assertEquals(date, preparedStatementProxy.getParamsByIndex(1).get(0));
        preparedStatementProxy.clearParameters();

        Time time = new Time(System.currentTimeMillis());
        preparedStatementProxy.setTime(1, time);
        Assertions.assertEquals(time, preparedStatementProxy.getParamsByIndex(1).get(0));
        preparedStatementProxy.clearParameters();

        preparedStatementProxy.setTime(1, time, Calendar.getInstance());
        Assertions.assertEquals(time, preparedStatementProxy.getParamsByIndex(1).get(0));
        preparedStatementProxy.clearParameters();

        Timestamp timestamp = new Timestamp(System.currentTimeMillis());
        preparedStatementProxy.setTimestamp(1, timestamp);
        Assertions.assertEquals(timestamp, preparedStatementProxy.getParamsByIndex(1).get(0));
        preparedStatementProxy.clearParameters();

        preparedStatementProxy.setTimestamp(1, timestamp, Calendar.getInstance());
        Assertions.assertEquals(timestamp, preparedStatementProxy.getParamsByIndex(1).get(0));
        preparedStatementProxy.clearParameters();

        ByteArrayInputStream byteArrayInputStream = new ByteArrayInputStream("x".getBytes(), 0, 1);
        preparedStatementProxy.setAsciiStream(1, byteArrayInputStream);
        Assertions.assertEquals(byteArrayInputStream, preparedStatementProxy.getParamsByIndex(1).get(0));
        preparedStatementProxy.clearParameters();

        preparedStatementProxy.setAsciiStream(1, byteArrayInputStream, 1L);
        Assertions.assertEquals(byteArrayInputStream, preparedStatementProxy.getParamsByIndex(1).get(0));
        preparedStatementProxy.clearParameters();

        preparedStatementProxy.setAsciiStream(1, byteArrayInputStream);
        Assertions.assertEquals(byteArrayInputStream, preparedStatementProxy.getParamsByIndex(1).get(0));
        preparedStatementProxy.clearParameters();

        preparedStatementProxy.setUnicodeStream(1, byteArrayInputStream, 1);
        Assertions.assertEquals(byteArrayInputStream, preparedStatementProxy.getParamsByIndex(1).get(0));
        preparedStatementProxy.clearParameters();

        preparedStatementProxy.setBinaryStream(1, byteArrayInputStream);
        Assertions.assertEquals(byteArrayInputStream, preparedStatementProxy.getParamsByIndex(1).get(0));
        preparedStatementProxy.clearParameters();

        preparedStatementProxy.setBinaryStream(1, byteArrayInputStream, 1L);
        Assertions.assertEquals(byteArrayInputStream, preparedStatementProxy.getParamsByIndex(1).get(0));
        preparedStatementProxy.clearParameters();

        preparedStatementProxy.setBinaryStream(1, byteArrayInputStream, 1);
        Assertions.assertEquals(byteArrayInputStream, preparedStatementProxy.getParamsByIndex(1).get(0));
        preparedStatementProxy.clearParameters();

        preparedStatementProxy.setObject(1, 1, JDBCType.INTEGER.getVendorTypeNumber());
        Assertions.assertEquals(1, preparedStatementProxy.getParamsByIndex(1).get(0));
        preparedStatementProxy.clearParameters();

        preparedStatementProxy.setObject(1, 1, JDBCType.INTEGER.getVendorTypeNumber(), 1);
        Assertions.assertEquals(1, preparedStatementProxy.getParamsByIndex(1).get(0));
        preparedStatementProxy.clearParameters();

        preparedStatementProxy.setObject(1, 1);
        Assertions.assertEquals(1, preparedStatementProxy.getParamsByIndex(1).get(0));
        preparedStatementProxy.clearParameters();

        Assertions.assertDoesNotThrow(() -> preparedStatementProxy.addBatch());

        CharArrayReader charArrayReader = new CharArrayReader("x".toCharArray());
        preparedStatementProxy.setCharacterStream(1, charArrayReader, 1);
        Assertions.assertEquals(charArrayReader, preparedStatementProxy.getParamsByIndex(1).get(0));
        preparedStatementProxy.clearParameters();

        preparedStatementProxy.setCharacterStream(1, charArrayReader, 1L);
        Assertions.assertEquals(charArrayReader, preparedStatementProxy.getParamsByIndex(1).get(0));
        preparedStatementProxy.clearParameters();

        preparedStatementProxy.setCharacterStream(1, charArrayReader);
        Assertions.assertEquals(charArrayReader, preparedStatementProxy.getParamsByIndex(1).get(0));
        preparedStatementProxy.clearParameters();

        preparedStatementProxy.setNCharacterStream(1, charArrayReader);
        Assertions.assertEquals(charArrayReader, preparedStatementProxy.getParamsByIndex(1).get(0));
        preparedStatementProxy.clearParameters();

        preparedStatementProxy.setNCharacterStream(1, charArrayReader, 1L);
        Assertions.assertEquals(charArrayReader, preparedStatementProxy.getParamsByIndex(1).get(0));
        preparedStatementProxy.clearParameters();

        MockRef ref = new MockRef();
        preparedStatementProxy.setRef(1, ref);
        Assertions.assertEquals(ref, preparedStatementProxy.getParamsByIndex(1).get(0));
        preparedStatementProxy.clearParameters();

        MockBlob blob = new MockBlob();
        preparedStatementProxy.setBlob(1, blob);
        Assertions.assertEquals(blob, preparedStatementProxy.getParamsByIndex(1).get(0));
        preparedStatementProxy.clearParameters();

        preparedStatementProxy.setBlob(1, byteArrayInputStream);
        Assertions.assertEquals(byteArrayInputStream, preparedStatementProxy.getParamsByIndex(1).get(0));
        preparedStatementProxy.clearParameters();

        preparedStatementProxy.setBlob(1, byteArrayInputStream, 1L);
        Assertions.assertEquals(byteArrayInputStream, preparedStatementProxy.getParamsByIndex(1).get(0));
        preparedStatementProxy.clearParameters();

        MockClob clob = new MockClob();
        preparedStatementProxy.setClob(1, clob);
        Assertions.assertEquals(clob, preparedStatementProxy.getParamsByIndex(1).get(0));
        preparedStatementProxy.clearParameters();

        preparedStatementProxy.setClob(1, charArrayReader, 1L);
        Assertions.assertEquals(charArrayReader, preparedStatementProxy.getParamsByIndex(1).get(0));
        preparedStatementProxy.clearParameters();

        preparedStatementProxy.setClob(1, charArrayReader);
        Assertions.assertEquals(charArrayReader, preparedStatementProxy.getParamsByIndex(1).get(0));
        preparedStatementProxy.clearParameters();

        MockNClob nclob = new MockNClob();
        preparedStatementProxy.setNClob(1, nclob);
        Assertions.assertEquals(nclob, preparedStatementProxy.getParamsByIndex(1).get(0));
        preparedStatementProxy.clearParameters();

        preparedStatementProxy.setNClob(1, charArrayReader, 1L);
        Assertions.assertEquals(charArrayReader, preparedStatementProxy.getParamsByIndex(1).get(0));
        preparedStatementProxy.clearParameters();

        preparedStatementProxy.setNClob(1, charArrayReader);
        Assertions.assertEquals(charArrayReader, preparedStatementProxy.getParamsByIndex(1).get(0));
        preparedStatementProxy.clearParameters();

        MockArray array = new MockArray();
        preparedStatementProxy.setArray(1, array);
        Assertions.assertEquals(array, preparedStatementProxy.getParamsByIndex(1).get(0));
        preparedStatementProxy.clearParameters();

        Assertions.assertNotNull(preparedStatementProxy.getMetaData());
        Assertions.assertNotNull(preparedStatementProxy.getParameterMetaData());

        URL url = new URL("http", "", 8080, "");
        preparedStatementProxy.setURL(1, url);
        Assertions.assertEquals(url, preparedStatementProxy.getParamsByIndex(1).get(0));
        preparedStatementProxy.clearParameters();

        MockSQLXML sqlxml = new MockSQLXML();
        preparedStatementProxy.setSQLXML(1, sqlxml);
        Assertions.assertEquals(sqlxml, preparedStatementProxy.getParamsByIndex(1).get(0));
        preparedStatementProxy.clearParameters();

        Assertions.assertNotNull(preparedStatementProxy.getParameters());
    }