1 package jalview.datamodel;
3 import static org.testng.AssertJUnit.assertEquals;
4 import static org.testng.AssertJUnit.assertFalse;
5 import org.testng.annotations.Test;
6 import org.testng.Assert;
7 import jalview.util.MapList;
9 import java.util.Iterator;
12 * Unit tests for Mapping$AlignedCodonIterator
17 public class AlignedCodonIteratorTest
20 * Test normal case for iterating over aligned codons.
23 public void testNext()
25 SequenceI from = new Sequence("Seq1", "-CgC-C-cCtAG-AtG-Gc");
26 from.createDatasetSequence();
27 SequenceI to = new Sequence("Seq1", "-PQ-R-");
28 to.createDatasetSequence();
29 MapList map = new MapList(new int[]
30 { 1, 1, 3, 4, 6, 6, 8, 10, 12, 13 }, new int[]
32 Mapping m = new Mapping(to.getDatasetSequence(), map);
34 Iterator<AlignedCodon> codons = m.getCodonIterator(from, '-');
35 AlignedCodon codon = codons.next();
36 assertEquals("[1, 3, 5]", codon.toString());
37 assertEquals("P", codon.product);
38 codon = codons.next();
39 assertEquals("[8, 10, 11]", codon.toString());
40 assertEquals("Q", codon.product);
41 codon = codons.next();
42 assertEquals("[13, 15, 17]", codon.toString());
43 assertEquals("R", codon.product);
44 assertFalse(codons.hasNext());
48 * Test weird case where the mapping skips over a peptide.
51 public void testNext_unmappedPeptide()
53 SequenceI from = new Sequence("Seq1", "-CgC-C-cCtAG-AtG-Gc");
54 from.createDatasetSequence();
55 SequenceI to = new Sequence("Seq1", "-PQ-TR-");
56 to.createDatasetSequence();
57 MapList map = new MapList(new int[]
58 { 1, 1, 3, 4, 6, 6, 8, 10, 12, 13 }, new int[]
59 { 1, 2, 4, 4 }, 3, 1);
60 Mapping m = new Mapping(to.getDatasetSequence(), map);
62 Iterator<AlignedCodon> codons = m.getCodonIterator(from, '-');
63 AlignedCodon codon = codons.next();
64 assertEquals("[1, 3, 5]", codon.toString());
65 assertEquals("P", codon.product);
66 codon = codons.next();
67 assertEquals("[8, 10, 11]", codon.toString());
68 assertEquals("Q", codon.product);
69 codon = codons.next();
70 assertEquals("[13, 15, 17]", codon.toString());
71 assertEquals("R", codon.product);
72 assertFalse(codons.hasNext());
76 * Test for exception thrown for an incomplete codon.
79 public void testNext_incompleteCodon()
81 SequenceI from = new Sequence("Seq1", "-CgC-C-cCgTt");
82 from.createDatasetSequence();
83 SequenceI to = new Sequence("Seq1", "-PQ-R-");
84 to.createDatasetSequence();
85 MapList map = new MapList(new int[]
86 { 1, 1, 3, 4, 6, 6, 8, 8 }, new int[]
88 Mapping m = new Mapping(to.getDatasetSequence(), map);
90 Iterator<AlignedCodon> codons = m.getCodonIterator(from, '-');
91 AlignedCodon codon = codons.next();
92 assertEquals("[1, 3, 5]", codon.toString());
93 assertEquals("P", codon.product);
96 codon = codons.next();
97 Assert.fail("expected exception");
98 } catch (IncompleteCodonException e)
105 * Test normal case for iterating over aligned codons.
108 public void testAnother()
110 SequenceI from = new Sequence("Seq1", "TGCCATTACCAG-");
111 from.createDatasetSequence();
112 SequenceI to = new Sequence("Seq1", "CHYQ");
113 to.createDatasetSequence();
114 MapList map = new MapList(new int[]
117 Mapping m = new Mapping(to.getDatasetSequence(), map);
119 Iterator<AlignedCodon> codons = m.getCodonIterator(from, '-');
120 AlignedCodon codon = codons.next();
121 assertEquals("[0, 1, 2]", codon.toString());
122 assertEquals("C", codon.product);
123 codon = codons.next();
124 assertEquals("[3, 4, 5]", codon.toString());
125 assertEquals("H", codon.product);
126 codon = codons.next();
127 assertEquals("[6, 7, 8]", codon.toString());
128 assertEquals("Y", codon.product);
129 codon = codons.next();
130 assertEquals("[9, 10, 11]", codon.toString());
131 assertEquals("Q", codon.product);
132 assertFalse(codons.hasNext());