package picard.sam;
import org.testng.Assert;
import org.testng.annotations.DataProvider;
import org.testng.annotations.Test;
import java.io.File;
import java.io.IOException;
public class SetNmMdAndUqTagsTest {
private static final File fasta = new File("testdata/picard/sam/merger.fasta");
@DataProvider(name="filesToFix")
Object[][] TestValidSortData() {
return new Object[][]{
new Object[]{new File("testdata/picard/sam/aligned.sam"), fasta},
new Object[]{new File("testdata/picard/sam/aligned_queryname_sorted.sam"), fasta},
new Object[]{new File("testdata/picard/sam/aligned_queryname_sorted.sam"), fasta},
};
}
@Test(dataProvider = "filesToFix")
public void TestValidSort(final File input, final File reference) throws IOException {
final File sortOutput = File.createTempFile("Sort", ".bam");
sortOutput.deleteOnExit();
final File fixOutput = File.createTempFile("Fix", ".bam");
fixOutput.deleteOnExit();
final File validateOutput = File.createTempFile("Sort", ".validation_report");
validateOutput.deleteOnExit();
sort(input, sortOutput);
fixFile(sortOutput, fixOutput, reference);
validate(fixOutput,validateOutput, reference);
}
private void validate(final File input, final File output, final File reference) {
final String[] args = new String[] {
"INPUT="+input,
"OUTPUT="+output,
"MODE=VERBOSE",
"REFERENCE_SEQUENCE="+reference };
ValidateSamFile validateSam = new ValidateSamFile();
Assert.assertEquals(validateSam.instanceMain(args), 0, "validate did not succeed");
}
private void sort(final File input, final File output) {
final String[] args = new String[] {
"INPUT=" + input,
"OUTPUT=" + output,
"SORT_ORDER=coordinate"
};
SortSam sortSam = new SortSam();
Assert.assertEquals(sortSam.instanceMain(args), 0, "Sort did not succeed");
}
private void fixFile(final File input, final File output, final File reference) throws IOException {
final String[] args = new String[] {
"INPUT="+input,
"OUTPUT="+output,
"REFERENCE_SEQUENCE="+reference };
SetNmMdAndUqTags setNmMdAndUqTags = new SetNmMdAndUqTags();
Assert.assertEquals(setNmMdAndUqTags.instanceMain(args), 0, "Fix did not succeed");
}
}