@Test public void testEncodeDecode() throws Exception { String testFile = TestUtils.DATA_DIR + "sam/NA12878.muc1.test.sam"; SAMReader reader = new SAMReader(testFile); Iterator<PicardAlignment> inputAlignmentIterator = reader.iterator(); ArrayList<PicardAlignment> inputAlignmentList = new ArrayList<PicardAlignment>(); while (inputAlignmentIterator.hasNext()) { PicardAlignment al = inputAlignmentIterator.next(); inputAlignmentList.add(al); } ByteArrayOutputStream bos = new ByteArrayOutputStream(); FeatureEncoder<PicardAlignment> alignmentEncoder = new SamAlignmentEncoder(); alignmentEncoder.encodeAll(bos, reader.iterator()); ByteArrayInputStream bis = new ByteArrayInputStream(bos.toByteArray()); FeatureDecoder<PicardAlignment> alignmentDecoder = new AlignmentDecoder(); Iterator<PicardAlignment> decodedAlignments = alignmentDecoder.decodeAll(bis, false); int ind = 0; while (decodedAlignments.hasNext()) { Alignment act = decodedAlignments.next(); Alignment exp = inputAlignmentList.get(ind++); TestUtils.assertFeaturesEqual(exp, act); assertEquals(exp.getCigarString(), act.getCigarString()); } assertEquals("Different number of alignments read in as out", inputAlignmentList.size(), ind); }