### Question:
ScriptChunk { public byte[] toByteArray() { ByteArrayOutputStream stream = new ByteArrayOutputStream(); try { write(stream); } catch (IOException e) { throw new RuntimeException(e); } return stream.toByteArray(); } ScriptChunk(int opcode, @Nullable byte[] data); boolean equalsOpCode(int opcode); boolean isOpCode(); boolean isPushData(); int decodeOpN(); boolean isShortestPossiblePushData(); void write(OutputStream stream); byte[] toByteArray(); int size(); @Override String toString(); @Override boolean equals(Object o); @Override int hashCode(); final int opcode; @Nullable
    final byte[] data; }### Answer:
@Test public void testToByteArray_opcode() { byte[] expected = new byte[] { OP_IF }; byte[] actual = new ScriptChunk(OP_IF, null).toByteArray(); assertArrayEquals(expected, actual); }
@Test public void testToByteArray_smallNum() { byte[] expected = new byte[] { OP_0 }; byte[] actual = new ScriptChunk(OP_0, null).toByteArray(); assertArrayEquals(expected, actual); }
@Test public void testToByteArray_lt_OP_PUSHDATA1() { for (byte len = 1; len < OP_PUSHDATA1; len++) { byte[] bytes = new byte[len]; RANDOM.nextBytes(bytes); byte[] expected = Bytes.concat(new byte[] { len }, bytes); byte[] actual = new ScriptChunk(len, bytes).toByteArray(); assertArrayEquals(expected, actual); } }
@Test public void testToByteArray_OP_PUSHDATA1() { byte[] bytes = new byte[0xFF]; RANDOM.nextBytes(bytes); byte[] expected = Bytes.concat(new byte[] { OP_PUSHDATA1, (byte) 0xFF }, bytes); byte[] actual = new ScriptChunk(OP_PUSHDATA1, bytes).toByteArray(); assertArrayEquals(expected, actual); }
@Test public void testToByteArray_OP_PUSHDATA2() { byte[] bytes = new byte[0x0102]; RANDOM.nextBytes(bytes); byte[] expected = Bytes.concat(new byte[] { OP_PUSHDATA2, 0x02, 0x01 }, bytes); byte[] actual = new ScriptChunk(OP_PUSHDATA2, bytes).toByteArray(); assertArrayEquals(expected, actual); }
@Test public void testToByteArray_OP_PUSHDATA4() { byte[] bytes = new byte[0x0102]; RANDOM.nextBytes(bytes); byte[] expected = Bytes.concat(new byte[] { OP_PUSHDATA4, 0x02, 0x01, 0x00, 0x00 }, bytes); byte[] actual = new ScriptChunk(OP_PUSHDATA4, bytes).toByteArray(); assertArrayEquals(expected, actual); }