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;
    }
  }