package picard.util;
import org.testng.Assert;
import org.testng.annotations.DataProvider;
import org.testng.annotations.Test;
/**
* Just some simple tests for the IlluminaUtil.getTileFromReadName() method for now.
*
* @author Tim Fennell
*/
public class IlluminaUtilTest {
@Test(dataProvider="readNames") public void testFindTileInReadName(final String readName, final Integer tile) {
final Integer otherTile = IlluminaUtil.getTileFromReadName(readName);
Assert.assertEquals(otherTile, tile, "Tile numbers do not match for read name: " + readName);
}
@Test public void performanceTestGetTileFromReadName() {
final int ITERATIONS = 5000000;
final long startTime = System.currentTimeMillis();
for (int i=0; i<ITERATIONS; ++i) {
final Integer tile = IlluminaUtil.getTileFromReadName("300WFAAXX090909:1:1:1024:978#0/1");
if (tile == null || tile != 1) throw new RuntimeException("WTF?");
}
final long endTime = System.currentTimeMillis();
System.out.println("Time taken: " + (endTime-startTime) + "ms.");
}
@DataProvider(name="readNames")
public Object[][] readNames() {
return new Object[][] {
new Object[] {"300WFAAXX:1:119:1024:978#0/1", 119},
new Object[] {"300WFAAXX090909:1:1:1024:978#0/1", 1},
new Object[] {"FOO", null},
new Object[] {"FOO:BAR_splat", null}
};
}
public static final byte [] iToB(int [] intVals) {
byte [] byteVals = new byte[intVals.length];
for(int i = 0; i < byteVals.length; i++) {
byteVals[i] = (byte) intVals[i];
}
return byteVals;
}
public byte[][] byteBuffersSizeCopy(byte [][] bytes) {
byte [][] outBytes = new byte[bytes.length][];
for(int i = 0; i < bytes.length; i++) {
outBytes[i] = new byte[bytes[i].length];
}
return outBytes;
}
@DataProvider(name = "solexaQualStrToPhreds")
public Object [][] solexaQualStrToPhredsToPhreds() {
return new Object[][] {
new Object[] {
"x@Axy" + ((char)156) + ((char) 157) + ((char) 0) + ((char) 1) + "?",
new byte[][] {
new byte[]{}, iToB(new int[]{56}), iToB(new int[]{0, 1, 56, 57, 92, 93}),
iToB(new int[]{-64, -63, -1}), new byte[]{}
}
},
new Object[] {
"nNpZo" + ((char)250) + ((char) 255) + ((char) 1) + ((char) 1) + "CCaB",
new byte[][] {
iToB(new int[]{46, 14}), iToB(new int[]{48, 26, 47, -70, -65, -63, -63, 3, 3, 33}), iToB(new int[]{2})
}
}
};
}
/*
@Test(dataProvider = "solexaQualStrToPhreds")
public void makePhredBinaryFromSolexaQualityAscii_1_3_toArrays(final String solexaQualities, final int offset, final byte [][] expectedBuffers) {
byte [][] actualBuffers = byteBuffersSizeCopy(expectedBuffers);
IlluminaUtil.makePhredBinaryFromSolexaQualityAscii_1_3(solexaQualities, offset, actualBuffers);
for(int i = 0; i < expectedBuffers.length; i++) {
Assert.assertEquals(expectedBuffers[i], actualBuffers[i]);
}
}*/
}