package picard.vcf;
import htsjdk.samtools.util.CollectionUtil;
import htsjdk.variant.variantcontext.Allele;
import htsjdk.variant.variantcontext.Genotype;
import htsjdk.variant.variantcontext.GenotypeBuilder;
import htsjdk.variant.variantcontext.VariantContext;
import htsjdk.variant.variantcontext.VariantContextBuilder;
import org.testng.Assert;
import org.testng.annotations.DataProvider;
import org.testng.annotations.Test;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
/**
* Created by farjoun on 12/26/15.
*/
public class CallingMetricAccumulatorTest {
@DataProvider(name = "getSingletonSampleData")
public Object[][] getSingletonSampleData() {
final List<Object[]> retval = new ArrayList<>(10);
final Allele ARef = Allele.create("A", true);
final Allele G = Allele.create("G", false);
final Allele C = Allele.create("C", false);
final GenotypeBuilder genotypeBuilder = new GenotypeBuilder().alleles(CollectionUtil.makeList(ARef, C));
final VariantContextBuilder builder = new VariantContextBuilder();
// one het
final Genotype het = genotypeBuilder.name("het").make();
builder.chr("1").start(1).stop(1).alleles(CollectionUtil.makeList(ARef, C, G)).genotypes(Collections.singletonList(het));
retval.add(new Object[]{builder.make(), "het"});
//a het and a hom ref
final Genotype homref = genotypeBuilder.name("homref").alleles(CollectionUtil.makeList(ARef)).make();
builder.genotypes(CollectionUtil.makeList(het, homref));
retval.add(new Object[]{builder.make(), "het"});
// a het, a homvar and a homref
final Genotype homvar = genotypeBuilder.name("homvar").alleles(CollectionUtil.makeList(C)).make();
builder.genotypes(CollectionUtil.makeList(het, homref, homvar));
retval.add(new Object[]{builder.make(), null});
// two hets and a homref
final Genotype het2 = genotypeBuilder.name("het2").alleles(CollectionUtil.makeList(ARef, G)).make();
builder.genotypes(CollectionUtil.makeList(het, homref, het2));
retval.add(new Object[]{builder.make(), null});
// a homvar
builder.genotypes(CollectionUtil.makeList(homvar));
retval.add(new Object[]{builder.make(), null});
// a homvar, and a homref
builder.genotypes(CollectionUtil.makeList(homvar, homref));
retval.add(new Object[]{builder.make(), null});
// two homrefs
final Genotype homref2 = genotypeBuilder.name("homref2").alleles(CollectionUtil.makeList(ARef)).make();
builder.genotypes(CollectionUtil.makeList(homref, homref2));
retval.add(new Object[]{builder.make(), null});
return retval.toArray(new Object[retval.size()][]);
}
@Test(dataProvider = "getSingletonSampleData")
public void testGetSingletonSample(final VariantContext vc, final String sample) throws Exception {
Assert.assertEquals(CallingMetricAccumulator.getSingletonSample(vc), sample);
}
}