package picard.vcf; import htsjdk.samtools.util.IOUtil; import htsjdk.variant.variantcontext.VariantContext; import htsjdk.variant.vcf.VCFFileReader; import org.testng.Assert; import org.testng.annotations.AfterClass; import org.testng.annotations.Test; import picard.cmdline.CommandLineProgramTest; import java.io.File; import java.util.Queue; public class SplitVcfsTest extends CommandLineProgramTest { private static final File OUTPUT_DATA_PATH = IOUtil.createTempDir("SplitVcfsTest", null); private static final File TEST_DATA_PATH = new File("testdata/picard/vcf/"); public String getCommandLineProgramName() { return SplitVcfs.class.getSimpleName(); } @AfterClass public void teardown() { IOUtil.deleteDirectoryTree(OUTPUT_DATA_PATH); } @Test public void testSplit() { final File indelOutputFile = new File(OUTPUT_DATA_PATH, "split-vcfs-test-indels-delete-me.vcf"); final File snpOutputFile = new File(OUTPUT_DATA_PATH, "split-vcfs-test-snps-delete-me.vcf"); final File input = new File(TEST_DATA_PATH, "CEUTrio-merged-indels-snps.vcf"); indelOutputFile.deleteOnExit(); snpOutputFile.deleteOnExit(); final String[] args = new String[]{ "INPUT=" + input.getAbsolutePath(), "SNP_OUTPUT=" + snpOutputFile.getAbsolutePath(), "INDEL_OUTPUT=" + indelOutputFile.getAbsolutePath() }; Assert.assertEquals(runPicardCommandLine(args), 0); final Queue<String> indelContigPositions = AbstractVcfMergingClpTester.loadContigPositions(indelOutputFile); final Queue<String> snpContigPositions = AbstractVcfMergingClpTester.loadContigPositions(snpOutputFile); final VCFFileReader reader = new VCFFileReader(input); for (final VariantContext inputContext : reader) { if (inputContext.isIndel()) Assert.assertEquals(AbstractVcfMergingClpTester.getContigPosition(inputContext), indelContigPositions.poll()); if (inputContext.isSNP()) Assert.assertEquals(AbstractVcfMergingClpTester.getContigPosition(inputContext), snpContigPositions.poll()); } // We should have polled everything off the indel (snp) queues Assert.assertEquals(indelContigPositions.size(), 0); Assert.assertEquals(snpContigPositions.size(), 0); } }