@Override public FilteringIteratorState compareToFilter(final SAMRecord record) { while (intervalIndex < intervals.length) { final IntervalComparison comparison = compareIntervalToRecord(intervals[intervalIndex], record); switch (comparison) { // Interval is before SAMRecord. Try next interval; case BEFORE: ++intervalIndex; break; // Interval is after SAMRecord. Keep scanning forward in SAMRecords case AFTER: return FilteringIteratorState.CONTINUE_ITERATION; // Found a good record case CONTAINED: return FilteringIteratorState.MATCHES_FILTER; // Either found a good record, or else keep scanning SAMRecords case OVERLAPPING: return (contained ? FilteringIteratorState.CONTINUE_ITERATION : FilteringIteratorState.MATCHES_FILTER); } } // Went past the last interval return FilteringIteratorState.STOP_ITERATION; }
@Override public FilteringIteratorState compareToFilter(final SAMRecord record) { while (intervalIndex < intervals.length) { final IntervalComparison comparison = compareIntervalToRecord(intervals[intervalIndex], record); switch (comparison) { // Interval is before SAMRecord. Try next interval; case BEFORE: ++intervalIndex; break; // Interval is after SAMRecord. Keep scanning forward in SAMRecords case AFTER: return FilteringIteratorState.CONTINUE_ITERATION; // Found a good record case CONTAINED: return FilteringIteratorState.MATCHES_FILTER; // Either found a good record, or else keep scanning SAMRecords case OVERLAPPING: return (contained ? FilteringIteratorState.CONTINUE_ITERATION : FilteringIteratorState.MATCHES_FILTER); } } // Went past the last interval return FilteringIteratorState.STOP_ITERATION; }
@Test(dataProvider = "compareIntervalToRecord") public void testCompareIntervalToRecord( final QueryInterval query, final int refIndex, final int start, final int length, final BAMIteratorFilter.IntervalComparison expectedState) { SAMRecord samRec = getSAMRecord(refIndex, start, length); Assert.assertEquals(BAMQueryMultipleIntervalsIteratorFilter.compareIntervalToRecord(query, samRec), expectedState); }