test_class.declarator: SIGNATURE = "ENDSLEY/BSDIFF43"
test_class.modifier: private static final
test_class.original_string: private static final String SIGNATURE = "ENDSLEY/BSDIFF43";
test_class.type: String
test_class.var_name: SIGNATURE
test_class.declarator: buffer1
test_class.modifier: private
test_class.original_string: private byte[] buffer1;
test_class.type: byte[]
test_class.var_name: buffer1
test_class.declarator: buffer2
test_class.modifier: private
test_class.original_string: private byte[] buffer2;
test_class.type: byte[]
test_class.var_name: buffer2
test_class.declarator: oldFile
test_class.modifier: private
test_class.original_string: private File oldFile;
test_class.type: File
test_class.var_name: oldFile
test_class.file: feya/libraries/archive_diff/diff.applier/src/test/java/com/google/archivepatcher/applier/bsdiff/BsPatchTest.java
test_class.identifier: BsPatchTest
test_case.body: @Test
    public void testPipe_CopyZeroBytes() throws IOException {
      int dataLength = 0;
      ByteArrayInputStream in = new ByteArrayInputStream(new byte[dataLength]);
      ByteArrayOutputStream out = new ByteArrayOutputStream();
      BsPatch.pipe(in, out, new byte[100], dataLength);
      int actualLength = out.toByteArray().length;
      Assert.assertEquals(0, actualLength);
    }
test_case.class_method_signature: BsPatchTest.testPipe_CopyZeroBytes()
test_case.full_signature: @Test public void testPipe_CopyZeroBytes()
test_case.identifier: testPipe_CopyZeroBytes
test_case.invocations: pipe toByteArray assertEquals
test_case.modifiers: @Test public
test_case.parameters: ()
test_case.return: void
test_case.signature: void testPipe_CopyZeroBytes()
focal_class.declarator: SIGNATURE = "ENDSLEY/BSDIFF43"
focal_class.modifier: private static final
focal_class.original_string: private static final String SIGNATURE = "ENDSLEY/BSDIFF43";
focal_class.type: String
focal_class.var_name: SIGNATURE
focal_class.declarator: PATCH_BUFFER_SIZE = 1024 * 50
focal_class.modifier: private static final
focal_class.original_string: private static final int PATCH_BUFFER_SIZE = 1024 * 50;
focal_class.type: int
focal_class.var_name: PATCH_BUFFER_SIZE
focal_class.declarator: NEGATIVE_LONG_SIGN_MASK = 1L << 63
focal_class.modifier: private static final
focal_class.original_string: private static final long NEGATIVE_LONG_SIGN_MASK = 1L << 63;
focal_class.type: long
focal_class.var_name: NEGATIVE_LONG_SIGN_MASK
focal_class.declarator: PATCH_STREAM_BUFFER_SIZE = 4 * 1024
focal_class.modifier: private static final
focal_class.original_string: private static final int PATCH_STREAM_BUFFER_SIZE = 4 * 1024;
focal_class.type: int
focal_class.var_name: PATCH_STREAM_BUFFER_SIZE
focal_class.declarator: OUTPUT_STREAM_BUFFER_SIZE = 16 * 1024
focal_class.modifier: private static final
focal_class.original_string: private static final int OUTPUT_STREAM_BUFFER_SIZE = 16 * 1024;
focal_class.type: int
focal_class.var_name: OUTPUT_STREAM_BUFFER_SIZE
focal_class.file: feya/libraries/archive_diff/diff.applier/src/main/java/com/google/archivepatcher/applier/bsdiff/BsPatch.java
focal_class.identifier: BsPatch
focal_class.class_method_signature: BsPatch.applyPatch(
        RandomAccessFile oldData, OutputStream newData, InputStream patchData)
focal_class.full_signature: public static void applyPatch(
        RandomAccessFile oldData, OutputStream newData, InputStream patchData)
focal_class.identifier: applyPatch
focal_class.modifiers: public static
focal_class.parameters: (
        RandomAccessFile oldData, OutputStream newData, InputStream patchData)
focal_class.return: void
focal_class.signature: void applyPatch(
        RandomAccessFile oldData, OutputStream newData, InputStream patchData)
focal_class.class_method_signature: BsPatch.applyPatchInternal(
        final RandomAccessFile oldData,
        final OutputStream newData,
        final InputStream patchData)
focal_class.full_signature: private static void applyPatchInternal(
        final RandomAccessFile oldData,
        final OutputStream newData,
        final InputStream patchData)
focal_class.identifier: applyPatchInternal
focal_class.modifiers: private static
focal_class.parameters: (
        final RandomAccessFile oldData,
        final OutputStream newData,
        final InputStream patchData)
focal_class.return: void
focal_class.signature: void applyPatchInternal(
        final RandomAccessFile oldData,
        final OutputStream newData,
        final InputStream patchData)
focal_class.class_method_signature: BsPatch.transformBytes(
        final int diffLength,
        final InputStream patchData,
        final RandomAccessFile oldData,
        final OutputStream newData,
        final byte[] buffer1,
        final byte[] buffer2)
focal_class.full_signature: static void transformBytes(
        final int diffLength,
        final InputStream patchData,
        final RandomAccessFile oldData,
        final OutputStream newData,
        final byte[] buffer1,
        final byte[] buffer2)
focal_class.identifier: transformBytes
focal_class.modifiers: static
focal_class.parameters: (
        final int diffLength,
        final InputStream patchData,
        final RandomAccessFile oldData,
        final OutputStream newData,
        final byte[] buffer1,
        final byte[] buffer2)
focal_class.return: void
focal_class.signature: void transformBytes(
        final int diffLength,
        final InputStream patchData,
        final RandomAccessFile oldData,
        final OutputStream newData,
        final byte[] buffer1,
        final byte[] buffer2)
focal_class.class_method_signature: BsPatch.readBsdiffLong(InputStream in)
focal_class.full_signature: static final long readBsdiffLong(InputStream in)
focal_class.identifier: readBsdiffLong
focal_class.modifiers: static final
focal_class.parameters: (InputStream in)
focal_class.return: long
focal_class.signature: long readBsdiffLong(InputStream in)
focal_class.class_method_signature: BsPatch.readFully(
        final InputStream in, final byte[] destination, final int startAt, final int numBytes)
focal_class.full_signature: static void readFully(
        final InputStream in, final byte[] destination, final int startAt, final int numBytes)
focal_class.identifier: readFully
focal_class.modifiers: static
focal_class.parameters: (
        final InputStream in, final byte[] destination, final int startAt, final int numBytes)
focal_class.return: void
focal_class.signature: void readFully(
        final InputStream in, final byte[] destination, final int startAt, final int numBytes)
focal_class.class_method_signature: BsPatch.pipe(
        final InputStream in, final OutputStream out, final byte[] buffer, int copyLength)
focal_class.full_signature: static void pipe(
        final InputStream in, final OutputStream out, final byte[] buffer, int copyLength)
focal_class.identifier: pipe
focal_class.modifiers: static
focal_class.parameters: (
        final InputStream in, final OutputStream out, final byte[] buffer, int copyLength)
focal_class.return: void
focal_class.signature: void pipe(
        final InputStream in, final OutputStream out, final byte[] buffer, int copyLength)
focal_method.body: static void pipe(
        final InputStream in, final OutputStream out, final byte[] buffer, int copyLength)
        throws IOException {
      while (copyLength > 0) {
        int maxCopy = Math.min(buffer.length, copyLength);
        readFully(in, buffer, 0, maxCopy);
        out.write(buffer, 0, maxCopy);
        copyLength -= maxCopy;
      }
    }
focal_method.class_method_signature: BsPatch.pipe(
        final InputStream in, final OutputStream out, final byte[] buffer, int copyLength)
focal_method.full_signature: static void pipe(
        final InputStream in, final OutputStream out, final byte[] buffer, int copyLength)
focal_method.identifier: pipe
focal_method.invocations: min readFully write
focal_method.modifiers: static
focal_method.parameters: (
        final InputStream in, final OutputStream out, final byte[] buffer, int copyLength)
focal_method.return: void
focal_method.signature: void pipe(
        final InputStream in, final OutputStream out, final byte[] buffer, int copyLength)