1 package jalview.datamodel;
3 import static org.junit.Assert.assertEquals;
4 import static org.junit.Assert.assertFalse;
5 import static org.junit.Assert.fail;
6 import jalview.util.MapList;
8 import java.util.Iterator;
10 import org.junit.Test;
13 * Unit tests for Mapping$AlignedCodonIterator
18 public class AlignedCodonIteratorTest
21 * Test normal case for iterating over aligned codons.
24 public void testNext()
26 SequenceI from = new Sequence("Seq1", "-CgC-C-cCtAG-AtG-Gc");
27 from.createDatasetSequence();
28 SequenceI to = new Sequence("Seq1", "-PQ-R-");
29 to.createDatasetSequence();
30 MapList map = new MapList(new int[]
31 { 1, 1, 3, 4, 6, 6, 8, 10, 12, 13 }, new int[]
33 Mapping m = new Mapping(to.getDatasetSequence(), map);
35 Iterator<AlignedCodon> codons = m.getCodonIterator(from, '-');
36 AlignedCodon codon = codons.next();
37 assertEquals("[1, 3, 5]", codon.toString());
38 assertEquals("P", codon.product);
39 codon = codons.next();
40 assertEquals("[8, 10, 11]", codon.toString());
41 assertEquals("Q", codon.product);
42 codon = codons.next();
43 assertEquals("[13, 15, 17]", codon.toString());
44 assertEquals("R", codon.product);
45 assertFalse(codons.hasNext());
49 * Test weird case where the mapping skips over a peptide.
52 public void testNext_unmappedPeptide()
54 SequenceI from = new Sequence("Seq1", "-CgC-C-cCtAG-AtG-Gc");
55 from.createDatasetSequence();
56 SequenceI to = new Sequence("Seq1", "-PQ-TR-");
57 to.createDatasetSequence();
58 MapList map = new MapList(new int[]
59 { 1, 1, 3, 4, 6, 6, 8, 10, 12, 13 }, new int[]
60 { 1, 2, 4, 4 }, 3, 1);
61 Mapping m = new Mapping(to.getDatasetSequence(), map);
63 Iterator<AlignedCodon> codons = m.getCodonIterator(from, '-');
64 AlignedCodon codon = codons.next();
65 assertEquals("[1, 3, 5]", codon.toString());
66 assertEquals("P", codon.product);
67 codon = codons.next();
68 assertEquals("[8, 10, 11]", codon.toString());
69 assertEquals("Q", codon.product);
70 codon = codons.next();
71 assertEquals("[13, 15, 17]", codon.toString());
72 assertEquals("R", codon.product);
73 assertFalse(codons.hasNext());
77 * Test for exception thrown for an incomplete codon.
80 public void testNext_incompleteCodon()
82 SequenceI from = new Sequence("Seq1", "-CgC-C-cCgTt");
83 from.createDatasetSequence();
84 SequenceI to = new Sequence("Seq1", "-PQ-R-");
85 to.createDatasetSequence();
86 MapList map = new MapList(new int[]
87 { 1, 1, 3, 4, 6, 6, 8, 8 }, new int[]
89 Mapping m = new Mapping(to.getDatasetSequence(), map);
91 Iterator<AlignedCodon> codons = m.getCodonIterator(from, '-');
92 AlignedCodon codon = codons.next();
93 assertEquals("[1, 3, 5]", codon.toString());
94 assertEquals("P", codon.product);
97 codon = codons.next();
98 fail("expected exception");
99 } catch (IncompleteCodonException e)
106 * Test normal case for iterating over aligned codons.
109 public void testAnother()
111 SequenceI from = new Sequence("Seq1", "TGCCATTACCAG-");
112 from.createDatasetSequence();
113 SequenceI to = new Sequence("Seq1", "CHYQ");
114 to.createDatasetSequence();
115 MapList map = new MapList(new int[]
118 Mapping m = new Mapping(to.getDatasetSequence(), map);
120 Iterator<AlignedCodon> codons = m.getCodonIterator(from, '-');
121 AlignedCodon codon = codons.next();
122 assertEquals("[0, 1, 2]", codon.toString());
123 assertEquals("C", codon.product);
124 codon = codons.next();
125 assertEquals("[3, 4, 5]", codon.toString());
126 assertEquals("H", codon.product);
127 codon = codons.next();
128 assertEquals("[6, 7, 8]", codon.toString());
129 assertEquals("Y", codon.product);
130 codon = codons.next();
131 assertEquals("[9, 10, 11]", codon.toString());
132 assertEquals("Q", codon.product);
133 assertFalse(codons.hasNext());