### Question:
ByteArrayType implements ExtendedType<byte[]> { public static byte[] trimBytes(byte[] bytes) { int bytesToTrim = 0; for (int i = bytes.length - 1; i >= 0; i--) { if (bytes[i] != 0) { bytesToTrim = bytes.length - 1 - i; break; } } if (bytesToTrim == 0) { return bytes; } byte[] dest = new byte[bytes.length - bytesToTrim]; System.arraycopy(bytes, 0, dest, 0, dest.length); return dest; } ByteArrayType(boolean trimmingBytes, boolean usingBlobs); static void logBytes(StringBuilder buffer, byte[] bytes); static byte[] trimBytes(byte[] bytes); @Override String getClassName(); @Override byte[] materializeObject(ResultSet rs, int index, int type); @Override byte[] materializeObject(CallableStatement cs, int index, int type); @Override void setJdbcObject(PreparedStatement st, byte[] val, int pos, int type, int scale); @Override String toString(byte[] value); boolean isUsingBlobs(); void setUsingBlobs(boolean usingBlobs); boolean isTrimmingBytes(); void setTrimmingBytes(boolean trimingBytes);  }### Answer:
@Test public void testTrimBytes1() throws Exception { byte[] b1 = new byte[] { 1, 2, 3 }; byte[] b2 = ByteArrayType.trimBytes(b1); assertByteArraysEqual(b1, b2); }
@Test public void testTrimBytes2() throws Exception { byte[] ref = new byte[] { 1, 2, 3 }; byte[] b1 = new byte[] { 1, 2, 3, 0, 0 }; byte[] b2 = ByteArrayType.trimBytes(b1); assertByteArraysEqual(ref, b2); }
@Test public void testTrimBytes3() throws Exception { byte[] b1 = new byte[] { 0, 1, 2, 3 }; byte[] b2 = ByteArrayType.trimBytes(b1); assertByteArraysEqual(b1, b2); }
@Test public void testTrimBytes4() throws Exception { byte[] b1 = new byte[] {}; byte[] b2 = ByteArrayType.trimBytes(b1); assertByteArraysEqual(b1, b2); }