/** * Parse multiple --lines flags, like {"1:12,14,20:36", "40:45,50"}. Multiple ranges can be given * with multiple --lines flags or separated by commas. A single line can be set by a single * number. Line numbers are {@code 1}-based, but are converted to the {@code 0}-based numbering * used internally by google-java-format. */ private static void parseRangeSet(ImmutableRangeSet.Builder<Integer> result, String ranges) { for (String range : COMMA_SPLITTER.split(ranges)) { result.add(parseRange(range)); } }
/** * Add all of the specified ranges to this builder. Adjacent ranges are permitted and will be * merged, but overlapping ranges will cause an exception when {@link #build()} is called. * * @throws IllegalArgumentException if any inserted ranges are empty * @since 21.0 */ @CanIgnoreReturnValue public Builder<C> addAll(Iterable<Range<C>> ranges) { for (Range<C> range : ranges) { add(range); } return this; }
ImmutableRangeSet<Integer> unused = builder.add(range).build(); assertFalse(overlaps); mutable.add(range);
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()); }
private static RangeSet<String> rangeSet(List<Range<String>> ranges) { ImmutableRangeSet.Builder<String> builder = ImmutableRangeSet.builder(); for (Range<String> range : ranges) { builder.add(range); } return builder.build(); }
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 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()); }
private static RangeSet<String> rangeSet(List<Range<String>> ranges) { ImmutableRangeSet.Builder<String> builder = ImmutableRangeSet.builder(); for (Range<String> range : ranges) { builder.add(range); } return builder.build(); }
private static RangeSet<String> rangeSet(List<Range<String>> ranges) { ImmutableRangeSet.Builder<String> builder = ImmutableRangeSet.builder(); for (Range<String> range : ranges) { builder.add(range); } return builder.build(); }
public void testRemoveAllUnsupported() { RangeSet<Integer> rangeSet = ImmutableRangeSet.<Integer>builder() .add(Range.closed(5, 8)) .add(Range.closedOpen(1, 3)) .build(); try { rangeSet.removeAll(ImmutableRangeSet.<Integer>of()); fail(); } catch (UnsupportedOperationException expected) { // success } try { rangeSet.removeAll(ImmutableRangeSet.of(Range.closed(6, 8))); fail(); } catch (UnsupportedOperationException expected) { // success } }
/** * Add all of the specified ranges to this builder. Adjacent ranges are permitted and will be * merged, but overlapping ranges will cause an exception when {@link #build()} is called. * * @throws IllegalArgumentException if any inserted ranges are empty * @since 21.0 */ @CanIgnoreReturnValue public Builder<C> addAll(Iterable<Range<C>> ranges) { for (Range<C> range : ranges) { add(range); } return this; }
@Override public Set<BigInteger> create(Object... elements) { ImmutableRangeSet.Builder<BigInteger> builder = ImmutableRangeSet.builder(); for (Object o : elements) { BigInteger i = (BigInteger) o; builder.add(Range.closedOpen(i, i.add(BigInteger.ONE))); } return builder.build().asSet(DiscreteDomain.bigIntegers()); } }
@Override public Set<Integer> create(Object... elements) { ImmutableRangeSet.Builder<Integer> builder = ImmutableRangeSet.builder(); for (Object o : elements) { Integer i = (Integer) o; builder.add(Range.singleton(i)); } return builder.build().asSet(DiscreteDomain.integers()); } }
public void testUnion() { RangeSet<Integer> expected = ImmutableRangeSet.<Integer>builder() .add(Range.openClosed(0, 4)) .add(Range.closedOpen(5, 10)) .add(Range.closedOpen(12, 15)) .add(Range.openClosed(15, 17)) .add(Range.open(19, 20)) .build(); assertThat(RANGE_SET_ONE.union(RANGE_SET_TWO)).isEqualTo(expected); }