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));
}
}