package htsjdk.tribble.util.popgen;
import org.testng.Assert;
import org.testng.annotations.DataProvider;
import org.testng.annotations.Test;
/**
* Created by farjoun on 7/18/14.
*/
public class HardyWeinbergCalculationTest {
@DataProvider
public Object[][] testHwCalculateData() {
return new Object[][] {
new Object[] {generateHWTrio(100, 0.01), 1.0},
new Object[] {generateHWTrio(100, 0.1), 1.0},
new Object[] {generateHWTrio(1000, 0.1), 1.0},
new Object[] {generateHWTrio(1000, 0.01), 1.0},
new Object[] {generateHWTrio(1000, 0.001), 1.0},
new Object[] {generateHWTrio(10000, 0.1), 1.0},
new Object[] {generateHWTrio(10000, 0.01), 1.0},
new Object[] {generateHWTrio(10000, 0.001), 1.0},
new Object[] {generateHWTrio(100000, 0.1), 1.0},
new Object[] {generateHWTrio(100000, 0.01), 1.0},
new Object[] {generateHWTrio(100000, 0.001), 1.0},
};
}
private int[] generateHWTrio(final int total, final double p) {
return new int[] {
(int) Math.round(total * p * p),
(int) Math.round(total * 2 * p * (1 - p)),
(int) Math.round(total * (1 - p) * (1 - p))};
}
@Test(dataProvider = "testHwCalculateData")
public void testHwCalculate(final int[] genotypeCounts, final double expectedHWS) throws Exception {
Assert.assertEquals(HardyWeinbergCalculation.hwCalculate(genotypeCounts[0], genotypeCounts[1], genotypeCounts[2]), expectedHWS);
}
}