package htsjdk.samtools.reference; import htsjdk.samtools.SAMException; import htsjdk.samtools.util.CloserUtil; import org.testng.Assert; import org.testng.annotations.DataProvider; import org.testng.annotations.Test; import java.io.File; /** * Created by farjoun on 2/14/14. */ public class ReferenceSequenceFileWalkerTest { @DataProvider(name = "TestReference") public Object[][] TestReference() { return new Object[][]{ new Object[]{"testdata/htsjdk/samtools/reference/Homo_sapiens_assembly18.trimmed.fasta", 0, 1}, new Object[]{"testdata/htsjdk/samtools/reference/Homo_sapiens_assembly18.trimmed.fasta", 1, 1}, new Object[]{"testdata/htsjdk/samtools/reference/Homo_sapiens_assembly18.trimmed.fasta", 0, 0}, }; } @Test(dataProvider = "TestReference") public void testGet(final String fileName, final int index1, final int index2) throws SAMException { final File refFile = new File(fileName); final ReferenceSequenceFileWalker refWalker = new ReferenceSequenceFileWalker(refFile); ReferenceSequence sequence = refWalker.get(index1); Assert.assertEquals(sequence.getContigIndex(), index1); sequence = refWalker.get(index2); Assert.assertEquals(sequence.getContigIndex(), index2); CloserUtil.close(refWalker); } @DataProvider(name = "TestFailReference") public Object[][] TestFailReference() { return new Object[][]{ new Object[]{"testdata/htsjdk/samtools/reference/Homo_sapiens_assembly18.trimmed.noindex.fasta", 1,3}, //fail because out of bounds new Object[]{"testdata/htsjdk/samtools/reference/Homo_sapiens_assembly18.trimmed.noindex.fasta", 2,3}, //fail because out of bounds new Object[]{"testdata/htsjdk/samtools/reference/Homo_sapiens_assembly18.trimmed.noindex.fasta", 1,0}, //fail because not allowed to look back new Object[]{"testdata/htsjdk/samtools/reference/Homo_sapiens_assembly18.trimmed.noindex.fasta", -1,0}, //fail because out of bounds new Object[]{"testdata/htsjdk/samtools/reference/Homo_sapiens_assembly18.trimmed.fasta", -1, 0}, //fail because out of bounds new Object[]{"testdata/htsjdk/samtools/reference/Homo_sapiens_assembly18.trimmed.fasta", 1, -1}, //fail because out of bounds new Object[]{"testdata/htsjdk/samtools/reference/Homo_sapiens_assembly18.trimmed.fasta", 2,3}, //fail because out of bounds new Object[]{"testdata/htsjdk/samtools/reference/Homo_sapiens_assembly18.trimmed.fasta", 1,3}, //fail because out of bounds new Object[]{"testdata/htsjdk/samtools/reference/Homo_sapiens_assembly18.trimmed.fasta", 1, 0} // fasta is indexed, but not allowed to look back }; } @Test(expectedExceptions = {SAMException.class}, dataProvider = "TestFailReference") public void testFailGet(final String fileName, final int index1, final int index2) throws SAMException { final File refFile = new File(fileName); final ReferenceSequenceFileWalker refWalker = new ReferenceSequenceFileWalker(refFile); try { refWalker.get(index1); refWalker.get(index2); } finally { CloserUtil.close(refWalker); } } }