@DataProvider(name = "GetOverlapping") public Object[][] makeGetOverlappingTest() throws Exception { final GenomeLocParser genomeLocParser = new GenomeLocParser(new CachingIndexedFastaSequenceFile(new File(b37KGReference))); List<Object[]> tests = new ArrayList<Object[]>(); final GenomeLoc prev1 = genomeLocParser.createGenomeLoc("19", 1, 10); final GenomeLoc prev2 = genomeLocParser.createGenomeLoc("19", 20, 50); final GenomeLoc post1 = genomeLocParser.createGenomeLoc("21", 1, 10); final GenomeLoc post2 = genomeLocParser.createGenomeLoc("21", 20, 50); final int chr20Length = genomeLocParser.getContigs().getSequence("20").getSequenceLength(); for (final int regionStart : Arrays.asList(1, 10, chr20Length - 10, chr20Length)) { for (final int regionSize : Arrays.asList(1, 10, 100)) { final GenomeLoc region = genomeLocParser.createGenomeLocOnContig("20", regionStart, regionStart + regionSize); final GenomeLoc spanning = genomeLocParser.createGenomeLocOnContig("20", regionStart - 10, region.getStop() + 10); final GenomeLoc before_into = genomeLocParser.createGenomeLocOnContig("20", regionStart - 10, regionStart + 1); final GenomeLoc middle = genomeLocParser.createGenomeLocOnContig("20", regionStart + 1, regionStart + 2); final GenomeLoc middle_past = genomeLocParser.createGenomeLocOnContig( "20", region.getStop() - 1, region.getStop() + 10); final List<GenomeLoc> potentials = new LinkedList<GenomeLoc>(); potentials.add(region); if (spanning != null) potentials.add(spanning); if (before_into != null) potentials.add(before_into); if (middle != null) potentials.add(middle); if (middle_past != null) potentials.add(middle_past); for (final int n : Arrays.asList(1, 2, 3)) { for (final List<GenomeLoc> regions : Utils.makePermutations(potentials, n, false)) { tests.add(new Object[] {new GenomeLocSortedSet(genomeLocParser, regions), region}); tests.add( new Object[] { new GenomeLocSortedSet(genomeLocParser, Utils.append(regions, prev1)), region }); tests.add( new Object[] { new GenomeLocSortedSet(genomeLocParser, Utils.append(regions, prev1, prev2)), region }); tests.add( new Object[] { new GenomeLocSortedSet(genomeLocParser, Utils.append(regions, post1)), region }); tests.add( new Object[] { new GenomeLocSortedSet(genomeLocParser, Utils.append(regions, post1, post2)), region }); tests.add( new Object[] { new GenomeLocSortedSet(genomeLocParser, Utils.append(regions, prev1, post1)), region }); tests.add( new Object[] { new GenomeLocSortedSet( genomeLocParser, Utils.append(regions, prev1, prev2, post1, post2)), region }); } } } } return tests.toArray(new Object[][] {}); }