package picard.illumina.parser.readers;
import org.testng.Assert;
import org.testng.annotations.Test;
import picard.illumina.parser.BclData;
import java.io.File;
import java.util.Arrays;
import java.util.HashMap;
import java.util.Map;
public class CbclReaderTest {
public static final File TestDataDir = new File("testdata/picard/illumina/readerTests");
public static final File PASSING_CBCL_C99_1 = new File(TestDataDir, "C99.1.cbcl");
public static final File PASSING_CBCL_C100_1 = new File(TestDataDir, "C100.1.cbcl");
public static final File TILE_1101_FILTER = new File(TestDataDir, "tile_1101.filter");
public static final File TILE_1102_FILTER = new File(TestDataDir, "tile_1102.filter");
public static final char[] expectedBases = new char[]{
'G','G','C','C','G','A','A','G','T','A','C','C','C','T','G','A'
};
public static final int[] expectedQuals = new int[]{
37,37,37,37,37,37,37,12,37,37,37,37,37,37,12,37
};
@Test
public void testReadValidFile() {
final CbclReader reader = new CbclReader(Arrays.asList(PASSING_CBCL_C99_1, PASSING_CBCL_C100_1), new int[] {2});
Map<Integer, File> filters = new HashMap<>();
filters.put(1101, TILE_1101_FILTER);
filters.put(1102, TILE_1102_FILTER);
reader.addFilters(filters);
int i = 0;
while (reader.hasNext()) {
final BclData bv = reader.next();
for (int cluster = 0; cluster < bv.bases.length; cluster++) {
for (int cycle = 0; cycle < bv.bases[cluster].length; cycle++) {
String actual = new String(new byte[]{bv.bases[cluster][cycle]});
String expected = new String(new char[]{expectedBases[i]});
Assert.assertEquals(actual, expected, "For cluster " + cluster + " cycle " + cycle + ",");
Assert.assertEquals(bv.qualities[cluster][cycle], expectedQuals[i], "For cluster " + cluster + " cycle " + cycle + ",");
i++;
}
}
}
Assert.assertEquals(i, expectedBases.length);
reader.close();
}
}