public void testOverlapCigarConsistency() { final byte[] read = DnaUtils.encodeString("GTACTGTGTGCGTCCTTGACATCTA ACCGGCGCCT".replaceAll(" ", "")); final byte[] tmpl = DnaUtils.encodeString("GTAGT GTGCGTCCTTGACATCTAAGGATATCGGCGCCTGA".replaceAll(" ", "")); final int[] actions = ActionsHelper.build("===X=BB====================NNNNN=X========", 0, 3); final AlignmentResult ar = new AlignmentResult(read, actions, tmpl); ar.setIdentifyingInfo(true, false); // System.out.println("cigar:" + ar.getCigarString(1, false) + " readString:" + // ar.readString()); final SAMRecord samrec = new SAMRecord(null); samrec.setCigarString(ar.getCigarString(false, false)); samrec.setReadString(ar.readString()); samrec.setAttribute(SamUtils.ATTRIBUTE_NUM_MISMATCHES, 2); samrec.setReadNegativeStrandFlag(false); samrec.setFirstOfPairFlag(true); samrec.setAlignmentStart(1); samrec.setFlags(67); final NgsParams params = new NgsParamsBuilder() .gapOpenPenalty(EditDistanceFactory.DEFAULT_GAP_OPEN_PENALTY) .gapExtendPenalty(EditDistanceFactory.DEFAULT_GAP_EXTEND_PENALTY) .substitutionPenalty(EditDistanceFactory.DEFAULT_SUBSTITUTION_PENALTY) .unknownsPenalty(0) .create(); try (MemoryPrintStream mps = new MemoryPrintStream()) { final SamValidator sv = new SamValidator( mps.printStream(), mps.printStream(), true, false, false, false, params, true); assertEquals( 2 * EditDistanceFactory.DEFAULT_SUBSTITUTION_PENALTY, sv.isAtExpectedRef(tmpl, samrec, null)); } }