@Override public CRAMCodec<Integer> buildCodec(final BitInputStream coreBlockInputStream, final BitOutputStream coreBlockOutputStream, final Map<Integer, ByteArrayInputStream> externalBlockInputMap, final Map<Integer, ByteArrayOutputStream> externalBlockOutputMap) { return new GammaIntegerCodec(coreBlockInputStream, coreBlockOutputStream, offset); }
@Override public CRAMCodec<Integer> buildCodec(final BitInputStream coreBlockInputStream, final BitOutputStream coreBlockOutputStream, final Map<Integer, ByteArrayInputStream> externalBlockInputMap, final Map<Integer, ByteArrayOutputStream> externalBlockOutputMap) { return new GammaIntegerCodec(coreBlockInputStream, coreBlockOutputStream, offset); }
@Test(dataProvider = "negativeTest", expectedExceptions = IllegalArgumentException.class) public void negativeTest(final int offset, final int value) throws IOException { try (final ByteArrayOutputStream os = new ByteArrayOutputStream(); final BitOutputStream bos = new DefaultBitOutputStream(os)) { final CRAMCodec<Integer> codec = new GammaIntegerCodec(null, bos, offset); codec.write(value); } } }
private void testCodec(final int offset, final int[] inputs, final byte[] expected) throws IOException { byte[] writtenOut; try (final ByteArrayOutputStream os = new ByteArrayOutputStream(); final BitOutputStream bos = new DefaultBitOutputStream(os)) { final CRAMCodec<Integer> writeCodec = new GammaIntegerCodec(null, bos, offset); for (final int value : inputs) { writeCodec.write(value); } bos.flush(); writtenOut = os.toByteArray(); Assert.assertEquals(writtenOut, expected); } final int[] readBack = new int[inputs.length]; try (final InputStream is = new ByteArrayInputStream(writtenOut); final DefaultBitInputStream dbis = new DefaultBitInputStream(is)) { final CRAMCodec<Integer> readCodec = new GammaIntegerCodec(dbis, null, offset); for (int i = 0; i < inputs.length; i++) { readBack[i] = readCodec.read(); } } Assert.assertEquals(readBack, inputs); }