package com.limegroup.gnutella.util; import java.util.Iterator; import java.util.List; import java.util.NoSuchElementException; import java.util.Random; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import junit.framework.Test; import com.limegroup.gnutella.downloader.DownloadTest; import com.limegroup.gnutella.downloader.Interval; /** * Unit tests for IntervalSet */ public class IntervalSetTest extends BaseTestCase { private static final Log LOG = LogFactory.getLog(IntervalSetTest.class); private static IntervalSet iSet = null; private static Interval interval = null; private static List list = null; private static Iterator iter = null; public IntervalSetTest(String name) { super(name); } public static Test suite() { return buildTestSuite(IntervalSetTest.class); } public static void main(String[] args) { junit.textui.TestRunner.run(suite()); } // getNumberOfIntervals is used in pretty much every // test, so it should be tested first public void testGetNumberOfIntervals() { iSet = IntervalSet.createSingletonSet(0,4); iSet.add(new Interval(17)); iSet.add(new Interval(20)); iSet.add(new Interval(28)); iSet.add(new Interval(31,32)); // [0-4], [17-17], [20-20], [28-28], [31-32] assertEquals(5, iSet.getNumberOfIntervals()); iSet = new IntervalSet(); assertEquals(0, iSet.getNumberOfIntervals()); iSet.add(new Interval(17,192000)); assertEquals(1, iSet.getNumberOfIntervals()); iSet.delete(new Interval(129)); assertEquals(2, iSet.getNumberOfIntervals()); } public void testCreateSingletonSet() { iSet = IntervalSet.createSingletonSet(17,28417); assertEquals(1, iSet.getNumberOfIntervals()); assertEquals(new Interval(17, 28417), iSet.getFirst()); } // these tests run in order and set up the data // as they go on. // all these tests must be run from the start IN ORDER // so that they work correctly. public void testBasic() throws Exception { iSet = new IntervalSet(); interval = new Interval(40,45); iSet.add(interval); assertEquals("add method broken", 1, iSet.getNumberOfIntervals()); assertEquals("getSize() broken", 6, iSet.getSize()); iter = iSet.getNeededIntervals(100); interval = (Interval)iter.next(); assertEquals("getNeededInterval broken", 0, interval.low); assertEquals("getNeededInterval broken", 39, interval.high); interval = (Interval)iter.next(); assertEquals("getNeededInterval broken", 46, interval.low); assertEquals("getNeededInterval broken", 99, interval.high); } public void testLowerBoundaryColation() throws Exception { ///testing case 1 (intervals is now {[40-45]} interval = new Interval(35,39); iSet.add(interval); assertEquals("lower boundry colating failed", 1, iSet.getNumberOfIntervals()); interval = getIntervalAt(0); assertEquals("lower boundry colating failed", 45, interval.high); assertEquals("lower boundry colating failed", 35, interval.low); assertEquals("getSize() broken", 11, iSet.getSize()); } public void testLowerOverlapColation() throws Exception { //testing case 2 intervals is now {[35-45]} interval = new Interval(30,37); iSet.add(interval); assertEquals("lower overlap colating failed", 1, iSet.getNumberOfIntervals()); interval = getIntervalAt(0); assertEquals("lower boundry colating failed", 45, interval.high); assertEquals("lower boundry colating failed", 30, interval.low); } public void testLowerNonOverlap() throws Exception { //testing case 3 intervals is now {[30-45]} interval = new Interval(20,25); iSet.add(interval); assertEquals("lower non-overlap add failed", 2, iSet.getNumberOfIntervals()); assertEquals("getSize() broken", 22, iSet.getSize()); iter = iSet.getNeededIntervals(100); interval = (Interval)iter.next(); assertEquals("getNeededInterval broken", 0, interval.low); assertEquals("getNeededInterval broken", 19, interval.high); interval = (Interval)iter.next(); assertEquals("getNeededInterval broken", 26, interval.low); assertEquals("getNeededInterval broken", 29, interval.high); interval = (Interval)iter.next(); assertEquals("getNeededInterval broken", 46, interval.low); assertEquals("getNeededInterval broken", 99, interval.high); } public void testUpperNonOverlap() throws Exception { //testing case 4 intervals is now {[20-25],[30-45]} interval = new Interval(50,60); iSet.add(interval); assertEquals("upper non-overlap add failed", 3, iSet.getNumberOfIntervals()); assertEquals("getSize() broken", 33, iSet.getSize()); iter = iSet.getNeededIntervals(100); interval = (Interval)iter.next(); assertEquals("getNeededInterval broken", 0, interval.low); assertEquals("getNeededInterval broken", 19, interval.high); interval = (Interval)iter.next(); assertEquals("getNeededInterval broken", 26, interval.low); assertEquals("getNeededInterval broken", 29, interval.high); interval = (Interval)iter.next(); assertEquals("getNeededInterval broken", 46, interval.low); assertEquals("getNeededInterval broken", 49, interval.high); interval = (Interval)iter.next(); assertEquals("getNeededInterval broken", 61, interval.low); assertEquals("getNeededInterval broken", 99, interval.high); } public void testGetOverlapIntervalsMidRange() throws Exception { //////////////////getOverlapIntervals tests////////// //Note: Test all the cases for getOverlapIntervals, before continuing //add test while the intervals are [20-25],[30-45],[50-60] //Case a interval = new Interval(23,32); list = iSet.getOverlapIntervals(interval); assertEquals("getOverlapIntervals broken", 2, list.size()); interval = (Interval)list.get(0);//first interval assertEquals("getOverlapIntervals broken", 23, interval.low); assertEquals("getOverlapIntervals broken", 25, interval.high); interval = (Interval)list.get(1); assertEquals("getOverlapIntervals broken", 30, interval.low); assertEquals("getOverlapIntervals broken", 32, interval.high); } public void testGetOverlapIntervalsBoundary() throws Exception { //Case a.1 interval = new Interval(25,30); list = iSet.getOverlapIntervals(interval); assertEquals("getOverlapIntervals broken", 2, list.size()); interval = (Interval)list.get(0);//first interval assertEquals("getOverlapIntervals broken", 25, interval.low); assertEquals("getOverlapIntervals broken", 25, interval.high); interval = (Interval)list.get(1); assertEquals("getOverlapIntervals broken", 30, interval.low); assertEquals("getOverlapIntervals broken", 30, interval.high); } public void testGetOverlapIntervalsLowRange() throws Exception { //Case b interval = new Interval(16,23); list = iSet.getOverlapIntervals(interval); assertEquals("getOverlapIntervals broken", 1, list.size()); interval = (Interval)list.get(0); assertEquals("getOverlapIntervals broken", 20, interval.low); assertEquals("getOverlapIntervals broken", 23, interval.high); } public void testGetOverlapIntervalsLowBoundary() throws Exception { //case b.1 interval = new Interval(16,20); list = iSet.getOverlapIntervals(interval); assertEquals("getOverlapIntervals broken", 1, list.size()); interval = (Interval)list.get(0); assertEquals("getOverlapIntervals broken", 20, interval.low); assertEquals("getOverlapIntervals broken", 20, interval.high); } public void testGetOverlapIntervalsHighRange() throws Exception { //case c interval = new Interval(23,29); list = iSet.getOverlapIntervals(interval); assertEquals("getOverlapIntervals broken", 1, list.size()); interval = (Interval)list.get(0); assertEquals("getOverlapIntervals broken", 23, interval.low); assertEquals("getOverlapIntervals broken", 25, interval.high); } public void testGetOverlapIntervalsHighBoundary() throws Exception { //case c.1 interval = new Interval(25,29); list = iSet.getOverlapIntervals(interval); assertEquals("getOverlapIntervals broken", 1, list.size()); interval = (Interval)list.get(0); assertEquals("getOverlapIntervals broken", 25, interval.low); assertEquals("getOverlapIntervals broken", 25, interval.high); } public void testGetOverlapIntervalsNoRange() throws Exception { //case d interval = new Interval(13,19); list = iSet.getOverlapIntervals(interval); assertEquals("reported false overlap", 0, list.size()); //case e interval = new Interval(26,29); list = iSet.getOverlapIntervals(interval); assertEquals("reported false overlap", 0, list.size()); } public void testGetOverlapIntervalsMidAllRanges() throws Exception { //case f interval = new Interval(23,53); list = iSet.getOverlapIntervals(interval); assertEquals("getOverlapIntervals broken", 3, list.size()); interval = (Interval)list.get(0); assertEquals(23, interval.low); assertEquals(25, interval.high); interval = (Interval)list.get(1); assertEquals(30, interval.low); assertEquals(45, interval.high); interval = (Interval)list.get(2); assertEquals(50, interval.low); assertEquals(53, interval.high); } public void testGetOverlapIntervalsAllRanges() throws Exception { //case g interval = new Interval(16,65); list = iSet.getOverlapIntervals(interval); assertEquals("getOverlapIntervals broken", 3, list.size()); interval = (Interval)list.get(0); assertEquals(20, interval.low); assertEquals(25, interval.high); interval = (Interval)list.get(1); assertEquals(30, interval.low); assertEquals(45, interval.high); interval = (Interval)list.get(2); assertEquals(50, interval.low); assertEquals(60, interval.high); } public void testAddHighColation() throws Exception { ///OK, back to testing add. iSet = IntervalSet.createSingletonSet(20,25); iSet.add(new Interval(30,45)); iSet.add(new Interval(50,60)); //testing case 5 intervals is [20-25],[30-45],[50-60] interval = new Interval(54,70); iSet.add(interval); assertEquals(3, iSet.getNumberOfIntervals()); interval = getIntervalAt(2); assertEquals(50, interval.low); assertEquals(70, interval.high); assertEquals("getSize() broken", 43, iSet.getSize()); } public void testAddHighBoundaryColation() throws Exception { iSet = IntervalSet.createSingletonSet(20,25); iSet.add(new Interval(30,45)); iSet.add(new Interval(50,70)); //testing case 6 intervals is [20-25],[30-45],[50-70] interval = new Interval(71,75); iSet.add(interval); assertEquals(3, iSet.getNumberOfIntervals()); interval = getIntervalAt(2); assertEquals(50, interval.low); assertEquals(75, interval.high); assertEquals("getSize() broken", 48, iSet.getSize()); //test some boundry conditions [20-25],[30-45],[50-75] interval = new Interval(75,80); iSet.add(interval); assertEquals(3, iSet.getNumberOfIntervals()); interval = getIntervalAt(2); assertEquals(50, interval.low); assertEquals(80, interval.high); } public void testAddLowBoundaryColation() { interval = new Interval(15,20); iSet.add(interval); assertEquals(3, iSet.getNumberOfIntervals()); interval = getIntervalAt(0); assertEquals(15, interval.low); assertEquals(25, interval.high); assertEquals("getSize() broken", 58, iSet.getSize()); } public void testGetNeededIntervals() { iter = iSet.getNeededIntervals(100); interval = (Interval)iter.next(); assertEquals("getNeededInterval broken", 0, interval.low); assertEquals("getNeededInterval broken", 14, interval.high); interval = (Interval)iter.next(); assertEquals("getNeededInterval broken", 26, interval.low); assertEquals("getNeededInterval broken", 29, interval.high); interval = (Interval)iter.next(); assertEquals("getNeededInterval broken", 46, interval.low); assertEquals("getNeededInterval broken", 49, interval.high); interval = (Interval)iter.next(); assertEquals("getNeededInterval broken", 81, interval.low); assertEquals("getNeededInterval broken", 99, interval.high); } public void testAddOverlappingInterval() { //[15-25],[30-45],[50-80] interval = new Interval(49,81); iSet.add(interval); assertEquals(3, iSet.getNumberOfIntervals()); interval = getIntervalAt(2); assertEquals(49, interval.low); assertEquals(81, interval.high); assertEquals("getSize() broken", 60, iSet.getSize()); } public void testAddInternalInterval() { // {[15-25],[30-45],[49-81]} interval = new Interval(55,60); iSet.add(interval); assertEquals(3, iSet.getNumberOfIntervals()); interval = getIntervalAt(2); assertEquals(49, interval.low); assertEquals(81, interval.high); } public void testAddFullBetweenInterval() { // {[15-25],[30-45],[49-81]} interval = new Interval(26,29); iSet.add(interval); assertEquals(2, iSet.getNumberOfIntervals()); interval = getIntervalAt(0); assertEquals(15, interval.low); assertEquals(45, interval.high); iter = iSet.getNeededIntervals(100); interval = (Interval)iter.next(); assertEquals("getNeededInterval broken", 0, interval.low); assertEquals("getNeededInterval broken", 14, interval.high); interval = (Interval)iter.next(); assertEquals("getNeededInterval broken", 46, interval.low); assertEquals("getNeededInterval broken", 48, interval.high); interval = (Interval)iter.next(); assertEquals("getNeededInterval broken", 82, interval.low); assertEquals("getNeededInterval broken", 99, interval.high); } public void testGetNeededIntervalsAgain() { // {[15-45],[49-81]} interval = new Interval(3,5); iSet.add(interval); interval = new Interval(7,9); iSet.add(interval); iter = iSet.getNeededIntervals(100); interval = (Interval)iter.next(); assertEquals("getNeededInterval broken", 0, interval.low); assertEquals("getNeededInterval broken", 2, interval.high); interval = (Interval)iter.next(); assertEquals("getNeededInterval broken", 6, interval.low); assertEquals("getNeededInterval broken", 6, interval.high); interval = (Interval)iter.next(); assertEquals("getNeededInterval broken", 10, interval.low); assertEquals("getNeededInterval broken", 14, interval.high); interval = (Interval)iter.next(); assertEquals("getNeededInterval broken", 46, interval.low); assertEquals("getNeededInterval broken", 48, interval.high); interval = (Interval)iter.next(); assertEquals("getNeededInterval broken", 82, interval.low); assertEquals("getNeededInterval broken", 99, interval.high); } public void testAddFullLowCoveringInterval() { // {[3-5],[7-9],[15-45],[49-81]} assertEquals(4, iSet.getNumberOfIntervals()); interval = new Interval(2,17); iSet.add(interval); assertEquals(2, iSet.getNumberOfIntervals()); interval = getIntervalAt(0); assertEquals(2, interval.low); assertEquals(45, interval.high); assertEquals("getSize() broken", 77, iSet.getSize()); } public void testAddCoverFromMiddle() { //{[2-45],[49-81]} interval = new Interval(40,50); iSet.add(interval); assertEquals(1, iSet.getNumberOfIntervals()); //{[2-81]} interval = getIntervalAt(0); assertEquals(2, interval.low); assertEquals(81, interval.high); assertEquals("getSize() broken", 80, iSet.getSize()); iter = iSet.getNeededIntervals(100); interval = (Interval)iter.next(); assertEquals("getNeededInterval broken", 0, interval.low); assertEquals("getNeededInterval broken", 1, interval.high); interval = (Interval)iter.next(); assertEquals("getNeededInterval broken", 82, interval.low); assertEquals("getNeededInterval broken", 99, interval.high); } public void testGetNeededWithNoneAndSome() { iSet.clear(); iSet.add(new Interval(0,5)); iter = iSet.getNeededIntervals(6); assertTrue(!iter.hasNext()); iSet.add(new Interval(6,10)); iter = iSet.getNeededIntervals(20); interval = (Interval)iter.next(); assertEquals(11, interval.low); assertEquals(19, interval.high); assertTrue(!iter.hasNext()); } public void testSetUpForDelete() { // test delete() method iSet.clear(); iSet.add(new Interval(0,4)); iSet.add(new Interval(8,12)); iSet.add(new Interval(16,20)); iSet.add(new Interval(24)); iSet.add(new Interval(28,32)); iSet.add(new Interval(36,40)); // [0-4], [8-12], [16-20], [24-24], [28-32], [36-40] assertEquals(6, iSet.getNumberOfIntervals()); iter = iSet.getAllIntervals(); interval = (Interval)iter.next(); assertEquals(0, interval.low); assertEquals(4, interval.high); interval = (Interval)iter.next(); assertEquals(8, interval.low); assertEquals(12, interval.high); interval = (Interval)iter.next(); assertEquals(16, interval.low); assertEquals(20, interval.high); interval = (Interval)iter.next(); assertEquals(24, interval.low); assertEquals(24, interval.high); interval = (Interval)iter.next(); assertEquals(28, interval.low); assertEquals(32, interval.high); interval = (Interval)iter.next(); assertEquals(36, interval.low); assertEquals(40, interval.high); } public void testDeleteNothing() { // [0-4], [8-12], [16-20], [24-24], [28-32], [36-40] iSet.delete(new Interval(5,7)); assertEquals(6, iSet.getNumberOfIntervals()); iter = iSet.getAllIntervals(); interval = (Interval)iter.next(); assertEquals(0, interval.low); assertEquals(4, interval.high); interval = (Interval)iter.next(); assertEquals(8, interval.low); assertEquals(12, interval.high); interval = (Interval)iter.next(); assertEquals(16, interval.low); assertEquals(20, interval.high); interval = (Interval)iter.next(); assertEquals(24, interval.low); assertEquals(24, interval.high); interval = (Interval)iter.next(); assertEquals(28, interval.low); assertEquals(32, interval.high); interval = (Interval)iter.next(); assertEquals(36, interval.low); assertEquals(40, interval.high); } public void testDeleteBoundaries() { // [0-4], [8-12], [16-20], [24-24], [28-32], [36-40] iSet.delete(new Interval(12,16)); assertEquals(6, iSet.getNumberOfIntervals()); iter = iSet.getAllIntervals(); interval = (Interval)iter.next(); assertEquals(0, interval.low); assertEquals(4, interval.high); interval = (Interval)iter.next(); assertEquals(8, interval.low); assertEquals(11, interval.high); interval = (Interval)iter.next(); assertEquals(17, interval.low); assertEquals(20, interval.high); interval = (Interval)iter.next(); assertEquals(24, interval.low); assertEquals(24, interval.high); interval = (Interval)iter.next(); assertEquals(28, interval.low); assertEquals(32, interval.high); interval = (Interval)iter.next(); assertEquals(36, interval.low); assertEquals(40, interval.high); } public void testDeleteFullInterval() { // [0-4], [8-11], [17-20], [24-24], [28-32], [36-40] iSet.delete(new Interval(24,25)); assertEquals(5, iSet.getNumberOfIntervals()); iter = iSet.getAllIntervals(); interval = (Interval)iter.next(); assertEquals(0, interval.low); assertEquals(4, interval.high); interval = (Interval)iter.next(); assertEquals(8, interval.low); assertEquals(11, interval.high); interval = (Interval)iter.next(); assertEquals(17, interval.low); assertEquals(20, interval.high); interval = (Interval)iter.next(); assertEquals(28, interval.low); assertEquals(32, interval.high); interval = (Interval)iter.next(); assertEquals(36, interval.low); assertEquals(40, interval.high); } public void testDeleteSplitsIntoTwo() { // [0-4], [8-11], [17-20], [28-32], [36-40] iSet.delete(new Interval(29,30)); assertEquals(6, iSet.getNumberOfIntervals()); iter = iSet.getAllIntervals(); interval = (Interval)iter.next(); assertEquals(0, interval.low); assertEquals(4, interval.high); interval = (Interval)iter.next(); assertEquals(8, interval.low); assertEquals(11, interval.high); interval = (Interval)iter.next(); assertEquals(17, interval.low); assertEquals(20, interval.high); interval = (Interval)iter.next(); assertEquals(28, interval.low); assertEquals(28, interval.high); interval = (Interval)iter.next(); assertEquals(31, interval.low); assertEquals(32, interval.high); interval = (Interval)iter.next(); assertEquals(36, interval.low); assertEquals(40, interval.high); } public void testDeleteFullUpper() { // [0-4], [8-11], [17-20], [28-28], [31-32], [36-40] iSet.delete(new Interval(35,41)); assertEquals(5, iSet.getNumberOfIntervals()); iter = iSet.getAllIntervals(); interval = (Interval)iter.next(); assertEquals(0, interval.low); assertEquals(4, interval.high); interval = (Interval)iter.next(); assertEquals(8, interval.low); assertEquals(11, interval.high); interval = (Interval)iter.next(); assertEquals(17, interval.low); assertEquals(20, interval.high); interval = (Interval)iter.next(); assertEquals(28, interval.low); assertEquals(28, interval.high); interval = (Interval)iter.next(); assertEquals(31, interval.low); assertEquals(32, interval.high); } public void testDeleteIntervalSet() { // [0-4], [8-11], [17-20], [28-28], [31-32], [36-40] IntervalSet toDelete = new IntervalSet(); toDelete.add(new Interval(8, 15)); toDelete.add(new Interval(18, 19)); iSet.delete(toDelete); assertEquals(5, iSet.getNumberOfIntervals()); iter = iSet.getAllIntervals(); interval = (Interval)iter.next(); assertEquals(0, interval.low); assertEquals(4, interval.high); interval = (Interval)iter.next(); assertEquals(17, interval.low); assertEquals(17, interval.high); interval = (Interval)iter.next(); assertEquals(20, interval.low); assertEquals(20, interval.high); interval = (Interval)iter.next(); assertEquals(28, interval.low); assertEquals(28, interval.high); interval = (Interval)iter.next(); assertEquals(31, interval.low); assertEquals(32, interval.high); } public void testGetFirstAndIsEmpty() { iSet = IntervalSet.createSingletonSet(0,4); iSet.add(new Interval(17)); iSet.add(new Interval(20)); iSet.add(new Interval(28)); iSet.add(new Interval(31,32)); // [0-4], [17-17], [20-20], [28-28], [31-32] assertEquals(new Interval(0, 4), iSet.getFirst()); iSet.delete(iSet.getFirst()); assertFalse(iSet.isEmpty()); assertEquals(new Interval(17, 17), iSet.getFirst()); iSet.delete(iSet.getFirst()); assertFalse(iSet.isEmpty()); assertEquals(new Interval(20, 20), iSet.getFirst()); iSet.delete(iSet.getFirst()); assertFalse(iSet.isEmpty()); assertEquals(new Interval(28, 28), iSet.getFirst()); iSet.delete(iSet.getFirst()); assertFalse(iSet.isEmpty()); assertEquals(new Interval(31, 32), iSet.getFirst()); iSet.delete(iSet.getFirst()); assertTrue(iSet.isEmpty()); try { iSet.getFirst(); fail("expected exception"); } catch(NoSuchElementException nsee) {} } public void testGetLast() { iSet = IntervalSet.createSingletonSet(0,4); iSet.add(new Interval(17)); iSet.add(new Interval(20)); iSet.add(new Interval(28)); iSet.add(new Interval(31,32)); // [0-4], [17-17], [20-20], [28-28], [31-32] assertEquals(5, iSet.getNumberOfIntervals()); assertEquals(new Interval(31, 32), iSet.getLast()); iSet.delete(iSet.getLast()); assertEquals(new Interval(28, 28), iSet.getLast()); iSet.delete(iSet.getLast()); assertEquals(new Interval(20, 20), iSet.getLast()); iSet.delete(iSet.getLast()); assertEquals(new Interval(17, 17), iSet.getLast()); iSet.delete(iSet.getLast()); assertEquals(new Interval(0, 4), iSet.getLast()); iSet.delete(iSet.getLast()); try { iSet.getLast(); fail("expected exception"); } catch(NoSuchElementException nsee) {} } public void testInvert() { iSet = new IntervalSet(); // no intervals assertEquals(0, iSet.getNumberOfIntervals()); IntervalSet inverted = iSet.invert(100); assertEquals(1, inverted.getAllIntervalsAsList().size()); assertEquals(new Interval(0, 99), inverted.getAllIntervals().next()); iSet.add(new Interval(0, 100)); inverted = iSet.invert(0); assertEquals(0, inverted.getAllIntervalsAsList().size()); } public void testClone() { iSet = IntervalSet.createSingletonSet(0,100); // [0-100] assertEquals(1, iSet.getNumberOfIntervals()); IntervalSet clone = (IntervalSet)iSet.clone(); assertEquals(1, clone.getAllIntervalsAsList().size()); assertEquals(new Interval(0, 100), clone.getAllIntervals().next()); clone.delete(clone.getFirst()); assertEquals(0, clone.getAllIntervalsAsList().size()); assertEquals(1, iSet.getNumberOfIntervals()); assertEquals(new Interval(0, 100), getIntervalAt(0)); } public void testToBytes() throws Exception { IntervalSet set = new IntervalSet(); Random r = new Random(); for (int i = 1;i < 10;i++) { int low = Math.abs(r.nextInt(100)); Interval inter = new Interval(low,low+i); set.add(inter); } byte [] asByte = set.toBytes(); IntervalSet set2 = IntervalSet.parseBytes(asByte); assertEquals(set.getSize(),set2.getSize()); assertEquals(set.getAllIntervalsAsList(),set2.getAllIntervalsAsList()); } // Test failure cases from beta testing public void testContains() { LOG.info("-- testing contains()"); iSet = IntervalSet.createSingletonSet(1542374,1572863); iSet.add(new Interval(1645963,1835007)); iSet.add(new Interval(2077669,2228223)); assertTrue(iSet.contains(new Interval(1542374,1543397))); } ///// Private helper methods ///// private Interval getIntervalAt(int i) { return (Interval)iSet.getAllIntervalsAsList().get(i); } private List getIntervals() throws Exception { return (List)PrivilegedAccessor.getValue(iSet, "intervals"); } }