@Override public String getAsText() { Range[] ranges = (Range[])getValue(); StringBuilder sb = new StringBuilder(); for (int i = 0; i < ranges.length; i++) { if(i>0) { sb.append(", "); } sb.append(ranges[i]); } return sb.toString(); }
setMaxValues(ranges); setValue(ranges);
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); } }
public void testInvalidOverlappingRanges() { pe.setForceDisjointRanges(true); // test joint ranges try { pe.setAsText("1-10, 5-15"); fail("Exception expected: ranges are not disjoint"); } catch (IllegalArgumentException iae) { // expected } }
public void testInvalidInput() { try { pe.setAsText("1-5, b"); fail("Exception expected: 2nd range is invalid"); } catch (IllegalArgumentException iae) { // expected } } }
public void testGetAsText() { ranges = new Range[] { new Range(20), new Range(6, 15), new Range(2), new Range(26, 95) }; assertEquals("20, 6-15, 2, 26-95", pe.getAsText()); }
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()); }
public void testSetAsTextWithNoSpaces() { pe.setAsText("15,32"); // result should be 15-31, 32-unbound assertEquals(2, ranges.length); assertEquals(15, ranges[0].getMin()); assertEquals(31, ranges[0].getMax()); assertEquals(32, ranges[1].getMin()); assertFalse(ranges[1].hasMaxValue()); }
setMaxValues(ranges); setValue(ranges);
@Override public String getAsText() { Range[] ranges = (Range[])getValue(); StringBuilder sb = new StringBuilder(); for (int i = 0; i < ranges.length; i++) { if(i>0) { sb.append(", "); } sb.append(ranges[i]); } return sb.toString(); }
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); } }
public void testValidOverlappingRanges() { // test joint ranges pe.setAsText("1-10, 5-15"); assertEquals(2, ranges.length); assertEquals(1, ranges[0].getMin()); assertEquals(10, ranges[0].getMax()); assertEquals(5, ranges[1].getMin()); assertEquals(15, ranges[1].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()); }