ByteUtils { public static byte[] trim(byte[] src, byte padding, boolean right, int minLength) { if(src.length < minLength) { throw new RuntimeException("src array is smaller than minLength: " + src.length + " < " + minLength); } if(right) { int offset; for (offset = src.length - 1; offset > minLength - 1; offset--) { if(padding != src[offset]) { break; } } if(offset < 0) { return new byte[0]; } else if (offset < src.length - 1){ return Arrays.copyOfRange(src, 0, offset + 1); } } else { int offset; for (offset = 0; offset < src.length - minLength; offset++) { if(padding != src[offset]) { break; } } if(offset == src.length) { return new byte[0]; } else if(offset > 0) { return Arrays.copyOfRange(src, offset, src.length); } } return src; }  static boolean allEquals(byte[] array, byte value, int offset, int maxLength); static int indexOf(byte[] array, byte needle, int offset, int maxLength); static byte[] trim(byte[] src, byte padding, boolean right, int minLength); static byte[] toByteArray(InputStream inputStream);  }
@Test public void testTrimRightMinLength0Empty() throws Exception { byte[] inBytes = new byte[] { }; byte[] outBytes = ByteUtils.trim(inBytes, (byte)32, true, 0); assertArrayEquals(new byte[]{}, outBytes); }
@Test public void testTrimRightMinLength1() throws Exception { byte[] inBytes = new byte[] { (byte)65, (byte)32, (byte)32 }; byte[] outBytes = ByteUtils.trim(inBytes, (byte)32, true, 1); assertArrayEquals(new byte[]{(byte) 65}, outBytes); }
@Test public void testTrimRightMinLength1OnlyPadding() throws Exception { byte[] inBytes = new byte[] { (byte)32, (byte)32, (byte)32 }; byte[] outBytes = ByteUtils.trim(inBytes, (byte)32, true, 1); assertArrayEquals(new byte[]{(byte) 32}, outBytes); }
@Test public void testTrimRightMinLength1Empty() throws Exception { expectedEx.expect(RuntimeException.class); expectedEx.expectMessage("src array is smaller than minLength"); byte[] inBytes = new byte[] { }; byte[] outBytes = ByteUtils.trim(inBytes, (byte)32, true, 1); assertArrayEquals(new byte[]{}, outBytes); }
@Test public void testTrimLeftMinLength0() throws Exception { byte[] inBytes = new byte[] { (byte)32, (byte)32, (byte)65 }; byte[] outBytes = ByteUtils.trim(inBytes, (byte)32, false, 0); assertArrayEquals(new byte[] { (byte)65 }, outBytes ); }
@Test public void testTrimLeftMinLength0OnlyPadding() throws Exception { byte[] inBytes = new byte[] { (byte)32, (byte)32, (byte)32 }; byte[] outBytes = ByteUtils.trim(inBytes, (byte)32, false, 0); assertArrayEquals(new byte[] { }, outBytes ); }
@Test public void testTrimLeftMinLength0Empty() throws Exception { byte[] inBytes = new byte[] { }; byte[] outBytes = ByteUtils.trim(inBytes, (byte)32, false, 0); assertArrayEquals(new byte[] { }, outBytes ); }
@Test public void testTrimLeftMinLength1() throws Exception { byte[] inBytes = new byte[] { (byte)32, (byte)32, (byte)65 }; byte[] outBytes = ByteUtils.trim(inBytes, (byte)32, false, 1); assertArrayEquals(new byte[] { (byte)65 }, outBytes ); }
@Test public void testTrimLeftMinLength1OnlyPadding() throws Exception { byte[] inBytes = new byte[] { (byte)32, (byte)32, (byte)32 }; byte[] outBytes = ByteUtils.trim(inBytes, (byte)32, false, 1); assertArrayEquals(new byte[] { (byte)32 }, outBytes ); }
@Test public void testTrimRightMinLength0() throws Exception { byte[] inBytes = new byte[] { (byte)65, (byte)32, (byte)32 }; byte[] outBytes = ByteUtils.trim(inBytes, (byte)32, true, 0); assertArrayEquals(new byte[]{(byte) 65}, outBytes); }
@Test public void testTrimRightMinLength0OnlyPadding() throws Exception { byte[] inBytes = new byte[] { (byte)32, (byte)32, (byte)32 }; byte[] outBytes = ByteUtils.trim(inBytes, (byte)32, true, 0); assertArrayEquals(new byte[]{}, outBytes); }