private void testNextOnePloidy() { final GenotypeAlleleCounts ploidy2 = GenotypeAlleleCounts.first(2); final GenotypeAlleleCounts first = GenotypeAlleleCounts.first(1); GenotypeAlleleCounts current = first; while (!current.containsAllele(MAXIMUM_ALLELE_INDEX + 1)) { final GenotypeAlleleCounts next = current.next(); Assert.assertEquals(next.minimumAlleleIndex(), next.maximumAlleleIndex()); Assert.assertEquals(next.minimumAlleleIndex(), current.minimumAlleleIndex() + 1); Assert.assertEquals(next.alleleCountAt(0), 1); Assert.assertEquals(next.alleleIndexAt(0), next.minimumAlleleIndex()); Assert.assertEquals(next.alleleRankFor(next.minimumAlleleIndex()), 0); Assert.assertEquals(next.alleleRankFor(next.minimumAlleleIndex() + 1), -2); Assert.assertEquals(next.alleleCountFor(next.minimumAlleleIndex()), 1); Assert.assertEquals(next.alleleCountFor(next.minimumAlleleIndex() + 1), 0); Assert.assertEquals(next.ploidy(), 1); int[] dest = new int[next.distinctAlleleCount() * 2]; next.copyAlleleCounts(dest, 0); Assert.assertEquals(dest, new int[] {next.index(), 1}); Assert.assertTrue(next.compareTo(current) > 0); Assert.assertTrue(current.compareTo(next) < 0); Assert.assertTrue(next.compareTo(next) == 0); Assert.assertTrue(next.equals(next)); Assert.assertFalse(next.equals(null)); Assert.assertFalse(next.equals(next.toString())); Assert.assertFalse(next.equals(ploidy2)); Assert.assertFalse(ploidy2.equals(next)); Assert.assertFalse(next.equals(current)); Assert.assertNotEquals(next.hashCode(), current.hashCode()); Assert.assertFalse(current.equals(next)); Assert.assertEquals(next.index(), current.index() + 1); Assert.assertEquals(next.ploidy(), current.ploidy()); Assert.assertEquals( next.asAlleleList(testAlleles), Collections.singletonList(testAlleles.get(next.maximumAlleleIndex()))); for (int maximumAlleleIndex = 0; maximumAlleleIndex <= MAXIMUM_ALLELE_INDEX; maximumAlleleIndex++) { final int[] expected = new int[maximumAlleleIndex + 1]; if (maximumAlleleIndex >= current.minimumAlleleIndex() + 1) expected[current.minimumAlleleIndex() + 1] = 1; Assert.assertEquals(next.alleleCountsByIndex(maximumAlleleIndex), expected); } current = next; } }
@Test(expectedExceptions = IllegalArgumentException.class) public void testCopyAlleleCountsOffsetError() { final GenotypeAlleleCounts first = GenotypeAlleleCounts.first(2); first.copyAlleleCounts(new int[3], 4); }