package picard.illumina.parser.readers; import org.testng.Assert; import org.testng.annotations.DataProvider; import org.testng.annotations.Test; import picard.PicardException; import java.io.File; public class LocsFileReaderTest { private static final File TestDir = new File("testdata/picard/illumina/readerTests"); public static final File LocsFile = new File(TestDir, "s_1_6.locs"); public static final int ExpectedTile = 6; public static final int ExpectedLane = 1; public static final int NumValues = 200; public static final float [][] FloatCoords = { {1703.0117f, 64.01593f}, {1660.3038f, 64.08882f}, {1769.7501f, 65.12467f}, {1726.6725f, 68.367805f}, {1401.213f, 72.07282f}, {1358.2775f, 72.07892f}, {1370.5197f, 77.699715f}, {1661.5403f, 77.70719f}, {1682.0504f, 78.76725f}, {1563.8765f, 79.08009f} }; public static final int [][] QSeqCoords = { {18030, 1640}, {17603, 1641}, {18698, 1651}, {18267, 1684}, {15012, 1721}, {14583, 1721}, {14705, 1777}, {17615, 1777}, {17821, 1788}, {16639, 1791} }; public static final int [] Indices = { 0, 1, 19, 59, 100, 101, 179, 180, 198, 199 }; @Test public void passingFileTest() { final LocsFileReader reader = new LocsFileReader(LocsFile); int tdIndex = 0; int nextIndex = Indices[tdIndex]; for(int i = 0; i < NumValues; i++) { Assert.assertTrue(reader.hasNext()); final AbstractIlluminaPositionFileReader.PositionInfo piLocs = reader.next(); if(i == nextIndex) { PosFileReaderTest.comparePositionInfo(piLocs, FloatCoords[tdIndex][0], FloatCoords[tdIndex][1], QSeqCoords[tdIndex][0], QSeqCoords[tdIndex][1], ExpectedLane, ExpectedTile, i); if(tdIndex < Indices.length-1) { nextIndex = Indices[++tdIndex]; } } } Assert.assertFalse(reader.hasNext()); } @DataProvider(name = "invalidFiles") public Object[][]invalidFiles() { return new Object[][] { {"s_1_7.locs"}, {"s_1_8.locs"}, {"s_1_9.locs"}, {"s_1_10.locs"}, {"s_f2af.locs"} }; } @Test(expectedExceptions = PicardException.class, dataProvider = "invalidFiles") public void invalidFilesTest(final String fileName) { final LocsFileReader reader = new LocsFileReader(new File(TestDir, fileName)); } }