private void verifyRanges(Range[] ranges) { //verify that ranges are disjoint for(int i = 1; i < ranges.length;i++) { Assert.isTrue(ranges[i-1].getMax() < ranges[i].getMin(), "Ranges must be disjoint. Range[" + (i-1) + "]: (" + ranges[i-1] + ") Range[" + i +"]: (" + ranges[i] + ")"); } } }
private void calculateMaxRange(Range[] ranges) { if (ranges == null || ranges.length == 0) { maxRange = 0; return; } open = false; maxRange = ranges[0].getMin(); for (int i = 0; i < ranges.length; i++) { int upperBound; if (ranges[i].hasMaxValue()) { upperBound = ranges[i].getMax(); } else { upperBound = ranges[i].getMin(); if (upperBound > maxRange) { open = true; } } if (upperBound > maxRange) { maxRange = upperBound; } } }
private void setMaxValues(final Range[] ranges) { // Array of integers to track range values by index Integer[] c = new Integer[ranges.length]; for (int i=0; i<c.length; i++) { c[i] = i; } //sort array of Ranges Arrays.sort(c, new Comparator<Integer>() { @Override public int compare(Integer r1, Integer r2) { return ranges[r1].getMin()-ranges[r2].getMin(); } } ); //set max values for all unbound ranges (except last range) for (int i = 0; i < c.length - 1; i++) { if (!ranges[c[i]].hasMaxValue()) { //set max value to (min value - 1) of the next range ranges[c[i]] = new Range(ranges[c[i]].getMin(),ranges[c[i+1]].getMin() - 1); } } if (forceDisjointRanges) { verifyRanges(ranges); } }
int startPos = ranges[i].getMin() - 1; int endPos = ranges[i].getMax();
public void testSetAsText() { pe.setAsText("15, 32, 1-10, 33"); // result should be 15-31, 32-32, 1-10, 33-unbound assertEquals(4, ranges.length); assertEquals(15, ranges[0].getMin()); assertEquals(31, ranges[0].getMax()); assertEquals(32, ranges[1].getMin()); assertEquals(32, ranges[1].getMax()); assertEquals(1, ranges[2].getMin()); assertEquals(10, ranges[2].getMax()); assertEquals(33, ranges[3].getMin()); assertFalse(ranges[3].hasMaxValue()); }
public void testValidDisjointRanges() { pe.setForceDisjointRanges(true); // test disjoint ranges pe.setAsText("1-5,11-15"); assertEquals(2, ranges.length); assertEquals(1, ranges[0].getMin()); assertEquals(5, ranges[0].getMax()); assertEquals(11, ranges[1].getMin()); assertEquals(15, ranges[1].getMax()); }
private void verifyRanges(Range[] ranges) { //verify that ranges are disjoint for(int i = 1; i < ranges.length;i++) { Assert.isTrue(ranges[i-1].getMax() < ranges[i].getMin(), "Ranges must be disjoint. Range[" + (i-1) + "]: (" + ranges[i-1] + ") Range[" + i +"]: (" + ranges[i] + ")"); } } }
private void calculateMaxRange(Range[] ranges) { if (ranges == null || ranges.length == 0) { maxRange = 0; return; } open = false; maxRange = ranges[0].getMin(); for (int i = 0; i < ranges.length; i++) { int upperBound; if (ranges[i].hasMaxValue()) { upperBound = ranges[i].getMax(); } else { upperBound = ranges[i].getMin(); if (upperBound > maxRange) { open = true; } } if (upperBound > maxRange) { maxRange = upperBound; } } }
private void setMaxValues(final Range[] ranges) { // Array of integers to track range values by index Integer[] c = new Integer[ranges.length]; for (int i=0; i<c.length; i++) { c[i] = i; } //sort array of Ranges Arrays.sort(c, new Comparator<Integer>() { @Override public int compare(Integer r1, Integer r2) { return ranges[r1].getMin()-ranges[r2].getMin(); } } ); //set max values for all unbound ranges (except last range) for (int i = 0; i < c.length - 1; i++) { if (!ranges[c[i]].hasMaxValue()) { //set max value to (min value - 1) of the next range ranges[c[i]] = new Range(ranges[c[i]].getMin(),ranges[c[i+1]].getMin() - 1); } } if (forceDisjointRanges) { verifyRanges(ranges); } }
int startPos = ranges[i].getMin() - 1; int endPos = ranges[i].getMax();