public void testPngMaxData() throws EncodingException, DecodingException { int maxLength = PngStegoImage.getMaxBytesEncodable(mCoverImage); byte[] bytes = new byte[maxLength]; for (int i = 0; i < bytes.length; i++) { bytes[i] = (byte) (i % 255); } PngStegoImage image = new PngStegoImage(); image.setImageBitmap(mCoverImage); image.setEmbeddedData(bytes); image.encode(); PngStegoImage decoder = new PngStegoImage(); decoder.setImageBytes(image.getImageBytes()); decoder.decode(); int bitnum = 8 * Constants.STEGO_HEADER_LENGTH; for (int i = 0; i < bytes.length; i++) { assertEquals( String.format( "Bytes length %d, Byte %d, Expected '%x' Actual '%x', bitnum is %d", bytes.length, i, bytes[i] & 0xFF, decoder.getEmbeddedData()[i] & 0xFF, bitnum), bytes[i], decoder.getEmbeddedData()[i]); bitnum += 8; } }