import org.junit.Ignore; import org.junit.Test; import org.junit.Rule; import org.junit.rules.ExpectedException; import java.util.Map; import static org.hamcrest.Matchers.*; import static org.junit.Assert.*; public class NucleotideTest { @Rule public ExpectedException thrown = ExpectedException.none(); @Test public void testEmptyDnaStringHasNoAdenine() { DNA dna = new DNA(""); assertThat(dna.count('A'), is(0)); } @Ignore("Remove to run test") @Test public void testEmptyDnaStringHasNoNucleotides() { DNA dna = new DNA(""); Map<Character, Integer> counts = dna.nucleotideCounts(); assertThat(counts.size(), is(4)); assertThat(counts, allOf( hasEntry('A', 0), hasEntry('C', 0), hasEntry('G', 0), hasEntry('T', 0) )); } @Ignore("Remove to run test") @Test public void testRepetitiveCytosineGetsCounted() { DNA dna = new DNA("CCCCC"); assertThat(dna.count('C'), is(5)); } @Ignore("Remove to run test") @Test public void testRepetitiveSequenceWithOnlyGuanine() { DNA dna = new DNA("GGGGGGGG"); Map<Character, Integer> counts = dna.nucleotideCounts(); assertThat(counts.size(), is(4)); assertThat(counts, allOf( hasEntry('A', 0), hasEntry('C', 0), hasEntry('G', 8), hasEntry('T', 0) )); } @Ignore("Remove to run test") @Test public void testCountsOnlyThymine() { DNA dna = new DNA("GGGGGTAACCCGG"); assertThat(dna.count('T'), is(1)); } @Ignore("Remove to run test") @Test public void testCountsANucleotideOnlyOnce() { DNA dna = new DNA("CGATTGGG"); dna.count('T'); assertThat(dna.count('T'), is(2)); } @Ignore("Remove to run test") @Test public void testDnaCountsDoNotChangeAfterCountingAdenine() { DNA dna = new DNA("GATTACA"); dna.count('A'); Map<Character, Integer> counts = dna.nucleotideCounts(); assertThat(counts.size(), is(4)); assertThat(counts, allOf( hasEntry('A', 3), hasEntry('C', 1), hasEntry('G', 1), hasEntry('T', 2) )); } @Ignore("Remove to run test") @Test public void testValidatesNucleotides() { thrown.expect(IllegalArgumentException.class); DNA dna = new DNA("GACT"); dna.count('X'); } @Ignore("Remove to run test") @Test public void testCountsAllNucleotides() { String s = "AGCTTTTCATTCTGACTGCAACGGGCAATATGTCTCTGTGTGGATTAAAAAAAGAGTGTCTGATAGCAGC"; DNA dna = new DNA(s); Map<Character, Integer> counts = dna.nucleotideCounts(); assertThat(counts.size(), is(4)); assertThat(counts, allOf( hasEntry('A', 20), hasEntry('C', 12), hasEntry('G', 17), hasEntry('T', 21) )); } }