/** * Returns a new range set consisting of the union of this range set and {@code other}. * * <p>This is essentially the same as {@code TreeRangeSet.create(this).addAll(other)} except it * returns an {@code ImmutableRangeSet}. * * @since 21.0 */ public ImmutableRangeSet<C> union(RangeSet<C> other) { return unionOf(Iterables.concat(asRanges(), other.asRanges())); }
/** * Returns a new range set consisting of the union of this range set and {@code other}. * * <p>This is essentially the same as {@code TreeRangeSet.create(this).addAll(other)} except it * returns an {@code ImmutableRangeSet}. * * @since 21.0 */ public ImmutableRangeSet<C> union(RangeSet<C> other) { return unionOf(Iterables.concat(asRanges(), other.asRanges())); }
for (Range<Integer> subRange : subRanges) { RangeSet<Integer> expected = TreeRangeSet.create(); for (Range<Integer> range : rangeSet.asRanges()) { if (range.isConnected(subRange)) { expected.add(range.intersection(subRange)); assertEquals(expected.asRanges(), subRangeSet.asRanges()); if (!expected.isEmpty()) { assertEquals(expected.span(), subRangeSet.span());
public void testEmpty() { ImmutableRangeSet<Integer> rangeSet = ImmutableRangeSet.of(); assertThat(rangeSet.asRanges()).isEmpty(); assertEquals(ImmutableRangeSet.<Integer>all(), rangeSet.complement()); assertFalse(rangeSet.contains(0)); assertFalse(rangeSet.intersects(Range.singleton(0))); assertFalse(rangeSet.encloses(Range.singleton(0))); assertTrue(rangeSet.enclosesAll(rangeSet)); assertTrue(rangeSet.isEmpty()); }
public void testAll() { ImmutableRangeSet<Integer> rangeSet = ImmutableRangeSet.all(); assertThat(rangeSet.asRanges()).contains(Range.<Integer>all()); assertTrue(rangeSet.contains(0)); assertTrue(rangeSet.intersects(Range.singleton(0))); assertTrue(rangeSet.intersects(Range.<Integer>all())); assertTrue(rangeSet.encloses(Range.<Integer>all())); assertTrue(rangeSet.enclosesAll(rangeSet)); assertEquals(ImmutableRangeSet.<Integer>of(), rangeSet.complement()); }
public void testMultipleBoundedRanges() { ImmutableRangeSet<Integer> rangeSet = ImmutableRangeSet.<Integer>builder() .add(Range.closed(5, 8)) .add(Range.closedOpen(1, 3)) .build(); assertThat(rangeSet.asRanges()) .containsExactly(Range.closedOpen(1, 3), Range.closed(5, 8)) .inOrder(); assertTrue(rangeSet.intersects(Range.closed(1, 2))); assertTrue(rangeSet.intersects(Range.open(5, 8))); assertFalse(rangeSet.intersects(Range.closed(3, 4))); assertTrue(rangeSet.intersects(Range.greaterThan(5))); assertFalse(rangeSet.intersects(Range.greaterThan(8))); assertTrue(rangeSet.encloses(Range.closed(1, 2))); assertTrue(rangeSet.encloses(Range.open(5, 8))); assertFalse(rangeSet.encloses(Range.closed(1, 8))); assertFalse(rangeSet.encloses(Range.greaterThan(5))); RangeSet<Integer> expectedComplement = ImmutableRangeSet.<Integer>builder() .add(Range.lessThan(1)) .add(Range.closedOpen(3, 5)) .add(Range.greaterThan(8)) .build(); assertEquals(expectedComplement, rangeSet.complement()); }
public void testMultipleBoundedBelowRanges() { ImmutableRangeSet<Integer> rangeSet = ImmutableRangeSet.<Integer>builder() .add(Range.greaterThan(6)) .add(Range.closedOpen(1, 3)) .build(); assertThat(rangeSet.asRanges()) .containsExactly(Range.closedOpen(1, 3), Range.greaterThan(6)) .inOrder(); assertTrue(rangeSet.intersects(Range.closed(1, 2))); assertTrue(rangeSet.intersects(Range.open(6, 8))); assertFalse(rangeSet.intersects(Range.closed(3, 6))); assertTrue(rangeSet.intersects(Range.greaterThan(5))); assertFalse(rangeSet.intersects(Range.lessThan(1))); assertTrue(rangeSet.encloses(Range.closed(1, 2))); assertTrue(rangeSet.encloses(Range.open(6, 8))); assertFalse(rangeSet.encloses(Range.closed(1, 8))); assertFalse(rangeSet.encloses(Range.greaterThan(5))); RangeSet<Integer> expectedComplement = ImmutableRangeSet.<Integer>builder().add(Range.lessThan(1)).add(Range.closed(3, 6)).build(); assertEquals(expectedComplement, rangeSet.complement()); }
public void testMultipleBoundedAboveRanges() { ImmutableRangeSet<Integer> rangeSet = ImmutableRangeSet.<Integer>builder() .add(Range.atMost(0)) .add(Range.closedOpen(2, 5)) .build(); assertThat(rangeSet.asRanges()) .containsExactly(Range.atMost(0), Range.closedOpen(2, 5)) .inOrder(); assertTrue(rangeSet.intersects(Range.closed(2, 4))); assertTrue(rangeSet.intersects(Range.open(-5, -2))); assertTrue(rangeSet.intersects(Range.closed(1, 8))); assertFalse(rangeSet.intersects(Range.singleton(1))); assertFalse(rangeSet.intersects(Range.greaterThan(5))); assertTrue(rangeSet.encloses(Range.closed(2, 4))); assertTrue(rangeSet.encloses(Range.open(-5, -2))); assertFalse(rangeSet.encloses(Range.closed(1, 8))); assertFalse(rangeSet.encloses(Range.greaterThan(5))); RangeSet<Integer> expectedComplement = ImmutableRangeSet.<Integer>builder().add(Range.open(0, 2)).add(Range.atLeast(5)).build(); assertEquals(expectedComplement, rangeSet.complement()); }
public void testSingleBoundedBelowRange() { ImmutableRangeSet<Integer> rangeSet = ImmutableRangeSet.of(Range.greaterThan(2)); assertThat(rangeSet.asRanges()).contains(Range.greaterThan(2)); assertTrue(rangeSet.intersects(Range.closed(3, 4))); assertTrue(rangeSet.intersects(Range.closedOpen(1, 5))); assertFalse(rangeSet.intersects(Range.lessThan(1))); assertTrue(rangeSet.intersects(Range.greaterThan(1))); assertTrue(rangeSet.intersects(Range.greaterThan(3))); assertTrue(rangeSet.encloses(Range.closed(3, 4))); assertTrue(rangeSet.encloses(Range.greaterThan(3))); assertFalse(rangeSet.encloses(Range.closedOpen(1, 5))); assertTrue(rangeSet.contains(3)); assertTrue(rangeSet.contains(5)); assertFalse(rangeSet.contains(0)); assertFalse(rangeSet.contains(2)); assertEquals(ImmutableRangeSet.of(Range.atMost(2)), rangeSet.complement()); }
public void testSingleBoundedAboveRange() { ImmutableRangeSet<Integer> rangeSet = ImmutableRangeSet.of(Range.atMost(3)); assertThat(rangeSet.asRanges()).contains(Range.atMost(3)); assertTrue(rangeSet.intersects(Range.closed(3, 4))); assertTrue(rangeSet.intersects(Range.closedOpen(1, 5))); assertFalse(rangeSet.intersects(Range.closedOpen(4, 5))); assertTrue(rangeSet.intersects(Range.lessThan(1))); assertTrue(rangeSet.intersects(Range.greaterThan(1))); assertFalse(rangeSet.intersects(Range.greaterThan(3))); assertTrue(rangeSet.encloses(Range.closed(2, 3))); assertTrue(rangeSet.encloses(Range.lessThan(1))); assertFalse(rangeSet.encloses(Range.closedOpen(1, 5))); assertTrue(rangeSet.contains(3)); assertTrue(rangeSet.contains(0)); assertFalse(rangeSet.contains(4)); assertFalse(rangeSet.contains(5)); assertEquals(ImmutableRangeSet.of(Range.greaterThan(3)), rangeSet.complement()); }
public void testSingleBoundedRange() { ImmutableRangeSet<Integer> rangeSet = ImmutableRangeSet.of(Range.closedOpen(1, 5)); assertThat(rangeSet.asRanges()).contains(Range.closedOpen(1, 5)); assertTrue(rangeSet.intersects(Range.closed(3, 4))); assertTrue(rangeSet.intersects(Range.closedOpen(0, 2))); assertTrue(rangeSet.intersects(Range.closedOpen(3, 7))); assertTrue(rangeSet.intersects(Range.greaterThan(2))); assertFalse(rangeSet.intersects(Range.greaterThan(7))); assertTrue(rangeSet.encloses(Range.closed(3, 4))); assertTrue(rangeSet.encloses(Range.closedOpen(1, 4))); assertTrue(rangeSet.encloses(Range.closedOpen(1, 5))); assertFalse(rangeSet.encloses(Range.greaterThan(2))); assertTrue(rangeSet.contains(3)); assertFalse(rangeSet.contains(5)); assertFalse(rangeSet.contains(0)); RangeSet<Integer> expectedComplement = TreeRangeSet.create(); expectedComplement.add(Range.lessThan(1)); expectedComplement.add(Range.atLeast(5)); assertEquals(expectedComplement, rangeSet.complement()); }
SerializableTester.reserializeAndAssert(built.asRanges());
/** * Returns a new range set consisting of the union of this range set and {@code other}. * * <p>This is essentially the same as {@code TreeRangeSet.create(this).addAll(other)} except it * returns an {@code ImmutableRangeSet}. * * @since 21.0 */ public ImmutableRangeSet<C> union(RangeSet<C> other) { return unionOf(Iterables.concat(asRanges(), other.asRanges())); }
/** * Returns a new range set consisting of the union of this range set and {@code other}. * * <p>This is essentially the same as {@code TreeRangeSet.create(this).addAll(other)} except it * returns an {@code ImmutableRangeSet}. * * @since 21.0 */ public ImmutableRangeSet<C> union(RangeSet<C> other) { return unionOf(Iterables.concat(asRanges(), other.asRanges())); }
public static int overlappingBases( int referenceIndex1, int alignmentStart1, boolean negativeStrand1, Cigar cigar1, int referenceIndex2, int alignmentStart2, boolean negativeStrand2, Cigar cigar2) { if (referenceIndex1 != referenceIndex2 || negativeStrand1 != negativeStrand2) { return 0; } ImmutableRangeSet<Integer> rs1 = getMappedBases(alignmentStart1, cigar1); ImmutableRangeSet<Integer> rs2 = getMappedBases(alignmentStart2, cigar2); ImmutableRangeSet<Integer> overlapSet = rs1.intersection(rs2); int overlapCount = 0; for (Range<Integer> r : overlapSet.asRanges()) { overlapCount += r.upperEndpoint() - r.lowerEndpoint(); } return overlapCount; } private static ImmutableRangeSet<Integer> getMappedBases(int start, Cigar cigar) {
public void testEmpty() { ImmutableRangeSet<Integer> rangeSet = ImmutableRangeSet.of(); assertThat(rangeSet.asRanges()).isEmpty(); assertEquals(ImmutableRangeSet.<Integer>all(), rangeSet.complement()); assertFalse(rangeSet.contains(0)); assertFalse(rangeSet.intersects(Range.singleton(0))); assertFalse(rangeSet.encloses(Range.singleton(0))); assertTrue(rangeSet.enclosesAll(rangeSet)); assertTrue(rangeSet.isEmpty()); }
public void testMultipleBoundedRanges() { ImmutableRangeSet<Integer> rangeSet = ImmutableRangeSet.<Integer>builder() .add(Range.closed(5, 8)).add(Range.closedOpen(1, 3)).build(); assertThat(rangeSet.asRanges()) .containsExactly(Range.closedOpen(1, 3), Range.closed(5, 8)).inOrder(); assertTrue(rangeSet.intersects(Range.closed(1, 2))); assertTrue(rangeSet.intersects(Range.open(5, 8))); assertFalse(rangeSet.intersects(Range.closed(3, 4))); assertTrue(rangeSet.intersects(Range.greaterThan(5))); assertFalse(rangeSet.intersects(Range.greaterThan(8))); assertTrue(rangeSet.encloses(Range.closed(1, 2))); assertTrue(rangeSet.encloses(Range.open(5, 8))); assertFalse(rangeSet.encloses(Range.closed(1, 8))); assertFalse(rangeSet.encloses(Range.greaterThan(5))); RangeSet<Integer> expectedComplement = ImmutableRangeSet.<Integer>builder() .add(Range.lessThan(1)) .add(Range.closedOpen(3, 5)) .add(Range.greaterThan(8)) .build(); assertEquals(expectedComplement, rangeSet.complement()); }
public void testAll() { ImmutableRangeSet<Integer> rangeSet = ImmutableRangeSet.all(); assertThat(rangeSet.asRanges()).contains(Range.<Integer>all()); assertTrue(rangeSet.contains(0)); assertTrue(rangeSet.intersects(Range.singleton(0))); assertTrue(rangeSet.intersects(Range.<Integer>all())); assertTrue(rangeSet.encloses(Range.<Integer>all())); assertTrue(rangeSet.enclosesAll(rangeSet)); assertEquals(ImmutableRangeSet.<Integer>of(), rangeSet.complement()); }
public void testSingleBoundedBelowRange() { ImmutableRangeSet<Integer> rangeSet = ImmutableRangeSet.of(Range.greaterThan(2)); assertThat(rangeSet.asRanges()).contains(Range.greaterThan(2)); assertTrue(rangeSet.intersects(Range.closed(3, 4))); assertTrue(rangeSet.intersects(Range.closedOpen(1, 5))); assertFalse(rangeSet.intersects(Range.lessThan(1))); assertTrue(rangeSet.intersects(Range.greaterThan(1))); assertTrue(rangeSet.intersects(Range.greaterThan(3))); assertTrue(rangeSet.encloses(Range.closed(3, 4))); assertTrue(rangeSet.encloses(Range.greaterThan(3))); assertFalse(rangeSet.encloses(Range.closedOpen(1, 5))); assertTrue(rangeSet.contains(3)); assertTrue(rangeSet.contains(5)); assertFalse(rangeSet.contains(0)); assertFalse(rangeSet.contains(2)); assertEquals(ImmutableRangeSet.of(Range.atMost(2)), rangeSet.complement()); }
public void testSingleBoundedRange() { ImmutableRangeSet<Integer> rangeSet = ImmutableRangeSet.of(Range.closedOpen(1, 5)); assertThat(rangeSet.asRanges()).contains(Range.closedOpen(1, 5)); assertTrue(rangeSet.intersects(Range.closed(3, 4))); assertTrue(rangeSet.intersects(Range.closedOpen(0, 2))); assertTrue(rangeSet.intersects(Range.closedOpen(3, 7))); assertTrue(rangeSet.intersects(Range.greaterThan(2))); assertFalse(rangeSet.intersects(Range.greaterThan(7))); assertTrue(rangeSet.encloses(Range.closed(3, 4))); assertTrue(rangeSet.encloses(Range.closedOpen(1, 4))); assertTrue(rangeSet.encloses(Range.closedOpen(1, 5))); assertFalse(rangeSet.encloses(Range.greaterThan(2))); assertTrue(rangeSet.contains(3)); assertFalse(rangeSet.contains(5)); assertFalse(rangeSet.contains(0)); RangeSet<Integer> expectedComplement = TreeRangeSet.create(); expectedComplement.add(Range.lessThan(1)); expectedComplement.add(Range.atLeast(5)); assertEquals(expectedComplement, rangeSet.complement()); }